Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Definition of a "Moore"-FSM modelling the node state
- -- Apart from usual more FSM, the FSM has no clock input
- -- Signal setting is used as an "async"-clock:
- -- Every set-signal call (even to the same value) is interpreted as a clock signal
- fsm = {
- -- Input signals
- signals = {
- 'internet_avail',
- 'boot_done'
- },
- -- Counters, incremted, every time a signal is set (even to the same value)
- counters = {
- {signal = 'internet_avail', reset_on_transition = true}
- },
- states = { -- States
- boot = {
- onEntry = 'echo booting', -- Shell-Commands to be executed
- onExit = 'echo boot done',
- transitions = {
- {dest = 'online', guard = 'boot_done && internet_avail', do = 'echo Going Online'},
- {dest = 'offline', guard = 'boot_done && !internet_avail'}
- }
- },
- online = {
- onEntry = 'echo online',
- transitions = {
- {dest = 'offline', guard = '!internet_avail'}
- }
- },
- offline = {
- onEntry = 'echo offline',
- transitions = {
- {dest = 'online', guard = 'internet_avail'},
- {dest = 'panic', guard = '!internet_avail && count(internet_avail) > 10'},
- {dest = 'online', guard = 'internet_avail'}
- }
- },
- panic = {
- onEntry = 'echo setup broken'
- }
- },
- initial_state = 'boot'
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement