Use either Alt or TimerAlt as appropriate.
This commit is contained in:
parent
89040a97b0
commit
1124bb5a44
|
@ -1597,13 +1597,14 @@ cgenAlt isPri s
|
||||||
= do id <- csmLift $ makeNonce "alt_id"
|
= do id <- csmLift $ makeNonce "alt_id"
|
||||||
tell ["int ", id, " = 0;\n"]
|
tell ["int ", id, " = 0;\n"]
|
||||||
|
|
||||||
tell ["TimerAlt (wptr);\n"]
|
let isTimerAlt = containsTimers s
|
||||||
|
tell [if isTimerAlt then "TimerAlt" else "Alt", " (wptr);\n"]
|
||||||
tell ["{\n"]
|
tell ["{\n"]
|
||||||
genAltEnable id s
|
genAltEnable id s
|
||||||
tell ["}\n"]
|
tell ["}\n"]
|
||||||
|
|
||||||
-- Like occ21, this is always a PRI ALT, so we can use it for both.
|
-- Like occ21, this is always a PRI ALT, so we can use it for both.
|
||||||
tell ["TimerAltWait (wptr);\n"]
|
tell [if isTimerAlt then "TimerAltWait" else "AltWait", " (wptr);\n"]
|
||||||
tell [id, " = 0;\n"]
|
tell [id, " = 0;\n"]
|
||||||
tell ["{\n"]
|
tell ["{\n"]
|
||||||
genAltDisable id s
|
genAltDisable id s
|
||||||
|
@ -1618,6 +1619,18 @@ cgenAlt isPri s
|
||||||
tell ["}\n"]
|
tell ["}\n"]
|
||||||
tell [label, ":\n;\n"]
|
tell [label, ":\n;\n"]
|
||||||
where
|
where
|
||||||
|
containsTimers :: A.Structured A.Alternative -> Bool
|
||||||
|
containsTimers (A.Rep _ _ s) = containsTimers s
|
||||||
|
containsTimers (A.Spec _ _ s) = containsTimers s
|
||||||
|
containsTimers (A.ProcThen _ _ s) = containsTimers s
|
||||||
|
containsTimers (A.Only _ a)
|
||||||
|
= case a of
|
||||||
|
A.Alternative _ _ (A.InputTimerRead _ _) _ -> True
|
||||||
|
A.Alternative _ _ (A.InputTimerAfter _ _) _ -> True
|
||||||
|
A.AlternativeWait _ _ _ _ -> True
|
||||||
|
_ -> False
|
||||||
|
containsTimers (A.Several _ ss) = or $ map containsTimers ss
|
||||||
|
|
||||||
genAltEnable :: String -> A.Structured A.Alternative -> CGen ()
|
genAltEnable :: String -> A.Structured A.Alternative -> CGen ()
|
||||||
genAltEnable id s = call genStructured s doA
|
genAltEnable id s = call genStructured s doA
|
||||||
where
|
where
|
||||||
|
|
Loading…
Reference in New Issue
Block a user