Fix channel and rssi scaling (#279)

This commit is contained in:
goebish 2019-10-05 13:30:50 +02:00 committed by pascallanger
parent 0f250bb04b
commit c2bf63991f

View File

@ -42,14 +42,15 @@ static void __attribute__((unused)) AFHDS2A_Rx_build_telemetry_packet()
packet_in[idx++] = 14; // number of channels in packet packet_in[idx++] = 14; // number of channels in packet
// pack channels // pack channels
for (uint8_t i = 0; i < 14; i++) { for (uint8_t i = 0; i < 14; i++) {
uint16_t val = packet[9+i*2] | (packet[10+i*2] << 8); uint32_t val = packet[9+i*2] | (packet[10+i*2] << 8);
if (val < 860) if (val < 860)
val = 860; val = 860;
else if (val > 2140) else if (val > 2139)
val = 2140; val = 2139;
val -= 860; // convert ppm (860-2140) to Multi (0-2047)
val = ((val-860)<<3)/5;
bits |= ((uint32_t)val) << bitsavailable; bits |= val << bitsavailable;
bitsavailable += 11; bitsavailable += 11;
while (bitsavailable >= 8) { while (bitsavailable >= 8) {
packet_in[idx++] = bits & 0xff; packet_in[idx++] = bits & 0xff;
@ -169,7 +170,7 @@ uint16_t AFHDS2A_Rx_callback()
if (memcmp(&packet[1], rx_id, 4) == 0 && memcmp(&packet[5], rx_tx_addr, 4) == 0) { if (memcmp(&packet[1], rx_id, 4) == 0 && memcmp(&packet[5], rx_tx_addr, 4) == 0) {
if (packet[0] == 0x58 && packet[37] == 0x00 && telemetry_link == 0) { // standard packet, send channels to TX if (packet[0] == 0x58 && packet[37] == 0x00 && telemetry_link == 0) { // standard packet, send channels to TX
int rssi = min(A7105_ReadReg(A7105_1D_RSSI_THOLD),160); int rssi = min(A7105_ReadReg(A7105_1D_RSSI_THOLD),160);
RX_RSSI = map(rssi, 160, 8, 0, 100); RX_RSSI = map16b(rssi, 160, 8, 0, 128);
AFHDS2A_Rx_build_telemetry_packet(); AFHDS2A_Rx_build_telemetry_packet();
telemetry_link = 1; telemetry_link = 1;
} }