21.08.2013 Views

A State-Based Programming Model for Wireless Sensor Networks

A State-Based Programming Model for Wireless Sensor Networks

A State-Based Programming Model for Wireless Sensor Networks

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

162 Appendix A. OSM Code Generation<br />

128 module STATE_C:<br />

129 input e, f;<br />

130 % no outputs<br />

131 procedure inC1()(), inC2()();<br />

132 present<br />

133 case f do call inC1()();<br />

134 case e do call inC2()();<br />

135 end present;<br />

136 halt<br />

137 end module % STATE_C<br />

138<br />

139 % o-star<br />

140 module STATE_PROG_2:<br />

141 input e, f;<br />

142 % no outputs<br />

143 % no function declarations<br />

144 run CONSTELLATION_D_G; % sequential substates<br />

145 halt<br />

84 trap T in<br />

85 signal alpha, iota, omega in<br />

86 emit alpha;<br />

87 suspend<br />

88 % suspend<br />

89 halt<br />

90 % when <br />

91 when immediate iota<br />

92 ||<br />

93 every tick do<br />

94 present<br />

95 case f do emit iota; emit xi1; call outA()(); exit T<br />

96 case e do emit iota; emit xi2; call outA()(); exit T<br />

97 end present<br />

98 end every<br />

99 end signal<br />

100 end trap<br />

101 end module % STATE_A<br />

102<br />

103 module STATE_B:<br />

104 input e, f;<br />

105 output xi1, xi2;<br />

106 procedure outB()();<br />

107 % no onEntry actions<br />

108 trap T in<br />

109 signal alpha, iota, omega in<br />

110 emit alpha;<br />

111 suspend<br />

112 % suspend<br />

113 halt<br />

114 % when <br />

115 when immediate iota<br />

116 ||<br />

117 every tick do<br />

118 present<br />

119 case f do emit iota; emit xi1; call outB()(); exit T<br />

120 case e do emit iota; emit xi2; exit T<br />

146 end module % STATE_PROG_2<br />

147<br />

148 module CONSTELLATION_D_G:<br />

149 input e, f;<br />

150 % no output<br />

151<br />

152 signal gamma1, gamma2 in<br />

153 % init:<br />

154 emit gamma1; % start initial state<br />

155 % mainloop<br />

156 loop<br />

157 trap L in<br />

158 % STATE_D<br />

159 present gamma1 then<br />

160 signal alpha in<br />

161 emit alpha;<br />

162 run STATE_D [signal gamma2/ xi1];<br />

163 present alpha else exit L end present<br />

164 end signal<br />

165 end present;<br />

166 % STATE_G<br />

167 present gamma2 then<br />

168 signal alpha in<br />

169 emit alpha;<br />

170 run STATE_G [signal gamma1/ xi1];<br />

171 present alpha else exit L end present<br />

121 end present<br />

122 end every<br />

123 end signal<br />

124 end trap<br />

125 end module % STATE_B<br />

126<br />

127 % o-star

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!