Пример #1
0
 private void OnTestCompleted(ActionCompletedUnit ou)
 {
     _testIteration++;
     if (_sendTest.SpecificResult.TransmitStatus != TransmitStatuses.CompleteOk)
     {
         _failIterations++;
     }
     if (_testIteration >= _testFrameCount)
     {
         _sendPowerLevelTestNodeReport.NewToken();
         _sendPowerLevelTestNodeReport.NodeId = _testFromNodeId;
         _sendPowerLevelTestNodeReport.Data   = new COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_REPORT()
         {
             statusOfOperation = _failIterations == 0 ? (byte)0x01 : (byte)0x00,
             testFrameCount    = new byte[] { (byte)(_testIteration << 8), (byte)_testIteration },
             testNodeid        = _sendTest.NodeId
         };
         ou.SetNextActionItems(_sendPowerLevelTestNodeReport);
     }
     else
     {
         _sendTest.NewToken();
         ou.SetNextActionItems(_sendTest);
     }
 }
Пример #2
0
        protected override void OnHandledInternal(DataReceivedUnit ou)
        {
            ou.SetNextActionItems();
            byte nodeId = ReceivedAchData.SrcNodeId;

            byte[] command          = ReceivedAchData.Command;
            var    scheme           = (SecuritySchemes)ReceivedAchData.SecurityScheme;
            bool   isSuportedScheme = IsSupportedScheme(_network, command, scheme);

            if (command != null && command.Length > 1 && isSuportedScheme)
            {
                if (command[1] == COMMAND_CLASS_POWERLEVEL.POWERLEVEL_GET.ID)
                {
                    _powerLevelGet.NewToken();
                    _sendPowerLevelReport.NewToken();
                    _sendPowerLevelReport.NodeId         = nodeId;
                    _sendPowerLevelReport.SecurityScheme = scheme;
                    ou.SetNextActionItems(_powerLevelGet);
                }
                if (command[1] == COMMAND_CLASS_POWERLEVEL.POWERLEVEL_SET.ID)
                {
                    COMMAND_CLASS_POWERLEVEL.POWERLEVEL_SET cmd = command;
                    _powerLevelSet.NewToken();
                    _powerLevelSet.PowerLevel = cmd.powerLevel;
                    ou.SetNextActionItems(_powerLevelSet);
                }
                else if (command[1] == COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_SET.ID)
                {
                    COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_SET cmd = command;
                    _sendTest.NewToken();
                    _sendTest.NodeId     = cmd.testNodeid;
                    _sendTest.PowerLevel = cmd.powerLevel;

                    _testFromNodeId = nodeId;
                    _testFrameCount = Tools.GetInt32(cmd.testFrameCount);
                    _testIteration  = 0;
                    _failIterations = 0;
                    ou.SetNextActionItems(_sendTest);
                }
                else if (command[1] == COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_GET.ID)
                {
                    COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_GET cmd = command;
                    _sendPowerLevelTestNodeReport.NewToken();
                    _sendPowerLevelTestNodeReport.NodeId         = nodeId;
                    _sendPowerLevelTestNodeReport.SecurityScheme = scheme;
                    _sendPowerLevelTestNodeReport.Data           = new COMMAND_CLASS_POWERLEVEL.POWERLEVEL_TEST_NODE_REPORT()
                    {
                        statusOfOperation = _failIterations == 0 ? (byte)0x01 : (byte)0x00,
                        testFrameCount    = new byte[] { (byte)(_testIteration << 8), (byte)_testIteration },
                        testNodeid        = _sendTest.NodeId
                    };
                    ou.SetNextActionItems(_sendPowerLevelTestNodeReport);
                }
            }
        }