예제 #1
0
        protected override void CreateInstance()
        {
            if (Args != null && Args.Length > 0)
            {
                byte[] args = new byte[Args.Length + 2];
                args[0] = (byte)InitMode;
                Array.Copy(Args, 0, args, 2, Args.Length);
                messageStart = new ApiMessage(SerialApiCommands[0], args);
                messageStart.SequenceNumberCustomIndex = 3;
            }
            else
            {
                messageStart = new ApiMessage(SerialApiCommands[0], (byte)InitMode);
            }

            if ((InitMode & ~Modes.FlagModes) != Modes.NodeStop || (InitMode & ~Modes.FlagModes) != Modes.NodeStopFailed)
            {
                messageStart.SetSequenceNumber(SequenceNumber);
            }
            else
            {
                messageStart.SetSequenceNumber(0);
            }

            messageStop = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStop });
            messageStop.SetSequenceNumber(SequenceNumber);

            messageStopFailed = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStopFailed });
            messageStopFailed.SetSequenceNumber(0); //NULL funcID = 0

            messageStopDone = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStop });
            messageStopDone.SetSequenceNumber(0); //NULL funcID = 0

            handlerProtocolDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerProtocolDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.ProtocolDone));

            handlerDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Done));

            handlerNodeFound = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNodeFound.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.NodeFound));

            handlerAddingController = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerAddingController.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.AddingRemovingController));

            handlerAddingSlave = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerAddingSlave.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.AddingRemovingSlave));

            handlerLearnReady = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerLearnReady.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.LearnReady));

            handlerFailed = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerFailed.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Failed));

            handlerNotPrimary = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNotPrimary.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.NotPrimary));
        }
예제 #2
0
        protected override void CreateInstance()
        {
            messageStart = new ApiMessage(SerialApiCommands[0], ReplacedNodeId);
            messageStart.SetSequenceNumber(SequenceNumber);

            handlerRemoveStarted = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveStarted.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_STARTED));

            handlerNotPrimary = new ApiHandler(SerialApiCommands[0]);
            handlerNotPrimary.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_NOT_PRIMARY_CONTROLLER));

            handlerNoCallback = new ApiHandler(SerialApiCommands[0]);
            handlerNoCallback.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_NO_CALLBACK_FUNCTION));

            handlerNotFound = new ApiHandler(SerialApiCommands[0]);
            handlerNotFound.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_NOT_FOUND));

            handlerRemoveBusy = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveBusy.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_PROCESS_BUSY));

            handlerRemoveFail = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveFail.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_FAIL));


            handlerNodeOk = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNodeOk.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_NODE_OK));

            handlerRemoved = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerRemoved.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_FAILED_NODE_REMOVED));

            handlerNotRemoved = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNotRemoved.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_FAILED_NODE_NOT_REMOVED));
        }
예제 #3
0
        protected override void CreateInstance()
        {
            messageStart = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)mInitMode, (byte)NodeId });
            messageStart.SetSequenceNumber(SequenceNumber);

            messageStop = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStop });
            messageStop.SetSequenceNumber(SequenceNumber);

            messageStopFailed = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStopFailed });
            messageStopFailed.SetSequenceNumber(0); //NULL FuncId

            messageStopDone = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Modes.NodeStop });
            messageStopDone.SetSequenceNumber(0); //NULL FuncId

            handlerDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Done));

            handlerNodeFound = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNodeFound.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.NodeFound));

            handlerRemovingController = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerRemovingController.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.AddingRemovingController));

            handlerRemovingSlave = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerRemovingSlave.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.AddingRemovingSlave));

            handlerLearnReady = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerLearnReady.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.LearnReady));

            handlerFailed = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerFailed.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Failed));

            handlerNotPrimary = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNotPrimary.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.NotPrimary));
        }
예제 #4
0
        protected override void CreateInstance()
        {
            message = new ApiMessage(CommandTypes.CmdSerialApiTest,
                                     TestCmd,
                                     (byte)(TestDelay >> 8),
                                     (byte)TestDelay,
                                     TestPayloadLength,
                                     (byte)(TestCount >> 8),
                                     (byte)TestCount,
                                     (byte)TxOptions,
                                     (byte)TestNodeMask.Length);
            message.AddData(TestNodeMask);
            message.SetSequenceNumber(SequenceNumber);

            messageStop = new ApiMessage(CommandTypes.CmdSerialApiTest,
                                         0,
                                         0,
                                         0,
                                         0,
                                         0,
                                         0,
                                         0,
                                         0);

            handlerRetFailed = new ApiHandler(CommandTypes.CmdSerialApiTest);
            handlerRetFailed.AddConditions(new ByteIndex(0));

            handlerCallback = new ApiHandler(FrameTypes.Request, CommandTypes.CmdSerialApiTest);
        }
예제 #5
0
        protected override void CreateInstance()
        {
            message = new ApiMessage(SerialApiCommands[0], RxAckTimeout, RxByteTimeout);
            message.SetSequenceNumber(SequenceNumber);

            handler = new ApiHandler(SerialApiCommands[0]);
        }
예제 #6
0
        protected override void CreateInstance()
        {
            cmStart = new ApiMessage(SerialApiCommands[0], NodeId, (byte)Mode);
            cmStart.SetSequenceNumber(SequenceNumber);

            cmStop = new ApiMessage(SerialApiCommands[0], NodeId, (byte)SlaveLearnModes.VirtualSlaveLearnModeDisable);
            cmStop.SetSequenceNumber(SequenceNumber);

            cmSlaveNodeInfo = new ApiMessage(SerialApiCommands[1], NodeId, 0xFF, TxOptions);
            cmSlaveNodeInfo.SetSequenceNumber(SequenceNumber);

            chOk = new ApiHandler(SerialApiCommands[0]);
            chOk.AddConditions(new ByteIndex(0x01));

            chFailed = new ApiHandler(SerialApiCommands[0]);
            chFailed.AddConditions(new ByteIndex(0x00));

            chAssignComplete = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chAssignComplete.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignComplete));

            chAssignNodeIdDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chAssignNodeIdDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignNodeIdDone));

            chAssignRangeInfoUpdate = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chAssignRangeInfoUpdate.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignRangeInfoUpdate));
        }
예제 #7
0
        protected override void CreateInstance()
        {
            byte[] args = null;
            if (Args != null && Args.Length > 0)
            {
                args    = new byte[Args.Length + 2];
                args[0] = (byte)mReplacedNodeId;
                Array.Copy(Args, 0, args, 2, Args.Length);
                messageStart = new ApiMessage(SerialApiCommands[0], args);
                messageStart.SequenceNumberCustomIndex = 3;
            }
            else
            {
                args         = new byte[1];
                args[0]      = mReplacedNodeId;
                messageStart = new ApiMessage(SerialApiCommands[0], args);
            }

            messageStart.SetSequenceNumber(SequenceNumber);

            messageStopDone = new ApiMessage(CommandTypes.CmdZWaveAddNodeToNetwork, new byte[] { (byte)Modes.NodeStop });
            messageStopDone.SetSequenceNumber(0); //NULL funcID = 0

            handlerRemoveStarted = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveStarted.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_STARTED));

            handlerNotPrimary = new ApiHandler(SerialApiCommands[0]);
            handlerNotPrimary.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_NOT_PRIMARY_CONTROLLER));

            handlerNoCallback = new ApiHandler(SerialApiCommands[0]);
            handlerNoCallback.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_NO_CALLBACK_FUNCTION));

            handlerNotFound = new ApiHandler(SerialApiCommands[0]);
            handlerNotFound.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_NOT_FOUND));

            handlerRemoveBusy = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveBusy.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_PROCESS_BUSY));

            handlerRemoveFail = new ApiHandler(SerialApiCommands[0]);
            handlerRemoveFail.AddConditions(new ByteIndex((byte)FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_FAIL));

            handlerNodeOk = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerNodeOk.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_NODE_OK));

            handlerReplace = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerReplace.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_FAILED_NODE_REPLACE));

            handlerReplaceDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerReplaceDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_FAILED_NODE_REPLACE_DONE));

            handlerReplaceFail = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerReplaceFail.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)FailedNodeStatuses.ZW_FAILED_NODE_REPLACE_FAILED));

            handlerDone = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveAddNodeToNetwork);
            handlerDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Done));
        }
예제 #8
0
        protected override void CreateInstance()
        {
            messageStart = new ApiMessage(SerialApiCommands[0]);
            messageStart.SetSequenceNumber(SequenceNumber);

            handler = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveRequestNetworkUpdate);
            handler.AddConditions(ByteIndex.AnyValue, ByteIndex.AnyValue);

            handlerRetValFalse = new ApiHandler(CommandTypes.CmdZWaveRequestNetworkUpdate);
            handlerRetValFalse.AddConditions(new ByteIndex(0x00));
        }
 protected override void CreateInstance()
 {
     message = new ApiMessage(SerialApiCommands[0]);
     if (FuncId > 0)
     {
         message.SetSequenceNumber(FuncId);
     }
     handlerOk = new ApiHandler(FrameTypes.Response, SerialApiCommands[0]);
     handlerOk.AddConditions(new ByteIndex(0x01));
     handlerFail = new ApiHandler(FrameTypes.Response, SerialApiCommands[0]);
     handlerFail.AddConditions(new ByteIndex(0x00));
 }
예제 #10
0
        protected override void CreateInstance()
        {
            messageStart = new ApiMessage(SerialApiCommands[0], new byte[] { mNodeId });
            messageStart.SetSequenceNumber(SequenceNumber);

            handlerStarted = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerStarted.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RequestNeighborUpdateStatuses.Started));

            handlerDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RequestNeighborUpdateStatuses.Done));

            handlerFailed = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerFailed.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RequestNeighborUpdateStatuses.Failed));
        }
예제 #11
0
        protected override void CreateInstance()
        {
            _isAssignCompleteReceived = false;

            Mode = Mode == LearnModes.NodeAnyS2 ? LearnModes.LearnModeClassic : Mode;
            _setLearnModeStart = new ApiMessage(CommandTypes.CmdZWaveSetLearnMode, new byte[] { (byte)Mode });
            _setLearnModeStart.SetSequenceNumber(SequenceNumber);

            _setLearnModeStop = new ApiMessage(CommandTypes.CmdZWaveSetLearnMode, new byte[] { (byte)LearnModes.LearnModeDisable });
            _setLearnModeStop.SetSequenceNumber(0);

            _stopDelay = new TimeInterval(22, 200);

            _learnReady = new ApiHandler(FrameTypes.Response, CommandTypes.CmdZWaveSetLearnMode);
            _learnReady.AddConditions(new ByteIndex(0x01));

            _assignComplete = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveSetLearnMode);
            _assignComplete.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignComplete));

            _assignNodeIdDone = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveSetLearnMode);
            _assignNodeIdDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignNodeIdDone));

            _assignRangeInfoUpdate = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveSetLearnMode);
            _assignRangeInfoUpdate.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)AssignStatuses.AssignRangeInfoUpdate));

            _exploreRequestInclusion = new ApiMessage(CommandTypes.CmdZWaveExploreRequestInclusion);
            _exploreRequestInclusion.SetSequenceNumber(SequenceNumber);
            _exploreRequestInclusion.IsNoAck = true;

            _exploreRequestExclusion = new ApiMessage(CommandTypes.CmdZWaveExploreRequestExclusion);
            _exploreRequestExclusion.SetSequenceNumber(SequenceNumber);
            _exploreRequestExclusion.IsNoAck = true;

            _sendNodeInfo = new ApiMessage(CommandTypes.CmdZWaveSendNodeInformation, 0xFF, (byte)TransmitOptions.TransmitOptionNone);
            _sendNodeInfo.SetSequenceNumber(SequenceNumber);

            _sendNodeInfoRetFail = new ApiHandler(FrameTypes.Response, CommandTypes.CmdZWaveSendNodeInformation);
            _sendNodeInfoRetFail.AddConditions(new ByteIndex(0x00));

            _sendNodeInfoCallback = new ApiHandler(FrameTypes.Request, CommandTypes.CmdZWaveSendNodeInformation);
            _sendNodeInfoCallback.AddConditions(ByteIndex.AnyValue, ByteIndex.AnyValue);
        }
예제 #12
0
        protected override void CreateInstance()
        {
            messageStart = new ApiMessage(SerialApiCommands[0], new byte[] { mNodeId });
            messageStart.SetSequenceNumber(SequenceNumber);

            handlerRetValTrue = new ApiHandler(SerialApiCommands[0]);
            handlerRetValTrue.AddConditions(new ByteIndex(0xFF, 0xFF));

            handlerRetValFalse = new ApiHandler(SerialApiCommands[0]);
            handlerRetValFalse.AddConditions(new ByteIndex(0x00));

            handlerUpdateDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerUpdateDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RouteStatuses.UpdateDone));

            handlerUpdateAbort = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerUpdateAbort.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RouteStatuses.UpdateAbort));

            handlerLostFailed = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerLostFailed.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RouteStatuses.LostFailed));

            handlerLostAccept = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            handlerLostAccept.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)RouteStatuses.LostAccept));
        }
예제 #13
0
        protected override void CreateInstance()
        {
            cmZWaveSetLearnModeStart = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)Mode });
            cmZWaveSetLearnModeStart.SetSequenceNumber(SequenceNumber);

            cmZWaveSetLearnModeStop = new ApiMessage(SerialApiCommands[0], new byte[] { (byte)LearnModes.LearnModeDisable });
            cmZWaveSetLearnModeStop.SetSequenceNumber(SequenceNumber);

            cmZWaveExploreRequestInclusion = new ApiMessage(CommandTypes.CmdZWaveExploreRequestInclusion);
            cmZWaveExploreRequestInclusion.SetSequenceNumber(SequenceNumber);

            cmZWaveExploreRequestExclusion = new ApiMessage(CommandTypes.CmdZWaveExploreRequestExclusion);
            cmZWaveExploreRequestExclusion.SetSequenceNumber(SequenceNumber);

            chZWaveSetLearnModeStarted = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chZWaveSetLearnModeStarted.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.LearnReady));

            chZWaveSetLearnModeDone = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chZWaveSetLearnModeDone.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Done));

            chZWaveSetLearnModeFailed = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
            chZWaveSetLearnModeFailed.AddConditions(ByteIndex.AnyValue, new ByteIndex((byte)NodeStatuses.Failed));
        }
예제 #14
0
 protected override void CreateInstance()
 {
     message = new ApiMessage(SerialApiCommands[0]);
     message.SetSequenceNumber(SequenceNumber);
     handler = new ApiHandler(FrameTypes.Request, SerialApiCommands[0]);
 }