# Clock component for tight coupling MACRO: CHECKINTERVAL = 0 STARTTIME = 0 INITIALIZER: sched=[] global_time=[STARTTIME] def sched_cmp(a, b): return cmp(a[1], b[1]) STATECHART: NORMAL [DS] TRANSITION: # schedule event # param 1: scheduler ID # param 2: schedule time S: NORMAL N: NORMAL E: schedule O: sched.append([PARAMS]) TRANSITION: # idle checker # notifies the earliest scheduled event S: NORMAL N: NORMAL T: [CHECKINTERVAL] [RTT] C: len(eventhandler.event_list)==1 and len(sched)>0 O: sched.sort(sched_cmp) s=sched[0] del sched[0] global_time=s[1] [EVENT("notify", s)] # param 1: scheduler ID # param 2: schedule time TRANSITION: # time retrieval S: NORMAL N: NORMAL E: gettime O: [EVENT("timereturn", [global_time]) # param 1: current global time