WirelessPacket buildAutoCalCompletionResponse(int nodeAddress) { ByteStream payload; payload.append_uint16(0x0064); //cmd id payload.append_uint8(0x00); //completion flag payload.append_uint8(0x00); //ch1 error flag payload.append_float(0.0f); //ch1 offset payload.append_uint8(0x00); //ch2 error flag payload.append_float(0.0f); //ch2 offset payload.append_uint8(0x00); //ch3 error flag payload.append_float(0.0f); //ch3 offset payload.append_float(20.5f);//temperature //build the correct packet response first WirelessPacket packet; packet.deliveryStopFlags(DeliveryStopFlags::fromByte(0x07)); packet.type(WirelessPacket::packetType_reply); packet.nodeAddress(nodeAddress); packet.payload(payload.data()); return packet; }
WirelessPacket buildAutoCalNodeRecResponse(int nodeAddress) { ByteStream payload; payload.append_uint16(0x0064); //cmd id payload.append_uint8(0x00); //status flag payload.append_float(5.0f); //time to completion WirelessPacket packet; packet.deliveryStopFlags(DeliveryStopFlags::fromByte(0x07)); packet.type(WirelessPacket::packetType_NodeReceived); packet.nodeAddress(nodeAddress); packet.payload(payload.data()); return packet; }
ByteStream AutoBalance_v2::buildCommand(NodeAddress nodeAddress, uint8 channelNumber, float targetPercent) { //build the command ByteStream ByteStream cmd; cmd.append_uint8(0xAA); //Start of Packet cmd.append_uint8(0x05); //Delivery Stop Flag cmd.append_uint8(0x00); //App Data Type cmd.append_uint16(nodeAddress); //Node address cmd.append_uint8(0x07); //Payload Length cmd.append_uint16(WirelessProtocol::cmdId_autoBalance_v2); //Command Id cmd.append_uint8(channelNumber); //Channel Number cmd.append_float(targetPercent); //Target Percentage Value //calculate the checksum of bytes 2-13 uint16 checksum = cmd.calculateSimpleChecksum(1, 12); cmd.append_uint16(checksum); //Checksum return cmd; }