/** * Returns the provided node as AccessoryNode instance of null if the node is not an AccessoryNode. * * @param address * the node address * @return the AccessoryNode instance */ public AccessoryNode getAccessoryNode(byte[] address) { BidibNode bidibNode = findNode(address); try { if (NodeUtils.hasAccessoryFunctions(bidibNode.getUniqueId())) { AccessoryNode accessoryNode = new AccessoryNode(bidibNode); LOGGER.debug("prepared accessory node: {}", accessoryNode); return accessoryNode; } } catch (Exception ex) { LOGGER.warn("Get accessory node failed.", ex); } LOGGER .warn("The requested node is not an AccessoryNode, node: {}, address: {}", bidibNode, NodeUtils.formatAddress(address)); return null; }
/** * Send the accessory state acknowledgement message for the specified accessory. * * @param accessoryState * the accessory state * @throws ProtocolException */ public void acknowledgeAccessoryNotify(AccessoryState accessoryState) throws ProtocolException { // TODO check if we must handle this differently ... currently auto-acknowledge new state LOGGER.info("Accessory change notification was received: {}", accessoryState); // if (!AccessoryStateUtils.hasError(accessoryState.getExecute())) { int accessoryNumber = ByteUtils.getInt(accessoryState.getAccessoryNumber()); int aspect = accessoryState.getAspect(); LOGGER .info("Acknowledge the accessory state change for accessory number: {}, aspect: {}", accessoryNumber, aspect); // send acknowledge // TODO check how this works ... currently does not work correct ... // setAccessoryState(accessoryNumber, aspect); // sendQueue.add(AccessoryStateMessage(detectorNumber)); // get the errors, see 4.6.4. Uplink: Messages for accessory functions // TODO verify what happens exactly before enable this ... getAccessoryState(accessoryNumber); // } // else { // LOGGER.warn("An accessory error was detected: {}", accessoryState); // } }
Feature feature = accessoryNode.getBidibNode().getFeature(BidibLibrary.FEATURE_CTRL_MAC_COUNT); int macroCount = feature != null ? feature.getValue() : 0; feature = accessoryNode.getBidibNode().getFeature(BidibLibrary.FEATURE_CTRL_MAC_SIZE); + accessoryNode.getMacroParameter(macroNumber, BidibLibrary.BIDIB_MACRO_PARA_REPEAT)); System.out.println("\tspeed: " // NOSONAR + accessoryNode.getMacroParameter(macroNumber, BidibLibrary.BIDIB_MACRO_PARA_SLOWDOWN)); System.out.println("\tsteps:"); // NOSONAR for (;;) { final LcMacro macroStep = accessoryNode.getMacroStep(macroNumber, stepNumber++);
accessoryNode.handleMacro(macroNumber, LcMacroOperationCode.OFF); result = 0;
accessoryNode.acknowledgeAccessoryNotify(accessoryNotifyResponse.getAccessoryState()); nodeRegistry.triggerPendingAcknowledge(bidibNode);
accessoryNode.handleMacro(macroNumber, LcMacroOperationCode.START); result = 0;