From 758779a8f50198d4e7b2f618478d99083e9e9342 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Fri, 9 Dec 2016 16:54:24 +0100 Subject: [PATCH] MJXQ/E010: TX IDs vs Freq --- Multiprotocol/MJXQ_nrf24l01.ino | 46 ++++++++++++++++++++++++++++----- Multiprotocol/_Config.h | 6 +++-- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Multiprotocol/MJXQ_nrf24l01.ino b/Multiprotocol/MJXQ_nrf24l01.ino index 1f02e13..7068373 100644 --- a/Multiprotocol/MJXQ_nrf24l01.ino +++ b/Multiprotocol/MJXQ_nrf24l01.ino @@ -36,6 +36,31 @@ const uint8_t PROGMEM MJXQ_map_rfchan[][4] = { {0x0A, 0x3C, 0x36, 0x3F}, {0x0A, 0x43, 0x36, 0x3F} }; +const uint8_t PROGMEM E010_map_txid[][2] = { + {0x4F, 0x1C}, + {0x90, 0x1C}, + {0x24, 0x36}, + {0x7A, 0x40}, + {0x61, 0x31}, + {0x5D, 0x37}, + {0xFD, 0x4F}, + {0x86, 0x3C}, + {0x41, 0x22}, + {0xEE, 0xB3}, + {0x9A, 0xB2} }; + +const uint8_t PROGMEM E010_map_rfchan[][4] = { + {0x3A, 0x35, 0x4A, 0x45}, + {0x2E, 0x36, 0x3E, 0x46}, + {0x32, 0x3E, 0x42, 0x4E}, + {0x2E, 0x3C, 0x3E, 0x4C}, + {0x2F, 0x3B, 0x3F, 0x4B}, + {0x33, 0x3B, 0x43, 0x4B}, + {0x33, 0x3B, 0x43, 0x4B}, + {0x34, 0x3E, 0x44, 0x4E}, + {0x3F, 0x34, 0x2F, 0x44}, + {0x39, 0x3E, 0x49, 0x4E}, + {0x36, 0x3E, 0x46, 0x2E} }; #define MJXQ_PAN_TILT_COUNT 16 // for H26D - match stock tx timing #define MJXQ_PAN_DOWN 0x08 @@ -165,13 +190,19 @@ static void __attribute__((unused)) MJXQ_init() if (sub_protocol == WLH08) memcpy(hopping_frequency, "\x12\x22\x32\x42", MJXQ_RF_NUM_CHANNELS); else - if (sub_protocol == H26D || sub_protocol == E010) + if (sub_protocol == H26D) memcpy(hopping_frequency, "\x36\x3e\x46\x2e", MJXQ_RF_NUM_CHANNELS); else - { - memcpy(hopping_frequency, "\x0a\x35\x42\x3d", MJXQ_RF_NUM_CHANNELS); - memcpy(addr, "\x6d\x6a\x73\x73\x73", MJXQ_ADDRESS_LENGTH); - } + if(sub_protocol == E010) + { + for(uint8_t i=0;i<4;i++) + hopping_frequency[i]=pgm_read_byte_near( &E010_map_rfchan[rx_tx_addr[3]%11][i] ); + } + else + { + memcpy(hopping_frequency, "\x0a\x35\x42\x3d", MJXQ_RF_NUM_CHANNELS); + memcpy(addr, "\x6d\x6a\x73\x73\x73", MJXQ_ADDRESS_LENGTH); + } NRF24L01_Initialize(); @@ -215,8 +246,9 @@ static void __attribute__((unused)) MJXQ_initialize_txid() rx_tx_addr[2]=rx_tx_addr[3]; // Make use of RX_Num if (sub_protocol == E010) { - rx_tx_addr[1]=(rx_tx_addr[1]&0xF0)|0x0C; - rx_tx_addr[2]<<=4; // Make use of RX_Num + for(uint8_t i=0;i<2;i++) + rx_tx_addr[i]=pgm_read_byte_near( &E010_map_txid[rx_tx_addr[3]%11][i] ); + rx_tx_addr[2]=0; } else for(uint8_t i=0;i<3;i++) diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index b609555..1130e7b 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -63,7 +63,7 @@ //Comment the protocols you are not using with "//" to save Flash space. //The protocols below need an A7105 to be installed -#define FLYSKY_A7105_INO +/*#define FLYSKY_A7105_INO #define HUBSAN_A7105_INO #define AFHDS2A_A7105_INO @@ -90,13 +90,15 @@ #define V2X2_NRF24L01_INO #define YD717_NRF24L01_INO #define MT99XX_NRF24L01_INO +*/ #define MJXQ_NRF24L01_INO +/* #define SHENQI_NRF24L01_INO #define FY326_NRF24L01_INO #define FQ777_NRF24L01_INO #define ASSAN_NRF24L01_INO #define HONTAI_NRF24L01_INO - +*/ /**************************/ /*** TELEMETRY SETTINGS ***/