|
@@ -7,13 +7,16 @@
|
|
|
combo_step_maximality="take_one"
|
|
|
input_event_lifeline="first_combo_step"
|
|
|
hierarchical_priority="source_parent"
|
|
|
- orthogonal_priority="explicit"
|
|
|
same_source_priority="explicit"
|
|
|
/>
|
|
|
<datamodel>
|
|
|
+ import GUI;
|
|
|
time = 0;
|
|
|
checkStartTime = func {
|
|
|
- if (time == 0) time = 30;
|
|
|
+ if (time == 0) {
|
|
|
+ time = 30;
|
|
|
+ display_time(time);
|
|
|
+ }
|
|
|
};
|
|
|
</datamodel>
|
|
|
<inport name="in">
|
|
@@ -26,8 +29,7 @@
|
|
|
<outport name="out">
|
|
|
<event name="micro_on"/>
|
|
|
<event name="micro_off"/>
|
|
|
- <event name="set_time"/>
|
|
|
- <event name="ping"/>
|
|
|
+ <event name="bell"/>
|
|
|
</outport>
|
|
|
<root initial="DoorClosed">
|
|
|
<state id="DoorClosed" initial="NotRunning">
|
|
@@ -36,51 +38,32 @@
|
|
|
<onentry> <raise port="out" event="micro_on"/> </onentry>
|
|
|
<onexit> <raise port="out" event="micro_off"/> </onexit>
|
|
|
<transition port="in" event="stop" target="../NotRunning"/>
|
|
|
- <transition after="1 s" target=".">
|
|
|
- <code> time -= 1; </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
- </transition>
|
|
|
+ <state id="Inner">
|
|
|
+ <transition after="1 s" target=".">
|
|
|
+ <code> time -= 1; display_time(time); </code>
|
|
|
+ </transition>
|
|
|
+ </state>
|
|
|
<transition cond="time == 0" target="../NotRunning"/>
|
|
|
-
|
|
|
<transition port="in" event="increase_time" target=".">
|
|
|
- <code> time += 10; </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
+ <code> time += 10; display_time(time); </code>
|
|
|
</transition>
|
|
|
-
|
|
|
</state>
|
|
|
<state id="NotRunning">
|
|
|
<transition port="in" event="start" target="../Running">
|
|
|
<code> checkStartTime(); </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
</transition>
|
|
|
<transition port="in" event="stop" target=".">
|
|
|
- <code> time = 0; </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
+ <code> time = 0; display_time(time); </code>
|
|
|
</transition>
|
|
|
-
|
|
|
<transition port="in" event="increase_time" target=".">
|
|
|
- <code> time += 10; </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
+ <code> time += 10; display_time(time); </code>
|
|
|
</transition>
|
|
|
</state>
|
|
|
</state>
|
|
|
<state id="DoorOpen">
|
|
|
<transition port="in" event="door_closed" target="../DoorClosed"/>
|
|
|
<transition port="in" event="increase_time" target=".">
|
|
|
- <code> time += 10; </code>
|
|
|
- <raise port="out" event="set_time">
|
|
|
- <param expr="time"/>
|
|
|
- </raise>
|
|
|
+ <code> time += 10; display_time(time); </code>
|
|
|
</transition>
|
|
|
</state>
|
|
|
</root>
|