Exemplo n.º 1
0
        void InitUpdateActions()
        {
            _updates = new Dictionary <Sensor, UpdateDelegate>();

            UpdateDelegate updateMonitor = new UpdateDelegate((s, token, value) =>
            {
                DoorPhysicalState monitorState = (DoorPhysicalState)value;
                s.DoorPhysicalState            = monitorState;
                _eventServer.DoorPhysicalStateEvent(null, "Changed", token, monitorState);
                _stateReporter.ReportStateUpdate(token, s);
            });

            _updates.Add(Sensor.DoorMonitor, updateMonitor);

            UpdateDelegate updateLockMonitor = new UpdateDelegate((s, token, value) =>
            {
                LockPhysicalState lockMonitorState = (LockPhysicalState)value;
                s.LockPhysicalState = lockMonitorState;
                _eventServer.LockPhysicalStateEvent(null, "Changed", token, lockMonitorState);
                _stateReporter.ReportStateUpdate(token, s);
            });

            _updates.Add(Sensor.DoorLockMonitor, updateLockMonitor);

            UpdateDelegate updateDoubleLockMonitor = new UpdateDelegate((s, token, value) =>
            {
                LockPhysicalState doubleLockMonitorState = (LockPhysicalState)value;
                s.DoubleLockPhysicalState = doubleLockMonitorState;
                _eventServer.DoubleLockPhysicalStateEvent(null, "Changed", token, doubleLockMonitorState);
                _stateReporter.ReportStateUpdate(token, s);
            });

            _updates.Add(Sensor.DoorDoubleLockMonitor, updateDoubleLockMonitor);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Constructor for DoorPhysicalStatePropertyEventArgs
 /// </summary>
 /// <param name="doorControlService">Door Control Service object</param>
 /// <param name="utcTime">UTC time of event</param>
 /// <param name="propertyOperation">Property operation</param>
 /// <param name="doorToken">Door Token</param>
 /// <param name="currentState">Current Door Monitor state</param>
 public DoorPhysicalStatePropertyEventArgs(DoorControlService doorControlService, DateTime utcTime, string propertyOperation, string doorToken, DoorPhysicalState currentState)
     : base(doorControlService, utcTime, propertyOperation, doorToken)
 {
     m_currentState = currentState;
 }
Exemplo n.º 3
0
        public void SignalReceived(string deviceToken, string deviceType, string sensor, string value)
        {
            ConfStorageLoad();

            LoggingService.LogMessage(string.Format("Signal received: token={0}, deviceType={1} sensor={2}, value={3}", deviceToken, deviceType, sensor, value), ExternalLogging.MessageType.Details);

            if (deviceType == "Door")
            {
                DoorState doorState = null;
                if (ConfStorage.DoorStateList.ContainsKey(deviceToken))
                {
                    doorState = ConfStorage.DoorStateList[deviceToken];
                }

                switch (sensor)
                {
                case "Alarm":
                {
                    DoorAlarmState state = (DoorAlarmState)Enum.Parse(typeof(DoorAlarmState), value);
                    if (doorState != null)
                    {
                        doorState.Alarm = state;
                        EventServer.DoorAlarmMonitorEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;

                case "LockPhysicalState":
                {
                    LockPhysicalState state =
                        (LockPhysicalState)Enum.Parse(typeof(LockPhysicalState), value);
                    if (doorState != null)
                    {
                        doorState.LockPhysicalState = state;
                        EventServer.LockPhysicalStateEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;

                case "DoubleLockPhysicalState":
                {
                    LockPhysicalState state =
                        (LockPhysicalState)Enum.Parse(typeof(LockPhysicalState), value);

                    if (doorState != null)
                    {
                        doorState.DoubleLockPhysicalState = state;
                        EventServer.DoubleLockPhysicalStateEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;

                case "DoorPhysicalState":
                {
                    DoorPhysicalState state =
                        (DoorPhysicalState)Enum.Parse(typeof(DoorPhysicalState), value);

                    if (doorState != null)
                    {
                        doorState.DoorPhysicalState = state;
                        EventServer.DoorPhysicalStateEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;

                case "Tamper":
                {
                    DoorTamperState state =
                        (DoorTamperState)Enum.Parse(typeof(DoorTamperState), value);

                    if ((doorState != null) && (doorState.Tamper != null))
                    {
                        doorState.Tamper.State = state;
                        EventServer.DoorTamperMonitorEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;

                case "Fault":
                {
                    DoorFaultState state =
                        (DoorFaultState)Enum.Parse(typeof(DoorFaultState), value);

                    if ((doorState != null) && (doorState.Fault != null))
                    {
                        doorState.Fault.State = state;
                        EventServer.DoorFaultEvent(null, "Changed", deviceToken, state);
                    }
                }
                break;
                }

                StateReporter.ReportStateUpdate(deviceToken, doorState);
            }

            if (deviceType == "Credential")
            {
                CredentialState credentialState = null;
                if (ConfStorage.CredentialStateList.ContainsKey(deviceToken))
                {
                    credentialState = ConfStorage.CredentialStateList[deviceToken];
                }

                switch (sensor)
                {
                case "AntipassbackViolated":
                {
                    bool state = (value == "True");
                    if (credentialState != null)
                    {
                        credentialState.AntipassbackState.AntipassbackViolated = state;
                        //TODO: event
                    }
                }
                break;
                }
            }
        }