XK2: 1 TX ID but multiple RX IDs?

This commit is contained in:
pascallanger 2024-07-12 10:00:21 +02:00
parent 8685fcae7f
commit b8c5929521
2 changed files with 13 additions and 5 deletions

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 3 #define VERSION_MINOR 3
#define VERSION_REVISION 4 #define VERSION_REVISION 4
#define VERSION_PATCH_LEVEL 10 #define VERSION_PATCH_LEVEL 11
#define MODE_SERIAL 0 #define MODE_SERIAL 0
@ -842,7 +842,8 @@ enum {
#define MOULDKG_EEPROM_OFFSET 882 // RX ID, 3 bytes per model, end is 882+64*3=1074 #define MOULDKG_EEPROM_OFFSET 882 // RX ID, 3 bytes per model, end is 882+64*3=1074
#define DSM_CLONE_EEPROM_OFFSET 1074 // (4) TX ID, (1) Initialized, end is 1079 #define DSM_CLONE_EEPROM_OFFSET 1074 // (4) TX ID, (1) Initialized, end is 1079
#define TRAXXAS_EEPROM_OFFSET 1079 // RX ID and SOP index, 3 bytes per model id, end is 1079+192=1271 #define TRAXXAS_EEPROM_OFFSET 1079 // RX ID and SOP index, 3 bytes per model id, end is 1079+192=1271
//#define CONFIG_EEPROM_OFFSET 1271 // Current configuration of the multimodule #define XK2_EEPROM_OFFSET 1271 // RX ID checksum, 1 byte per model, end is 1271+64=1335
//#define CONFIG_EEPROM_OFFSET 1335 // Current configuration of the multimodule
/* STM32 Flash Size */ /* STM32 Flash Size */
#ifndef DISABLE_FLASH_SIZE_CHECK #ifndef DISABLE_FLASH_SIZE_CHECK

View File

@ -74,7 +74,7 @@ static void __attribute__((unused)) XK2_send_packet()
//Telemetry not received=00, Telemetry received=01 but sometimes switch to 1 even if telemetry is not there... //Telemetry not received=00, Telemetry received=01 but sometimes switch to 1 even if telemetry is not there...
packet[6] = 0x00; packet[6] = 0x00;
//Unknown //Unknown
packet[7] = 0x5A; //Constant? packet[7] = crc8; //?? RX_ID checksum ?? => sum RX_ID[0..2]
//Checksum seed //Checksum seed
packet[8] = 0x7F; //Constant? packet[8] = 0x7F; //Constant?
} }
@ -152,18 +152,25 @@ uint16_t XK2_callback()
phase++; phase++;
else else
{ {
//checksum of RX_ID
crc8 = packet[4] + packet[5] + packet[6];
debugln("W:RX_ID=%02X",crc8);
eeprom_write_byte((EE_ADDR)(XK2_EEPROM_OFFSET+RX_num),crc8);
XN297_SetTxRxMode(TXRX_OFF); XN297_SetTxRxMode(TXRX_OFF);
XN297_SetTxRxMode(TX_EN); XN297_SetTxRxMode(TX_EN);
bind_counter = 10; bind_counter = 10; //send 10 bind end packets
phase = XK2_DATA; phase = XK2_DATA;
} }
} }
return 1000; return 1000;
case XK2_DATA_PREP: case XK2_DATA_PREP:
crc8=eeprom_read_byte((EE_ADDR)(XK2_EEPROM_OFFSET+RX_num));
debugln("R:RX_ID=%02X",crc8);
XN297_SetTxRxMode(TXRX_OFF); XN297_SetTxRxMode(TXRX_OFF);
XN297_SetTxRxMode(TX_EN); XN297_SetTxRxMode(TX_EN);
XN297_SetTXAddr(rx_tx_addr, 5); XN297_SetTXAddr(rx_tx_addr, 5);
BIND_DONE; BIND_DONE;
phase++;
case XK2_DATA: case XK2_DATA:
#ifdef MULTI_SYNC #ifdef MULTI_SYNC
telemetry_set_input_sync(XK2_PACKET_PERIOD); telemetry_set_input_sync(XK2_PACKET_PERIOD);
@ -267,7 +274,7 @@ P[5] = flags
08=6g/3d=short_press_right sequece also switches for a few packets to C1 if 8 C0 if 0 08=6g/3d=short_press_right sequece also switches for a few packets to C1 if 8 C0 if 0
P[6] = 00 telemetry nok P[6] = 00 telemetry nok
01 telemetry ok but sometimes switch to 1 also when telemetry is nok... 01 telemetry ok but sometimes switch to 1 also when telemetry is nok...
P[7] = 5A P[7] = 5A -> ?? RX_ID checksum ?? => sum RX_ID[0..2]
P[8] = sum P[0..7] + 7F P[8] = sum P[0..7] + 7F
Telemetry Telemetry