From c88952c35e0eca78093917b600decc6bfb98b1dd Mon Sep 17 00:00:00 2001 From: pascallanger Date: Tue, 2 Apr 2024 12:34:04 +0200 Subject: [PATCH] REALACC: IDs Any ID --- Lua_scripts/MultiChan.txt | 2 +- Multiprotocol/REALACC_nrf24l01.ino | 107 ++++++++++++++++++++--------- Protocols_Details.md | 6 +- 3 files changed, 78 insertions(+), 37 deletions(-) diff --git a/Lua_scripts/MultiChan.txt b/Lua_scripts/MultiChan.txt index aef02ae..969acd0 100644 --- a/Lua_scripts/MultiChan.txt +++ b/Lua_scripts/MultiChan.txt @@ -158,7 +158,7 @@ 74,1,RadioLink,Air,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8 74,2,RadioLink,DumboRC,0,CH5,CH6,CH7,CH8,FS_CH1,FS_CH2,FS_CH3,FS_CH4,FS_CH5,FS_CH6,FS_CH7,FS_CH8 74,3,RadioLink,RC4G,0,CH5,FS_CH1,FS_CH2,FS_CH3,FS_CH4 -76,0,Realacc,Std,1,Flip,Light,Calib,HLess,RTH,UNK +76,0,Realacc,Std,1,Flip,Light,Calib,HLess,RTH,UNK,Rotat 50,0,Redpine,Fast,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 50,1,Redpine,Slow,0,sCH5,sCH6,sCH7,sCH8,sCH9,sCH10,sCH11,sCH12,sCH13,sCH14,sCH15,sCH16 21,0,Futaba,SFHSS,0,CH5,CH6,CH7,CH8 diff --git a/Multiprotocol/REALACC_nrf24l01.ino b/Multiprotocol/REALACC_nrf24l01.ino index b1b7099..305980f 100644 --- a/Multiprotocol/REALACC_nrf24l01.ino +++ b/Multiprotocol/REALACC_nrf24l01.ino @@ -18,7 +18,7 @@ Multiprotocol is distributed in the hope that it will be useful, #include "iface_xn297.h" -#define FORCE_REALACC_ORIGINAL_ID +//#define FORCE_REALACC_ORIGINAL_ID #define REALACC_INITIAL_WAIT 500 #define REALACC_PACKET_PERIOD 2268 @@ -30,7 +30,7 @@ Multiprotocol is distributed in the hope that it will be useful, static void __attribute__((unused)) REALACC_send_packet() { - packet[ 0]= 0xDC; + packet[ 0]= 0xDC; // DC/D6/DE packet[ 1]= convert_channel_8b(AILERON); // 00..80..FF packet[ 2]= convert_channel_8b(ELEVATOR); // 00..80..FF packet[ 3]= convert_channel_8b(THROTTLE); // 00..FF @@ -39,8 +39,8 @@ static void __attribute__((unused)) REALACC_send_packet() packet[ 6]= 0x20; // Trim packet[ 7]= 0x20; // Trim packet[ 8]= 0x20; // Trim - packet[ 9]= num_ch; // Change at each power up - packet[10]= 0x04 // Flag1 + packet[ 9]= 0x88; // Change at each power up: C5 A2 77 F0 84 58, fixed for the E017 = 88 + packet[10]= 0x04 // Flag1: R11=04, E017=0C | 0x02 // Rate1=0, Rate2=1, Rate3=2 | GET_FLAG(CH8_SW, 0x20); // Headless packet[11]= 0x00 // Flag2 @@ -49,6 +49,7 @@ static void __attribute__((unused)) REALACC_send_packet() | GET_FLAG(CH10_SW,0x80); // Unknown packet[12]= 0x00 // Flag3 | GET_FLAG(CH5_SW, 0x01) // Flip + | GET_FLAG(CH11_SW,0x02) // Rotating | GET_FLAG(CH6_SW, 0x80); // Light XN297_Hopping(hopping_frequency_no); @@ -59,31 +60,50 @@ static void __attribute__((unused)) REALACC_send_packet() static void __attribute__((unused)) REALACC_send_bind_packet() { - packet[0] = 0xB1; - memcpy(&packet[1],rx_tx_addr,4); - memcpy(&packet[5],hopping_frequency,5); + packet[0] = 0xB1; // B0/B1 + memcpy(&packet[1],rx_tx_addr,4); // Address + memcpy(&packet[5],hopping_frequency,5); // RF frequencies XN297_WriteEnhancedPayload(packet, REALACC_BIND_PAYLOAD_SIZE,1); } static void __attribute__((unused)) REALACC_initialize_txid() { + rx_tx_addr[3] &= 0x3F; calc_fh_channels(REALACC_RF_NUM_CHANNELS); - num_ch=random(0xfefefefe); // 00..FF - #ifdef FORCE_REALACC_ORIGINAL_ID - //Dump - rx_tx_addr[0]=0x99; - rx_tx_addr[1]=0x06; - rx_tx_addr[2]=0x00; - rx_tx_addr[3]=0x00; - hopping_frequency[0]=0x55; - hopping_frequency[1]=0x59; - hopping_frequency[2]=0x5A; - hopping_frequency[3]=0x5A; - hopping_frequency[4]=0x62; - num_ch=0xC5; // Value in dumps: C5 A2 77 F0 84 58 + if(RX_num==0) + {//TX1 + rx_tx_addr[0]=0x99; + rx_tx_addr[1]=0x06; + rx_tx_addr[2]=0x00; + rx_tx_addr[3]=0x00; // 00..3F:OK, 40..:NOK + hopping_frequency[0]=0x55; + hopping_frequency[1]=0x59; + hopping_frequency[2]=0x5A; + hopping_frequency[3]=0x5A; + hopping_frequency[4]=0x62; + } + else + {//TX2 + rx_tx_addr[0]=0x4F; + rx_tx_addr[1]=0xB9; + rx_tx_addr[2]=0xA1; + rx_tx_addr[3]=0x17; + hopping_frequency[0]=0x45; + hopping_frequency[1]=0x38; + hopping_frequency[2]=0x3C; + hopping_frequency[3]=0x41; + hopping_frequency[4]=0x3F; + } #endif + #if 0 + debug("ID: %02X %02X %02X %02X, C: ",rx_tx_addr[0],rx_tx_addr[1],rx_tx_addr[2],rx_tx_addr[3]); + for(uint8_t i=0; i