diff --git a/src/radio/rmt/CaiXianlinEncoder.cpp b/src/radio/rmt/CaiXianlinEncoder.cpp index b028f70c..90d479a9 100644 --- a/src/radio/rmt/CaiXianlinEncoder.cpp +++ b/src/radio/rmt/CaiXianlinEncoder.cpp @@ -44,7 +44,7 @@ uint64_t Rmt::CaiXianlinEncoder::MakePayload(uint16_t shockerId, uint8_t channel intensity = std::min(intensity, static_cast(99)); // Payload layout: [shockerId:16][channel:4][type:4][intensity:8] - uint32_t payload = (static_cast(shockerId) << 16) | (static_cast(channel & 0xF) << 12) | (static_cast(typeVal & 0xF) << 8) | static_cast(intensity); + uint32_t payload = (static_cast(shockerId) << 16) | (static_cast(channel & 0xF) << 12) | (static_cast(typeVal) << 8) | static_cast(intensity); // Calculate the checksum of the payload uint8_t checksum = Checksum::Sum8(payload); diff --git a/src/radio/rmt/T330Encoder.cpp b/src/radio/rmt/T330Encoder.cpp index 84d01523..a16cf3e8 100644 --- a/src/radio/rmt/T330Encoder.cpp +++ b/src/radio/rmt/T330Encoder.cpp @@ -50,8 +50,8 @@ uint64_t Rmt::T330Encoder::MakePayload(uint16_t shockerId, uint8_t channel, Shoc intensity = std::min(intensity, static_cast(100)); // Payload layout: [channel:4][typeU:4][transmitterId:16][intensity:8][typeL:4][channel:4] - uint64_t payload = (static_cast(channelVal & 0xF) << 36) | (static_cast(typeVal & 0xF0) << 28) | (static_cast(shockerId) << 16) | (static_cast(intensity) << 8) | (static_cast(typeVal & 0xF) << 4) - | static_cast(channelVal & 0xF); + uint64_t payload = (static_cast(channelVal) << 36) | (static_cast(typeVal & 0xF0) << 28) | (static_cast(shockerId) << 16) | (static_cast(intensity) << 8) | (static_cast(typeVal & 0xF) << 4) + | static_cast(channelVal); // Shift the data left by 1 bit to append a zero return payload << 1;