Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }