Exemple #1
0
        internal virtual void OnMessage(InsteonMessage message)
        {
            switch (message.MessageType)
            {
            case InsteonMessageType.Ack:
                PendingCommandAck(message);
                break;

            case InsteonMessageType.OnCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.On);
                break;

            case InsteonMessageType.OffCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                break;

            case InsteonMessageType.FastOnCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.On);
                OnDeviceStatusChanged(InsteonDeviceStatus.FastOn);
                break;

            case InsteonMessageType.FastOffCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                OnDeviceStatusChanged(InsteonDeviceStatus.FastOff);
                break;

            case InsteonMessageType.IncrementBeginBroadcast:
                dimmerDirection = message.Properties[PropertyKey.IncrementDirection] != 0 ? DimmerDirection.Up : DimmerDirection.Down;
                break;

            case InsteonMessageType.IncrementEndBroadcast:
                if (dimmerDirection == DimmerDirection.Up)
                {
                    OnDeviceStatusChanged(InsteonDeviceStatus.Brighten);
                }
                else if (dimmerDirection == DimmerDirection.Down)
                {
                    OnDeviceStatusChanged(InsteonDeviceStatus.Dim);
                }
                break;

            case InsteonMessageType.SetButtonPressed:
                OnSetButtonPressed(message);
                break;

            default:
                logger.Warn("Unhandled message type");
                break;
            }
        }
Exemple #2
0
        internal void OnMessage(InsteonMessage message)
        {
            // publish message
            _insteonMessageSubject.OnNext(message);

            switch (message.MessageType)
            {
            case InsteonMessageType.Ack:
                PendingCommandAck(message);
                break;

            case InsteonMessageType.OnCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.On);
                break;

            case InsteonMessageType.OffCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                break;

            case InsteonMessageType.FastOnCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.On);
                OnDeviceStatusChanged(InsteonDeviceStatus.FastOn);
                break;

            case InsteonMessageType.FastOffCleanup:
                OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                OnDeviceStatusChanged(InsteonDeviceStatus.FastOff);
                break;

            case InsteonMessageType.IncrementBeginBroadcast:
                dimmerDirection = message.Properties[PropertyKey.IncrementDirection] != 0 ? DimmerDirection.Up : DimmerDirection.Down;
                break;

            case InsteonMessageType.IncrementEndBroadcast:
                if (dimmerDirection == DimmerDirection.Up)
                {
                    OnDeviceStatusChanged(InsteonDeviceStatus.Brighten);
                }
                else if (dimmerDirection == DimmerDirection.Down)
                {
                    OnDeviceStatusChanged(InsteonDeviceStatus.Dim);
                }
                break;

            case InsteonMessageType.SetButtonPressed:
                OnSetButtonPressed(message);
                break;
            }
        }
        internal virtual void OnMessage(InsteonMessage message)
        {
            switch (message.MessageType)
            {
                case InsteonMessageType.Ack:
                    PendingCommandAck(message);
                    break;

                case InsteonMessageType.OnCleanup:
                    OnDeviceStatusChanged(InsteonDeviceStatus.On);
                    break;

                case InsteonMessageType.OffCleanup:
                    OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                    break;

                case InsteonMessageType.FastOnCleanup:
                    OnDeviceStatusChanged(InsteonDeviceStatus.On);
                    OnDeviceStatusChanged(InsteonDeviceStatus.FastOn);
                    break;

                case InsteonMessageType.FastOffCleanup:
                    OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                    OnDeviceStatusChanged(InsteonDeviceStatus.FastOff);
                    break;

                case InsteonMessageType.IncrementBeginBroadcast:
                    dimmerDirection = message.Properties[PropertyKey.IncrementDirection] != 0 ? DimmerDirection.Up : DimmerDirection.Down;
                    break;

                case InsteonMessageType.IncrementEndBroadcast:
                    if (dimmerDirection == DimmerDirection.Up)
                    {
                        OnDeviceStatusChanged(InsteonDeviceStatus.Brighten);
                    }
                    else if (dimmerDirection == DimmerDirection.Down)
                    {
                        OnDeviceStatusChanged(InsteonDeviceStatus.Dim);
                    }
                    break;

                case InsteonMessageType.SetButtonPressed:
                    OnSetButtonPressed(message);
                    break;
                default:
                    logger.Warn("Unhandled message type");
                    break;
            }
        }
Exemple #4
0
        internal void OnMessage(InsteonMessage message)
        {
            switch (message.MessageType)
            {
                case InsteonMessageType.Ack:
                    var cmd = this.PendingCommandAck(message);

                    if (cmd.HasValue)
                    {
                        // This feels wrong, but I'm not seeing the 'DeviceStatusChanged' as a result of setting the status.
                        // Could probably use some sort of 'map' here to map command to status.
                        switch (cmd.Value)
                        {
                            case InsteonDeviceCommands.On:
                                this.OnDeviceStatusChanged(InsteonDeviceStatus.On);
                                break;
                            case InsteonDeviceCommands.Off:
                                this.OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                                break;
                        }
                    }
                    break;

                case InsteonMessageType.OnCleanup:
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.On);
                    break;

                case InsteonMessageType.OffCleanup:
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                    break;

                case InsteonMessageType.FastOnCleanup:
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.On);
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.FastOn);
                    break;

                case InsteonMessageType.FastOffCleanup:
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.Off);
                    this.OnDeviceStatusChanged(InsteonDeviceStatus.FastOff);
                    break;

                case InsteonMessageType.IncrementBeginBroadcast:
                    this.dimmerDirection = message.Properties[PropertyKey.IncrementDirection] != 0 ? DimmerDirection.Up : DimmerDirection.Down;
                    break;

                case InsteonMessageType.IncrementEndBroadcast:
                    if (this.dimmerDirection == DimmerDirection.Up)
                    {
                        this.OnDeviceStatusChanged(InsteonDeviceStatus.Brighten);
                    }
                    else if (this.dimmerDirection == DimmerDirection.Down)
                    {
                        this.OnDeviceStatusChanged(InsteonDeviceStatus.Dim);
                    }
                    break;

                case InsteonMessageType.SetButtonPressed:
                    this.OnSetButtonPressed(message);
                    break;
            }
        }