/*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy,4)*/ system AlarmClock; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),143(60,65))*/ channel /*#E*/ TimeToShow from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),140(100,65))*/ AlarmClockBlock to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),104(15,15))*/ env with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),144(37,75))*/ iTimeToShow,iCurAlarmTime; endchannel TimeToShow; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),158(60,95))*/ channel /*#E*/ InputReceived from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),104(15,15))*/ env to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),140(100,65))*/ AlarmClockBlock with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),159(20,87))*/ (Inputs); endchannel InputReceived; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),194(60,125))*/ channel /*#E*/ Speaker from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),140(100,65))*/ AlarmClockBlock to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),104(15,15))*/ env with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),195(37,135))*/ aRadioOn, aRadioOff, aBuzzerOn, aBuzzerOff; endchannel Speaker; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(1),140(100,65))*/ block /*#E*/ AlarmClockBlock referenced; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(2),137(25,45))*/ SIGNAL iTimeToShow(Integer,Integer), iTimeToAlarm(Integer,Integer), iCurAlarmTime(Integer,Integer), bMinButtonPressed, bMin10ButtonPressed, bHourButtonPressed, bWakeButtonPressed, bWakeMinButtonPressed, bWakeMin10ButtonPressed, bWakeHourButtonPressed, bSoundActualAlarm, bSnoozeButtonPressed, sTypeRadioSel, sTypeBuzzerSel, sTypeOffSel, sBuzzerVolume(Integer), aRadioOn, aRadioOff, aBuzzerOn(Integer), aBuzzerOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy(2),230(90,45))*/ SIGNALLIST Inputs= bMinButtonPressed, bMin10ButtonPressed, bHourButtonPressed, bWakeButtonPressed, bWakeMinButtonPressed, bWakeMin10ButtonPressed, bWakeHourButtonPressed, bSnoozeButtonPressed, sTypeRadioSel, sTypeBuzzerSel, sTypeOffSel, sBuzzerVolume; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClock.ssy,4)*/ endsystem AlarmClock; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk,4)*/ block AlarmClockBlock; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),122(55,25))*/ signalroute /*#E*/ TimeToShow from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),119(90,25))*/ TimeUpdater to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),104(15,15))*/ env with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),123(17,35))*/ iTimeToShow; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),170(139,95))*/ signalroute /*#E*/ DMA_ToAlarmMan from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),119(90,25))*/ TimeUpdater to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),167(140,130))*/ AlarmMan with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),171(155,122))*/ iTimeToAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),146(100,59))*/ signalroute /*#E*/ CableToTimeUpdater from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),134(75,75))*/ InputMan to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),119(90,25))*/ TimeUpdater with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),147(100,47))*/ bMinButtonPressed, bMin10ButtonPressed, bHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),137(47,75))*/ signalroute /*#E*/ InputReceived from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),104(15,15))*/ env to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),134(75,75))*/ InputMan with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),138(22,85))*/ bMinButtonPressed, bMin10ButtonPressed, bHourButtonPressed, bWakeButtonPressed, bWakeMinButtonPressed, bWakeMin10ButtonPressed, bWakeHourButtonPressed, bSnoozeButtonPressed, sTypeRadioSel, sTypeBuzzerSel, sTypeOffSel, sBuzzerVolume; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),299(72,165))*/ signalroute /*#E*/ CableToActualAlarm from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),134(75,75))*/ InputMan to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),227(100,190))*/ ActualAlarm with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),300(77,175))*/ bSnoozeButtonPressed, sTypeRadioSel, sTypeBuzzerSel, sTypeOffSel, sBuzzerVolume; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),278(110,107))*/ signalroute /*#E*/ CableToAlarmMan from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),134(75,75))*/ InputMan to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),167(140,130))*/ AlarmMan with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),279(112,115))*/ bWakeButtonPressed, bWakeMinButtonPressed, bWakeMin10ButtonPressed, bWakeHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),197(95,147))*/ signalroute /*#E*/ ShowAlarmTime from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),167(140,130))*/ AlarmMan to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),104(15,15))*/ env with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),198(17,162))*/ iCurAlarmTime; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),230(135,154))*/ signalroute /*#E*/ DMA_ToActualAlarm from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),167(140,130))*/ AlarmMan to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),227(100,190))*/ ActualAlarm with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),231(127,185))*/ bSoundActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),239(60,190))*/ signalroute /*#E*/ Speaker from /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),227(100,190))*/ ActualAlarm to /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),104(15,15))*/ env with /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),240(17,200))*/ aRadioOn, aRadioOff, aBuzzerOn, aBuzzerOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),119(90,25))*/ process /*#E*/ TimeUpdater referenced; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),134(75,75))*/ process /*#E*/ InputMan referenced; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),167(140,130))*/ process /*#E*/ AlarmMan referenced; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),227(100,190))*/ process /*#E*/ ActualAlarm referenced; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),128(10,25))*/ connect /*#E*/ TimeToShow and /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),122(55,25))*/ TimeToShow, /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),197(95,147))*/ ShowAlarmTime; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),143(7,75))*/ connect /*#E*/ InputReceived and /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),137(47,75))*/ InputReceived; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),245(10,190))*/ connect /*#E*/ Speaker and /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk(1),239(60,190))*/ Speaker; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmClockBlock.sbk,4)*/ endblock AlarmClockBlock; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr,4)*/ process TimeUpdater; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),119(10,25))*/ TIMER waitMinuteTimer; DCL Hour Integer, Minute Integer, Delay DURATION; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),116(60,5))*/ start /*#E*/ ; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),122(60,20))*/ task /*#E*/ Hour:=0; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),125(60,35))*/ task /*#E*/ Minute:=0; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),143(55,50))*/ task /*#E*/ Delay:=60; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),536(45,65))*/ output /*#E*/ iTimeToShow(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),140(40,80))*/ /*#E*/ SET(NOW+Delay,waitMinuteTimer); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),134(50,95))*/ nextstate /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),134(50,95))*/ state /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),164(50,110))*/ input /*#E*/ waitMinuteTimer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),170(55,125))*/ task /*#E*/ Minute:=Minute+1; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),197(60,140))*/ decision /*#E*/ Minute>59; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),206(97,145))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),200(110,145))*/ task {/*#E*/ Hour:=Hour+1; Minute:=0; }; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),215(110,170))*/ decision /*#E*/ Hour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),230(147,150))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),218(155,150))*/ task {/*#E*/ Hour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),242(110,175))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),215(110,170))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),239(62,155))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),197(60,140))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),236(40,175))*/ /*#E*/ SET(NOW+Delay,waitMinuteTimer); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),272(40,190))*/ output /*#E*/ iTimeToAlarm(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),266(40,205))*/ output /*#E*/ iTimeToShow(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),233(130,205))*/ nextstate /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(1),134(50,95))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),284(55,15))*/ state /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),287(50,35))*/ input /*#E*/ bMin10ButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),290(50,50))*/ task {/*#E*/ RESET(waitMinuteTimer); Minute:=Minute+10;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),293(50,65))*/ decision /*#E*/ Minute>59; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),323(72,82))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),296(50,85))*/ task {/*#E*/ Minute:=Minute-60; Hour:=Hour+1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),299(50,100))*/ decision /*#E*/ Hour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),329(72,117))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),302(50,120))*/ task {/*#E*/ Hour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),338(45,120))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),299(50,100))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),335(45,85))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),293(50,65))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),305(35,150))*/ task {/*#E*/ SET(NOW+Delay,waitMinuteTimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),488(35,165))*/ output /*#E*/ iTimeToAlarm(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),485(35,180))*/ output /*#E*/ iTimeToShow(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),482(45,195))*/ nextstate /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(2),284(55,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),377(60,15))*/ state /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),374(55,35))*/ input /*#E*/ bMinButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),371(55,50))*/ task {/*#E*/ RESET(waitMinuteTimer); Minute:=Minute+1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),368(55,65))*/ decision /*#E*/ Minute>59; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),392(77,82))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),365(55,85))*/ task {/*#E*/ Minute:=Minute-60; Hour:=Hour+1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),362(55,100))*/ decision /*#E*/ Hour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),398(77,117))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),359(55,120))*/ task {/*#E*/ Hour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),407(57,120))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),362(55,100))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),404(57,85))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),368(55,65))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),356(40,150))*/ task {/*#E*/ SET(NOW+Delay,waitMinuteTimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),506(40,165))*/ output /*#E*/ iTimeToAlarm(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),503(40,180))*/ output /*#E*/ iTimeToShow(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),500(50,195))*/ nextstate /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(3),377(60,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),446(60,15))*/ state /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),443(55,35))*/ input /*#E*/ bHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),440(55,50))*/ task {/*#E*/ RESET(waitMinuteTimer); Hour:=Hour+1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),431(55,70))*/ decision /*#E*/ Hour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),458(77,87))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),428(55,90))*/ task {/*#E*/ Hour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),449(57,90))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),431(55,70))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),425(40,120))*/ task {/*#E*/ SET(NOW+Delay,waitMinuteTimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),524(40,135))*/ output /*#E*/ iTimeToAlarm(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),521(40,150))*/ output /*#E*/ iTimeToShow(Hour,Minute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),518(50,165))*/ nextstate /*#E*/ WaitForTimeUpdate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr(4),446(60,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\TimeUpdater.spr,4)*/ endprocess TimeUpdater; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr,4)*/ process InputMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),341(80,10))*/ DCL TransferMe Integer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),116(30,30))*/ start /*#E*/ ; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),119(30,50))*/ nextstate /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),119(30,50))*/ state /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),125(15,70))*/ input /*#E*/ bMinButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),143(10,90))*/ output /*#E*/ bMinButtonPressed via CableToTimeUpdater; grst5080_1: /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),152(75,120))*/ nextstate /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),128(65,70))*/ input /*#E*/ bMin10ButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),146(65,90))*/ output /*#E*/ bMin10ButtonPressed via CableToTimeUpdater; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),152(75,120))*/ join /*#E*/ grst5080_1; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),131(125,70))*/ input /*#E*/ bHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),149(125,90))*/ output /*#E*/ bHourButtonPressed via CableToTimeUpdater; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),152(75,120))*/ join /*#E*/ grst5080_1; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),119(30,50))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),332(75,140))*/ state /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),329(55,160))*/ input /*#E*/ sBuzzerVolume(TransferMe); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),338(55,175))*/ output /*#E*/ sBuzzerVolume(TransferMe) via CableToActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),347(75,190))*/ nextstate /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(1),332(75,140))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),185(75,10))*/ state /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),188(5,30))*/ input /*#E*/ bSnoozeButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),200(5,45))*/ output /*#E*/ bSnoozeButtonPressed via CableToActualAlarm; grst5080_2: /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),215(75,75))*/ nextstate /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),191(65,30))*/ input /*#E*/ sTypeRadioSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),203(65,45))*/ output /*#E*/ sTypeRadioSel via CableToActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),215(75,75))*/ join /*#E*/ grst5080_2; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),194(110,30))*/ input /*#E*/ sTypeBuzzerSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),209(110,45))*/ output /*#E*/ sTypeBuzzerSel via CableToActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),215(75,75))*/ join /*#E*/ grst5080_2; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),197(150,30))*/ input /*#E*/ sTypeOffSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),212(150,45))*/ output /*#E*/ sTypeOffSel via CableToActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),215(75,75))*/ join /*#E*/ grst5080_2; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),185(75,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),254(75,95))*/ state /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),257(5,120))*/ input /*#E*/ bWakeButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),281(5,135))*/ output /*#E*/ bWakeButtonPressed via CableToAlarmMan; grst5080_3: /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),296(75,160))*/ nextstate /*#E*/ InputIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),260(50,120))*/ input /*#E*/ bWakeMinButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),284(50,135))*/ output /*#E*/ bWakeMinButtonPressed via CableToAlarmMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),296(75,160))*/ join /*#E*/ grst5080_3; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),263(95,120))*/ input /*#E*/ bWakeMin10ButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),287(95,135))*/ output /*#E*/ bWakeMin10ButtonPressed via CableToAlarmMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),296(75,160))*/ join /*#E*/ grst5080_3; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),266(140,120))*/ input /*#E*/ bWakeHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),290(140,135))*/ output /*#E*/ bWakeHourButtonPressed via CableToAlarmMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),296(75,160))*/ join /*#E*/ grst5080_3; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr(2),254(75,95))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\InputMan.spr,4)*/ endprocess InputMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr,4)*/ process AlarmMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),131(10,25))*/ DCL InputMinute Integer, InputHour Integer, AlarmMinute Integer, AlarmHour Integer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),119(50,25))*/ start /*#E*/ ; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),188(45,45))*/ task {/*#E*/ AlarmHour:=0; AlarmMinute:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),122(45,65))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),122(45,65))*/ state /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),128(25,80))*/ input /*#E*/ iTimeToAlarm(InputHour,InputMinute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),143(10,115))*/ decision /*#E*/ (InputMinute=AlarmMinute AND InputHour=AlarmHour); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),164(127,112))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),161(130,120))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),155(62,132))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),152(45,140))*/ output /*#E*/ bSoundActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),200(50,160))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),143(10,115))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(1),122(45,65))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(2),218(65,10))*/ state /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(2),221(55,25))*/ input /*#E*/ bWakeButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(2),224(40,40))*/ output /*#E*/ iCurAlarmTime(AlarmHour,AlarmMinute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(2),233(65,55))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(2),218(65,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),251(75,10))*/ state /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),254(60,25))*/ input /*#E*/ bWakeMin10ButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),257(60,40))*/ task /*#E*/ AlarmMinute:=AlarmMinute+10; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),260(10,60))*/ decision /*#E*/ AlarmMinute>59; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),266(37,72))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),263(10,80))*/ task {/*#E*/ AlarmHour:=AlarmHour+1; AlarmMinute:=AlarmMinute-60;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),269(10,95))*/ decision /*#E*/ AlarmHour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),278(37,107))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),272(10,115))*/ task {/*#E*/ AlarmHour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),302(92,102))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),269(10,95))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),299(92,67))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),260(10,60))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),284(55,145))*/ output /*#E*/ iCurAlarmTime(AlarmHour,AlarmMinute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),281(80,160))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(3),251(75,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),395(80,10))*/ state /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),392(65,25))*/ input /*#E*/ bWakeMinButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),389(65,40))*/ task /*#E*/ AlarmMinute:=AlarmMinute+1; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),386(15,60))*/ decision /*#E*/ AlarmMinute>59; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),401(42,72))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),383(15,80))*/ task {/*#E*/ AlarmHour:=AlarmHour+1; AlarmMinute:=AlarmMinute-60;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),380(15,95))*/ decision /*#E*/ AlarmHour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),407(42,107))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),377(15,115))*/ task {/*#E*/ AlarmHour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),422(97,102))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),380(15,95))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),419(97,67))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),386(15,60))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),374(60,145))*/ output /*#E*/ iCurAlarmTime(AlarmHour,AlarmMinute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),371(85,160))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(4),395(80,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),464(75,10))*/ state /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),461(60,25))*/ input /*#E*/ bWakeHourButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),452(60,40))*/ task {/*#E*/ AlarmHour:=AlarmHour+1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),449(60,55))*/ decision /*#E*/ AlarmHour>23; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),476(87,67))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),446(60,75))*/ task {/*#E*/ AlarmHour:=0;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),491(115,85))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),449(60,55))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),443(50,100))*/ output /*#E*/ iCurAlarmTime(AlarmHour,AlarmMinute); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),440(75,120))*/ nextstate /*#E*/ AlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr(5),464(75,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\AlarmMan.spr,4)*/ endprocess AlarmMan; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr,4)*/ process ActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),119(5,25))*/ TIMER SNOOZETimer; DCL ActivateAlarm BOOLEAN, ActivateSnooze BOOLEAN, AlarmTypeRadio BOOLEAN, AlarmTypeBuzzer BOOLEAN, AlarmTypeOff BOOLEAN, RadioIsOn BOOLEAN, BuzzerIsOn BOOLEAN, SnoozeDelay DURATION, TestVol Integer, BuzzerVolume Integer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),116(70,15))*/ start /*#E*/ ; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),122(60,30))*/ task {/*#E*/ ActivateAlarm:=False; ActivateSnooze:=False; AlarmTypeRadio:=False; AlarmTypeBuzzer:=False; AlarmTypeOff:=True; RadioIsOn:=False; BuzzerIsOn:=False; SnoozeDelay:=300; BuzzerVolume:=1;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),131(60,70))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),131(60,70))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),137(60,90))*/ input /*#E*/ bSoundActualAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),146(15,115))*/ decision /*#E*/ AlarmTypeBuzzer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),155(80,115))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),152(90,115))*/ decision /*#E*/ AlarmTypeRadio; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),170(122,132))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),167(95,140))*/ task {/*#E*/ ActivateAlarm:=True; RadioIsOn:=True; ActivateSnooze:=False; RESET(SNOOZETimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),176(95,165))*/ output /*#E*/ aRadioOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),194(90,127))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),152(90,115))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),164(47,132))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),158(20,140))*/ task {/*#E*/ ActivateAlarm:=True; BuzzerIsOn:=True; ActivateSnooze:=False; RESET(SNOOZETimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),173(20,165))*/ output /*#E*/ aBuzzerON(BuzzerVolume); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),146(15,115))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),185(60,185))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(1),131(60,70))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),209(70,10))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),212(60,25))*/ input /*#E*/ bSnoozeButtonPressed; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),218(5,45))*/ decision /*#E*/ ActivateAlarm=True; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),224(72,42))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),233(32,62))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),230(5,65))*/ decision /*#E*/ ActivateSnooze=False; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),236(72,67))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),242(32,80))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),239(5,85))*/ task {/*#E*/ ActivateSnooze:=True; SET(NOW+SnoozeDelay,SNOOZETimer);}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),245(5,105))*/ decision /*#E*/ RadioIsOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),254(72,105))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),251(90,105))*/ decision /*#E*/ BuzzerIsOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),263(117,122))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),260(90,125))*/ task {/*#E*/ BuzzerIsOn:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),272(90,145))*/ output /*#E*/ aBuzzerOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),623(80,117))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),251(90,105))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),266(32,122))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),257(5,125))*/ task {/*#E*/ RadioIsOn:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),269(5,145))*/ output /*#E*/ aRadioOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),245(5,105))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),281(60,175))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),230(5,65))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),218(5,45))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),221(75,50))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(2),209(70,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),302(65,10))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),305(60,25))*/ input /*#E*/ sTypeRadioSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),311(5,40))*/ decision /*#E*/ AlarmTypeRadio; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),320(52,50))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),317(65,45))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),326(27,57))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),323(5,60))*/ decision /*#E*/ ActivateAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),332(57,57))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),329(55,65))*/ task {/*#E*/ AlarmTypeRadio:=True; AlarmTypeBuzzer:=False; AlarmTypeOff:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),713(27,77))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),710(5,85))*/ decision /*#E*/ ActivateSnooze=False; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),722(107,95))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),719(80,100))*/ task {/*#E*/ AlarmTypeRadio:=True; AlarmTypeBuzzer:=False; AlarmTypeOff:=False; RadioIsOn:=True; BuzzerIsOn:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),716(27,102))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),335(5,110))*/ output /*#E*/ aBuzzerOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),341(5,125))*/ output /*#E*/ aRadioOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),347(5,140))*/ task {/*#E*/ AlarmTypeRadio:=True; AlarmTypeBuzzer:=False; AlarmTypeOff:=False; RadioIsOn:=True; BuzzerIsOn:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),710(5,85))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),323(5,60))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),353(50,170))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),311(5,40))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(3),302(65,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),401(75,15))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),398(70,30))*/ input /*#E*/ sTypeBuzzerSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),395(15,45))*/ decision /*#E*/ AlarmTypeBuzzer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),410(62,55))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),392(75,50))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),413(37,62))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),389(15,65))*/ decision /*#E*/ ActivateAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),416(67,62))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),386(65,70))*/ task {/*#E*/ AlarmTypeRadio:=False; AlarmTypeBuzzer:=True; AlarmTypeOff:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),731(37,82))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),728(15,90))*/ decision /*#E*/ ActivateSnooze=False; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),740(117,100))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),737(90,105))*/ task {/*#E*/ AlarmTypeRadio:=False; AlarmTypeBuzzer:=True; AlarmTypeOff:=False; RadioIsOn:=False; BuzzerIsOn:=True;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),734(37,107))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),383(15,115))*/ output /*#E*/ aRadioOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),380(15,130))*/ output /*#E*/ aBuzzerOn(BuzzerVolume); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),377(15,145))*/ task {/*#E*/ AlarmTypeRadio:=False; AlarmTypeBuzzer:=True; AlarmTypeOff:=False; RadioIsOn:=False; BuzzerIsOn:=True;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),728(15,90))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),389(15,65))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),374(60,175))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),395(15,45))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(4),401(75,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),473(80,15))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),470(75,30))*/ input /*#E*/ sTypeOffSel; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),467(20,45))*/ decision /*#E*/ AlarmTypeOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),482(67,55))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),464(80,50))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),485(42,62))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),461(20,65))*/ decision /*#E*/ ActivateAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),488(72,62))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),458(70,70))*/ task {/*#E*/ AlarmTypeRadio:=False; AlarmTypeBuzzer:=False; AlarmTypeOff:=True;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),509(42,82))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),506(20,85))*/ decision /*#E*/ AlarmTypeRadio; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),512(47,105))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),452(25,110))*/ output /*#E*/ aRadioOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),515(132,95))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),455(110,110))*/ output /*#E*/ aBuzzerOff; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),506(20,85))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),449(20,140))*/ task {/*#E*/ RESET(SNOOZETimer); AlarmTypeRadio:=False; AlarmTypeBuzzer:=False; AlarmTypeOff:=True; ActivateAlarm:=False; ActivateSnooze:=False; RadioIsOn:=False; BuzzerIsOn:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),461(20,65))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),446(65,175))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),467(20,45))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(5),473(80,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),533(70,10))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),536(65,25))*/ input /*#E*/ SNOOZETimer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),560(65,40))*/ task {/*#E*/ ActivateSnooze:=False;}; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),554(5,60))*/ decision /*#E*/ ActivateAlarm; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),569(52,67))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),566(70,60))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),584(27,77))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),575(5,85))*/ decision /*#E*/ AlarmTypeRadio; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),587(62,85))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),578(90,85))*/ decision /*#E*/ AlarmTypeBuzzer; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),596(112,102))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),593(90,110))*/ task /*#E*/ BuzzerIsOn:=True; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),605(90,125))*/ output /*#E*/ aBuzzerOn(BuzzerVolume); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),626(85,97))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),578(90,85))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),599(27,102))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),590(5,110))*/ task /*#E*/ RadioIsOn:=True; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),602(5,125))*/ output /*#E*/ aRadioOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),575(5,85))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),614(60,150))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),554(5,60))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(6),533(70,10))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),641(65,15))*/ state /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),644(50,30))*/ input /*#E*/ sBuzzerVolume(TestVol); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),650(55,45))*/ decision /*#E*/ TestVol>0; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),662(82,62))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),653(55,70))*/ decision /*#E*/ TestVol<4; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),665(82,87))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),656(55,95))*/ task /*#E*/ BuzzerVolume:=TestVol; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),671(55,110))*/ decision /*#E*/ BuzzerIsOn; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),692(82,127))*/ (True): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),689(55,135))*/ output /*#E*/ aBuzzerOn(BuzzerVolume); /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),701(122,160))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),671(55,110))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),704(45,87))*/ (False): /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),653(55,70))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),707(45,62))*/ Else: /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),650(55,45))*/ enddecision; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),695(65,160))*/ nextstate /*#E*/ ActualAlarmIdle; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr(7),641(65,15))*/ endstate; /*#SDTREF(SDL,H:\SEG2106\AlarmClock\ActualAlarm.spr,4)*/ endprocess ActualAlarm;