/// <summary> /// Calling this routine acknowledges an individual alarm /// </summary> /// <param name="myEventID"></param> /// <returns></returns> async public Task BeginAlarmAcknowledge(int myEventId) { // Find the event we are acknowledging. IEnumerable <IEventItem> query = null; using (var releaser = await _lock.ReaderLockAsync()) { query = from item in this where item.EventId == myEventId select item; } // If we have found the trigger event, then build the acknowledge event if (query.Count <IEventItem>() > 0) { IEventItem triggerEvent = query.First <IEventItem>(); IEventItem acknowledgedEvent = new EventItem(triggerEvent.SensorId); acknowledgedEvent.EventPriority = 0; acknowledgedEvent.EventCode = EventCode.AlarmAcknowledged; acknowledgedEvent.Value = 0; await this.BeginAddEvent(acknowledgedEvent, true); // if this event has triggered an alarm, cancel that alarm. AlarmAudio.CancelAlarm(triggerEvent.EventId); } }
/// <summary> /// Add an event, and send email if appropriate /// </summary> /// <param name="myEventItem"></param> /// <param name="bRaiseEvent"></param> async public Task BeginAddEvent(IEventItem myEventItem, bool bRaiseEvent) { await myEventItem.BeginCommit(); Debug.Assert(myEventItem.EventId > 0); // If the alarm is turned on, then add it to the list. If the alarm was turned off, // the delete it from the list. if (myEventItem.IsAlarmOn) { using (var releaser = await _lock.WriterLockAsync()) { _alarmOnList.Add(myEventItem); } await AlarmAudio.PlayAlarm(false, myEventItem.EventId); } using (var releaser = await _lock.WriterLockAsync()) { base.Add(myEventItem); } if (App.VesselSettings.SendAlarmEmail) { this.SendEventEmail(myEventItem); } }