diff --git a/Lua_scripts/MultiChan.txt b/Lua_scripts/MultiChan.txt index 2a146ce6..b42a287c 100644 --- a/Lua_scripts/MultiChan.txt +++ b/Lua_scripts/MultiChan.txt @@ -167,7 +167,7 @@ 74,3,RadioLink,RC4G,0,CH5,FS_CH1,FS_CH2,FS_CH3,FS_CH4 74,4,RadioLink,Dumbo_P,0,CH5,CH6,CH7,CH8GY,CH9,CH10,n-a,n-a,n-a,n-a,n-a,n-a 76,0,Realacc,R11,1,Flip,Light,Calib,HLess,RTH,ThCut,Rotat -76,1,Realacc,WLV8Tx,0,ST_Tr +76,1,Realacc,WLV8TX,0,ST_Tr 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/Multi.txt b/Multiprotocol/Multi.txt index 0474cfa7..505dce7f 100644 --- a/Multiprotocol/Multi.txt +++ b/Multiprotocol/Multi.txt @@ -73,7 +73,7 @@ 73,Kyosho,FHSS,Hype 74,RadioLink,Surface,Air,DumboRC,RC4G,Dumbo_P 75,--- -76,Realacc,R11,WL-V8Tx +76,Realacc,R11,WLV8TX 77,OMP 78,M-Link 79,WFLY,RF20x diff --git a/Multiprotocol/Multi_Protos.ino b/Multiprotocol/Multi_Protos.ino index f5153cc0..e439aa09 100644 --- a/Multiprotocol/Multi_Protos.ino +++ b/Multiprotocol/Multi_Protos.ino @@ -182,7 +182,7 @@ const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync"; const char STR_SUBTYPE_PELIKAN[] = "\x05""Pro\0 ""Lite\0""SCX24"; const char STR_SUBTYPE_V761[] = "\x05""3ch\0 ""4ch\0 ""TOPRC"; const char STR_SUBTYPE_RLINK[] = "\x07""Surface""Air\0 ""DumboRC""RC4G\0 ""Dumbo_P"; -const char STR_SUBTYPE_REALACC[] = "\x07""R11\0 ""WL-V8Tx"; +const char STR_SUBTYPE_REALACC[] = "\x06""R11\0 ""WLV8TX"; const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype"; const char STR_SUBTYPE_KYOSHO2[] = "\x05""KT-17"; const char STR_SUBTYPE_KYOSHO3[] = "\x03""ASF"; diff --git a/Multiprotocol/REALACC_nrf24l01.ino b/Multiprotocol/REALACC_nrf24l01.ino index 34ce341d..2e60517c 100644 --- a/Multiprotocol/REALACC_nrf24l01.ino +++ b/Multiprotocol/REALACC_nrf24l01.ino @@ -42,8 +42,6 @@ enum REALACC_WLV8TX_DATA }; -static uint8_t realacc_phase; -static bool realacc_wlv8tx_rx_b3; #endif static uint8_t realacc_bind_packet[REALACC_BIND_PAYLOAD_SIZE]; @@ -100,7 +98,7 @@ static void __attribute__((unused)) REALACC_send_packet() static void __attribute__((unused)) REALACC_send_bind_packet() { #ifndef MULTI_AIR - if(sub_protocol == REALACC_WLV8TX && realacc_wlv8tx_rx_b3) + if(sub_protocol == REALACC_WLV8TX && rx_id[0]) { // WLV8TX bind sent after RX packet B3 acknowledged packet[0] = 0xB4; packet[1] = rx_id[1]; @@ -187,21 +185,21 @@ static void __attribute__((unused)) REALACC_wlv8tx_process_rx() if(len != 3) return; - if(packet_in[0] == 0xB3 && !realacc_wlv8tx_rx_b3) + if(packet_in[0] == 0xB3 && !rx_id[0]) { - realacc_wlv8tx_rx_b3 = true; + rx_id[0] = 0x01; rx_id[1] = packet_in[1]; rx_id[2] = packet_in[2]; rx_tx_addr[2] ^= packet_in[1]; rx_tx_addr[3] ^= packet_in[2]; rx_tx_addr[3] |= 0x80; } - else if(packet_in[0] == 0xB5 && realacc_wlv8tx_rx_b3) + else if(packet_in[0] == 0xB5 && rx_id[0]) { - BIND_DONE; - XN297_SetTXAddr(rx_tx_addr, 4); - XN297_SetTxRxMode(TXRX_OFF); - realacc_phase = REALACC_WLV8TX_DATA; + BIND_DONE; + XN297_SetTXAddr(rx_tx_addr, 4); + XN297_SetTxRxMode(TXRX_OFF); + bind_phase = REALACC_WLV8TX_DATA; } } #endif @@ -222,34 +220,34 @@ uint16_t REALACC_callback() #else if(sub_protocol == REALACC_WLV8TX) { - if(realacc_phase == REALACC_WLV8TX_DATA) + if(bind_phase == REALACC_WLV8TX_DATA) { XN297_SetTxRxMode(TX_EN); REALACC_send_packet(); return WLV8TX_PACKET_PERIOD; } - if(realacc_phase == REALACC_WLV8TX_BIND_RX_SETUP) + if(bind_phase == REALACC_WLV8TX_BIND_RX_SETUP) { XN297_SetTxRxMode(TXRX_OFF); XN297_SetTxRxMode(RX_EN); - realacc_phase = REALACC_WLV8TX_BIND_RX_CHECK; + bind_phase = REALACC_WLV8TX_BIND_RX_CHECK; return WLV8TX_PACKET_PERIOD/3; } - if(realacc_phase == REALACC_WLV8TX_BIND_RX_CHECK) + if(bind_phase == REALACC_WLV8TX_BIND_RX_CHECK) { REALACC_wlv8tx_process_rx(); - if(realacc_phase == REALACC_WLV8TX_DATA) + if(bind_phase == REALACC_WLV8TX_DATA) return WLV8TX_PACKET_PERIOD; - realacc_phase = REALACC_WLV8TX_BIND_TX; + bind_phase = REALACC_WLV8TX_BIND_TX; return WLV8TX_PACKET_PERIOD/3; } //Bind Phase XN297_SetTxRxMode(TXRX_OFF); XN297_SetTxRxMode(TX_EN); REALACC_send_bind_packet(); - realacc_phase = REALACC_WLV8TX_BIND_RX_SETUP; + bind_phase = REALACC_WLV8TX_BIND_RX_SETUP; return WLV8TX_PACKET_PERIOD/3; } #endif @@ -277,10 +275,10 @@ void REALACC_init() #ifndef MULTI_AIR if(sub_protocol == REALACC_WLV8TX) { + rx_id[0] = 0; // realacc_wlv8tx_rx_b3 rx_id[1] = 0; rx_id[2] = 0; - realacc_wlv8tx_rx_b3 = false; - realacc_phase = REALACC_WLV8TX_BIND_TX; + bind_phase = REALACC_WLV8TX_BIND_TX; memcpy(packet, realacc_bind_packet, 4); packet[3] |= 0x80; XN297_SetRXAddr(packet, 4); diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index f4f5d05e..4f8d65b3 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -829,7 +829,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= { PROTO_Q90C NONE PROTO_REALACC - NONE + REALACC_R11 + REALACC_WLV8TX PROTO_REDPINE RED_FAST RED_SLOW diff --git a/Protocols_Details.md b/Protocols_Details.md index 47abdaa5..1dbb0751 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -139,7 +139,7 @@ CFlie|AIR|38|CFlie||||||||NRF24L01| [Q303](Protocols_Details.md#Q303---31)||31|Q303|CX35|CX10D|CX10WD|||||NRF24L01|XN297 [Q90C](Protocols_Details.md#Q90C---72)||72|Q90C*||||||||NRF24L01|XN297 [RadioLink](Protocols_Details.md#RadioLink---74)||74|Surface|Air|DumboRC|RC4G|Dumbo_P||||CC2500| -[Realacc](Protocols_Details.md#Realacc---76)||76|R11|WL-V8Tx|||||||NRF24L01| +[Realacc](Protocols_Details.md#Realacc---76)||76|R11|WLV8TX|||||||NRF24L01| [Redpine](Protocols_Details.md#Redpine---50)||50|FAST|SLOW|||||||NRF24L01|XN297 [Scanner](Protocols_Details.md#Scanner---54)||54|||||||||CC2500| [Scorpio](Protocols_Details.md#Scorpio---94)||94|||||||||CYRF6936| @@ -2342,7 +2342,7 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11 ---|---|---|---|---|---|---|---|---|----|---- A|E|T|R|FLIP|LIGHT|CALIB|HLESS|RTH|THR_CUT|ROTATE -### Sub_protocol WL-V8Tx - *1* +### Sub_protocol WLV8TX - *1* Models: WLtoys 284019A, 284191, Cars using V8 Transmitter