Пример #1
0
        public NodeInfoTask(NetworkViewPoint network, byte nodeId)
        {
            _network = network;

            _nodeInfo = new RequestNodeInfoOperation(nodeId);
            _nodeInfoSecondAttempt = new RequestNodeInfoOperation(nodeId);

            _requestEndPoints = new RequestDataOperation(0, nodeId, new COMMAND_CLASS_MULTI_CHANNEL_V4.MULTI_CHANNEL_END_POINT_GET(), _txOptions,
                                                         new COMMAND_CLASS_MULTI_CHANNEL_V4.MULTI_CHANNEL_END_POINT_REPORT(), 2, 5000);

            _requestEndPointsCapabilities = new ActionSerialGroup();

            SpecificResult.RequestNodeInfo = _nodeInfo.SpecificResult;

            Actions = new ActionBase[]
            {
                _nodeInfo,
                _nodeInfoSecondAttempt,
                _requestEndPoints,
                _requestEndPointsCapabilities,
            };
        }
Пример #2
0
        public InclusionTask(NetworkViewPoint network, IAddRemoveNode addRemoveNode, bool IsSmartStart)
            : base(false, null)
        {
            _network      = network;
            _isSmartStart = IsSmartStart;
            if (addRemoveNode is AddNodeOperation)
            {
                _mode = (addRemoveNode as AddNodeOperation).InitMode;
                _nodeStatusCallback = (addRemoveNode as AddNodeOperation).NodeStatusCallback;
                _timeoutMs          = (addRemoveNode as AddNodeOperation).TimeoutMs;
            }
            else
            {
                _mode      = Modes.NodeAny;
                _timeoutMs = TIMEOUT;
            }

            _peerFilter = new FilterAchOperation();
            _peerFilter.SetFilterNodeId(0xFF);
            _addNode = addRemoveNode;
            _addNode.NodeStatusCallback = OnNodeStatus;

            _memoryGetId = new MemoryGetIdOperation();

            _getSucNodeId             = new GetSucNodeIdOperation();
            _isFailedSucNodeOperation = new IsFailedNodeOperation(0);
            _getSucNodeInfo           = new RequestNodeInfoOperation(0);
            _requestSucNodeInfoGroup  = new ActionSerialGroup(OnSucNodeInfoCompletedGroup, _getSucNodeId, _isFailedSucNodeOperation, _getSucNodeInfo)
            {
                Name = "RequestSucNodeInfoGroup (InclusionController)",
                CompletedCallback = OnRequestSucNodeInfoGroupCompleted
            };

            _setupNodeLifelineTask = new SetupNodeLifelineTask(_network);

            _requestInclusionController = new InclusionController.Initiate(0, 0, _txOptions, 240000)
            {
                Name = "ReguestData (InclusionController)"
            };
            _serialApiGetInitData = new SerialApiGetInitDataOperation();

            SpecificResult.AddRemoveNode     = _addNode.SpecificResult;
            SpecificResult.MemoryGetId       = _memoryGetId.SpecificResult;
            SpecificResult.GetSucNodeId      = _getSucNodeId.SpecificResult;
            SpecificResult.NodeInfo          = _setupNodeLifelineTask.SpecificResult.NodeInfo;
            SpecificResult.SetWakeUpInterval = _setupNodeLifelineTask.SpecificResult.SetWakeUpInterval;

            _isFailedNodeOperation       = new IsFailedNodeOperation(_addNode.SpecificResult.Id);
            _removeFailedNodeIdOperation = new RemoveFailedNodeIdOperation(_addNode.SpecificResult.Id);
            if (!_isSmartStart)
            {
                _isFailedNodeOperation.Token.SetCancelled();
                _removeFailedNodeIdOperation.Token.SetCancelled();
            }

            Actions = new ActionBase[]
            {
                _peerFilter,
                new ActionSerialGroup(OnActionCompleted,
                                      _memoryGetId,
                                      _requestSucNodeInfoGroup,
                                      _serialApiGetInitData,
                                      (ActionBase)_addNode,
                                      _isFailedNodeOperation,
                                      _removeFailedNodeIdOperation,
                                      _requestInclusionController,
                                      _setupNodeLifelineTask
                                      )
                {
                    Name = "Inclusion (Group)"
                }
            };
        }