protected void fireDynState(byte[] address, final FeedbackDynStateResponse feedbackDynStateResponse) { // populate the dynamic state ... int detectorNumber = feedbackDynStateResponse.getDetectorNumber(); AddressData decoderAddress = feedbackDynStateResponse.getAddress(); int dynNumber = feedbackDynStateResponse.getDynNumber(); int dynValue = feedbackDynStateResponse.getDynValue(); Integer timestamp = feedbackDynStateResponse.getTimestamp(); synchronized (messageListeners) { for (MessageListener l : messageListeners) { l.dynState(address, detectorNumber, decoderAddress, dynNumber, dynValue, timestamp); } } }
public Integer getTimestamp() { if (getDynNumber() == 6 && getData().length >= 8) { return ByteUtils.getWORD(getData(), 6); } return null; } }
public FeedbackDynStateResponse(byte[] addr, int num, int detectorNumber, AddressData addressData, byte dynNumber, byte dynValue) throws ProtocolException { this(addr, num, BidibLibrary.MSG_BM_DYN_STATE, prepareDynamicStateData(detectorNumber, addressData, dynNumber, dynValue)); }
public int getDetectorNumber() { return ByteUtils.getInt(getData()[0], 0x7F); }
case BidibLibrary.MSG_BM_DYN_STATE: result = new FeedbackDynStateResponse(result.getAddr(), result.getNum(), result.getType(), result.getData()); break; case BidibLibrary.MSG_BM_RCPLUS:
public int getDynNumber() { return ByteUtils.getInt(getData()[3], 0xFF); }
public int getDynValue() { // if DYN_NUM == 6 we need to publish a INT16 value if (getDynNumber() == 6 && getData().length >= 6) { return ByteUtils.getInt(getData()[4], getData()[5]); } return ByteUtils.getInt(getData()[4], 0xFF); }
public AddressData getAddress() { byte[] data = getData(); int index = 1; byte lowByte = data[index++]; byte highByte = data[index]; int address = ByteUtils.getWord(lowByte, (byte) (highByte & 0x3F)); LOGGER.debug("Return the address of MSG_BM_DYN_STATE: {}", address); return new AddressData(address, AddressTypeEnum.valueOf((byte) ((highByte & 0xC0) >> 6))); }