protected override void OnCallbackInternal(DataReceivedUnit ou)
 {
     if (ou.DataFrame.Payload != null && ou.DataFrame.Payload.Length > 1)
     {
         SpecificResult.RetStatus = ou.DataFrame.Payload[1];
     }
 }
Ejemplo n.º 2
0
 private void OnHandled(DataReceivedUnit ou)
 {
     if (_listenCallback != null && ou.DataFrame != null && ou.DataFrame.Payload != null)
     {
         _listenCallback(ou.DataFrame.Payload);
     }
 }
Ejemplo n.º 3
0
        private void OnReceived(DataReceivedUnit ou)
        {
            var payload = ou.DataFrame.Payload;

            SpecificResult.RetValue = payload[0];
            SetStateCompleted(ou);
        }
Ejemplo n.º 4
0
 private void OnReceived(DataReceivedUnit ou)
 {
     byte[] ret = ou.DataFrame.Payload;
     SpecificResult.PriorityRoute = new byte[ret.Length - 1];
     Array.Copy(ret, 1, SpecificResult.PriorityRoute, 0, SpecificResult.PriorityRoute.Length);
     SetStateCompleted(ou);
 }
Ejemplo n.º 5
0
        protected override void OnHandledInternal(DataReceivedUnit ou)
        {
            ou.SetNextActionItems();
            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_BASIC.BASIC_GET.ID)
                {
                    ApiOperation sendData = null;
                    var          data     = new COMMAND_CLASS_BASIC.BASIC_REPORT()
                    {
                        value = Value
                    };
                    sendData = new SendDataExOperation(ReceivedAchData.DestNodeId, ReceivedAchData.SrcNodeId, data, TxOptions, TxSecOptions, scheme, TxOptions2);
                    ou.SetNextActionItems(sendData);
                }
                else if (command[1] == COMMAND_CLASS_BASIC.BASIC_SET.ID)
                {
                    var basicSetCommand = (COMMAND_CLASS_BASIC.BASIC_SET)command;
                    Value = basicSetCommand.value;
                }
            }
        }
Ejemplo n.º 6
0
 private void OnRetValue(DataReceivedUnit ou)
 {
     FailedNodeRetValues = (FailedNodeRetValues)ou.DataFrame.Payload[0];
     if (FailedNodeRetValues != FailedNodeRetValues.ZW_FAILED_NODE_REMOVE_STARTED)
     {
         SetStateFailed(ou);
     }
 }
Ejemplo n.º 7
0
        private void OnReceived(DataReceivedUnit ou)
        {
            var payload = ou.DataFrame.Payload;

            SpecificResult.TxTimeChannel0 = payload[0];
            SpecificResult.TxTimeChannel1 = payload[1];
            SpecificResult.TxTimeChannel2 = payload[2];
            SetStateCompleted(ou);
        }
Ejemplo n.º 8
0
 private void OnReceived(DataReceivedUnit ou)
 {
     SpecificResult.ReceivedData = ou.DataFrame.Payload;
     if (TextEncoding != null)
     {
         SpecificResult.ReceivedText = TextEncoding.GetString(SpecificResult.ReceivedData);
     }
     SetStateCompleted(ou);
 }
Ejemplo n.º 9
0
 private void OnNodeIdDone(DataReceivedUnit ou)
 {
     if (ou.DataFrame.Payload.Length > 2)
     {
         SpecificResult.NodeId = ou.DataFrame.Payload[2];
     }
     AssignStatus = (AssignStatuses)ou.DataFrame.Payload[1];
     AssignStatusCallback(AssignStatus);
 }
Ejemplo n.º 10
0
 private void OnDone(DataReceivedUnit ou)
 {
     LearnStatus = (NodeStatuses)ou.DataFrame.Payload[1];
     NodeStatusCallback(LearnStatus);
     if (ou.DataFrame.Payload.Length > 2)
     {
         SpecificResult.NodeId = ou.DataFrame.Payload[2];
     }
     base.SetStateCompleting(ou);
 }
Ejemplo n.º 11
0
 private void OnAssignComplete(DataReceivedUnit ou)
 {
     if (ou.DataFrame.Payload.Length > 2)
     {
         SpecificResult.NodeId = ou.DataFrame.Payload[2];
     }
     AssignStatus = (AssignStatuses)ou.DataFrame.Payload[1];
     AssignStatusCallback(AssignStatus);
     _isAssignCompleteReceived = true;
 }
Ejemplo n.º 12
0
 private void OnReceived(DataReceivedUnit ou)
 {
     byte[] ret = ou.DataFrame.Payload;
     SpecificResult.NodeId        = ret[0];
     SpecificResult.RetVal        = (ret[1] == 0x01) ? true : false;
     SpecificResult.PriorityRoute = new byte[ret.Length - 3];
     SpecificResult.RouteSpeed    = ret[ret.Length - 1];
     Array.Copy(ret, 2, SpecificResult.PriorityRoute, 0, SpecificResult.PriorityRoute.Length);
     SetStateCompleted(ou);
 }
Ejemplo n.º 13
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);
                }
            }
        }
Ejemplo n.º 14
0
        protected void ParseHandler(DataReceivedUnit ou)
        {
            byte[] res = ou.DataFrame.Payload;
            SequenceNumber = res[0];
            NodeStatus     = (NodeStatuses)res[1];

            if (NodeStatus == NodeStatuses.AddingRemovingController || NodeStatus == NodeStatuses.AddingRemovingSlave)
            {
                if (NodeStatus == NodeStatuses.AddingRemovingSlave)
                {
                    SpecificResult.IsSlave = true; //set isController bit
                }
                if (res.Length > 2)
                {
                    SpecificResult.Id = res[2];
                }


                byte nodeInfoLength = 0;

                if (res.Length > 3)
                {
                    nodeInfoLength = res[3];
                }

                if (nodeInfoLength > 3)
                {
                    SpecificResult.CommandClasses = new byte[nodeInfoLength - 3];
                }

                for (int i = 0; i < nodeInfoLength; i++)
                {
                    byte value = res[4 + i];
                    switch (i)
                    {
                    case 0:
                        SpecificResult.Basic = value;
                        break;

                    case 1:
                        SpecificResult.Generic = value;
                        break;

                    case 2:
                        SpecificResult.Specific = value;
                        break;

                    default:
                        SpecificResult.CommandClasses[i - 3] = value;
                        break;
                    }
                }
            }
            NodeStatusCallback(NodeStatus);
        }
Ejemplo n.º 15
0
 private void OnHandled(DataReceivedUnit ou)
 {
     if (!isHandled)
     {
         isHandled = true;
         //if (OnHandledCallback != null)
         //{
         //    OnHandledCallback(ou);
         //}
     }
 }
Ejemplo n.º 16
0
 private void OnHandledAA(DataReceivedUnit ou)
 {
     if (ExtensionS2TypeSpecified)
     {
         try
         {
             if (ou.DataFrame.Extensions != null)
             {
                 if (_extensionS2Types != null && _extensionS2Types.Length > 0)
                 {
                     if (ou.DataFrame.Extensions.ExtensionsList.Any() && ou.DataFrame.Extensions.EncryptedExtensionsList.Any())
                     {
                         var ext = ou.DataFrame.Extensions.ExtensionsList.Union(ou.DataFrame.Extensions.EncryptedExtensionsList);
                         if (ext.Where(x => _extensionS2Types.Contains(x.properties1.type)).Count() == _extensionS2Types.Length)
                         {
                             OnHandledInternal(ou);
                         }
                     }
                     else if (ou.DataFrame.Extensions.ExtensionsList.Any())
                     {
                         var ext = ou.DataFrame.Extensions.ExtensionsList;
                         if (ext.Where(x => _extensionS2Types.Contains(x.properties1.type)).Count() == _extensionS2Types.Length)
                         {
                             OnHandledInternal(ou);
                         }
                     }
                     else if (ou.DataFrame.Extensions.EncryptedExtensionsList.Any())
                     {
                         var ext = ou.DataFrame.Extensions.EncryptedExtensionsList;
                         if (ext.Where(x => _extensionS2Types.Contains(x.properties1.type)).Count() == _extensionS2Types.Length)
                         {
                             OnHandledInternal(ou);
                         }
                     }
                 }
                 else
                 {
                     if (!ou.DataFrame.Extensions.ExtensionsList.Any() && !ou.DataFrame.Extensions.EncryptedExtensionsList.Any())
                     {
                         OnHandledInternal(ou);
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             "{0}"._EXLOG(ex.Message);
         }
     }
     else
     {
         OnHandledInternal(ou);
     }
 }
Ejemplo n.º 17
0
 private void OnCallback(DataReceivedUnit ou)
 {
     FailedNodeStatus = (FailedNodeStatuses)ou.DataFrame.Payload[1];
     if (FailedNodeStatus == FailedNodeStatuses.ZW_FAILED_NODE_REMOVED)
     {
         SetStateCompleted(ou);
     }
     else
     {
         SetStateFailed(ou);
     }
 }
Ejemplo n.º 18
0
 private void OnRetDataReceived(DataReceivedUnit ou)
 {
     SpecificResult.ByteArray = ou.DataFrame.Payload;
     if (ou.DataFrame.Payload[0] == _testInterfaceCmd[0])
     {
         if (ou.DataFrame.Payload.Length >= 2)
         {
             SpecificResult.ByteArray = new byte[ou.DataFrame.Payload.Length - 2];
             Array.Copy(ou.DataFrame.Payload, 1, SpecificResult.ByteArray, 0, SpecificResult.ByteArray.Length);
         }
     }
     SetStateCompleted(ou);
 }
Ejemplo n.º 19
0
 protected override void OnHandledInternal(DataReceivedUnit ou)
 {
     SpecificResult.Options          = ReceivedAchData.Options;
     SpecificResult.SrcNodeId        = ReceivedAchData.SrcNodeId;
     SpecificResult.DestNodeId       = ReceivedAchData.DestNodeId;
     SpecificResult.Command          = ReceivedAchData.Command;
     SpecificResult.Rssi             = ReceivedAchData.Rssi;
     SpecificResult.SecurityScheme   = (SecuritySchemes)ReceivedAchData.SecurityScheme;
     SpecificResult.Extensions       = ReceivedAchData.Extensions;
     SpecificResult.SubstituteStatus = (ou.DataFrame.SubstituteIncomingFlags & SubstituteIncomingFlags.Security) > 0 ?
                                       SubstituteStatuses.Done : SubstituteStatuses.Failed;
     SetStateCompleted(ou);
 }
Ejemplo n.º 20
0
 private void OnReceived(DataReceivedUnit ou)
 {
     byte[] ret = ou.DataFrame.Payload;
     SpecificResult.RetVal = ret[0];
     _maxAttempts--;
     if (SpecificResult.RetVal > 0 || _maxAttempts <= 0)
     {
         SetStateCompleted(ou);
     }
     else
     {
     }
 }
Ejemplo n.º 21
0
 protected void OnHandler(DataReceivedUnit ou)
 {
     OutputParameters         = ou.DataFrame.Payload;
     SpecificResult.ByteArray = OutputParameters;
     if (SpecificResult.ByteValue > 0)
     {
         SetStateCompleted(ou);
     }
     else
     {
         SetStateFailed(ou);
     }
 }
Ejemplo n.º 22
0
        private void OnBridgeHandled(DataReceivedUnit ou)
        {
            ReceivedAchData.TimeStamp               = DateTime.Now;
            ReceivedAchData.CommandType             = CommandTypes.CmdApplicationCommandHandler_Bridge;
            ReceivedAchData.SubstituteIncomingFlags = ou.DataFrame.SubstituteIncomingFlags;
            int cmdLength = ou.DataFrame.CmdLength;

            if (IsFillReceived)
            {
                FillReceived(ou.DataFrame.Payload, 1, 2, 3, cmdLength);
                ReceivedAchData.Extensions = ou.DataFrame.Extensions;
            }
            OnHandledAA(ou);
        }
Ejemplo n.º 23
0
 protected override void OnHandledInternal(DataReceivedUnit ou)
 {
     if (_filterNodeId > 0)
     {
         if (ReceivedAchData.SrcNodeId == _filterNodeId ||
             (_filterSucNodeId > 0 && ReceivedAchData.SrcNodeId == _filterSucNodeId))
         {
         }
         else
         {
             ou.DataFrame.IsHandled = true;
             "DENIED FilterNodeId: {0}"._DLOG(ReceivedAchData.SrcNodeId);
         }
     }
 }
Ejemplo n.º 24
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 (isSuportedScheme && command != null && command.Length > 1)
            {
                if (command[1] == COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_CAPABILITIES_GET.ID)
                {
                    var cmd = (COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_CAPABILITIES_GET)command;
                    var rpt = new COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_CAPABILITIES_REPORT()
                    {
                        minimumWakeUpIntervalSeconds = new byte[] { 0x00, 0x00, 0x3C },
                        maximumWakeUpIntervalSeconds = new byte[] { 0x01, 0x51, 0x80 },
                        defaultWakeUpIntervalSeconds = new byte[] { 0x00, 0x01, 0x2C },
                        wakeUpIntervalStepSeconds    = new byte[] { 0x00, 0x00, 0x3C }
                    };
                    var sendData = new SendDataExOperation(nodeId, rpt, TxOptions, scheme);
                    ou.SetNextActionItems(sendData);
                }
                else if (command[1] == COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_GET.ID)
                {
                    var cmd = (COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_GET)command;
                    var rpt = new COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_REPORT()
                    {
                        seconds = _wakeupDelay
                    };
                    var sendData = new SendDataExOperation(nodeId, rpt, TxOptions, scheme);
                    ou.SetNextActionItems(sendData);
                }
                else if (command[1] == COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_SET.ID)
                {
                    var cmd = (COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_INTERVAL_SET)command;
                    _wakeupDelay = cmd.seconds;
                }
                else if (command[1] == COMMAND_CLASS_WAKE_UP_V2.WAKE_UP_NO_MORE_INFORMATION.ID)
                {
                    _disableRFReceiveOperation.NewToken();
                    ou.SetNextActionItems(_disableRFReceiveOperation);
                }
            }
        }
Ejemplo n.º 25
0
 protected virtual void OnCallback(DataReceivedUnit ou)
 {
     OnCallbackInternal(ou);
     if (ou.DataFrame.Payload != null && ou.DataFrame.Payload.Length > 1)
     {
         //TransmitStatuses ts = (TransmitStatuses)ou.DataFrame.Payload[1];
         //if (isHandled && (ts == TransmitStatuses.CompleteOk || ts == TransmitStatuses.CompleteNoAcknowledge || ts == TransmitStatuses.CompleteOk))
         //    SetStateCompleted(ou);
         //else
         //    SetStateFailed(ou);
         SetStateCompleted(ou);
     }
     else
     {
         SetStateFailed(ou);
     }
 }
Ejemplo n.º 26
0
        private void OnReceived(DataReceivedUnit unit)
        {
            var payload = ((ApiHandler)unit.ActionHandler).DataFrame.Payload;

            _homeId = new byte[] { payload[3], payload[4], payload[5], payload[6] };
            var dsk = _dskNeededCallback(_homeId);

            if (!_isRunning && dsk != null && dsk.Item2 != null && dsk.Item2.Length >= 16)
            {
                SetRunning();
                byte[] dskPart = new byte[8];
                Array.Copy(dsk.Item2, 8, dskPart, 0, 8);
                IAddRemoveNode addNode = null;
                if (dsk.Item1 > 0)
                {
                    //addNode = new ReplaceFailedNodeOperation(dsk.First, _setNodeStatusSignal, _timeoutMs, dskPart) { SequenceNumber = SequenceNumber, DskValue = dsk.Item2 };
                    addNode = new AddNodeOperation((Modes.NodeOptionNetworkWide | Modes.NodeHomeId), _setNodeStatusSignal, _timeoutMs, dskPart)
                    {
                        SequenceNumber = SequenceNumber, DskValue = dsk.Item2, GrantSchemesValue = dsk.Item3
                    };
                }
                else
                {
                    addNode = new AddNodeOperation((Modes.NodeOptionNetworkWide | Modes.NodeHomeId), _setNodeStatusSignal, _timeoutMs, dskPart)
                    {
                        SequenceNumber = SequenceNumber, DskValue = dsk.Item2, GrantSchemesValue = dsk.Item3
                    };
                }
                var action = new InclusionTask(_network, addNode, true);
                action.CompletedCallback = (x) =>
                {
                    var act = x as ActionBase;
                    if (act != null)
                    {
                        ReleaseRunning();
                        _busyCallback(false, dsk.Item2, act.Result);
                    }
                };
                unit.SetNextActionItems(new ActionSerialGroup(action, new SetSmartStartAction(true)));
                _busyCallback(true, null, null);
            }
            else
            {
                unit.SetNextActionItems(new SetSmartStartAction(true));
            }
        }
Ejemplo n.º 27
0
        private void OnPModeHandled(DataReceivedUnit ou)
        {
            ReceivedAchData.TimeStamp               = DateTime.Now;
            ReceivedAchData.CommandType             = CommandTypes.CmdApplicationCommandHandlerPMode;
            ReceivedAchData.SubstituteIncomingFlags = ou.DataFrame.SubstituteIncomingFlags;
            int cmdLength = ou.DataFrame.CmdLength;

            if (IsFillReceived)
            {
                FillReceived(ou.DataFrame.Payload, 0, 1, 2, cmdLength);
                ReceivedAchData.Extensions = ou.DataFrame.Extensions;
            }
            if (DestNodeId == 0 || DestNodeId == ReceivedAchData.DestNodeId)
            {
                OnHandledAA(ou);
            }
        }
Ejemplo n.º 28
0
 private void OnCallback(DataReceivedUnit ou)
 {
     FailedNodeStatus = (FailedNodeStatuses)ou.DataFrame.Payload[1];
     if (FailedNodeStatus != FailedNodeStatuses.ZW_FAILED_NODE_REPLACE && FailedNodeStatus != FailedNodeStatuses.ZW_FAILED_NODE_REPLACE_DONE)
     {
         base.SetStateFailed(ou);
     }
     if (FailedNodeStatus == FailedNodeStatuses.ZW_FAILED_NODE_REPLACE_DONE)
     {
         SpecificResult.Id = mReplacedNodeId;
         if (NodeStatusCallback != null)
         {
             NodeStatusCallback(NodeStatuses.Done);
         }
         base.SetStateCompleted(ou);
     }
 }
Ejemplo n.º 29
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)
            {
                switch (command[1])
                {
                case (COMMAND_CLASS_FIRMWARE_UPDATE_MD_V5.FIRMWARE_MD_GET.ID):
                {
                    ou.SetNextActionItems(SendFwuMdReport(nodeId, scheme));
                }
                break;

                case (COMMAND_CLASS_FIRMWARE_UPDATE_MD_V5.FIRMWARE_UPDATE_MD_REQUEST_GET.ID):
                {
                    ou.SetNextActionItems(HandleCmdClassFirmwareUpdateMdReqGet(nodeId, command, scheme));
                    if (_pStatus == 0xFF)
                    {
                        _firmwareOffset = 0;
                        ou.AddNextActionItems(SendFwuMdGet(nodeId, START_REPORT_NUMBER, scheme));
                        _firmwareUpdateNvmInit.NewToken();
                        ou.AddNextActionItems(_firmwareUpdateNvmInit);
                        _firmwareUpdateNvmSetNewImageFalse.NewToken();
                        ou.AddNextActionItems(_firmwareUpdateNvmSetNewImageFalse);
                    }
                }
                break;

                case (COMMAND_CLASS_FIRMWARE_UPDATE_MD_V5.FIRMWARE_UPDATE_MD_REPORT.ID):
                {
                    HandleCmdClassFirmwareUpdateMdReport(ou, nodeId, command, scheme);
                }
                break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 30
0
 protected override void OnCallback(DataReceivedUnit ou)
 {
     if (ou.DataFrame.Payload != null && ou.DataFrame.Payload.Length > 1)
     {
         SpecificResult.RetVal = (SetSucReturnValues)ou.DataFrame.Payload[1];
         if (isHandled && (SpecificResult.RetVal == SetSucReturnValues.SucSetSucceeded))
         {
             SetStateCompleted(ou);
         }
         else
         {
             SetStateFailed(ou);
         }
     }
     else
     {
         SetStateFailed(ou);
     }
 }