Exemplo n.º 1
0
  private void commonAddNodeStatusRequestHandler(byte funcId, byte[] data) {
    ControllerCmd cci = queue.getCurrentControllerCmd();
    ControllerState state = ControllerState.Normal;

    if (cci != null) {
      state = cci.getControllerState();
    }
    switch (data[3]) {
      case Defs.ADD_NODE_STATUS_LEARN_READY:
        logs.add("ADD_NODE_STATUS_LEARN_READY");
        if (cci != null) {
          cci.setControllerAdded(false);
        }
        state = ControllerState.Waiting;
        if (cci != null && cci.getControllerCallback() != null) {
          cci.getControllerCallback().onAction(state, null, null);
        }
        break;
      case Defs.ADD_NODE_STATUS_NODE_FOUND:
        logs.add("ADD_NODE_STATUS_NODE_FOUND");
        state = ControllerState.InProgress;
        if (cci != null && cci.getControllerCallback() != null) {
          cci.getControllerCallback().onAction(state, null, null);
        }
        break;
      case Defs.ADD_NODE_STATUS_ADDING_SLAVE:
        logs.add("ADD_NODE_STATUS_ADDING_SLAVE --- Node: " + String.valueOf(data[4]));
        if (cci != null) {
          cci.setControllerAdded(false);
          cci.setControllerCommandNode(data[4]);
        }
        break;
      case Defs.ADD_NODE_STATUS_ADDING_CONTROLLER:
        logs.add("ADD_NODE_STATUS_ADDING_CONTROLLER --- Node: " + String.valueOf(data[4]));
        if (cci != null) {
          cci.setControllerAdded(true);
          cci.setControllerCommandNode(data[4]);
        }
        break;
      case Defs.ADD_NODE_STATUS_PROTOCOL_DONE:
        logs.add("ADD_NODE_STATUS_PROTOCOL_DONE");
        primaryController.addNodeStop(funcId);
        break;
      case Defs.ADD_NODE_STATUS_DONE:
        logs.add("ADD_NODE_STATUS_DONE");
        state = ControllerState.Completed;
        if (cci != null && cci.getControllerCallback() != null) {
          cci.getControllerCallback().onAction(state, null, null);
        }
        if (cci != null && cci.getControllerCommandNode() != (byte) 0xFF) {
          addNode(cci.getControllerCommandNode());
        }
        if (funcId != Defs.FUNC_ID_ZW_ADD_NODE_TO_NETWORK
            && cci != null
            && cci.isControllerAdded()) {
          initAllNodes();
        }

        break;
      case Defs.ADD_NODE_STATUS_FAILED:
        logs.add("ADD_NODE_STATUS_FAILED");
        state = ControllerState.Failed;
        if (cci != null && cci.getControllerCallback() != null) {
          cci.getControllerCallback().onAction(state, null, null);
        }
        queue.removeCurrentMsg();
        primaryController.addNodeStop(funcId);
        break;
      default:
        logs.add("No detected ...");
        break;
    }

    primaryController.updateControllerState(state);
  }