Compare commits

...

3 Commits

Author SHA1 Message Date
Jon Sturm
dcbc557bf7 Enable Telemetry on DumbRC receivers (#1111)
Tested with X6FGv1.1, X6FP, X6DC(G)v1.1

I also tested with multiple X6F receivers and some gave RSSI Telem and some gave nothing.
2 of them had the same PCB as the X6FP and neither gave telemetry.
I had a third with the same PCB with the X6FP which did give RSSI
and of my two with an older PCB one gives RSSI telem and the other does not.

Of the receivers I tried only one set packet_in[6] to match the TX packet[1] and it was the
oldest receiver of the ones I own.
2025-05-10 11:51:48 +02:00
pascallanger
e556f5cc40 SGF22 telem improvement? 2025-04-16 07:53:47 +02:00
pascallanger
9ef2415178 Update Protocols_Details.md (#1101) 2025-04-03 18:39:02 +02:00
4 changed files with 23 additions and 4 deletions

View File

@@ -232,7 +232,7 @@ static void __attribute__((unused)) RLINK_send_packet()
packet[1] |= 0x21; //air 0x21 on dump but it looks to support telemetry at least RSSI packet[1] |= 0x21; //air 0x21 on dump but it looks to support telemetry at least RSSI
break; break;
case RLINK_DUMBORC: case RLINK_DUMBORC:
packet[1] = 0x00; //always 0x00 on dump packet[1] |= 0x01; //always 0x00 on dump but does appear to support telemtry on newer transmitters
break; break;
} }
@@ -384,8 +384,9 @@ uint16_t RLINK_callback()
debug("Telem:"); debug("Telem:");
#endif #endif
CC2500_ReadData(packet_in, len); CC2500_ReadData(packet_in, len);
if(packet_in[0]==RLINK_RX_PACKET_LEN && (packet_in[len-1] & 0x80) && memcmp(&packet[2],rx_tx_addr,RLINK_TX_ID_LEN)==0 && packet_in[6]==packet[1]) if(packet_in[0]==RLINK_RX_PACKET_LEN && (packet_in[len-1] & 0x80) && memcmp(&packet[2],rx_tx_addr,RLINK_TX_ID_LEN)==0 && (packet_in[6]==packet[1] || sub_protocol == RLINK_DUMBORC))
{//Correct telemetry received: length, CRC, ID and type {//Correct telemetry received: length, CRC, ID and type
//packet_in[6] is 0x00 on almost all DumboRC RX so assume it is always valid
#ifdef RLINK_DEBUG_TELEM #ifdef RLINK_DEBUG_TELEM
for(uint8_t i=0;i<len;i++) for(uint8_t i=0;i<len;i++)
debug(" %02X",packet_in[i]); debug(" %02X",packet_in[i]);

View File

@@ -169,6 +169,7 @@ uint16_t SGF22_callback()
{ {
#ifdef SGF22_HUB_TELEMETRY #ifdef SGF22_HUB_TELEMETRY
bool rx = false; bool rx = false;
static uint8_t telem_count = 0;
#endif #endif
switch(phase) switch(phase)
@@ -195,6 +196,8 @@ uint16_t SGF22_callback()
{//packets: 00 0B 00 -> 00 0B 01 {//packets: 00 0B 00 -> 00 0B 01
telemetry_link = 1; telemetry_link = 1;
v_lipo1 = packet_in[2] ? 0 : 255; //2.9V for 1S, 7.0V for 2S v_lipo1 = packet_in[2] ? 0 : 255; //2.9V for 1S, 7.0V for 2S
telemetry_lost = 0;
telem_count = 0;
} }
#if 0 #if 0
debug("L %d ",p_len); debug("L %d ",p_len);
@@ -204,6 +207,20 @@ uint16_t SGF22_callback()
debugln(""); debugln("");
#endif #endif
} }
if(telem_count > 4*63) // Around 3.5sec with no telemetry
telemetry_lost = 1;
else
{
telem_count++;
if(!telemetry_lost && (telem_count & 0x3F) == 0)
{// Should have received a telem packet but... Send telem to the radio to keep it alive
telemetry_link = 1;
#if 0
debugln("Miss");
#endif
}
}
#endif #endif
phase++; phase++;
break; break;
@@ -245,6 +262,7 @@ void SGF22_init()
phase = SGF22_DATA1; phase = SGF22_DATA1;
#ifdef SGF22_HUB_TELEMETRY #ifdef SGF22_HUB_TELEMETRY
RX_RSSI = 100; // Dummy value RX_RSSI = 100; // Dummy value
telemetry_lost = 1;
#endif #endif
} }

View File

@@ -244,7 +244,7 @@ uint16_t V761_callback()
else else
{ {
packet_count++; packet_count++;
if(!telemetry_lost && !rx && (packet_count%64) == 0) if(!telemetry_lost && !rx && (packet_count & 0x3F) == 0)
{// Should have received a telem packet but... Send telem to the radio to keep it alive {// Should have received a telem packet but... Send telem to the radio to keep it alive
telemetry_link = 1; telemetry_link = 1;
#ifdef V761_TELEM_DEBUG #ifdef V761_TELEM_DEBUG

View File

@@ -62,7 +62,7 @@ You've upgraded the module but the radio does not display the name of the protoc
# Available Protocol Table of Contents (Listed Alphabetically) # Available Protocol Table of Contents (Listed Alphabetically)
Protocol Name|Build|Protocol Number|Sub_Proto 0|Sub_Proto 1|Sub_Proto 2|Sub_Proto 3|Sub_Proto 4|Sub_Proto 5|Sub_Proto 6|Sub_Proto 7|RF Module|Emulation Protocol Name|Build|Protocol Number|Sub_Proto 0|Sub_Proto 1|Sub_Proto 2|Sub_Proto 3|Sub_Proto 4|Sub_Proto 5|Sub_Proto 6|Sub_Proto 7|RF Module|Emulation
---|---|---|---|---|---|---|---|---|---|---|--- ---|---|---|---|---|---|---|---|---|---|---|---|---
[Assan](Protocols_Details.md#ASSAN---24)|AIR/SFC|24|||||||||NRF24L01| [Assan](Protocols_Details.md#ASSAN---24)|AIR/SFC|24|||||||||NRF24L01|
[Bayang](Protocols_Details.md#BAYANG---14)|AIR/SFC|14|Bayang|H8S3D|X16_AH|IRDRONE|DHD_D4|QX100|||NRF24L01|XN297 [Bayang](Protocols_Details.md#BAYANG---14)|AIR/SFC|14|Bayang|H8S3D|X16_AH|IRDRONE|DHD_D4|QX100|||NRF24L01|XN297
[Bayang RX](Protocols_Details.md#BAYANG-RX---59)|AIR/SFC|59|Multi|CPPM|||||||NRF24L01|XN297 [Bayang RX](Protocols_Details.md#BAYANG-RX---59)|AIR/SFC|59|Multi|CPPM|||||||NRF24L01|XN297