{"text_format":"3","workbook":"xls","n_sheets":3,"sheets":["Sheet1","Sheet2","Sheet3"],"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"Sheet1","index":0,"n_rows":65,"n_cols":6,"rows_kept":65,"flags":["formulas_cached_only"]}
[]
["Alarm State Transition and Alarm - Alert Server Communication, when adding and snoozing one single alarm"]
[]
[]
["Involved Components:"]
["The event schedule describes the actions taken place in each of the involved threads (main threads regarding alarm handling)"]
["Column A describes the commands from the Client Thread"]
["Column B and C partly describes the events taken place within the alarm server as well as the state changes of an alarm"]
["Column E describes the ITC com. Between the Alarm Server Thread and the Alert Server Thread."]
{"$rows_empty":7}
["Event Schedule"]
["This schedule sort of describes the state transitions for an alarm and the signaling between the AlarmAlertServ and AlarmServer when adding a single alarm and snooze it when it expires."]
["The first column (A) describes the user action, i.e. when the user creates, snozzes and cancels an alarm"]
["The second column (B) points out when the alarm timer exipres, i.e. the RunL method of the CASSrvAlarmTimer is trigged"]
["The third column(C) describes the alarm states for the particular alarm."]
["The fourth column (D) shows the time in seconds"]
["The fifth column (E) shows the notification between alarm server and alert server (the bold messages displays the messages from alert server to alarm server)"]
["The last column(F) gives some comments about the notifications in column E"]
[]
["User Actions","AlarmTimer","AlarmState","Time","Notifications between AlarmServer and AlertServer","Comment"]
["No alarm is created",null,"AlarmNotCreated",{"v":1.82,"d":"1.820"}]
[{"$nulls":3},{"v":1.82,"d":"1.820"}]
[{"$nulls":3},{"v":4.49,"d":"4.490"}]
["Here we create an alarm to expire ",null,null,{"v":4.5,"d":"4.500"},"AlarmServer sends EASAltOpCodeNotify to AlertServer, i.e. Signs up for a new message from AlertServer","The Alarm Server appends a TRequestStatus that will be completed by the Alert Server. When completed the AlarmServer will run CASAltEventHandler::RunL and thereby we have a com link from the Alert Server to the Alarm Server"]
["within 3 seconds, ",null,null,{"v":4.5,"d":"4.500"},"AlarmServer sends EASAltOpCodeLogon to AlertServer","The Alamr Server logs on to the Alert Server"]
["we add it to the queue",null,null,{"v":4.5,"d":"4.500"},"AlarmServer sends EASAltOpCodeVisible to hide AlertServer screen","The Alarm Server tells the Alert Server to hide the Alerting Window"]
[{"$nulls":3},{"v":4.5,"d":"4.500"},"AlarmServer sends EASAltOpCodeSetState to AlertServer","The Alarm Server resets the state of the Alert Server"]
[null,null,"EAlarmStateQueued",4.515]
[{"$nulls":3},{"v":4.52,"d":"4.520"}]
[null,"Exipre",null,8.005,"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound"]
[{"$nulls":3},8.005,"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound, it might be strange that the Alarm server sends this command twice. We can probably fix this by introducing a filter within the Alarm Server"]
[{"$nulls":3},8.005,"AlarmServer sends EASAltOpCodeSetAlarm to AlertServer","The Alarm Server Transmitts the alarm associated data to the Alert Server."]
[{"$nulls":3},8.005,"AlarmServer sends EASAltOpCodeVisible to show AlertServer screen","The Alarm Server Tells The Allert Server to show the allerting window"]
[{"$nulls":3},8.085,"AlarmServer sends EASAltOpCodeSetState to AlertServer","The Alarm Server updates the state of the Alert Server"]
[{"$nulls":3},{"v":8.16,"d":"8.160"},"AlarmServer sends EASAltOpCodeVisible to show AlertServer screen","The Alarm Server Tells The Allert Server to show the allerting window, this is also sent twice. If this is a problem then I think it is possible to remove the second sending"]
[{"$nulls":3},{"v":8.16,"d":"8.160"},"AlarmServer sends EASAltOpCodeStartPlayingSound to AlertServer","The Alarm Server Tells The Allert Server to start playing the alarm sound"]
[null,null,"EAlarmStateNotifying(3)",{"v":8.17,"d":"8.170"}]
["Press the snooze button",null,null,{"v":11.49,"d":"11.490"},"AlarmServer sends EASAltOpCodeNotify to AlertServer, i.e. Signs up for a new message from AlertServer","The Alarm Server appends a TRequestStatus that will be completed by the Alert Server. When completed the AlarmServer will run CASAltEventHandler::RunL and thereby we have a com link from the Alert Server to the Alarm Server"]
[{"$nulls":3},{"v":11.49,"d":"11.490"},"AlertServer responds EASAltAlertServerResponseSnooze to AlarmServer, the respons contains the time the alarm will be snoozed","The Alert Server responds with a time that the alarm is going to be snoozed or paused"]
[{"$nulls":3},11.495,"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound"]
[{"$nulls":3},11.495,"AlarmServer sends EASAltOpCodeVisible to hide AlertServer screen","The Alarm Server tells the Alert Server to hide the Alerting Window"]
[{"$nulls":3},{"v":11.5,"d":"11.500"},"AlarmServer sends EASAltOpCodeSetState to AlertServer","The Alarm Server updates the state of the Alert Server"]
[null,null," EAlarmStateSnoozed",11.505]
[{"$nulls":3},11.505]
[null,"Expire",null,32.005,"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound"]
[{"$nulls":3},32.005,"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound, it might be strange that the Alarm server sends this command twice. We can probably fix this by introducing a filter within the Alarm Server"]
[{"$nulls":3},32.005,"AlarmServer sends EASAltOpCodeSetAlarm to AlertServer","The Alarm Server Transmitts the alarm associated data to the Alert Server."]
[{"$nulls":3},32.005,"AlarmServer sends EASAltOpCodeVisible to show AlertServer screen","The Alarm Server Tells The Allert Server to show the allerting window"]
[{"$nulls":3},32.055,"AlarmServer sends EASAltOpCodeSetState to AlertServer","The Alarm Server updates the state of the Alert Server"]
[{"$nulls":3},32.095,"AlarmServer sends EASAltOpCodeVisible to show AlertServer screen","The Alarm Server Tells The Allert Server to show the allerting window, this is also sent twice. If this is a problem then I think it is possible to remove the second sending"]
[null,null,"EAlarmStateNotifying",{"v":32.1,"d":"32.100"},"AlarmServer sends EASAltOpCodeStartPlayingSound to AlertServer","The Alarm Server Tells The Allert Server to start playing the alarm sound"]
[{"$nulls":3},{"v":32.1,"d":"32.100"}]
[{"$nulls":3},32.105]
["The alarm is canceled",null,null,{"v":40.26,"d":"40.260"},"AlarmServer sends EASAltOpCodeNotify to AlertServer, i.e. Signs up for a new message from AlertServer","The Alarm Server appends a TRequestStatus that will be completed by the Alert Server. When completed the AlarmServer will run CASAltEventHandler::RunL and thereby we have a com link from the Alert Server to the Alarm Server"]
[{"$nulls":3},{"v":40.26,"d":"40.260"},"AlertServer responds EASAltAlertServerResponseClear to AlarmServer","The Alert Server responds with a time that the alarm is going to be snoozed or paused"]
[{"$nulls":3},{"v":40.26,"d":"40.260"},"AlarmServer sends EASAltOpCodeStopPlayingSound to AlertServer","The Alarm Server Tells The Alert Server to stop playing the sound"]
[{"$nulls":3},{"v":40.26,"d":"40.260"},"AlarmServer sends EASAltOpCodeVisible to hide AlertServer screen","The Alarm Server tells the Alert Server to hide the Alerting Window"]
[{"$nulls":3},40.265,"AlarmServer sends EASAltOpCodeSetState to AlertServer","The Alarm Server updates the state of the Alert Server"]
[null,null,"EAlarmStateNotified",{"v":40.27,"d":"40.270"}]

{"sheet":"Sheet2","index":1,"n_rows":0,"n_cols":0,"rows_kept":0,"flags":["formulas_cached_only"]}

{"sheet":"Sheet3","index":2,"n_rows":0,"n_cols":0,"rows_kept":0,"flags":["formulas_cached_only"]}