[Crossfire] Min / max limits were missing for each channel transmitted

This commit is contained in:
Bertrand Songis
2016-04-26 12:17:02 +02:00
parent 7d21c9eb87
commit 3693f34a41
+2 -1
View File
@@ -34,7 +34,8 @@ void createCrossfireFrame(uint8_t * frame, int16_t * pulses)
uint32_t bits = 0;
uint8_t bitsavailable = 0;
for (int i=0; i<CROSSFIRE_CHANNELS_COUNT; i++) {
bits |= (CROSSFIRE_CH_CENTER + (((pulses[i]) * 4) / 5)) << bitsavailable;
uint32_t val = limit(0, CROSSFIRE_CH_CENTER + (((pulses[i]) * 4) / 5), 2*CROSSFIRE_CH_CENTER);
bits |= val << bitsavailable;
bitsavailable += CROSSFIRE_CH_BITS;
while (bitsavailable >= 8) {
*buf++ = bits;