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); } }
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); } } }