diff --git a/Multiprotocol/AFHDS2A_Rx_a7105.ino b/Multiprotocol/AFHDS2A_Rx_a7105.ino
index 37f187a..108942c 100644
--- a/Multiprotocol/AFHDS2A_Rx_a7105.ino
+++ b/Multiprotocol/AFHDS2A_Rx_a7105.ino
@@ -28,7 +28,7 @@ enum {
AFHDS2A_RX_DATA
};
-static void __attribute__((unused)) AFHDS2A_Rx_build_telemetry_packet()
+static void __attribute__((unused)) AFHDS2A_RX_build_telemetry_packet()
{
uint32_t bits = 0;
uint8_t bitsavailable = 0;
@@ -56,13 +56,13 @@ static void __attribute__((unused)) AFHDS2A_Rx_build_telemetry_packet()
}
}
-static uint8_t __attribute__((unused)) AFHDS2A_Rx_data_ready()
+static uint8_t __attribute__((unused)) AFHDS2A_RX_data_ready()
{
// check if FECF+CRCF Ok
return !(A7105_ReadReg(A7105_00_MODE) & (1 << 5 | 1 << 6 | 1 << 0));
}
-uint16_t initAFHDS2A_Rx()
+void AFHDS2A_RX_init()
{
uint8_t i;
A7105_Init();
@@ -84,12 +84,11 @@ uint16_t initAFHDS2A_Rx()
hopping_frequency[i] = eeprom_read_byte((EE_ADDR)temp++);
phase = AFHDS2A_RX_DATA;
}
- return 1000;
}
#define AFHDS2A_RX_WAIT_WRITE 0x80
-uint16_t AFHDS2A_Rx_callback()
+uint16_t AFHDS2A_RX_callback()
{
static int8_t read_retry;
int16_t temp;
@@ -105,9 +104,13 @@ uint16_t AFHDS2A_Rx_callback()
switch(phase) {
case AFHDS2A_RX_BIND1:
- if(IS_BIND_DONE) return initAFHDS2A_Rx(); // Abort bind
+ if(IS_BIND_DONE)
+ {
+ AFHDS2A_RX_init(); // Abort bind
+ break;
+ }
debugln("bind p=%d", phase+1);
- if (AFHDS2A_Rx_data_ready()) {
+ if (AFHDS2A_RX_data_ready()) {
A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE);
if ((packet[0] == 0xbb && packet[9] == 0x01) || (packet[0] == 0xbc && packet[9] <= 0x02)) {
memcpy(rx_id, &packet[1], 4); // TX id actually
@@ -121,9 +124,13 @@ uint16_t AFHDS2A_Rx_callback()
return 10000;
case AFHDS2A_RX_BIND2:
- if(IS_BIND_DONE) return initAFHDS2A_Rx(); // Abort bind
+ if(IS_BIND_DONE)
+ {
+ AFHDS2A_RX_init(); // Abort bind
+ break;
+ }
// got 2nd bind packet from tx ?
- if (AFHDS2A_Rx_data_ready()) {
+ if (AFHDS2A_RX_data_ready()) {
A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE);
if ((packet[0] == 0xBC && packet[9] == 0x02 && packet[10] == 0x00) &&
(memcmp(rx_id, &packet[1], 4) == 0) &&
@@ -156,7 +163,8 @@ uint16_t AFHDS2A_Rx_callback()
{
debugln("done");
BIND_DONE;
- return initAFHDS2A_Rx(); // Restart protocol
+ AFHDS2A_RX_init(); // Restart protocol
+ break;
}
phase |= AFHDS2A_RX_WAIT_WRITE;
return 1700;
@@ -173,13 +181,13 @@ uint16_t AFHDS2A_Rx_callback()
return 10000;
case AFHDS2A_RX_DATA:
- if (AFHDS2A_Rx_data_ready()) {
+ if (AFHDS2A_RX_data_ready()) {
A7105_ReadData(AFHDS2A_RX_TXPACKET_SIZE);
if (memcmp(&packet[1], rx_id, 4) == 0 && memcmp(&packet[5], rx_tx_addr, 4) == 0) {
if (packet[0] == 0x58 && packet[37] == 0x00 && telemetry_link == 0) { // standard packet, send channels to TX
int rssi = min(A7105_ReadReg(A7105_1D_RSSI_THOLD),160);
RX_RSSI = map16b(rssi, 160, 8, 0, 128);
- AFHDS2A_Rx_build_telemetry_packet();
+ AFHDS2A_RX_build_telemetry_packet();
telemetry_link = 1;
}
rx_data_started = true;
diff --git a/Multiprotocol/AFHDS2A_a7105.ino b/Multiprotocol/AFHDS2A_a7105.ino
index 4f534e6..e8dbc7c 100644
--- a/Multiprotocol/AFHDS2A_a7105.ino
+++ b/Multiprotocol/AFHDS2A_a7105.ino
@@ -277,7 +277,7 @@ static void AFHDS2A_build_packet(uint8_t type)
#define AFHDS2A_WRITE_TIME 1700
#endif
-uint16_t ReadAFHDS2A()
+uint16_t AFHDS2A_callback()
{
static uint8_t packet_type;
static uint16_t packet_counter;
@@ -420,7 +420,7 @@ uint16_t ReadAFHDS2A()
return 3850; // never reached, please the compiler
}
-uint16_t initAFHDS2A()
+void AFHDS2A_init()
{
A7105_Init();
@@ -446,6 +446,5 @@ uint16_t initAFHDS2A()
num_ch=17;
else
num_ch=14;
- return 50000;
}
#endif
diff --git a/Multiprotocol/ASSAN_nrf24l01.ino b/Multiprotocol/ASSAN_nrf24l01.ino
index cd02334..ead96ea 100644
--- a/Multiprotocol/ASSAN_nrf24l01.ino
+++ b/Multiprotocol/ASSAN_nrf24l01.ino
@@ -33,7 +33,7 @@ enum {
ASSAN_DATA5
};
-void ASSAN_init()
+void ASSAN_RF_init()
{
NRF24L01_Initialize();
NRF24L01_WriteReg(NRF24L01_03_SETUP_AW, 0x02); // 4 bytes rx/tx address
@@ -169,17 +169,16 @@ static void __attribute__((unused)) ASSAN_initialize_txid()
hopping_frequency[1]=freq2;
}
-uint16_t initASSAN()
+void ASSAN_init()
{
ASSAN_initialize_txid();
- ASSAN_init();
+ ASSAN_RF_init();
hopping_frequency_no = 0;
if(IS_BIND_IN_PROGRESS)
phase=ASSAN_BIND0;
else
phase=ASSAN_DATA0;
- return 1000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/BUGSMINI_nrf24l01.ino b/Multiprotocol/BUGSMINI_nrf24l01.ino
index a8ba47a..8b30d51 100644
--- a/Multiprotocol/BUGSMINI_nrf24l01.ino
+++ b/Multiprotocol/BUGSMINI_nrf24l01.ino
@@ -57,7 +57,7 @@ enum {
#define BUGSMINI_FLAG_ANGLE 0x02 // angle/acro mode (set is angle mode)
#define BUGSMINI_FLAG_ALTHOLD 0x04 // angle/altitude hold mode (set is altitude mode)
-static void __attribute__((unused)) BUGSMINI_init()
+static void __attribute__((unused)) BUGSMINI_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -357,11 +357,11 @@ static void __attribute__((unused)) BUGSMINI_initialize_txid()
BUGSMINI_txhash = pgm_read_byte_near( &BUGSMINI_tx_hash[rx_tx_addr[3]%BUGSMINI_NUM_TX_RF_MAPS] );
}
-uint16_t initBUGSMINI()
+void BUGSMINI_init()
{
BUGSMINI_initialize_txid();
memset(packet, (uint8_t)0, BUGSMINI_TX_PAYLOAD_SIZE);
- BUGSMINI_init();
+ BUGSMINI_RF_init();
if(IS_BIND_IN_PROGRESS)
{
XN297_SetTXAddr((const uint8_t*)"mjxRC", 5);
@@ -378,7 +378,6 @@ uint16_t initBUGSMINI()
armed = 0;
arm_flags = BUGSMINI_FLAG_DISARM; // initial value from captures
arm_channel_previous = BUGSMINI_CH_SW_ARM;
- return BUGSMINI_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/Bayang_Rx_nrf24l01.ino b/Multiprotocol/Bayang_Rx_nrf24l01.ino
index d85230f..d285820 100644
--- a/Multiprotocol/Bayang_Rx_nrf24l01.ino
+++ b/Multiprotocol/Bayang_Rx_nrf24l01.ino
@@ -98,7 +98,7 @@ static void __attribute__((unused)) Bayang_Rx_build_telemetry_packet()
}
}
-uint16_t initBayang_Rx()
+void BAYANG_RX_init()
{
uint8_t i;
Bayang_Rx_init_nrf24l01();
@@ -119,17 +119,20 @@ uint16_t initBayang_Rx()
XN297_SetRXAddr(rx_tx_addr, BAYANG_RX_ADDRESS_LENGTH);
phase = BAYANG_RX_DATA;
}
- return 1000;
}
-uint16_t Bayang_Rx_callback()
+uint16_t BAYANG_RX_callback()
{
uint8_t i;
static int8_t read_retry;
switch (phase) {
case BAYANG_RX_BIND:
- if(IS_BIND_DONE) return initBayang_Rx(); // Abort bind
+ if(IS_BIND_DONE)
+ {
+ BAYANG_RX_init(); // Abort bind
+ break;
+ }
if (NRF24L01_ReadReg(NRF24L01_07_STATUS) & _BV(NRF24L01_07_RX_DR)) {
// data received from TX
if (XN297_ReadPayload(packet, BAYANG_RX_PACKET_SIZE) && ( packet[0] == 0xA4 || packet[0] == 0xA2 ) && Bayang_Rx_check_validity()) {
diff --git a/Multiprotocol/Bayang_nrf24l01.ino b/Multiprotocol/Bayang_nrf24l01.ino
index 6519ab9..2d7ad6e 100644
--- a/Multiprotocol/Bayang_nrf24l01.ino
+++ b/Multiprotocol/Bayang_nrf24l01.ino
@@ -246,7 +246,7 @@ static void __attribute__((unused)) BAYANG_check_rx(void)
}
#endif
-static void __attribute__((unused)) BAYANG_init()
+static void __attribute__((unused)) BAYANG_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -363,15 +363,14 @@ static void __attribute__((unused)) BAYANG_initialize_txid()
hopping_frequency_no=0;
}
-uint16_t initBAYANG(void)
+void BAYANG_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
phase=BAYANG_BIND;
bind_counter = BAYANG_BIND_COUNT;
BAYANG_initialize_txid();
- BAYANG_init();
+ BAYANG_RF_init();
packet_count=0;
- return BAYANG_INITIAL_WAIT+BAYANG_PACKET_PERIOD;
}
#endif
diff --git a/Multiprotocol/Bugs_a7105.ino b/Multiprotocol/Bugs_a7105.ino
index 8ec45ef..d77829a 100644
--- a/Multiprotocol/Bugs_a7105.ino
+++ b/Multiprotocol/Bugs_a7105.ino
@@ -315,7 +315,7 @@ static void __attribute__((unused)) BUGS_increment_counts()
// FIFO config is one less than desired value
#define BUGS_FIFO_SIZE_RX 15
#define BUGS_FIFO_SIZE_TX 21
-uint16_t ReadBUGS(void)
+uint16_t BUGS_callback(void)
{
uint8_t mode, base_adr;
uint16_t rxid;
@@ -437,7 +437,7 @@ uint16_t ReadBUGS(void)
return packet_period;
}
-uint16_t initBUGS(void)
+void BUGS_init(void)
{
uint16_t rxid=0;
uint8_t base_adr=BUGS_EEPROM_OFFSET+(RX_num&0x0F)*2;
@@ -459,8 +459,6 @@ uint16_t initBUGS(void)
armed = 0;
arm_flags = BUGS_FLAG_DISARM; // initial value from captures
arm_channel_previous = BUGS_CH_SW_ARM;
-
- return 10000;
}
#endif
diff --git a/Multiprotocol/CABELL_nrf224l01.ino b/Multiprotocol/CABELL_nrf224l01.ino
index 3f9c927..5087664 100644
--- a/Multiprotocol/CABELL_nrf224l01.ino
+++ b/Multiprotocol/CABELL_nrf224l01.ino
@@ -356,7 +356,7 @@ static void __attribute__((unused)) CABELL_setAddress()
}
//-----------------------------------------------------------------------------------------
-static void __attribute__((unused)) CABELL_init()
+static void __attribute__((unused)) CABELL_RF_init()
{
NRF24L01_Initialize();
CABELL_SetPower();
@@ -414,7 +414,7 @@ uint16_t CABELL_callback()
else if (bind_counter == 0)
{
BIND_DONE;
- CABELL_init(); // non-bind address
+ CABELL_RF_init(); // non-bind address
}
else
{
@@ -425,17 +425,15 @@ uint16_t CABELL_callback()
}
//-----------------------------------------------------------------------------------------
-uint16_t initCABELL(void)
+void CABELL_init(void)
{
if (IS_BIND_DONE)
bind_counter = 0;
else
bind_counter = CABELL_BIND_COUNT;
- CABELL_init();
+ CABELL_RF_init();
packet_period = CABELL_PACKET_PERIOD;
-
- return packet_period;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/CFlie_nrf24l01.ino b/Multiprotocol/CFlie_nrf24l01.ino
index 4978be8..a07dd10 100644
--- a/Multiprotocol/CFlie_nrf24l01.ino
+++ b/Multiprotocol/CFlie_nrf24l01.ino
@@ -644,7 +644,7 @@ static uint8_t crtp_log_setup_state_machine()
return state_machine_completed;
}
-static int cflie_init()
+static void CFLIE_RF_init()
{
NRF24L01_Initialize();
@@ -672,9 +672,6 @@ static int cflie_init()
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x01); // Enable Dynamic Payload Length on pipe 0
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x06); // Enable Dynamic Payload Length, enable Payload with ACK
-
- // 50ms delay in callback
- return 50000;
}
// TODO: Fix telemetry
@@ -749,7 +746,7 @@ static int cflie_init()
// }
// }
-static uint16_t cflie_callback()
+static uint16_t CFLIE_callback()
{
switch (phase) {
case CFLIE_INIT_SEARCH:
@@ -799,7 +796,7 @@ static uint16_t cflie_callback()
}
// Generate address to use from TX id and manufacturer id (STM32 unique id)
-static uint8_t initialize_rx_tx_addr()
+static uint8_t CFLIE_initialize_rx_tx_addr()
{
rx_tx_addr[0] =
rx_tx_addr[1] =
@@ -844,19 +841,15 @@ static uint8_t initialize_rx_tx_addr()
return CFLIE_INIT_SEARCH;
}
-uint16_t initCFlie(void)
+void CFLIE_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
- phase = initialize_rx_tx_addr();
+ phase = CFLIE_initialize_rx_tx_addr();
crtp_log_setup_state = CFLIE_CRTP_LOG_SETUP_STATE_INIT;
packet_count=0;
- int delay = cflie_init();
-
- // debugln("CFlie init!");
-
- return delay;
+ CFLIE_RF_init();
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/CG023_nrf24l01.ino b/Multiprotocol/CG023_nrf24l01.ino
index 7d6b260..ecd8a4d 100644
--- a/Multiprotocol/CG023_nrf24l01.ino
+++ b/Multiprotocol/CG023_nrf24l01.ino
@@ -119,7 +119,7 @@ static void __attribute__((unused)) CG023_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) CG023_init()
+static void __attribute__((unused)) CG023_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -165,17 +165,16 @@ static void __attribute__((unused)) CG023_initialize_txid()
hopping_frequency_no = rx_tx_addr[0] - 0x7D; // rf channel for data packets
}
-uint16_t initCG023(void)
+void CG023_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = CG023_BIND_COUNT;
CG023_initialize_txid();
- CG023_init();
+ CG023_RF_init();
if(sub_protocol==CG023)
packet_period=CG023_PACKET_PERIOD;
else // YD829
packet_period=YD829_PACKET_PERIOD;
- return CG023_INITIAL_WAIT+YD829_PACKET_PERIOD;
}
#endif
diff --git a/Multiprotocol/CX10_nrf24l01.ino b/Multiprotocol/CX10_nrf24l01.ino
index b4ff40b..aea1691 100644
--- a/Multiprotocol/CX10_nrf24l01.ino
+++ b/Multiprotocol/CX10_nrf24l01.ino
@@ -169,7 +169,7 @@ static void __attribute__((unused)) CX10_Write_Packet(uint8_t bind)
NRF24L01_SetPower();
}
-static void __attribute__((unused)) CX10_init()
+static void __attribute__((unused)) CX10_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -261,9 +261,13 @@ static void __attribute__((unused)) CX10_initialize_txid()
}
}
-uint16_t initCX10(void)
+void CX10_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
+
+ if(protocol == PROTO_Q2X2)
+ sub_protocol|=0x08; // Increase the number of sub_protocols for CX-10
+
if(sub_protocol==CX10_BLUE)
{
packet_length = CX10A_PACKET_SIZE;
@@ -286,8 +290,7 @@ uint16_t initCX10(void)
bind_counter = CX10_BIND_COUNT;
}
CX10_initialize_txid();
- CX10_init();
- return CX10_INITIAL_WAIT+packet_period;
+ CX10_RF_init();
}
#endif
diff --git a/Multiprotocol/Corona_cc2500.ino b/Multiprotocol/Corona_cc2500.ino
index 574bc78..ff6fc9d 100644
--- a/Multiprotocol/Corona_cc2500.ino
+++ b/Multiprotocol/Corona_cc2500.ino
@@ -71,7 +71,7 @@ static void __attribute__((unused)) CORONA_rf_init()
}
// Generate id and hopping freq
-static void __attribute__((unused)) CORONA_init()
+static void __attribute__((unused)) CORONA_TXID_init()
{
#ifdef CORONA_FORCE_ID
// Example of ID and channels taken from dumps
@@ -255,7 +255,7 @@ static uint16_t __attribute__((unused)) CORONA_build_packet()
return packet_period;
}
-uint16_t ReadCORONA()
+uint16_t CORONA_callback()
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(22000);
@@ -276,7 +276,7 @@ uint16_t ReadCORONA()
return packet_period;
}
-uint16_t initCORONA()
+void CORONA_init()
{
switch(sub_protocol)
{
@@ -293,9 +293,8 @@ uint16_t initCORONA()
state=400; // Used by V2 to send RF channels + ID for 2.65s at startup
hopping_frequency_no=0;
fdv3_id_send = 0;
- CORONA_init();
+ CORONA_TXID_init();
CORONA_rf_init();
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/DM002_nrf24l01.ino b/Multiprotocol/DM002_nrf24l01.ino
index a565640..d8acd3a 100644
--- a/Multiprotocol/DM002_nrf24l01.ino
+++ b/Multiprotocol/DM002_nrf24l01.ino
@@ -95,7 +95,7 @@ static void __attribute__((unused)) DM002_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) DM002_init()
+static void __attribute__((unused)) DM002_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -155,13 +155,12 @@ static void __attribute__((unused)) DM002_initialize_txid()
}
}
-uint16_t initDM002(void)
+void DM002_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = DM002_BIND_COUNT;
DM002_initialize_txid();
- DM002_init();
- return DM002_INITIAL_WAIT;
+ DM002_RF_init();
}
#endif
diff --git a/Multiprotocol/DSM_cyrf6936.ino b/Multiprotocol/DSM_cyrf6936.ino
index 8984496..51d1d95 100644
--- a/Multiprotocol/DSM_cyrf6936.ino
+++ b/Multiprotocol/DSM_cyrf6936.ino
@@ -228,7 +228,7 @@ static uint8_t __attribute__((unused)) DSM_Check_RX_packet()
return result;
}
-uint16_t ReadDsm()
+uint16_t DSM_callback()
{
#define DSM_CH1_CH2_DELAY 4010 // Time between write of channel 1 and channel 2
#ifdef STM32_BOARD
@@ -449,7 +449,7 @@ uint16_t ReadDsm()
return 0;
}
-uint16_t initDsm()
+void DSM_init()
{
CYRF_GetMfgData(cyrfmfg_id);
//Model match
@@ -496,7 +496,6 @@ uint16_t initDsm()
}
else
phase = DSM_CHANSEL;//
- return 10000;
}
#endif
diff --git a/Multiprotocol/Devo_cyrf6936.ino b/Multiprotocol/Devo_cyrf6936.ino
index 6c950dc..369f687 100644
--- a/Multiprotocol/Devo_cyrf6936.ino
+++ b/Multiprotocol/Devo_cyrf6936.ino
@@ -294,7 +294,7 @@ static void __attribute__((unused)) DEVO_BuildPacket()
packet_count = 0;
}
-uint16_t devo_callback()
+uint16_t DEVO_callback()
{
static uint8_t txState=0;
@@ -404,8 +404,23 @@ uint16_t devo_callback()
#endif
}
-uint16_t DevoInit()
+void DEVO_init()
{
+ #ifdef ENABLE_PPM
+ if(mode_select) //PPM mode
+ {
+ if(IS_BIND_BUTTON_FLAG_on)
+ {
+ eeprom_write_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num),0x00); // reset to autobind mode for the current model
+ option=0;
+ }
+ else
+ {
+ option=eeprom_read_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num)); // load previous mode: autobind or fixed id
+ if(option!=1) option=0; // if not fixed id mode then it should be autobind
+ }
+ }
+ #endif //ENABLE_PPM
switch(sub_protocol)
{
case 1:
@@ -453,7 +468,6 @@ uint16_t DevoInit()
bind_counter = 0;
DEVO_cyrf_set_bound_sop_code();
}
- return 2400;
}
#endif
diff --git a/Multiprotocol/E010R5_cyrf6936.ino b/Multiprotocol/E010R5_cyrf6936.ino
index a63a025..37ba366 100644
--- a/Multiprotocol/E010R5_cyrf6936.ino
+++ b/Multiprotocol/E010R5_cyrf6936.ino
@@ -51,7 +51,7 @@ static void __attribute__((unused)) E010R5_build_data_packet()
RF2500_BuildPayload(packet);
}
-uint16_t ReadE010R5()
+uint16_t E010R5_callback()
{
//Bind
if(bind_counter)
@@ -90,7 +90,7 @@ uint16_t ReadE010R5()
return 0;
}
-uint16_t initE010R5()
+void E010R5_init()
{
BIND_IN_PROGRESS; // Autobind protocol
bind_counter = 2600;
@@ -134,8 +134,6 @@ uint16_t initE010R5()
RF2500_RFChannel(hopping_frequency[0]);
hopping_frequency_no=0;
packet_count=0;
-
- return 3400;
}
#endif
diff --git a/Multiprotocol/E016HV2_cc2500.ino b/Multiprotocol/E016HV2_cc2500.ino
index cebb704..7c18bca 100644
--- a/Multiprotocol/E016HV2_cc2500.ino
+++ b/Multiprotocol/E016HV2_cc2500.ino
@@ -124,7 +124,7 @@ uint16_t E016HV2_callback()
return E016HV2_PACKET_PERIOD;
}
-uint16_t initE016HV2()
+void E016HV2_init()
{
//Config CC2500
CC2500_250K_Init();
@@ -152,7 +152,6 @@ uint16_t initE016HV2()
flags=0;
bind_counter = E016HV2_BIND_COUNT;
BIND_IN_PROGRESS; // Autobind protocol
- return E016HV2_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/E01X_nrf24l01.ino b/Multiprotocol/E01X_nrf24l01.ino
index 91fbf72..371aae3 100644
--- a/Multiprotocol/E01X_nrf24l01.ino
+++ b/Multiprotocol/E01X_nrf24l01.ino
@@ -244,7 +244,7 @@ static void __attribute__((unused)) E01X_send_packet(uint8_t bind)
NRF24L01_SetPower();
}
-static void __attribute__((unused)) E01X_init()
+static void __attribute__((unused)) E01X_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -322,7 +322,7 @@ static void __attribute__((unused)) E016H_initialize_txid()
}
}
-uint16_t initE01X()
+void E01X_init()
{
BIND_IN_PROGRESS;
if(sub_protocol==E012)
@@ -343,10 +343,9 @@ uint16_t initE01X()
E016H_initialize_txid();
packet_period=E016H_PACKET_PERIOD;
}
- E01X_init();
+ E01X_RF_init();
bind_counter = E01X_BIND_COUNT;
hopping_frequency_no = 0;
- return E01X_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/E129_cyrf6936.ino b/Multiprotocol/E129_cyrf6936.ino
index 515e462..ce1c3a8 100644
--- a/Multiprotocol/E129_cyrf6936.ino
+++ b/Multiprotocol/E129_cyrf6936.ino
@@ -74,7 +74,7 @@ static void __attribute__((unused)) E129_build_data_packet()
RF2500_BuildPayload(packet);
}
-uint16_t ReadE129()
+uint16_t E129_callback()
{
//Set RF channel
if(phase==0)
@@ -115,7 +115,7 @@ uint16_t ReadE129()
return 5200-1260;
}
-uint16_t initE129()
+void E129_init()
{
BIND_IN_PROGRESS; // Autobind protocol
bind_counter = 384; // ~2sec
@@ -146,7 +146,6 @@ uint16_t initE129()
hopping_frequency_no=0;
packet_count=0;
phase=0;
- return 1260;
}
#endif
diff --git a/Multiprotocol/ESky150_nrf24l01.ino b/Multiprotocol/ESky150_nrf24l01.ino
index 06ff3a9..88f5fdb 100644
--- a/Multiprotocol/ESky150_nrf24l01.ino
+++ b/Multiprotocol/ESky150_nrf24l01.ino
@@ -23,7 +23,7 @@
#define ESKY150_BINDING_PACKET_PERIOD 2000
#define ESKY150_SENDING_PACKET_PERIOD 4800
-static void __attribute__((unused)) ESKY150_init()
+static void __attribute__((unused)) ESKY150_RF_init()
{
//Original TX always sets for channelx 0x22 and 0x4a
// Use channels 2..79
@@ -171,16 +171,15 @@ uint16_t ESKY150_callback()
return ESKY150_SENDING_PACKET_PERIOD;
}
-uint16_t initESKY150(void)
+void ESKY150_init(void)
{
- ESKY150_init();
+ ESKY150_RF_init();
if(IS_BIND_IN_PROGRESS)
{
bind_counter=3000;
ESKY150_bind_init();
}
hopping_frequency_no=0;
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/ESky150v2_cc2500.ino b/Multiprotocol/ESky150v2_cc2500.ino
index ab58d95..8c8f2c1 100644
--- a/Multiprotocol/ESky150v2_cc2500.ino
+++ b/Multiprotocol/ESky150v2_cc2500.ino
@@ -104,7 +104,7 @@ uint16_t ESKY150V2_callback()
return ESKY150V2_PACKET_PERIOD;
}
-uint16_t initESKY150V2()
+void ESKY150V2_init()
{
CC2500_250K_Init();
ESKY150V2_set_freq();
@@ -133,7 +133,6 @@ uint16_t initESKY150V2()
}
else
CC2500_250K_NRF_SetTXAddr(rx_tx_addr, ESKY150V2_TXID_SIZE);
- return 50000;
}
#endif
diff --git a/Multiprotocol/ESky_nrf24l01.ino b/Multiprotocol/ESky_nrf24l01.ino
index a7f3f5a..5339275 100644
--- a/Multiprotocol/ESky_nrf24l01.ino
+++ b/Multiprotocol/ESky_nrf24l01.ino
@@ -35,7 +35,7 @@ static void __attribute__((unused)) ESKY_set_data_address()
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, rx_tx_addr, 4);
}
-static void __attribute__((unused)) ESKY_init()
+static void __attribute__((unused)) ESKY_RF_init()
{
NRF24L01_Initialize();
@@ -65,7 +65,7 @@ static void __attribute__((unused)) ESKY_init()
NRF24L01_WriteReg(NRF24L01_17_FIFO_STATUS, 0x00); // Just in case, no real bits to write here
}
-static void __attribute__((unused)) ESKY_init2()
+static void __attribute__((unused)) ESKY_TXID_init()
{
NRF24L01_FlushTx();
if(sub_protocol==ESKY_STD)
@@ -187,7 +187,7 @@ uint16_t ESKY_callback()
return ESKY_STD_PACKET_PERIOD;
}
-uint16_t initESKY(void)
+void ESKY_init(void)
{
bind_counter = ESKY_BIND_COUNT;
rx_tx_addr[2] = rx_tx_addr[3]; // Model match
@@ -200,10 +200,9 @@ uint16_t initESKY(void)
}
#endif
rx_tx_addr[3] = 0xBB;
- ESKY_init();
- ESKY_init2();
+ ESKY_RF_init();
+ ESKY_TXID_init();
packet_count=0;
- return 50000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/FQ777_nrf24l01.ino b/Multiprotocol/FQ777_nrf24l01.ino
index 73c0d50..9b6f131 100644
--- a/Multiprotocol/FQ777_nrf24l01.ino
+++ b/Multiprotocol/FQ777_nrf24l01.ino
@@ -150,7 +150,7 @@ static void __attribute__((unused)) FQ777_send_packet(uint8_t bind)
NRF24L01_WritePayload(packet, packet_len);
}
-static void __attribute__((unused)) FQ777_init()
+static void __attribute__((unused)) FQ777_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -191,7 +191,7 @@ uint16_t FQ777_callback()
return FQ777_PACKET_PERIOD;
}
-uint16_t initFQ777(void)
+void FQ777_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = FQ777_BIND_COUNT;
@@ -204,8 +204,7 @@ uint16_t initFQ777(void)
rx_tx_addr[2] = 0x00;
rx_tx_addr[3] = 0xe7;
rx_tx_addr[4] = 0x67;
- FQ777_init();
- return FQ777_INITIAL_WAIT;
+ FQ777_RF_init();
}
#endif
diff --git a/Multiprotocol/FX816_nrf24l01.ino b/Multiprotocol/FX816_nrf24l01.ino
index 1989c90..32403f0 100644
--- a/Multiprotocol/FX816_nrf24l01.ino
+++ b/Multiprotocol/FX816_nrf24l01.ino
@@ -58,7 +58,7 @@ static void __attribute__((unused)) FX816_send_packet()
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) FX816_init()
+static void __attribute__((unused)) FX816_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -100,14 +100,13 @@ uint16_t FX816_callback()
return FX816_PACKET_PERIOD;
}
-uint16_t initFX816()
+void FX816_init()
{
BIND_IN_PROGRESS; // autobind protocol
FX816_initialize_txid();
- FX816_init();
+ FX816_RF_init();
hopping_frequency_no = 0;
bind_counter=FX816_BIND_COUNT;
- return FX816_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/FY326_nrf24l01.ino b/Multiprotocol/FY326_nrf24l01.ino
index 3e7723f..3ba75bd 100644
--- a/Multiprotocol/FY326_nrf24l01.ino
+++ b/Multiprotocol/FY326_nrf24l01.ino
@@ -88,7 +88,7 @@ static void __attribute__((unused)) FY326_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) FY326_init()
+static void __attribute__((unused)) FY326_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -209,20 +209,19 @@ static void __attribute__((unused)) FY326_initialize_txid()
hopping_frequency[i]=rx_tx_addr[0] & ~0x80;
}
-uint16_t initFY326(void)
+void FY326_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
rxid = 0xAA;
bind_counter = FY326_BIND_COUNT;
FY326_initialize_txid();
- FY326_init();
+ FY326_RF_init();
if(sub_protocol==FY319)
{
phase=FY319_BIND1;
}
else
phase=FY326_BIND1;
- return FY326_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/FlySky_a7105.ino b/Multiprotocol/FlySky_a7105.ino
index 799f499..4c4f550 100644
--- a/Multiprotocol/FlySky_a7105.ino
+++ b/Multiprotocol/FlySky_a7105.ino
@@ -12,7 +12,7 @@
You should have received a copy of the GNU General Public License
along with Multiprotocol. If not, see .
*/
-// Last sync with hexfet new_protocols/flysky_a7105.c dated 2015-09-28
+// Last sync with hexfet new_protocols/FLYSKY_a7105.c dated 2015-09-28
#if defined(FLYSKY_A7105_INO)
@@ -53,7 +53,7 @@ enum {
const uint8_t PROGMEM V912_X17_SEQ[10] = { 0x14, 0x31, 0x40, 0x49, 0x49, // sometime first byte is 0x15 ?
0x49, 0x49, 0x49, 0x49, 0x49, };
-static void __attribute__((unused)) flysky_apply_extension_flags()
+static void __attribute__((unused)) FLYSKY_apply_extension_flags()
{
switch(sub_protocol)
{
@@ -129,7 +129,7 @@ static void __attribute__((unused)) flysky_apply_extension_flags()
}
}
-static void __attribute__((unused)) flysky_build_packet(uint8_t init)
+static void __attribute__((unused)) FLYSKY_build_packet(uint8_t init)
{
uint8_t i;
//servodata timing range for flysky.
@@ -150,17 +150,17 @@ static void __attribute__((unused)) flysky_build_packet(uint8_t init)
packet[5 + i*2]=temp&0xFF; //low byte of servo timing(1000-2000us)
packet[6 + i*2]=(temp>>8)&0xFF; //high byte of servo timing(1000-2000us)
}
- flysky_apply_extension_flags();
+ FLYSKY_apply_extension_flags();
}
-uint16_t ReadFlySky()
+uint16_t FLYSKY_callback()
{
#ifndef FORCE_FLYSKY_TUNING
A7105_AdjustLOBaseFreq(1);
#endif
if(IS_BIND_IN_PROGRESS)
{
- flysky_build_packet(1);
+ FLYSKY_build_packet(1);
A7105_WriteData(21, 1);
bind_counter--;
if (bind_counter==0)
@@ -171,7 +171,7 @@ uint16_t ReadFlySky()
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
- flysky_build_packet(0);
+ FLYSKY_build_packet(0);
A7105_WriteData(21, hopping_frequency[hopping_frequency_no & 0x0F]);
A7105_SetPower();
}
@@ -179,7 +179,7 @@ uint16_t ReadFlySky()
return packet_period;
}
-const uint8_t PROGMEM tx_channels[8][4] = {
+const uint8_t PROGMEM FLYSKY_tx_channels[8][4] = {
{ 0x12, 0x34, 0x56, 0x78},
{ 0x18, 0x27, 0x36, 0x45},
{ 0x41, 0x82, 0x36, 0x57},
@@ -190,7 +190,7 @@ const uint8_t PROGMEM tx_channels[8][4] = {
{ 0x71, 0x86, 0x43, 0x52}
};
-uint16_t initFlySky()
+void FLYSKY_init()
{
uint8_t chanrow;
uint8_t chanoffset;
@@ -208,7 +208,7 @@ uint16_t initFlySky()
chanoffset=rx_tx_addr[3]/16;
for(uint8_t i=0;i<16;i++)
{
- temp=pgm_read_byte_near(&tx_channels[chanrow>>1][i>>2]);
+ temp=pgm_read_byte_near(&FLYSKY_tx_channels[chanrow>>1][i>>2]);
if(i&0x02)
temp&=0x0F;
else
@@ -242,6 +242,5 @@ uint16_t initFlySky()
bind_counter = FLYSKY_BIND_COUNT;
else
bind_counter = 0;
- return 2400;
}
#endif
diff --git a/Multiprotocol/FrSkyDVX_common.ino b/Multiprotocol/FrSkyDVX_common.ino
index eb65d7c..67f9348 100644
--- a/Multiprotocol/FrSkyDVX_common.ino
+++ b/Multiprotocol/FrSkyDVX_common.ino
@@ -508,7 +508,7 @@ static void __attribute__((unused)) FrSkyX_set_start(uint8_t ch )
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[ch]);
}
-static void __attribute__((unused)) FrSkyX_init()
+static void __attribute__((unused)) FrSkyX_RF_init()
{
if(protocol==PROTO_FRSKYL)
FRSKY_init_cc2500(FRSKYL_cc2500_conf);
diff --git a/Multiprotocol/FrSkyD_cc2500.ino b/Multiprotocol/FrSkyD_cc2500.ino
index 42b4780..89ce99b 100644
--- a/Multiprotocol/FrSkyD_cc2500.ino
+++ b/Multiprotocol/FrSkyD_cc2500.ino
@@ -17,12 +17,12 @@
#include "iface_cc2500.h"
-static void __attribute__((unused)) frsky2way_init(uint8_t bind)
+static void __attribute__((unused)) FRSKYD_RF_init()
{
FRSKY_init_cc2500(FRSKYD_cc2500_conf);
- CC2500_WriteReg(CC2500_1B_AGCCTRL2, bind ? 0x43 : 0x03);
- CC2500_WriteReg(CC2500_09_ADDR, bind ? 0x03 : rx_tx_addr[3]);
+ CC2500_WriteReg(CC2500_1B_AGCCTRL2, IS_BIND_IN_PROGRESS ? 0x43 : 0x03);
+ CC2500_WriteReg(CC2500_09_ADDR, IS_BIND_IN_PROGRESS ? 0x03 : rx_tx_addr[3]);
CC2500_WriteReg(CC2500_07_PKTCTRL1, 0x05);
CC2500_Strobe(CC2500_SIDLE); // Go to idle...
//
@@ -32,7 +32,7 @@ static void __attribute__((unused)) frsky2way_init(uint8_t bind)
//#######END INIT########
}
-static void __attribute__((unused)) frsky2way_build_bind_packet()
+static void __attribute__((unused)) FRSKYD_build_bind_packet()
{
//11 03 01 d7 2d 00 00 1e 3c 5b 78 00 00 00 00 00 00 01
//11 03 01 19 3e 00 02 8e 2f bb 5c 00 00 00 00 00 00 01
@@ -57,7 +57,7 @@ static void __attribute__((unused)) frsky2way_build_bind_packet()
packet[17] = rx_tx_addr[1];
}
-static void __attribute__((unused)) frsky2way_data_frame()
+static void __attribute__((unused)) FRSKYD_data_frame()
{//pachet[4] is telemetry user frame counter(hub)
//11 d7 2d 22 00 01 c9 c9 ca ca 88 88 ca ca c9 ca 88 88
//11 57 12 00 00 01 f2 f2 f2 f2 06 06 ca ca ca ca 18 18
@@ -94,7 +94,7 @@ static void __attribute__((unused)) frsky2way_data_frame()
}
}
-uint16_t initFrSky_2way()
+void FRSKYD_init(void)
{
//FrskyD init hop
if (sub_protocol==DCLONE)
@@ -116,21 +116,20 @@ uint16_t initFrSky_2way()
packet_count=0;
if(IS_BIND_IN_PROGRESS)
{
- frsky2way_init(1);
+ FRSKYD_RF_init();
state = FRSKY_BIND;
}
else
{
state = FRSKY_BIND_DONE;
}
- return 10000;
}
-uint16_t ReadFrSky_2way()
+uint16_t FRSKYD_callback(void)
{
if (state < FRSKY_BIND_DONE)
{
- frsky2way_build_bind_packet();
+ FRSKYD_build_bind_packet();
CC2500_Strobe(CC2500_SIDLE);
CC2500_WriteReg(CC2500_0A_CHANNR, 0x00);
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
@@ -144,10 +143,10 @@ uint16_t ReadFrSky_2way()
}
if (state == FRSKY_BIND_DONE)
{
- state = FRSKY_DATA2;
- frsky2way_init(0);
- counter = 0;
BIND_DONE;
+ FRSKYD_RF_init();
+ counter = 0;
+ state = FRSKY_DATA2;
}
else
if (state == FRSKY_DATA5)
@@ -206,7 +205,7 @@ uint16_t ReadFrSky_2way()
CC2500_SetFreqOffset();
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
CC2500_Strobe(CC2500_SFRX);
- frsky2way_data_frame();
+ FRSKYD_data_frame();
CC2500_WriteData(packet, packet[0]+1);
state++;
}
diff --git a/Multiprotocol/FrSkyL_cc2500.ino b/Multiprotocol/FrSkyL_cc2500.ino
index 62f8cd9..75126b9 100644
--- a/Multiprotocol/FrSkyL_cc2500.ino
+++ b/Multiprotocol/FrSkyL_cc2500.ino
@@ -137,7 +137,7 @@ static void __attribute__((unused)) FrSkyL_encode_packet(bool type)
}
}
-uint16_t ReadFrSkyL()
+uint16_t FRSKYL_callback()
{
static uint8_t written=0, send=0;
switch(send)
@@ -212,7 +212,7 @@ uint16_t ReadFrSkyL()
return 1;
}
-uint16_t initFrSkyL()
+void FRSKYL_init()
{
set_rx_tx_addr(MProtocol_id_master);
rx_tx_addr[1]=0x02; // ID related, hw version?
@@ -227,7 +227,7 @@ uint16_t initFrSkyL()
while(!FrSkyX_chanskip)
FrSkyX_chanskip=random(0xfefefefe)%47;
- FrSkyX_init();
+ FrSkyX_RF_init();
//Prepare frame
memset(FrSkyL_buffer,0x00,FRSKYL_PACKET_LEN-3);
@@ -253,6 +253,5 @@ uint16_t initFrSkyL()
state = FRSKY_DATA1;
FrSkyX_initialize_data(0);
}
- return 10000;
}
#endif
diff --git a/Multiprotocol/FrSkyR9_sx1276.ino b/Multiprotocol/FrSkyR9_sx1276.ino
index 02d4882..4c4c6a2 100644
--- a/Multiprotocol/FrSkyR9_sx1276.ino
+++ b/Multiprotocol/FrSkyR9_sx1276.ino
@@ -157,7 +157,7 @@ static void __attribute__((unused)) FrSkyR9_build_EU_packet()
packet[13] = FrSkyR9_CRC8(packet, 13);
}
-uint16_t initFrSkyR9()
+void FRSKYR9_init()
{
//Check frequencies
#ifdef DISP_FREQ_TABLE
@@ -213,10 +213,9 @@ uint16_t initFrSkyR9()
hopping_frequency_no=0;
phase=FRSKYR9_FREQ;
- return 20000; // Start calling FrSkyR9_callback in 20 milliseconds
}
-uint16_t FrSkyR9_callback()
+uint16_t FRSKYR9_callback()
{
switch (phase)
{
diff --git a/Multiprotocol/FrSkyV_cc2500.ino b/Multiprotocol/FrSkyV_cc2500.ino
index 57f5d8f..6ad96f3 100644
--- a/Multiprotocol/FrSkyV_cc2500.ino
+++ b/Multiprotocol/FrSkyV_cc2500.ino
@@ -113,7 +113,7 @@ static void __attribute__((unused)) FRSKYV_build_data_packet()
packet[14] = FRSKYV_crc8(crc8, packet, 14);
}
-uint16_t ReadFRSKYV()
+uint16_t FRSKYV_callback(void)
{
if(IS_BIND_DONE)
{ // Normal operation
@@ -148,7 +148,7 @@ uint16_t ReadFRSKYV()
return 53460;
}
-uint16_t initFRSKYV()
+void FRSKYV_init(void)
{
//ID is 15 bits. Using rx_tx_addr[2] and rx_tx_addr[3] since we want to use RX_Num for model match
rx_tx_addr[2]&=0x7F;
@@ -158,7 +158,6 @@ uint16_t initFRSKYV()
seed = 1;
binding_idx=0;
phase = FRSKYV_DATA1;
- return 10000;
}
#endif
diff --git a/Multiprotocol/FrSkyX_cc2500.ino b/Multiprotocol/FrSkyX_cc2500.ino
index 39d2780..d7b34db 100644
--- a/Multiprotocol/FrSkyX_cc2500.ino
+++ b/Multiprotocol/FrSkyX_cc2500.ino
@@ -116,7 +116,7 @@ static void __attribute__((unused)) FrSkyX_build_packet()
debugln("");*/
}
-uint16_t ReadFrSkyX()
+uint16_t FRSKYX_callback()
{
switch(state)
{
@@ -241,7 +241,7 @@ uint16_t ReadFrSkyX()
return 1;
}
-uint16_t initFrSkyX()
+void FRSKYX_init()
{
set_rx_tx_addr(MProtocol_id_master);
FrSkyFormat = sub_protocol;
@@ -268,7 +268,7 @@ uint16_t initFrSkyX()
while(!FrSkyX_chanskip)
FrSkyX_chanskip=random(0xfefefefe)%47;
- FrSkyX_init();
+ FrSkyX_RF_init();
if(IS_BIND_IN_PROGRESS)
{
@@ -281,6 +281,5 @@ uint16_t initFrSkyX()
FrSkyX_initialize_data(0);
}
FrSkyX_telem_init();
- return 10000;
}
#endif
diff --git a/Multiprotocol/FrSky_Rx_cc2500.ino b/Multiprotocol/FrSky_Rx_cc2500.ino
index 265e224..f3d3abd 100644
--- a/Multiprotocol/FrSky_Rx_cc2500.ino
+++ b/Multiprotocol/FrSky_Rx_cc2500.ino
@@ -40,7 +40,7 @@ enum {
FRSKY_RX_DATA,
};
-const PROGMEM uint8_t frsky_rx_common_reg[][2] = {
+const PROGMEM uint8_t FRSKY_RX_common_reg[][2] = {
{CC2500_02_IOCFG0, 0x01},
{CC2500_18_MCSM0, 0x18},
{CC2500_07_PKTCTRL1, 0x05},
@@ -68,7 +68,7 @@ const PROGMEM uint8_t frsky_rx_common_reg[][2] = {
{CC2500_09_ADDR, 0x03},
};
-const PROGMEM uint8_t frsky_rx_d16fcc_reg[][2] = {
+const PROGMEM uint8_t FRSKY_RX_d16fcc_reg[][2] = {
{CC2500_17_MCSM1, 0x0C},
{CC2500_0E_FREQ1, 0x76},
{CC2500_0F_FREQ0, 0x27},
@@ -81,7 +81,7 @@ const PROGMEM uint8_t frsky_rx_d16fcc_reg[][2] = {
{CC2500_15_DEVIATN, 0x51},
};
-const PROGMEM uint8_t frsky_rx_d16lbt_reg[][2] = {
+const PROGMEM uint8_t FRSKY_RX_d16lbt_reg[][2] = {
{CC2500_17_MCSM1, 0x0E},
{CC2500_0E_FREQ1, 0x80},
{CC2500_0F_FREQ0, 0x00},
@@ -94,7 +94,7 @@ const PROGMEM uint8_t frsky_rx_d16lbt_reg[][2] = {
{CC2500_15_DEVIATN, 0x53},
};
-const PROGMEM uint8_t frsky_rx_d8_reg[][2] = {
+const PROGMEM uint8_t FRSKY_RX_d8_reg[][2] = {
{CC2500_17_MCSM1, 0x0C},
{CC2500_0E_FREQ1, 0x76},
{CC2500_0F_FREQ0, 0x27},
@@ -107,32 +107,32 @@ const PROGMEM uint8_t frsky_rx_d8_reg[][2] = {
{CC2500_15_DEVIATN, 0x42},
};
-static uint8_t frsky_rx_chanskip;
-static int8_t frsky_rx_finetune;
-static uint8_t frsky_rx_format;
+static uint8_t FRSKY_RX_chanskip;
+static int8_t FRSKY_RX_finetune;
+static uint8_t FRSKY_RX_format;
-static void __attribute__((unused)) frsky_rx_strobe_rx()
+static void __attribute__((unused)) FRSKY_RX_strobe_rx()
{
CC2500_Strobe(CC2500_SIDLE);
CC2500_Strobe(CC2500_SFRX);
CC2500_Strobe(CC2500_SRX);
}
-static void __attribute__((unused)) frsky_rx_initialise_cc2500() {
- const uint8_t frsky_rx_length[] = { FRSKY_RX_D8_LENGTH, FRSKY_RX_D16FCC_LENGTH, FRSKY_RX_D16LBT_LENGTH, FRSKY_RX_D16v2_LENGTH, FRSKY_RX_D16v2_LENGTH };
- packet_length = frsky_rx_length[frsky_rx_format];
+static void __attribute__((unused)) FRSKY_RX_initialise_cc2500() {
+ const uint8_t FRSKY_RX_length[] = { FRSKY_RX_D8_LENGTH, FRSKY_RX_D16FCC_LENGTH, FRSKY_RX_D16LBT_LENGTH, FRSKY_RX_D16v2_LENGTH, FRSKY_RX_D16v2_LENGTH };
+ packet_length = FRSKY_RX_length[FRSKY_RX_format];
CC2500_Reset();
CC2500_Strobe(CC2500_SIDLE);
- for (uint8_t i = 0; i < sizeof(frsky_rx_common_reg) / 2; i++)
- CC2500_WriteReg(pgm_read_byte_near(&frsky_rx_common_reg[i][0]), pgm_read_byte_near(&frsky_rx_common_reg[i][1]));
+ for (uint8_t i = 0; i < sizeof(FRSKY_RX_common_reg) / 2; i++)
+ CC2500_WriteReg(pgm_read_byte_near(&FRSKY_RX_common_reg[i][0]), pgm_read_byte_near(&FRSKY_RX_common_reg[i][1]));
- switch (frsky_rx_format)
+ switch (FRSKY_RX_format)
{
case FRSKY_RX_D16v2FCC:
case FRSKY_RX_D16FCC:
- for (uint8_t i = 0; i < sizeof(frsky_rx_d16fcc_reg) / 2; i++)
- CC2500_WriteReg(pgm_read_byte_near(&frsky_rx_d16fcc_reg[i][0]), pgm_read_byte_near(&frsky_rx_d16fcc_reg[i][1]));
- if(frsky_rx_format==FRSKY_RX_D16v2FCC)
+ for (uint8_t i = 0; i < sizeof(FRSKY_RX_d16fcc_reg) / 2; i++)
+ CC2500_WriteReg(pgm_read_byte_near(&FRSKY_RX_d16fcc_reg[i][0]), pgm_read_byte_near(&FRSKY_RX_d16fcc_reg[i][1]));
+ if(FRSKY_RX_format==FRSKY_RX_D16v2FCC)
{
CC2500_WriteReg(CC2500_08_PKTCTRL0, 0x05); // Enable CRC
CC2500_WriteReg(CC2500_17_MCSM1, 0x0E); // Go/Stay in RX mode
@@ -141,36 +141,36 @@ static void __attribute__((unused)) frsky_rx_initialise_cc2500() {
break;
case FRSKY_RX_D16v2LBT:
case FRSKY_RX_D16LBT:
- for (uint8_t i = 0; i < sizeof(frsky_rx_d16lbt_reg) / 2; i++)
- CC2500_WriteReg(pgm_read_byte_near(&frsky_rx_d16lbt_reg[i][0]), pgm_read_byte_near(&frsky_rx_d16lbt_reg[i][1]));
- if(frsky_rx_format==FRSKY_RX_D16v2LBT)
+ for (uint8_t i = 0; i < sizeof(FRSKY_RX_d16lbt_reg) / 2; i++)
+ CC2500_WriteReg(pgm_read_byte_near(&FRSKY_RX_d16lbt_reg[i][0]), pgm_read_byte_near(&FRSKY_RX_d16lbt_reg[i][1]));
+ if(FRSKY_RX_format==FRSKY_RX_D16v2LBT)
CC2500_WriteReg(CC2500_08_PKTCTRL0, 0x05); // Enable CRC
break;
case FRSKY_RX_D8:
- for (uint8_t i = 0; i < sizeof(frsky_rx_d8_reg) / 2; i++)
- CC2500_WriteReg(pgm_read_byte_near(&frsky_rx_d8_reg[i][0]), pgm_read_byte_near(&frsky_rx_d8_reg[i][1]));
+ for (uint8_t i = 0; i < sizeof(FRSKY_RX_d8_reg) / 2; i++)
+ CC2500_WriteReg(pgm_read_byte_near(&FRSKY_RX_d8_reg[i][0]), pgm_read_byte_near(&FRSKY_RX_d8_reg[i][1]));
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
break;
}
CC2500_WriteReg(CC2500_0A_CHANNR, 0); // bind channel
rx_disable_lna = IS_POWER_FLAG_on;
CC2500_SetTxRxMode(rx_disable_lna ? TXRX_OFF : RX_EN); // lna disable / enable
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
delayMicroseconds(1000); // wait for RX to activate
}
-static void __attribute__((unused)) frsky_rx_set_channel(uint8_t channel)
+static void __attribute__((unused)) FRSKY_RX_set_channel(uint8_t channel)
{
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[channel]);
- if(frsky_rx_format == FRSKY_RX_D8)
+ if(FRSKY_RX_format == FRSKY_RX_D8)
CC2500_WriteReg(CC2500_23_FSCAL3, 0x89);
CC2500_WriteReg(CC2500_25_FSCAL1, calData[channel]);
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
}
-static void __attribute__((unused)) frsky_rx_calibrate()
+static void __attribute__((unused)) FRSKY_RX_calibrate()
{
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
for (unsigned c = 0; c < 47; c++)
{
CC2500_Strobe(CC2500_SIDLE);
@@ -193,7 +193,7 @@ static uint8_t __attribute__((unused)) frskyx_rx_check_crc_id(bool bind,bool ini
uint8_t offset=bind?3:1;
// Check D8 checksum
- if (frsky_rx_format == FRSKY_RX_D8)
+ if (FRSKY_RX_format == FRSKY_RX_D8)
{
if((packet[packet_length+1] & 0x80) != 0x80) // Check CRC_OK flag in status byte 2
return false; // Bad CRC
@@ -210,7 +210,7 @@ static uint8_t __attribute__((unused)) frskyx_rx_check_crc_id(bool bind,bool ini
}
// Check D16v2 checksum
- if (frsky_rx_format == FRSKY_RX_D16v2LBT || frsky_rx_format == FRSKY_RX_D16v2FCC)
+ if (FRSKY_RX_format == FRSKY_RX_D16v2LBT || FRSKY_RX_format == FRSKY_RX_D16v2FCC)
if((packet[packet_length+1] & 0x80) != 0x80) // Check CRC_OK flag in status byte 2
return false;
//debugln("HW Checksum ok");
@@ -222,12 +222,12 @@ static uint8_t __attribute__((unused)) frskyx_rx_check_crc_id(bool bind,bool ini
return false; // Bad CRC
//debugln("Checksum ok");
- if (bind && (frsky_rx_format == FRSKY_RX_D16v2LBT || frsky_rx_format == FRSKY_RX_D16v2FCC))
+ if (bind && (FRSKY_RX_format == FRSKY_RX_D16v2LBT || FRSKY_RX_format == FRSKY_RX_D16v2FCC))
for(uint8_t i=3; i= FRSKY_RX_DATA))
{
if (option == 0)
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
else
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
prev_option = option;
@@ -431,20 +431,20 @@ uint16_t FrSky_Rx_callback()
CC2500_ReadData(packet, len);
if(frskyx_rx_check_crc_id(true,true))
{
- frsky_rx_finetune = -127;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
+ FRSKY_RX_finetune = -127;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
phase = FRSKY_RX_TUNE_LOW;
debugln("FRSKY_RX_TUNE_LOW");
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
state = 0;
return 1000;
}
}
- frsky_rx_format = (frsky_rx_format + 1) % FRSKY_RX_FORMATS; // switch to next format (D8, D16FCC, D16LBT, D16v2FCC, D16v2LBT)
- frsky_rx_initialise_cc2500();
- frsky_rx_finetune += 10;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
- frsky_rx_strobe_rx();
+ FRSKY_RX_format = (FRSKY_RX_format + 1) % FRSKY_RX_FORMATS; // switch to next format (D8, D16FCC, D16LBT, D16v2FCC, D16v2LBT)
+ FRSKY_RX_initialise_cc2500();
+ FRSKY_RX_finetune += 10;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
+ FRSKY_RX_strobe_rx();
return 18000;
case FRSKY_RX_TUNE_LOW:
@@ -452,18 +452,18 @@ uint16_t FrSky_Rx_callback()
{
CC2500_ReadData(packet, len);
if(frskyx_rx_check_crc_id(true,false)) {
- tune_low = frsky_rx_finetune;
- frsky_rx_finetune = 127;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
+ tune_low = FRSKY_RX_finetune;
+ FRSKY_RX_finetune = 127;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
phase = FRSKY_RX_TUNE_HIGH;
debugln("FRSKY_RX_TUNE_HIGH");
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
return 1000;
}
}
- frsky_rx_finetune += 1;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
- frsky_rx_strobe_rx();
+ FRSKY_RX_finetune += 1;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
+ FRSKY_RX_strobe_rx();
return 18000;
case FRSKY_RX_TUNE_HIGH:
@@ -471,9 +471,9 @@ uint16_t FrSky_Rx_callback()
{
CC2500_ReadData(packet, len);
if(frskyx_rx_check_crc_id(true,false)) {
- tune_high = frsky_rx_finetune;
- frsky_rx_finetune = (tune_low + tune_high) / 2;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, (int8_t)frsky_rx_finetune);
+ tune_high = FRSKY_RX_finetune;
+ FRSKY_RX_finetune = (tune_low + tune_high) / 2;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, (int8_t)FRSKY_RX_finetune);
if(tune_low < tune_high)
{
phase = FRSKY_RX_BIND;
@@ -484,13 +484,13 @@ uint16_t FrSky_Rx_callback()
phase = FRSKY_RX_TUNE_START;
debugln("FRSKY_RX_TUNE_START");
}
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
return 1000;
}
}
- frsky_rx_finetune -= 1;
- CC2500_WriteReg(CC2500_0C_FSCTRL0, frsky_rx_finetune);
- frsky_rx_strobe_rx();
+ FRSKY_RX_finetune -= 1;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, FRSKY_RX_finetune);
+ FRSKY_RX_strobe_rx();
return 18000;
case FRSKY_RX_BIND:
@@ -498,7 +498,7 @@ uint16_t FrSky_Rx_callback()
{
CC2500_ReadData(packet, len);
if(frskyx_rx_check_crc_id(true,false)) {
- if(frsky_rx_format != FRSKY_RX_D16v2LBT && frsky_rx_format != FRSKY_RX_D16v2FCC)
+ if(FRSKY_RX_format != FRSKY_RX_D16v2LBT && FRSKY_RX_format != FRSKY_RX_D16v2FCC)
{// D8 & D16v1
if(packet[5] <= 0x2D)
{
@@ -517,27 +517,27 @@ uint16_t FrSky_Rx_callback()
uint16_t temp = FRSKY_RX_EEPROM_OFFSET;
if(sub_protocol==FRSKY_CLONE)
{
- if(frsky_rx_format==FRSKY_RX_D8)
+ if(FRSKY_RX_format==FRSKY_RX_D8)
temp=FRSKYD_CLONE_EEPROM_OFFSET;
- else if(frsky_rx_format == FRSKY_RX_D16FCC || frsky_rx_format == FRSKY_RX_D16LBT)
+ else if(FRSKY_RX_format == FRSKY_RX_D16FCC || FRSKY_RX_format == FRSKY_RX_D16LBT)
temp=FRSKYX_CLONE_EEPROM_OFFSET;
else
temp=FRSKYX2_CLONE_EEPROM_OFFSET;
}
- eeprom_write_byte((EE_ADDR)temp++, frsky_rx_format);
+ eeprom_write_byte((EE_ADDR)temp++, FRSKY_RX_format);
eeprom_write_byte((EE_ADDR)temp++, rx_tx_addr[3]);
eeprom_write_byte((EE_ADDR)temp++, rx_tx_addr[2]);
eeprom_write_byte((EE_ADDR)temp++, rx_tx_addr[1]);
if(sub_protocol==FRSKY_RX)
- eeprom_write_byte((EE_ADDR)temp++, frsky_rx_finetune);
- if(frsky_rx_format != FRSKY_RX_D16v2FCC && frsky_rx_format != FRSKY_RX_D16v2LBT)
+ eeprom_write_byte((EE_ADDR)temp++, FRSKY_RX_finetune);
+ if(FRSKY_RX_format != FRSKY_RX_D16v2FCC && FRSKY_RX_format != FRSKY_RX_D16v2LBT)
for (ch = 0; ch < 47; ch++)
eeprom_write_byte((EE_ADDR)temp++, hopping_frequency[ch]);
- frsky_rx_data();
+ FRSKY_RX_data();
debugln("FRSKY_RX_DATA");
}
}
- frsky_rx_strobe_rx();
+ FRSKY_RX_strobe_rx();
}
return 1000;
@@ -554,30 +554,30 @@ uint16_t FrSky_Rx_callback()
RX_RSSI += 128;
bool chanskip_valid=true;
// hop to next channel
- if (frsky_rx_format != FRSKY_RX_D8)
+ if (FRSKY_RX_format != FRSKY_RX_D8)
{//D16v1 & D16v2
if(rx_data_started)
{
- if(frsky_rx_chanskip != (((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2)))
+ if(FRSKY_RX_chanskip != (((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2)))
{
chanskip_valid=false; // chanskip value has changed which surely indicates a bad frame
packet_count++;
if(packet_count>5) // the TX must have changed chanskip...
- frsky_rx_chanskip = ((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2); // chanskip init
+ FRSKY_RX_chanskip = ((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2); // chanskip init
}
else
packet_count=0;
}
else
- frsky_rx_chanskip = ((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2); // chanskip init
+ FRSKY_RX_chanskip = ((packet[4] & 0xC0) >> 6) | ((packet[5] & 0x3F) << 2); // chanskip init
}
- hopping_frequency_no = (hopping_frequency_no + frsky_rx_chanskip) % 47;
- frsky_rx_set_channel(hopping_frequency_no);
+ hopping_frequency_no = (hopping_frequency_no + FRSKY_RX_chanskip) % 47;
+ FRSKY_RX_set_channel(hopping_frequency_no);
if(chanskip_valid)
{
if (telemetry_link == 0)
{ // send channels to TX
- frsky_rx_build_telemetry_packet();
+ FRSKY_RX_build_telemetry_packet();
telemetry_link = 1;
}
pps_counter++;
@@ -602,8 +602,8 @@ uint16_t FrSky_Rx_callback()
// skip channel if no packet received in time
if (read_retry++ >= 9) {
- hopping_frequency_no = (hopping_frequency_no + frsky_rx_chanskip) % 47;
- frsky_rx_set_channel(hopping_frequency_no);
+ hopping_frequency_no = (hopping_frequency_no + FRSKY_RX_chanskip) % 47;
+ FRSKY_RX_set_channel(hopping_frequency_no);
if(rx_data_started)
read_retry = 0;
else
diff --git a/Multiprotocol/Futaba_cc2500.ino b/Multiprotocol/Futaba_cc2500.ino
index 4e359e4..7432f22 100644
--- a/Multiprotocol/Futaba_cc2500.ino
+++ b/Multiprotocol/Futaba_cc2500.ino
@@ -207,7 +207,7 @@ static void __attribute__((unused)) SFHSS_send_packet()
CC2500_WriteData(packet, SFHSS_PACKET_LEN);
}
-uint16_t ReadSFHSS()
+uint16_t SFHSS_callback()
{
switch(phase)
{
@@ -285,7 +285,7 @@ static void __attribute__((unused)) SFHSS_get_tx_id()
rx_tx_addr[1] = fixed_id >> 0;
}
-uint16_t initSFHSS()
+void SFHSS_init()
{
BIND_DONE; // Not a TX bind protocol
SFHSS_get_tx_id();
@@ -294,7 +294,6 @@ uint16_t initSFHSS()
SFHSS_rf_init();
phase = SFHSS_START;
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/GD00X_nrf24l01.ino b/Multiprotocol/GD00X_nrf24l01.ino
index 9c8c49d..1fca51d 100644
--- a/Multiprotocol/GD00X_nrf24l01.ino
+++ b/Multiprotocol/GD00X_nrf24l01.ino
@@ -127,7 +127,7 @@ static void __attribute__((unused)) GD00X_send_packet()
XN297L_SetFreqOffset(); // Set frequency offset
}
-static void __attribute__((unused)) GD00X_init()
+static void __attribute__((unused)) GD00X_RF_init()
{
XN297L_Init();
if(sub_protocol==GD_V1)
@@ -214,18 +214,17 @@ uint16_t GD00X_callback()
return packet_period;
}
-uint16_t initGD00X()
+void GD00X_init()
{
BIND_IN_PROGRESS; // autobind protocol
GD00X_initialize_txid();
- GD00X_init();
+ GD00X_RF_init();
hopping_frequency_no = 0;
bind_counter=GD00X_BIND_COUNT;
packet_period=sub_protocol==GD_V1?GD00X_PACKET_PERIOD:GD00X_V2_BIND_PACKET_PERIOD;
packet_length=sub_protocol==GD_V1?GD00X_PAYLOAD_SIZE:GD00X_V2_PAYLOAD_SIZE;
packet_count=0;
len=0;
- return GD00X_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/GW008_nrf24l01.ino b/Multiprotocol/GW008_nrf24l01.ino
index c0a0339..2b6881b 100644
--- a/Multiprotocol/GW008_nrf24l01.ino
+++ b/Multiprotocol/GW008_nrf24l01.ino
@@ -75,7 +75,7 @@ static void __attribute__((unused)) GW008_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) GW008_init()
+static void __attribute__((unused)) GW008_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -148,14 +148,13 @@ uint16_t GW008_callback()
return GW008_PACKET_PERIOD;
}
-uint16_t initGW008()
+void GW008_init()
{
BIND_IN_PROGRESS; // autobind protocol
GW008_initialize_txid();
phase = GW008_BIND1;
- GW008_init();
+ GW008_RF_init();
hopping_frequency_no = 0;
- return GW008_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/H8_3D_nrf24l01.ino b/Multiprotocol/H8_3D_nrf24l01.ino
index 9eef089..0279006 100644
--- a/Multiprotocol/H8_3D_nrf24l01.ino
+++ b/Multiprotocol/H8_3D_nrf24l01.ino
@@ -155,7 +155,7 @@ static void __attribute__((unused)) H8_3D_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) H8_3D_init()
+static void __attribute__((unused)) H8_3D_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -238,12 +238,12 @@ static void __attribute__((unused)) H8_3D_initialize_txid()
}
}
-uint16_t initH8_3D(void)
+void H8_3D_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = H8_3D_BIND_COUNT;
H8_3D_initialize_txid();
- H8_3D_init();
+ H8_3D_RF_init();
switch(sub_protocol)
{
case H8_3D:
@@ -257,7 +257,6 @@ uint16_t initH8_3D(void)
packet_period=H20MINI_PACKET_PERIOD;
break;
}
- return H8_3D_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/HOTT_cc2500.ino b/Multiprotocol/HOTT_cc2500.ino
index 0f11c6f..159e7d7 100644
--- a/Multiprotocol/HOTT_cc2500.ino
+++ b/Multiprotocol/HOTT_cc2500.ino
@@ -137,7 +137,7 @@ const uint8_t PROGMEM HOTT_hop[][HOTT_NUM_RF_CHANNELS]=
};
const uint16_t PROGMEM HOTT_hop_val[] = { 0xC06B, 0xC34A, 0xDB24, 0x8E09, 0x272E, 0x217F, 0x155B, 0xEDE8, 0x1D31, 0x0986, 0x56F7, 0x6454, 0xC42D, 0x01D2, 0xC253, 0x1180 };
-static void __attribute__((unused)) HOTT_init()
+static void __attribute__((unused)) HOTT_TXID_init()
{
packet[0] = pgm_read_word_near( &HOTT_hop_val[num_ch] );
packet[1] = pgm_read_word_near( &HOTT_hop_val[num_ch] )>>8;
@@ -277,7 +277,7 @@ static void __attribute__((unused)) HOTT_prep_data_packet()
rf_ch_num=hopping_frequency[hopping_frequency_no];
}
-uint16_t ReadHOTT()
+uint16_t HOTT_callback()
{
switch(phase)
{
@@ -383,7 +383,7 @@ uint16_t ReadHOTT()
for(uint8_t i=0; i<5; i++)
eeprom_write_byte((EE_ADDR)(addr+i),packet_in[5+i]);
BIND_DONE;
- HOTT_init();
+ HOTT_TXID_init();
}
#ifdef HOTT_FW_TELEMETRY
else
@@ -509,10 +509,10 @@ uint16_t ReadHOTT()
return 0;
}
-uint16_t initHOTT()
+void HOTT_init()
{
num_ch=random(0xfefefefe)%16;
- HOTT_init();
+ HOTT_TXID_init();
HOTT_rf_init();
#ifdef HOTT_FW_TELEMETRY
HoTT_SerialRX_val=0;
@@ -527,7 +527,6 @@ uint16_t initHOTT()
state=HOTT_SENSOR_SEARCH_PERIOD;
#endif
phase = HOTT_START;
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/Height_a7105.ino b/Multiprotocol/Height_a7105.ino
index 6377459..2f4423a 100644
--- a/Multiprotocol/Height_a7105.ino
+++ b/Multiprotocol/Height_a7105.ino
@@ -41,7 +41,7 @@ static void __attribute__((unused)) HEIGHT_build_packet()
}
}
-uint16_t ReadHeight()
+uint16_t HEIGHT_callback()
{
#ifndef FORCE_HEIGHT_TUNING
A7105_AdjustLOBaseFreq(1);
@@ -78,7 +78,7 @@ uint16_t ReadHeight()
return 1500;
}
-uint16_t initHeight()
+void HEIGHT_init()
{
A7105_Init();
@@ -94,7 +94,6 @@ uint16_t initHeight()
phase=255;
bind_counter = HEIGHT_BIND_COUNT;
- return 2400;
}
#endif
// Normal packet is 8 bytes: 0xA5 0xAF 0x59 0x84 0x7A 0x00 0x80 0xFF
diff --git a/Multiprotocol/Hisky_nrf24l01.ino b/Multiprotocol/Hisky_nrf24l01.ino
index 6cb5015..4e2cf4c 100644
--- a/Multiprotocol/Hisky_nrf24l01.ino
+++ b/Multiprotocol/Hisky_nrf24l01.ino
@@ -27,7 +27,7 @@ uint8_t bind_buf_arry[4][10];
// HiSky protocol uses TX id as an address for nRF24L01, and uses frequency hopping sequence
// which does not depend on this id and is passed explicitly in binding sequence. So we are free
// to generate this sequence as we wish. It should be in the range [02..77]
-static void __attribute__((unused)) calc_fh_channels()
+static void __attribute__((unused)) HISKY_calc_fh_channels()
{
uint8_t idx = 0;
uint32_t rnd = MProtocol_id;
@@ -61,7 +61,7 @@ static void __attribute__((unused)) calc_fh_channels()
}
}
-static void __attribute__((unused)) build_binding_packet(void)
+static void __attribute__((unused)) HISKY_build_binding_packet(void)
{
uint8_t i;
uint16_t sum=0;
@@ -95,7 +95,7 @@ static void __attribute__((unused)) build_binding_packet(void)
}
}
-static void __attribute__((unused)) hisky_init()
+static void __attribute__((unused)) HISKY_RF_init()
{
NRF24L01_Initialize();
@@ -116,7 +116,7 @@ static void __attribute__((unused)) hisky_init()
// HiSky channel sequence: AILE ELEV THRO RUDD GEAR PITCH, channel data value is from 0 to 1000
// Channel 7 - Gyro mode, 0 - 6 axis, 3 - 3 axis
-static void __attribute__((unused)) build_ch_data()
+static void __attribute__((unused)) HISKY_build_ch_data()
{
uint16_t temp;
uint8_t i,j;
@@ -133,7 +133,7 @@ static void __attribute__((unused)) build_ch_data()
}
}
-uint16_t hisky_cb()
+uint16_t HISKY_callback()
{
phase++;
if(sub_protocol==HK310)
@@ -223,7 +223,7 @@ uint16_t hisky_cb()
#ifdef MULTI_SYNC
telemetry_set_input_sync(9000);
#endif
- build_ch_data();
+ HISKY_build_ch_data();
break;
case 8:
break;
@@ -236,7 +236,7 @@ uint16_t hisky_cb()
return 1000; // send 1 binding packet and 1 data packet per 9ms
}
-static void __attribute__((unused)) initialize_tx_id()
+static void __attribute__((unused)) HISKY_initialize_tx_id()
{
//Generate frequency hopping table
if(sub_protocol==HK310)
@@ -248,14 +248,14 @@ static void __attribute__((unused)) initialize_tx_id()
hopping_frequency[i]=hopping_frequency_no++; // Sequential order hop channels...
}
else
- calc_fh_channels();
+ HISKY_calc_fh_channels();
}
-uint16_t initHiSky()
+void HISKY_init()
{
- initialize_tx_id();
- build_binding_packet();
- hisky_init();
+ HISKY_initialize_tx_id();
+ HISKY_build_binding_packet();
+ HISKY_RF_init();
phase = 0;
hopping_frequency_no = 0;
binding_idx = 0;
@@ -264,7 +264,6 @@ uint16_t initHiSky()
bind_counter = HISKY_BIND_COUNT;
else
bind_counter = 0;
- return 1000;
}
#endif
diff --git a/Multiprotocol/Hitec_cc2500.ino b/Multiprotocol/Hitec_cc2500.ino
index fd98381..924d4d3 100644
--- a/Multiprotocol/Hitec_cc2500.ino
+++ b/Multiprotocol/Hitec_cc2500.ino
@@ -219,7 +219,7 @@ static void __attribute__((unused)) HITEC_send_packet()
packet[23] >>= 1; // packet sequence
}
-uint16_t ReadHITEC()
+uint16_t HITEC_callback()
{
switch(phase)
{
@@ -389,7 +389,7 @@ uint16_t ReadHITEC()
return 0;
}
-uint16_t initHITEC()
+void HITEC_init()
{
HITEC_RF_channels();
#ifdef HITEC_FORCE_ID // ID and channels taken from dump
@@ -399,7 +399,6 @@ uint16_t initHITEC()
memcpy((void *)hopping_frequency,(void *)"\x00\x3A\x4A\x32\x0C\x58\x2A\x10\x26\x20\x08\x60\x68\x70\x78\x80\x88\x56\x5E\x66\x6E",HITEC_NUM_FREQUENCE);
#endif
phase = HITEC_START;
- return 10000;
}
/* Full telemetry
diff --git a/Multiprotocol/Hontai_nrf24l01.ino b/Multiprotocol/Hontai_nrf24l01.ino
index 3d468d8..238d96c 100644
--- a/Multiprotocol/Hontai_nrf24l01.ino
+++ b/Multiprotocol/Hontai_nrf24l01.ino
@@ -148,7 +148,7 @@ static void __attribute__((unused)) HONTAI_send_packet(uint8_t bind)
NRF24L01_SetPower();
}
-static void __attribute__((unused)) HONTAI_init()
+static void __attribute__((unused)) HONTAI_RF_init()
{
NRF24L01_Initialize();
@@ -252,13 +252,12 @@ uint16_t HONTAI_callback()
return packet_period;
}
-uint16_t initHONTAI()
+void HONTAI_init()
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = HONTAI_BIND_COUNT;
HONTAI_initialize_txid();
- HONTAI_init();
+ HONTAI_RF_init();
packet_period = sub_protocol == FQ777_951 ? FQ777_951_PACKET_PERIOD : HONTAI_PACKET_PERIOD;
- return HONTAI_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/Hubsan_a7105.ino b/Multiprotocol/Hubsan_a7105.ino
index e0f8b29..d23d658 100644
--- a/Multiprotocol/Hubsan_a7105.ino
+++ b/Multiprotocol/Hubsan_a7105.ino
@@ -285,7 +285,7 @@ static uint8_t __attribute__((unused)) hubsan_check_integrity()
}
#endif
-uint16_t ReadHubsan()
+uint16_t HUBSAN_callback()
{
#ifdef HUBSAN_HUB_TELEMETRY
static uint8_t rfMode=0;
@@ -446,7 +446,7 @@ uint16_t ReadHubsan()
return 0;
}
-uint16_t initHubsan()
+void HUBSAN_init()
{
const uint8_t allowed_ch[] = {0x14, 0x1e, 0x28, 0x32, 0x3c, 0x46, 0x50, 0x5a, 0x64, 0x6e, 0x78, 0x82};
A7105_Init();
@@ -467,7 +467,6 @@ uint16_t initHubsan()
}
packet_count=0;
bind_phase=0;
- return 10000;
}
#endif
diff --git a/Multiprotocol/J6Pro_cyrf6936.ino b/Multiprotocol/J6Pro_cyrf6936.ino
index 591f3a1..adb8ba0 100644
--- a/Multiprotocol/J6Pro_cyrf6936.ino
+++ b/Multiprotocol/J6Pro_cyrf6936.ino
@@ -126,7 +126,7 @@ static void __attribute__((unused)) j6pro_set_radio_channels()
hopping_frequency[3] = hopping_frequency[0];
}
-uint16_t ReadJ6Pro()
+uint16_t J6PRO_callback()
{
uint16_t start;
@@ -226,7 +226,7 @@ uint16_t ReadJ6Pro()
return 0;
}
-uint16_t initJ6Pro()
+void J6PRO_init()
{
j6pro_cyrf_init();
@@ -234,7 +234,6 @@ uint16_t initJ6Pro()
phase = J6PRO_BIND;
else
phase = J6PRO_CHANSEL;
- return 2400;
}
#endif
diff --git a/Multiprotocol/JJRC345_nrf24l01.ino b/Multiprotocol/JJRC345_nrf24l01.ino
index 00a0d4e..907f615 100644
--- a/Multiprotocol/JJRC345_nrf24l01.ino
+++ b/Multiprotocol/JJRC345_nrf24l01.ino
@@ -130,7 +130,7 @@ static void __attribute__((unused)) JJRC345_send_packet()
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) JJRC345_init()
+static void __attribute__((unused)) JJRC345_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -183,13 +183,12 @@ static void __attribute__((unused)) JJRC345_initialize_txid()
#endif
}
-uint16_t initJJRC345(void)
+void JJRC345_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = JJRC345_BIND_COUNT;
JJRC345_initialize_txid();
- JJRC345_init();
- return JJRC345_INITIAL_WAIT;
+ JJRC345_RF_init();
}
#endif
diff --git a/Multiprotocol/KF606_nrf24l01.ino b/Multiprotocol/KF606_nrf24l01.ino
index 290f444..f216f91 100644
--- a/Multiprotocol/KF606_nrf24l01.ino
+++ b/Multiprotocol/KF606_nrf24l01.ino
@@ -76,7 +76,7 @@ static void __attribute__((unused)) KF606_initialize_txid()
#endif
}
-static void __attribute__((unused)) KF606_init()
+static void __attribute__((unused)) KF606_RF_init()
{
XN297L_Init();
XN297L_SetTXAddr((uint8_t*)"\xe7\xe7\xe7\xe7\xe7", 5);
@@ -99,14 +99,13 @@ uint16_t KF606_callback()
return KF606_PACKET_PERIOD;
}
-uint16_t initKF606()
+void KF606_init()
{
BIND_IN_PROGRESS; // autobind protocol
KF606_initialize_txid();
- KF606_init();
+ KF606_RF_init();
hopping_frequency_no = 0;
bind_counter=KF606_BIND_COUNT;
- return KF606_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/KN_nrf24l01.ino b/Multiprotocol/KN_nrf24l01.ino
index 54d26da..4abb116 100644
--- a/Multiprotocol/KN_nrf24l01.ino
+++ b/Multiprotocol/KN_nrf24l01.ino
@@ -239,7 +239,7 @@ static void __attribute__((unused)) kn_calculate_freqency_hopping_channels()
// V977 needs payload length in the packet. We should configure 24L01 to enable Packet Control Field(PCF)
// Some RX reg settings are actually for enable PCF
//-------------------------------------------------------------------------------------------------
-static void __attribute__((unused)) kn_init()
+static void __attribute__((unused)) KN_RF_init()
{
kn_calculate_tx_addr();
kn_calculate_freqency_hopping_channels();
@@ -272,7 +272,7 @@ static void __attribute__((unused)) kn_init()
//================================================================================================
// Private Functions
//================================================================================================
-uint16_t initKN()
+void KN_init()
{
if(sub_protocol==WLTOYS)
{
@@ -288,13 +288,11 @@ uint16_t initKN()
packet_count = KN_FX_PACKET_SEND_COUNT;
seed = KN_FX_PACKET_SEND_COUNT * KN_FX_SENDING_PACKET_PERIOD;
}
- kn_init();
+ KN_RF_init();
phase = IS_BIND_IN_PROGRESS ? KN_PHASE_PRE_BIND : KN_PHASE_PRE_SEND;
-
- return KN_INIT_WAIT_MS;
}
-uint16_t kn_callback()
+uint16_t KN_callback()
{
switch (phase)
{
diff --git a/Multiprotocol/Kyosho_a7105.ino b/Multiprotocol/Kyosho_a7105.ino
index 9defaca..18c24c7 100644
--- a/Multiprotocol/Kyosho_a7105.ino
+++ b/Multiprotocol/Kyosho_a7105.ino
@@ -23,7 +23,7 @@
//Kyosho constants & variables
#define KYOSHO_BIND_COUNT 2500
-static void __attribute__((unused)) kyosho_send_packet()
+static void __attribute__((unused)) KYOSHO_send_packet()
{
//ID
packet[1] = rx_tx_addr[0];
@@ -77,7 +77,7 @@ static void __attribute__((unused)) kyosho_send_packet()
A7105_WriteData(37, rf_ch_num);
}
-static void __attribute__((unused)) kyosho_hype_send_packet()
+static void __attribute__((unused)) KYOSHO_hype_send_packet()
{
if(IS_BIND_IN_PROGRESS)
{
@@ -124,7 +124,7 @@ static void __attribute__((unused)) kyosho_hype_send_packet()
}
}
-uint16_t ReadKyosho()
+uint16_t KYOSHO_callback()
{
#ifndef FORCE_KYOSHO_TUNING
A7105_AdjustLOBaseFreq(1);
@@ -151,13 +151,13 @@ uint16_t ReadKyosho()
#endif
}
if(sub_protocol==KYOSHO_FHSS)
- kyosho_send_packet();
+ KYOSHO_send_packet();
else//HYPE
- kyosho_hype_send_packet();
+ KYOSHO_hype_send_packet();
return packet_period;
}
-uint16_t initKyosho()
+void KYOSHO_init()
{
A7105_Init();
@@ -197,6 +197,5 @@ uint16_t initKyosho()
packet_sent=0;
packet_period=3852; //FHSS
- return 2000;
}
#endif
diff --git a/Multiprotocol/LOLI_nrf24l01.ino b/Multiprotocol/LOLI_nrf24l01.ino
index 01aed60..4ec6086 100644
--- a/Multiprotocol/LOLI_nrf24l01.ino
+++ b/Multiprotocol/LOLI_nrf24l01.ino
@@ -21,7 +21,7 @@ Multiprotocol is distributed in the hope that it will be useful,
#define LOLI_PACKET_SIZE 11
#define LOLI_NUM_CHANNELS 5
-static void __attribute__((unused)) LOLI_init()
+static void __attribute__((unused)) LOLI_RF_init()
{
NRF24L01_Initialize();
NRF24L01_FlushTx();
@@ -290,7 +290,7 @@ uint16_t LOLI_callback()
return 20000;
}
-uint16_t initLOLI()
+void LOLI_init()
{
rx_tx_addr[1] %= 0x30;
calc_fh_channels(LOLI_NUM_CHANNELS);
@@ -306,9 +306,7 @@ uint16_t initLOLI()
else
phase = LOLI_PREP_DATA;
- LOLI_init();
-
- return 500;
+ LOLI_RF_init();
}
#endif
diff --git a/Multiprotocol/MJXQ_nrf24l01.ino b/Multiprotocol/MJXQ_nrf24l01.ino
index 04c0a07..356f655 100644
--- a/Multiprotocol/MJXQ_nrf24l01.ino
+++ b/Multiprotocol/MJXQ_nrf24l01.ino
@@ -223,7 +223,7 @@ static void __attribute__((unused)) MJXQ_send_packet(uint8_t bind)
hopping_frequency_no %= 2 * MJXQ_RF_NUM_CHANNELS; // channels repeated
}
-static void __attribute__((unused)) MJXQ_init()
+static void __attribute__((unused)) MJXQ_RF_init()
{
uint8_t addr[MJXQ_ADDRESS_LENGTH];
memcpy(addr, "\x6d\x6a\x77\x77\x77", MJXQ_ADDRESS_LENGTH);
@@ -350,14 +350,13 @@ uint16_t MJXQ_callback()
return MJXQ_PACKET_PERIOD;
}
-uint16_t initMJXQ(void)
+void MJXQ_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
bind_counter = MJXQ_BIND_COUNT;
MJXQ_initialize_txid();
- MJXQ_init();
+ MJXQ_RF_init();
packet_count=0;
- return MJXQ_INITIAL_WAIT+MJXQ_PACKET_PERIOD;
}
#endif
diff --git a/Multiprotocol/MLINK_cyrf6936.ino b/Multiprotocol/MLINK_cyrf6936.ino
index ea2da8a..4e93a71 100644
--- a/Multiprotocol/MLINK_cyrf6936.ino
+++ b/Multiprotocol/MLINK_cyrf6936.ino
@@ -318,7 +318,7 @@ static void __attribute__((unused)) MLINK_send_data_packet()
}
#endif
-uint16_t ReadMLINK()
+uint16_t MLINK_callback()
{
uint8_t status;
uint16_t start;
@@ -511,7 +511,7 @@ static void __attribute__((unused)) MLINK_shuffle_freqs(uint32_t seed, uint8_t *
}
}
-uint16_t initMLINK()
+void MLINK_init()
{
MLINK_cyrf_config();
@@ -582,8 +582,6 @@ uint16_t initMLINK()
}
else
phase = MLINK_PREP_DATA;
-
- return 10000;
}
#endif
diff --git a/Multiprotocol/MT99xx_nrf24l01.ino b/Multiprotocol/MT99xx_nrf24l01.ino
index 00ca9db..3175956 100644
--- a/Multiprotocol/MT99xx_nrf24l01.ino
+++ b/Multiprotocol/MT99xx_nrf24l01.ino
@@ -222,7 +222,7 @@ static void __attribute__((unused)) MT99XX_send_packet()
NRF24L01_SetPower();
}
-static void __attribute__((unused)) MT99XX_init()
+static void __attribute__((unused)) MT99XX_RF_init()
{
NRF24L01_Initialize();
if(sub_protocol == YZ)
@@ -315,18 +315,17 @@ uint16_t MT99XX_callback()
return packet_period;
}
-uint16_t initMT99XX(void)
+void MT99XX_init(void)
{
if(sub_protocol != A180)
BIND_IN_PROGRESS; // autobind protocol
bind_counter = MT99XX_BIND_COUNT;
MT99XX_initialize_txid();
- MT99XX_init();
+ MT99XX_RF_init();
packet_period = MT99XX_PACKET_PERIOD_MT;
packet_count=0;
- return MT99XX_INITIAL_WAIT+MT99XX_PACKET_PERIOD_MT;
}
#endif
diff --git a/Multiprotocol/Multi_Names.ino b/Multiprotocol/Multi_Names.ino
deleted file mode 100644
index b414109..0000000
--- a/Multiprotocol/Multi_Names.ino
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- This project is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Multiprotocol is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Multiprotocol. If not, see .
- */
-
-#if defined(MULTI_NAMES)
-
-const char STR_FLYSKY[] ="FlySky";
-const char STR_HUBSAN[] ="Hubsan";
-const char STR_FRSKYD[] ="FrSky D";
-const char STR_HISKY[] ="Hisky";
-const char STR_V2X2[] ="V2x2";
-const char STR_DSM[] ="DSM";
-const char STR_DSM_RX[] ="DSM_RX";
-const char STR_DEVO[] ="Devo";
-const char STR_YD717[] ="YD717";
-const char STR_KN[] ="KN";
-const char STR_SYMAX[] ="SymaX";
-const char STR_SLT[] ="SLT";
-const char STR_CX10[] ="CX10";
-const char STR_CG023[] ="CG023";
-const char STR_BAYANG[] ="Bayang";
-const char STR_FRSKYL[] ="FrSky L";
-const char STR_FRSKYX[] ="FrSky X";
-const char STR_FRSKYX2[] ="FrSkyX2";
-const char STR_ESKY[] ="ESky";
-const char STR_MT99XX[] ="MT99XX";
-const char STR_MJXQ[] ="MJXq";
-const char STR_SHENQI[] ="Shenqi";
-const char STR_FY326[] ="FY326";
-const char STR_FUTABA[] ="Futaba";
-const char STR_J6PRO[] ="J6 Pro";
-const char STR_JJRC345[] ="JJRC345";
-const char STR_FQ777[] ="FQ777";
-const char STR_ASSAN[] ="Assan";
-const char STR_FRSKYV[] ="FrSky V";
-const char STR_HONTAI[] ="Hontai";
-const char STR_AFHDS2A[] ="FlSky2A";
-const char STR_Q2X2[] ="Q2x2";
-const char STR_WK2x01[] ="Walkera";
-const char STR_Q303[] ="Q303";
-const char STR_Q90C[] ="Q90C";
-const char STR_GW008[] ="GW008";
-const char STR_DM002[] ="DM002";
-const char STR_CABELL[] ="Cabell";
-const char STR_ESKY150[] ="Esky150";
-const char STR_ESKY150V2[] ="EskyV2";
-const char STR_H8_3D[] ="H8 3D";
-const char STR_CORONA[] ="Corona";
-const char STR_CFLIE[] ="CFlie";
-const char STR_HITEC[] ="Hitec";
-const char STR_WFLY[] ="WFLY";
-const char STR_WFLY2[] ="WFLY2";
-const char STR_BUGS[] ="Bugs";
-const char STR_BUGSMINI[] ="BugMini";
-const char STR_TRAXXAS[] ="Traxxas";
-const char STR_NCC1701[] ="NCC1701";
-const char STR_E01X[] ="E01X";
-const char STR_V911S[] ="V911S";
-const char STR_GD00X[] ="GD00x";
-const char STR_V761[] ="V761";
-const char STR_KF606[] ="KF606";
-const char STR_REDPINE[] ="Redpine";
-const char STR_POTENSIC[] ="Potensi";
-const char STR_ZSX[] ="ZSX";
-const char STR_HEIGHT[] ="Height";
-const char STR_SCANNER[] ="Scanner";
-const char STR_FRSKY_RX[] ="FrSkyRX";
-const char STR_AFHDS2A_RX[] ="FS2A_RX";
-const char STR_HOTT[] ="HoTT";
-const char STR_FX816[] ="FX816";
-const char STR_BAYANG_RX[] ="BayanRX";
-const char STR_PELIKAN[] ="Pelikan";
-const char STR_TIGER[] ="Tiger";
-const char STR_XK[] ="XK";
-const char STR_XN297DUMP[] ="XN297DP";
-const char STR_FRSKYR9[] ="FrSkyR9";
-const char STR_PROPEL[] ="Propel";
-const char STR_SKYARTEC[] ="Skyartc";
-const char STR_KYOSHO[] ="Kyosho";
-const char STR_RLINK[] ="RadLink";
-const char STR_REALACC[] ="Realacc";
-const char STR_OMP[] ="OMP";
-const char STR_MLINK[] ="M-Link";
-const char STR_TEST[] ="Test";
-const char STR_NANORF[] ="NanoRF";
-const char STR_E016HV2[] ="E016Hv2";
-const char STR_E010R5[] ="E010r5";
-const char STR_LOLI[] ="LOLI";
-const char STR_E129[] ="E129";
-
-const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
-const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
-const char STR_SUBTYPE_FRSKYD[] = "\x06""D8\0 ""Cloned";
-const char STR_SUBTYPE_FRSKYX[] = "\x07""D16\0 ""D16 8ch""LBT(EU)""LBT 8ch""Cloned\0""Clo 8ch";
-const char STR_SUBTYPE_HISKY[] = "\x05""Std\0 ""HK310";
-const char STR_SUBTYPE_V2X2[] = "\x06""Std\0 ""JXD506""MR101\0";
-const char STR_SUBTYPE_DSM[] = "\x04""2 1F""2 2F""X 1F""X 2F""Auto";
-const char STR_SUBTYPE_DEVO[] = "\x04""8ch\0""10ch""12ch""6ch\0""7ch\0";
-const char STR_SUBTYPE_YD717[] = "\x07""Std\0 ""SkyWlkr""Syma X4""XINXUN\0""NIHUI\0 ";
-const char STR_SUBTYPE_KN[] = "\x06""WLtoys""FeiLun";
-const char STR_SUBTYPE_SYMAX[] = "\x03""Std""X5C";
-const char STR_SUBTYPE_SLT[] = "\x06""V1_6ch""V2_8ch""Q100\0 ""Q200\0 ""MR100\0";
-const char STR_SUBTYPE_CX10[] = "\x07""Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041";
-const char STR_SUBTYPE_CG023[] = "\x05""Std\0 ""YD829";
-const char STR_SUBTYPE_BAYANG[] = "\x07""Std\0 ""H8S3D\0 ""X16 AH\0""IRDrone""DHD D4\0""QX100\0 ";
-const char STR_SUBTYPE_MT99[] = "\x05""MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805""A180\0";
-const char STR_SUBTYPE_MJXQ[] = "\x07""WLH08\0 ""X600\0 ""X800\0 ""H26D\0 ""E010\0 ""H26WH\0 ""Phoenix";
-const char STR_SUBTYPE_FY326[] = "\x05""Std\0 ""FY319";
-const char STR_SUBTYPE_HONTAI[] = "\x07""Std\0 ""JJRC X1""X5C1\0 ""FQ_951";
-const char STR_SUBTYPE_AFHDS2A[] = "\x08""PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS""PWM,IB16""PPM,IB16""PWM,SB16""PPM,SB16";
-const char STR_SUBTYPE_Q2X2[] = "\x04""Q222""Q242""Q282";
-const char STR_SUBTYPE_WK2x01[] = "\x06""WK2801""WK2401""W6_5_1""W6_6_1""W6_HeL""W6_HeI";
-const char STR_SUBTYPE_Q303[] = "\x06""Std\0 ""CX35\0 ""CX10D\0""CX10WD";
-const char STR_SUBTYPE_CABELL[] = "\x07""V3\0 ""V3 Telm""-\0 ""-\0 ""-\0 ""-\0 ""F-Safe\0""Unbind\0";
-const char STR_SUBTYPE_H83D[] = "\x07""Std\0 ""H20H\0 ""H20Mini""H30Mini";
-const char STR_SUBTYPE_CORONA[] = "\x05""V1\0 ""V2\0 ""FD V3";
-const char STR_SUBTYPE_HITEC[] = "\x07""Optima\0""Opt Hub""Minima\0";
-const char STR_SUBTYPE_BUGS_MINI[] = "\x06""Std\0 ""Bugs3H";
-const char STR_SUBTYPE_TRAXXAS[] = "\x04""6519";
-const char STR_SUBTYPE_E01X[] = "\x05""E012\0""E015\0""E016H";
-const char STR_SUBTYPE_GD00X[] = "\x05""GD_V1""GD_V2";
-const char STR_SUBTYPE_REDPINE[] = "\x04""Fast""Slow";
-const char STR_SUBTYPE_POTENSIC[] = "\x03""A20";
-const char STR_SUBTYPE_ZSX[] = "\x07""280JJRC";
-const char STR_SUBTYPE_HEIGHT[] = "\x03""5ch""8ch";
-const char STR_SUBTYPE_FX816[] = "\x03""P38";
-const char STR_SUBTYPE_XN297DUMP[] = "\x07""250Kbps""1Mbps\0 ""2Mbps\0 ""Auto\0 ""NRF\0 ";
-const char STR_SUBTYPE_ESKY150[] = "\x03""4ch""7ch";
-const char STR_SUBTYPE_ESKY150V2[] = "\x05""150V2";
-const char STR_SUBTYPE_V911S[] = "\x05""V911S""E119\0";
-const char STR_SUBTYPE_XK[] = "\x04""X450""X420";
-const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch""FCC\0 ""--\0 ""FCC 8ch""-- 8ch\0";
-const char STR_SUBTYPE_ESKY[] = "\x03""Std""ET4";
-const char STR_SUBTYPE_PROPEL[] = "\x04""74-Z";
-const char STR_SUBTYPE_FRSKY_RX[] = "\x07""RX\0 ""CloneTX""EraseTX";
-const char STR_SUBTYPE_FRSKYL[] = "\x08""LR12\0 ""LR12 6ch";
-const char STR_SUBTYPE_WFLY[] = "\x05""WFR0x";
-const char STR_SUBTYPE_WFLY2[] = "\x05""RF20x";
-const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync";
-const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite";
-const char STR_SUBTYPE_V761[] = "\x03""3ch""4ch";
-const char STR_SUBTYPE_RLINK[] = "\x07""Surface""Air\0 ""DumboRC";
-const char STR_SUBTYPE_REALACC[] = "\x03""R11";
-const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
-const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
-const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
-
-enum
-{
- OPTION_NONE,
- OPTION_OPTION,
- OPTION_RFTUNE,
- OPTION_VIDFREQ,
- OPTION_FIXEDID,
- OPTION_TELEM,
- OPTION_SRVFREQ,
- OPTION_MAXTHR,
- OPTION_RFCHAN,
- OPTION_RFPOWER,
-};
-
-#define NO_SUBTYPE nullptr
-
-const mm_protocol_definition multi_protocols[] = {
-// Protocol number, Protocol String, Number of sub_protocols, Sub_protocol strings, Option type
- #if defined(ASSAN_NRF24L01_INO)
- {PROTO_ASSAN, STR_ASSAN, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(BAYANG_NRF24L01_INO)
- {PROTO_BAYANG, STR_BAYANG, 6, STR_SUBTYPE_BAYANG, OPTION_TELEM },
- #endif
- #if defined(BAYANG_RX_NRF24L01_INO)
- {PROTO_BAYANG_RX, STR_BAYANG_RX, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(BUGS_A7105_INO)
- {PROTO_BUGS, STR_BUGS, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(BUGSMINI_NRF24L01_INO)
- {PROTO_BUGSMINI, STR_BUGSMINI, 2, STR_SUBTYPE_BUGS_MINI, OPTION_NONE },
- #endif
- #if defined(CABELL_NRF24L01_INO)
- {PROTO_CABELL, STR_CABELL, 8, STR_SUBTYPE_CABELL, OPTION_OPTION },
- #endif
- #if defined(CFLIE_NRF24L01_INO)
- {PROTO_CFLIE, STR_CFLIE, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(CG023_NRF24L01_INO)
- {PROTO_CG023, STR_CG023, 2, STR_SUBTYPE_CG023, OPTION_NONE },
- #endif
- #if defined(CORONA_CC2500_INO)
- {PROTO_CORONA, STR_CORONA, 3, STR_SUBTYPE_CORONA, OPTION_RFTUNE },
- #endif
- #if defined(CX10_NRF24L01_INO)
- {PROTO_CX10, STR_CX10, 7, STR_SUBTYPE_CX10, OPTION_NONE },
- #endif
- #if defined(DEVO_CYRF6936_INO)
- {PROTO_DEVO, STR_DEVO, 5, STR_SUBTYPE_DEVO, OPTION_FIXEDID },
- #endif
- #if defined(DM002_NRF24L01_INO)
- {PROTO_DM002, STR_DM002, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(DSM_CYRF6936_INO)
- {PROTO_DSM, STR_DSM, 5, STR_SUBTYPE_DSM, OPTION_MAXTHR },
- #endif
- #if defined(DSM_RX_CYRF6936_INO)
- {PROTO_DSM_RX, STR_DSM_RX, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(E010R5_CYRF6936_INO)
- {PROTO_E010R5, STR_E010R5, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(E016HV2_CC2500_INO)
- {PROTO_E016HV2, STR_E016HV2, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(E01X_NRF24L01_INO)
- {PROTO_E01X, STR_E01X, 3, STR_SUBTYPE_E01X, OPTION_OPTION },
- #endif
- #if defined(E129_CYRF6936_INO)
- {PROTO_E129, STR_E129, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(ESKY_NRF24L01_INO)
- {PROTO_ESKY, STR_ESKY, 2, STR_SUBTYPE_ESKY, OPTION_NONE },
- #endif
- #if defined(ESKY150_NRF24L01_INO)
- {PROTO_ESKY150, STR_ESKY150, 2, STR_SUBTYPE_ESKY150, OPTION_NONE },
- #endif
- #if defined(ESKY150V2_CC2500_INO)
- {PROTO_ESKY150V2, STR_ESKY150V2, 1, STR_SUBTYPE_ESKY150V2, OPTION_RFTUNE },
- #endif
- #if defined(FLYSKY_A7105_INO)
- {PROTO_FLYSKY, STR_FLYSKY, 5, STR_SUBTYPE_FLYSKY, OPTION_NONE },
- #endif
- #if defined(AFHDS2A_A7105_INO)
- {PROTO_AFHDS2A, STR_AFHDS2A, 8, STR_SUBTYPE_AFHDS2A, OPTION_SRVFREQ },
- #endif
- #if defined(AFHDS2A_RX_A7105_INO)
- {PROTO_AFHDS2A_RX, STR_AFHDS2A_RX,0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(FQ777_NRF24L01_INO)
- {PROTO_FQ777, STR_FQ777, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
-//OpenTX 2.3.x issue: DO NOT CHANGE ORDER below
- #if defined(FRSKY_RX_CC2500_INO)
- {PROTO_FRSKY_RX, STR_FRSKY_RX, 3, STR_SUBTYPE_FRSKY_RX, OPTION_RFTUNE },
- #endif
- #if defined(FRSKYD_CC2500_INO)
- {PROTO_FRSKYD, STR_FRSKYD, 2, STR_SUBTYPE_FRSKYD, OPTION_RFTUNE },
- #endif
- #if defined(FRSKYV_CC2500_INO)
- {PROTO_FRSKYV, STR_FRSKYV, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(FRSKYX_CC2500_INO)
- {PROTO_FRSKYX, STR_FRSKYX, 6, STR_SUBTYPE_FRSKYX, OPTION_RFTUNE },
- {PROTO_FRSKYX2, STR_FRSKYX2, 6, STR_SUBTYPE_FRSKYX, OPTION_RFTUNE },
- #endif
-//OpenTX 2.3.x issue: DO NOT CHANGE ORDER above
- #if defined(FRSKYL_CC2500_INO)
- {PROTO_FRSKYL, STR_FRSKYL, 2, STR_SUBTYPE_FRSKYL, OPTION_RFTUNE },
- #endif
- #if defined(FRSKYR9_SX1276_INO)
- {PROTO_FRSKY_R9, STR_FRSKYR9, 8, STR_SUBTYPE_FRSKYR9, OPTION_NONE },
- #endif
- #if defined(FUTABA_CC2500_INO)
- {PROTO_FUTABA, STR_FUTABA, 1, STR_SUBTYPE_FUTABA, OPTION_RFTUNE },
- #endif
- #if defined(FX816_NRF24L01_INO)
- {PROTO_FX816, STR_FX816, 1, STR_SUBTYPE_FX816, OPTION_NONE },
- #endif
- #if defined(FY326_NRF24L01_INO)
- {PROTO_FY326, STR_FY326, 2, STR_SUBTYPE_FY326, OPTION_NONE },
- #endif
- #if defined(GD00X_NRF24L01_INO)
- {PROTO_GD00X, STR_GD00X, 2, STR_SUBTYPE_GD00X, OPTION_RFTUNE },
- #endif
- #if defined(GW008_NRF24L01_INO)
- {PROTO_GW008, STR_GW008, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(H8_3D_NRF24L01_INO)
- {PROTO_H8_3D, STR_H8_3D, 4, STR_SUBTYPE_H83D, OPTION_NONE },
- #endif
- #if defined(HEIGHT_A7105_INO)
- {PROTO_HEIGHT, STR_HEIGHT, 2, STR_SUBTYPE_HEIGHT, OPTION_NONE },
- #endif
- #if defined(HISKY_NRF24L01_INO)
- {PROTO_HISKY, STR_HISKY, 2, STR_SUBTYPE_HISKY, OPTION_NONE },
- #endif
- #if defined(HITEC_CC2500_INO)
- {PROTO_HITEC, STR_HITEC, 3, STR_SUBTYPE_HITEC, OPTION_RFTUNE },
- #endif
- #if defined(HONTAI_NRF24L01_INO)
- {PROTO_HONTAI, STR_HONTAI, 4, STR_SUBTYPE_HONTAI, OPTION_NONE },
- #endif
- #if defined(HOTT_CC2500_INO)
- {PROTO_HOTT, STR_HOTT, 2, STR_SUBTYPE_HOTT, OPTION_RFTUNE },
- #endif
- #if defined(HUBSAN_A7105_INO)
- {PROTO_HUBSAN, STR_HUBSAN, 3, STR_SUBTYPE_HUBSAN, OPTION_VIDFREQ },
- #endif
- #if defined(J6PRO_CYRF6936_INO)
- {PROTO_J6PRO, STR_J6PRO, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(JJRC345_NRF24L01_INO)
- {PROTO_JJRC345, STR_JJRC345, 2, STR_SUBTYPE_JJRC345, OPTION_NONE },
- #endif
- #if defined(KF606_NRF24L01_INO)
- {PROTO_KF606, STR_KF606, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(KN_NRF24L01_INO)
- {PROTO_KN, STR_KN, 2, STR_SUBTYPE_KN, OPTION_NONE },
- #endif
- #if defined(KYOSHO_A7105_INO)
- {PROTO_KYOSHO, STR_KYOSHO, 2, STR_SUBTYPE_KYOSHO, OPTION_NONE },
- #endif
- #if defined(LOLI_NRF24L01_INO)
- {PROTO_LOLI, STR_LOLI, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(MJXQ_NRF24L01_INO)
- {PROTO_MJXQ, STR_MJXQ, 7, STR_SUBTYPE_MJXQ, OPTION_RFTUNE },
- #endif
- #if defined(MLINK_CYRF6936_INO)
- {PROTO_MLINK, STR_MLINK, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(MT99XX_NRF24L01_INO)
- {PROTO_MT99XX, STR_MT99XX, 6, STR_SUBTYPE_MT99, OPTION_NONE },
- #endif
- #if defined(NCC1701_NRF24L01_INO)
- {PROTO_NCC1701, STR_NCC1701, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(OMP_CC2500_INO)
- {PROTO_OMP, STR_OMP, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(PELIKAN_A7105_INO)
- {PROTO_PELIKAN, STR_PELIKAN , 2, STR_SUBTYPE_PELIKAN, OPTION_NONE },
- #endif
- #if defined(POTENSIC_NRF24L01_INO)
- {PROTO_POTENSIC, STR_POTENSIC, 1, STR_SUBTYPE_POTENSIC, OPTION_NONE },
- #endif
- #if defined(PROPEL_NRF24L01_INO)
- {PROTO_PROPEL, STR_PROPEL, 1, STR_SUBTYPE_PROPEL, OPTION_NONE },
- #endif
- #if defined(CX10_NRF24L01_INO)
- {PROTO_Q2X2, STR_Q2X2, 3, STR_SUBTYPE_Q2X2, OPTION_NONE },
- #endif
- #if defined(Q303_NRF24L01_INO)
- {PROTO_Q303, STR_Q303, 4, STR_SUBTYPE_Q303, OPTION_NONE },
- #endif
- #if defined(Q90C_NRF24L01_INO)
- {PROTO_Q90C, STR_Q90C, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(RLINK_CC2500_INO)
- {PROTO_RLINK, STR_RLINK, 3, STR_SUBTYPE_RLINK, OPTION_RFTUNE },
- #endif
- #if defined(REALACC_NRF24L01_INO)
- {PROTO_REALACC, STR_REALACC, 1, STR_SUBTYPE_REALACC, OPTION_NONE },
- #endif
- #if defined(REDPINE_CC2500_INO)
- {PROTO_REDPINE, STR_REDPINE, 2, STR_SUBTYPE_REDPINE, OPTION_RFTUNE },
- #endif
- #if defined(SCANNER_CC2500_INO)
- // {PROTO_SCANNER, STR_SCANNER, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(SHENQI_NRF24L01_INO)
- {PROTO_SHENQI, STR_SHENQI, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(SKYARTEC_CC2500_INO)
- {PROTO_SKYARTEC, STR_SKYARTEC, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(SLT_NRF24L01_INO)
- {PROTO_SLT, STR_SLT, 5, STR_SUBTYPE_SLT, OPTION_RFTUNE },
- #endif
- #if defined(SYMAX_NRF24L01_INO)
- {PROTO_SYMAX, STR_SYMAX, 2, STR_SUBTYPE_SYMAX, OPTION_NONE },
- #endif
- #if defined(TIGER_NRF24L01_INO)
- {PROTO_TIGER, STR_TIGER , 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- #if defined(TRAXXAS_CYRF6936_INO)
- {PROTO_TRAXXAS, STR_TRAXXAS, 1, STR_SUBTYPE_TRAXXAS, OPTION_NONE },
- #endif
- #if defined(V2X2_NRF24L01_INO)
- {PROTO_V2X2, STR_V2X2, 3, STR_SUBTYPE_V2X2, OPTION_NONE },
- #endif
- #if defined(V761_NRF24L01_INO)
- {PROTO_V761, STR_V761, 2, STR_SUBTYPE_V761, OPTION_NONE },
- #endif
- #if defined(V911S_NRF24L01_INO)
- {PROTO_V911S, STR_V911S, 2, STR_SUBTYPE_V911S, OPTION_RFTUNE },
- #endif
- #if defined(WK2x01_CYRF6936_INO)
- {PROTO_WK2x01, STR_WK2x01, 6, STR_SUBTYPE_WK2x01, OPTION_NONE },
- #endif
- #if defined(WFLY_CYRF6936_INO)
- {PROTO_WFLY, STR_WFLY, 1, STR_SUBTYPE_WFLY, OPTION_NONE },
- #endif
- #if defined(WFLY2_A7105_INO)
- {PROTO_WFLY2, STR_WFLY2, 1, STR_SUBTYPE_WFLY2, OPTION_OPTION },
- #endif
- #if defined(XK_NRF24L01_INO)
- {PROTO_XK, STR_XK , 2, STR_SUBTYPE_XK, OPTION_RFTUNE },
- #endif
- #if defined(XN297DUMP_NRF24L01_INO)
- {PROTO_XN297DUMP, STR_XN297DUMP, 5, STR_SUBTYPE_XN297DUMP, OPTION_RFCHAN },
- #endif
- #if defined(YD717_NRF24L01_INO)
- {PROTO_YD717, STR_YD717, 5, STR_SUBTYPE_YD717, OPTION_NONE },
- #endif
- #if defined(ZSX_NRF24L01_INO)
- {PROTO_ZSX, STR_ZSX, 1, STR_SUBTYPE_ZSX, OPTION_NONE },
- #endif
- #if defined(TEST_CC2500_INO)
- {PROTO_TEST, STR_TEST, 0, NO_SUBTYPE, OPTION_RFTUNE },
- #endif
- #if defined(NANORF_NRF24L01_INO)
- {PROTO_NANORF, STR_NANORF, 0, NO_SUBTYPE, OPTION_NONE },
- #endif
- {0x00, nullptr, 0, nullptr, 0 }
-};
-
-#endif
\ No newline at end of file
diff --git a/Multiprotocol/Multi_Protos.ino b/Multiprotocol/Multi_Protos.ino
new file mode 100644
index 0000000..30a6da6
--- /dev/null
+++ b/Multiprotocol/Multi_Protos.ino
@@ -0,0 +1,426 @@
+/*
+ This project is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Multiprotocol is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Multiprotocol. If not, see .
+ */
+
+const char STR_FLYSKY[] ="FlySky";
+const char STR_HUBSAN[] ="Hubsan";
+const char STR_FRSKYD[] ="FrSky D";
+const char STR_HISKY[] ="Hisky";
+const char STR_V2X2[] ="V2x2";
+const char STR_DSM[] ="DSM";
+const char STR_DSM_RX[] ="DSM_RX";
+const char STR_DEVO[] ="Devo";
+const char STR_YD717[] ="YD717";
+const char STR_KN[] ="KN";
+const char STR_SYMAX[] ="SymaX";
+const char STR_SLT[] ="SLT";
+const char STR_CX10[] ="CX10";
+const char STR_CG023[] ="CG023";
+const char STR_BAYANG[] ="Bayang";
+const char STR_FRSKYL[] ="FrSky L";
+const char STR_FRSKYX[] ="FrSky X";
+const char STR_FRSKYX2[] ="FrSkyX2";
+const char STR_ESKY[] ="ESky";
+const char STR_MT99XX[] ="MT99XX";
+const char STR_MJXQ[] ="MJXq";
+const char STR_SHENQI[] ="Shenqi";
+const char STR_FY326[] ="FY326";
+const char STR_FUTABA[] ="Futaba";
+const char STR_J6PRO[] ="J6 Pro";
+const char STR_JJRC345[] ="JJRC345";
+const char STR_FQ777[] ="FQ777";
+const char STR_ASSAN[] ="Assan";
+const char STR_FRSKYV[] ="FrSky V";
+const char STR_HONTAI[] ="Hontai";
+const char STR_AFHDS2A[] ="FlSky2A";
+const char STR_Q2X2[] ="Q2x2";
+const char STR_WK2x01[] ="Walkera";
+const char STR_Q303[] ="Q303";
+const char STR_Q90C[] ="Q90C";
+const char STR_GW008[] ="GW008";
+const char STR_DM002[] ="DM002";
+const char STR_CABELL[] ="Cabell";
+const char STR_ESKY150[] ="Esky150";
+const char STR_ESKY150V2[] ="EskyV2";
+const char STR_H8_3D[] ="H8 3D";
+const char STR_CORONA[] ="Corona";
+const char STR_CFLIE[] ="CFlie";
+const char STR_HITEC[] ="Hitec";
+const char STR_WFLY[] ="WFLY";
+const char STR_WFLY2[] ="WFLY2";
+const char STR_BUGS[] ="Bugs";
+const char STR_BUGSMINI[] ="BugMini";
+const char STR_TRAXXAS[] ="Traxxas";
+const char STR_NCC1701[] ="NCC1701";
+const char STR_E01X[] ="E01X";
+const char STR_V911S[] ="V911S";
+const char STR_GD00X[] ="GD00x";
+const char STR_V761[] ="V761";
+const char STR_KF606[] ="KF606";
+const char STR_REDPINE[] ="Redpine";
+const char STR_POTENSIC[] ="Potensi";
+const char STR_ZSX[] ="ZSX";
+const char STR_HEIGHT[] ="Height";
+const char STR_SCANNER[] ="Scanner";
+const char STR_FRSKY_RX[] ="FrSkyRX";
+const char STR_AFHDS2A_RX[] ="FS2A_RX";
+const char STR_HOTT[] ="HoTT";
+const char STR_FX816[] ="FX816";
+const char STR_BAYANG_RX[] ="BayanRX";
+const char STR_PELIKAN[] ="Pelikan";
+const char STR_TIGER[] ="Tiger";
+const char STR_XK[] ="XK";
+const char STR_XN297DUMP[] ="XN297DP";
+const char STR_FRSKYR9[] ="FrSkyR9";
+const char STR_PROPEL[] ="Propel";
+const char STR_SKYARTEC[] ="Skyartc";
+const char STR_KYOSHO[] ="Kyosho";
+const char STR_RLINK[] ="RadLink";
+const char STR_REALACC[] ="Realacc";
+const char STR_OMP[] ="OMP";
+const char STR_MLINK[] ="M-Link";
+const char STR_TEST[] ="Test";
+const char STR_NANORF[] ="NanoRF";
+const char STR_E016HV2[] ="E016Hv2";
+const char STR_E010R5[] ="E010r5";
+const char STR_LOLI[] ="LOLI";
+const char STR_E129[] ="E129";
+
+const char STR_SUBTYPE_FLYSKY[] = "\x04""Std\0""V9x9""V6x6""V912""CX20";
+const char STR_SUBTYPE_HUBSAN[] = "\x04""H107""H301""H501";
+const char STR_SUBTYPE_FRSKYD[] = "\x06""D8\0 ""Cloned";
+const char STR_SUBTYPE_FRSKYX[] = "\x07""D16\0 ""D16 8ch""LBT(EU)""LBT 8ch""Cloned\0""Clo 8ch";
+const char STR_SUBTYPE_HISKY[] = "\x05""Std\0 ""HK310";
+const char STR_SUBTYPE_V2X2[] = "\x06""Std\0 ""JXD506""MR101\0";
+const char STR_SUBTYPE_DSM[] = "\x04""2 1F""2 2F""X 1F""X 2F""Auto";
+const char STR_SUBTYPE_DEVO[] = "\x04""8ch\0""10ch""12ch""6ch\0""7ch\0";
+const char STR_SUBTYPE_YD717[] = "\x07""Std\0 ""SkyWlkr""Syma X4""XINXUN\0""NIHUI\0 ";
+const char STR_SUBTYPE_KN[] = "\x06""WLtoys""FeiLun";
+const char STR_SUBTYPE_SYMAX[] = "\x03""Std""X5C";
+const char STR_SUBTYPE_SLT[] = "\x06""V1_6ch""V2_8ch""Q100\0 ""Q200\0 ""MR100\0";
+const char STR_SUBTYPE_CX10[] = "\x07""Green\0 ""Blue\0 ""DM007\0 ""-\0 ""JC3015a""JC3015b""MK33041";
+const char STR_SUBTYPE_CG023[] = "\x05""Std\0 ""YD829";
+const char STR_SUBTYPE_BAYANG[] = "\x07""Std\0 ""H8S3D\0 ""X16 AH\0""IRDrone""DHD D4\0""QX100\0 ";
+const char STR_SUBTYPE_MT99[] = "\x05""MT99\0""H7\0 ""YZ\0 ""LS\0 ""FY805""A180\0";
+const char STR_SUBTYPE_MJXQ[] = "\x07""WLH08\0 ""X600\0 ""X800\0 ""H26D\0 ""E010\0 ""H26WH\0 ""Phoenix";
+const char STR_SUBTYPE_FY326[] = "\x05""Std\0 ""FY319";
+const char STR_SUBTYPE_HONTAI[] = "\x07""Std\0 ""JJRC X1""X5C1\0 ""FQ_951";
+const char STR_SUBTYPE_AFHDS2A[] = "\x08""PWM,IBUS""PPM,IBUS""PWM,SBUS""PPM,SBUS""PWM,IB16""PPM,IB16""PWM,SB16""PPM,SB16";
+const char STR_SUBTYPE_Q2X2[] = "\x04""Q222""Q242""Q282";
+const char STR_SUBTYPE_WK2x01[] = "\x06""WK2801""WK2401""W6_5_1""W6_6_1""W6_HeL""W6_HeI";
+const char STR_SUBTYPE_Q303[] = "\x06""Std\0 ""CX35\0 ""CX10D\0""CX10WD";
+const char STR_SUBTYPE_CABELL[] = "\x07""V3\0 ""V3 Telm""-\0 ""-\0 ""-\0 ""-\0 ""F-Safe\0""Unbind\0";
+const char STR_SUBTYPE_H83D[] = "\x07""Std\0 ""H20H\0 ""H20Mini""H30Mini";
+const char STR_SUBTYPE_CORONA[] = "\x05""V1\0 ""V2\0 ""FD V3";
+const char STR_SUBTYPE_HITEC[] = "\x07""Optima\0""Opt Hub""Minima\0";
+const char STR_SUBTYPE_BUGS_MINI[] = "\x06""Std\0 ""Bugs3H";
+const char STR_SUBTYPE_TRAXXAS[] = "\x04""6519";
+const char STR_SUBTYPE_E01X[] = "\x05""E012\0""E015\0""E016H";
+const char STR_SUBTYPE_GD00X[] = "\x05""GD_V1""GD_V2";
+const char STR_SUBTYPE_REDPINE[] = "\x04""Fast""Slow";
+const char STR_SUBTYPE_POTENSIC[] = "\x03""A20";
+const char STR_SUBTYPE_ZSX[] = "\x07""280JJRC";
+const char STR_SUBTYPE_HEIGHT[] = "\x03""5ch""8ch";
+const char STR_SUBTYPE_FX816[] = "\x03""P38";
+const char STR_SUBTYPE_XN297DUMP[] = "\x07""250Kbps""1Mbps\0 ""2Mbps\0 ""Auto\0 ""NRF\0 ";
+const char STR_SUBTYPE_ESKY150[] = "\x03""4ch""7ch";
+const char STR_SUBTYPE_ESKY150V2[] = "\x05""150V2";
+const char STR_SUBTYPE_V911S[] = "\x05""V911S""E119\0";
+const char STR_SUBTYPE_XK[] = "\x04""X450""X420";
+const char STR_SUBTYPE_FRSKYR9[] = "\x07""915MHz\0""868MHz\0""915 8ch""868 8ch""FCC\0 ""--\0 ""FCC 8ch""-- 8ch\0";
+const char STR_SUBTYPE_ESKY[] = "\x03""Std""ET4";
+const char STR_SUBTYPE_PROPEL[] = "\x04""74-Z";
+const char STR_SUBTYPE_FRSKY_RX[] = "\x07""RX\0 ""CloneTX""EraseTX";
+const char STR_SUBTYPE_FRSKYL[] = "\x08""LR12\0 ""LR12 6ch";
+const char STR_SUBTYPE_WFLY[] = "\x05""WFR0x";
+const char STR_SUBTYPE_WFLY2[] = "\x05""RF20x";
+const char STR_SUBTYPE_HOTT[] = "\x07""Sync\0 ""No_Sync";
+const char STR_SUBTYPE_PELIKAN[] = "\x04""Pro\0""Lite";
+const char STR_SUBTYPE_V761[] = "\x03""3ch""4ch";
+const char STR_SUBTYPE_RLINK[] = "\x07""Surface""Air\0 ""DumboRC";
+const char STR_SUBTYPE_REALACC[] = "\x03""R11";
+const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
+const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
+const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
+
+enum
+{
+ OPTION_NONE,
+ OPTION_OPTION,
+ OPTION_RFTUNE,
+ OPTION_VIDFREQ,
+ OPTION_FIXEDID,
+ OPTION_TELEM,
+ OPTION_SRVFREQ,
+ OPTION_MAXTHR,
+ OPTION_RFCHAN,
+ OPTION_RFPOWER,
+};
+
+#define NO_SUBTYPE nullptr
+
+const mm_protocol_definition multi_protocols[] = {
+// Protocol number, Protocol String, Sub_protocol strings, Number of sub_protocols, Option type, Failsafe, ChMap, RF switch, Init, Callback
+ #if defined(ASSAN_NRF24L01_INO)
+ {PROTO_ASSAN, STR_ASSAN, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, ASSAN_init, ASSAN_callback },
+ #endif
+ #if defined(BAYANG_NRF24L01_INO)
+ {PROTO_BAYANG, STR_BAYANG, STR_SUBTYPE_BAYANG, 6, OPTION_TELEM, 0, 0, SW_NRF, BAYANG_init, BAYANG_callback },
+ #endif
+ #if defined(BAYANG_RX_NRF24L01_INO)
+ {PROTO_BAYANG_RX, STR_BAYANG_RX, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, BAYANG_RX_init, BAYANG_RX_callback },
+ #endif
+ #if defined(BUGS_A7105_INO)
+ {PROTO_BUGS, STR_BUGS, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_A7105, BUGS_init, BUGS_callback },
+ #endif
+ #if defined(BUGSMINI_NRF24L01_INO)
+ {PROTO_BUGSMINI, STR_BUGSMINI, STR_SUBTYPE_BUGS_MINI, 2, OPTION_NONE, 0, 0, SW_NRF, BUGSMINI_init, BUGSMINI_callback },
+ #endif
+ #if defined(CABELL_NRF24L01_INO)
+ {PROTO_CABELL, STR_CABELL, STR_SUBTYPE_CABELL, 8, OPTION_OPTION, 0, 0, SW_NRF, CABELL_init, CABELL_callback },
+ #endif
+ #if defined(CFLIE_NRF24L01_INO)
+ {PROTO_CFLIE, STR_CFLIE, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, CFLIE_init, CFLIE_callback }, // review protocol
+ #endif
+ #if defined(CG023_NRF24L01_INO)
+ {PROTO_CG023, STR_CG023, STR_SUBTYPE_CG023, 2, OPTION_NONE, 0, 0, SW_NRF, CG023_init, CG023_callback },
+ #endif
+ #if defined(CORONA_CC2500_INO)
+ {PROTO_CORONA, STR_CORONA, STR_SUBTYPE_CORONA, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, CORONA_init, CORONA_callback },
+ #endif
+ #if defined(CX10_NRF24L01_INO)
+ {PROTO_CX10, STR_CX10, STR_SUBTYPE_CX10, 7, OPTION_NONE, 0, 0, SW_NRF, CX10_init, CX10_callback },
+ #endif
+ #if defined(DEVO_CYRF6936_INO)
+ {PROTO_DEVO, STR_DEVO, STR_SUBTYPE_DEVO, 5, OPTION_FIXEDID, 1, 1, SW_CYRF, DEVO_init, DEVO_callback },
+ #endif
+ #if defined(DM002_NRF24L01_INO)
+ {PROTO_DM002, STR_DM002, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, DM002_init, DM002_callback },
+ #endif
+ #if defined(DSM_CYRF6936_INO)
+ {PROTO_DSM, STR_DSM, STR_SUBTYPE_DSM, 5, OPTION_MAXTHR, 0, 1, SW_CYRF, DSM_init, DSM_callback },
+ #endif
+ #if defined(DSM_RX_CYRF6936_INO)
+ {PROTO_DSM_RX, STR_DSM_RX, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, DSM_RX_init, DSM_RX_callback },
+ #endif
+ #if defined(E010R5_CYRF6936_INO)
+ {PROTO_E010R5, STR_E010R5, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, E010R5_init, E010R5_callback },
+ #endif
+ #if defined(E016HV2_CC2500_INO)
+ {PROTO_E016HV2, STR_E016HV2, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_CC2500, E016HV2_init, E016HV2_callback },
+ #endif
+ #if defined(E01X_NRF24L01_INO)
+ {PROTO_E01X, STR_E01X, STR_SUBTYPE_E01X, 3, OPTION_OPTION, 0, 0, SW_NRF, E01X_init, E01X_callback },
+ #endif
+ #if defined(E129_CYRF6936_INO)
+ {PROTO_E129, STR_E129, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CYRF, E129_init, E129_callback },
+ #endif
+ #if defined(ESKY_NRF24L01_INO)
+ {PROTO_ESKY, STR_ESKY, STR_SUBTYPE_ESKY, 2, OPTION_NONE, 0, 1, SW_NRF, ESKY_init, ESKY_callback },
+ #endif
+ #if defined(ESKY150_NRF24L01_INO)
+ {PROTO_ESKY150, STR_ESKY150, STR_SUBTYPE_ESKY150, 2, OPTION_NONE, 0, 0, SW_NRF, ESKY150_init, ESKY150_callback },
+ #endif
+ #if defined(ESKY150V2_CC2500_INO)
+ {PROTO_ESKY150V2, STR_ESKY150V2, STR_SUBTYPE_ESKY150V2, 1, OPTION_RFTUNE, 0, 1, SW_CC2500, ESKY150V2_init, ESKY150V2_callback },
+ #endif
+ #if defined(FLYSKY_A7105_INO)
+ {PROTO_FLYSKY, STR_FLYSKY, STR_SUBTYPE_FLYSKY, 5, OPTION_NONE, 0, 1, SW_A7105, FLYSKY_init, FLYSKY_callback },
+ #endif
+ #if defined(AFHDS2A_A7105_INO)
+ {PROTO_AFHDS2A, STR_AFHDS2A, STR_SUBTYPE_AFHDS2A, 8, OPTION_SRVFREQ, 1, 1, SW_A7105, AFHDS2A_init, AFHDS2A_callback },
+ #endif
+ #if defined(AFHDS2A_RX_A7105_INO)
+ {PROTO_AFHDS2A_RX, STR_AFHDS2A_RX,NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_A7105, AFHDS2A_RX_init, AFHDS2A_RX_callback },
+ #endif
+ #if defined(FQ777_NRF24L01_INO)
+ {PROTO_FQ777, STR_FQ777, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, FQ777_init, FQ777_callback },
+ #endif
+//OpenTX 2.3.x issue: DO NOT CHANGE ORDER below
+ #if defined(FRSKY_RX_CC2500_INO)
+ {PROTO_FRSKY_RX, STR_FRSKY_RX, STR_SUBTYPE_FRSKY_RX, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKY_RX_init, FRSKY_RX_callback },
+ #endif
+ #if defined(FRSKYD_CC2500_INO)
+ {PROTO_FRSKYD, STR_FRSKYD, STR_SUBTYPE_FRSKYD, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYD_init, FRSKYD_callback },
+ #endif
+ #if defined(FRSKYV_CC2500_INO)
+ {PROTO_FRSKYV, STR_FRSKYV, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYV_init, FRSKYV_callback },
+ #endif
+ #if defined(FRSKYX_CC2500_INO)
+ {PROTO_FRSKYX, STR_FRSKYX, STR_SUBTYPE_FRSKYX, 6, OPTION_RFTUNE, 1, 0, SW_CC2500, FRSKYX_init, FRSKYX_callback },
+ {PROTO_FRSKYX2, STR_FRSKYX2, STR_SUBTYPE_FRSKYX, 6, OPTION_RFTUNE, 1, 0, SW_CC2500, FRSKYX_init, FRSKYX_callback },
+ #endif
+//OpenTX 2.3.x issue: DO NOT CHANGE ORDER above
+ #if defined(FRSKYL_CC2500_INO)
+ {PROTO_FRSKYL, STR_FRSKYL, STR_SUBTYPE_FRSKYL, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, FRSKYL_init, FRSKYL_callback },
+ #endif
+ #if defined(FRSKYR9_SX1276_INO)
+ {PROTO_FRSKY_R9, STR_FRSKYR9, STR_SUBTYPE_FRSKYR9, 8, OPTION_NONE, 1, 0, 0, FRSKYR9_init, FRSKYR9_callback },
+ #endif
+ #if defined(FUTABA_CC2500_INO)
+ {PROTO_FUTABA, STR_FUTABA, STR_SUBTYPE_FUTABA, 1, OPTION_RFTUNE, 1, 1, SW_CC2500, SFHSS_init, SFHSS_callback },
+ #endif
+ #if defined(FX816_NRF24L01_INO)
+ {PROTO_FX816, STR_FX816, STR_SUBTYPE_FX816, 1, OPTION_NONE, 0, 0, SW_NRF, FX816_init, FX816_callback },
+ #endif
+ #if defined(FY326_NRF24L01_INO)
+ {PROTO_FY326, STR_FY326, STR_SUBTYPE_FY326, 2, OPTION_NONE, 0, 0, SW_NRF, FY326_init, FY326_callback },
+ #endif
+ #if defined(GD00X_NRF24L01_INO)
+ {PROTO_GD00X, STR_GD00X, STR_SUBTYPE_GD00X, 2, OPTION_RFTUNE, 0, 0, SW_NRF, GD00X_init, GD00X_callback },
+ #endif
+ #if defined(GW008_NRF24L01_INO)
+ {PROTO_GW008, STR_GW008, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, GW008_init, GW008_callback },
+ #endif
+ #if defined(H8_3D_NRF24L01_INO)
+ {PROTO_H8_3D, STR_H8_3D, STR_SUBTYPE_H83D, 4, OPTION_NONE, 0, 0, SW_NRF, H8_3D_init, H8_3D_callback },
+ #endif
+ #if defined(HEIGHT_A7105_INO)
+ {PROTO_HEIGHT, STR_HEIGHT, STR_SUBTYPE_HEIGHT, 2, OPTION_NONE, 0, 0, SW_A7105, HEIGHT_init, HEIGHT_callback },
+ #endif
+ #if defined(HISKY_NRF24L01_INO)
+ {PROTO_HISKY, STR_HISKY, STR_SUBTYPE_HISKY, 2, OPTION_NONE, 1, 1, SW_NRF, HISKY_init, HISKY_callback },
+ #endif
+ #if defined(HITEC_CC2500_INO)
+ {PROTO_HITEC, STR_HITEC, STR_SUBTYPE_HITEC, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, HITEC_init, HITEC_callback },
+ #endif
+ #if defined(HONTAI_NRF24L01_INO)
+ {PROTO_HONTAI, STR_HONTAI, STR_SUBTYPE_HONTAI, 4, OPTION_NONE, 0, 0, SW_NRF, HONTAI_init, HONTAI_callback }, // review crc
+ #endif
+ #if defined(HOTT_CC2500_INO)
+ {PROTO_HOTT, STR_HOTT, STR_SUBTYPE_HOTT, 2, OPTION_RFTUNE, 1, 0, SW_CC2500, HOTT_init, HOTT_callback },
+ #endif
+ #if defined(HUBSAN_A7105_INO)
+ {PROTO_HUBSAN, STR_HUBSAN, STR_SUBTYPE_HUBSAN, 3, OPTION_VIDFREQ, 0, 0, SW_A7105, HUBSAN_init, HUBSAN_callback },
+ #endif
+ #if defined(J6PRO_CYRF6936_INO)
+ {PROTO_J6PRO, STR_J6PRO, NO_SUBTYPE, 0, OPTION_NONE, 0, 1, SW_CYRF, J6PRO_init, J6PRO_callback },
+ #endif
+ #if defined(JJRC345_NRF24L01_INO)
+ {PROTO_JJRC345, STR_JJRC345, STR_SUBTYPE_JJRC345, 2, OPTION_NONE, 0, 0, SW_NRF, JJRC345_init, JJRC345_callback },
+ #endif
+ #if defined(KF606_NRF24L01_INO)
+ {PROTO_KF606, STR_KF606, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, KF606_init, KF606_callback },
+ #endif
+ #if defined(KN_NRF24L01_INO)
+ {PROTO_KN, STR_KN, STR_SUBTYPE_KN, 2, OPTION_NONE, 0, 0, SW_NRF, KN_init, KN_callback },
+ #endif
+ #if defined(KYOSHO_A7105_INO)
+ {PROTO_KYOSHO, STR_KYOSHO, STR_SUBTYPE_KYOSHO, 2, OPTION_NONE, 0, 1, SW_A7105, KYOSHO_init, KYOSHO_callback },
+ #endif
+ #if defined(LOLI_NRF24L01_INO)
+ {PROTO_LOLI, STR_LOLI, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_NRF, LOLI_init, LOLI_callback },
+ #endif
+ #if defined(MJXQ_NRF24L01_INO)
+ {PROTO_MJXQ, STR_MJXQ, STR_SUBTYPE_MJXQ, 7, OPTION_RFTUNE, 0, 0, SW_NRF, MJXQ_init, MJXQ_callback },
+ #endif
+ #if defined(MLINK_CYRF6936_INO)
+ {PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
+ #endif
+ #if defined(MT99XX_NRF24L01_INO)
+ {PROTO_MT99XX, STR_MT99XX, STR_SUBTYPE_MT99, 6, OPTION_NONE, 0, 0, SW_NRF, MT99XX_init, MT99XX_callback },
+ #endif
+ #if defined(NCC1701_NRF24L01_INO)
+ {PROTO_NCC1701, STR_NCC1701, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, NCC_init, NCC_callback },
+ #endif
+ #if defined(OMP_CC2500_INO)
+ {PROTO_OMP, STR_OMP, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, OMP_init, OMP_callback },
+ #endif
+ #if defined(PELIKAN_A7105_INO)
+ {PROTO_PELIKAN, STR_PELIKAN, STR_SUBTYPE_PELIKAN, 2, OPTION_NONE, 0, 1, SW_A7105, PELIKAN_init, PELIKAN_callback },
+ #endif
+ #if defined(POTENSIC_NRF24L01_INO)
+ {PROTO_POTENSIC, STR_POTENSIC, STR_SUBTYPE_POTENSIC, 1, OPTION_NONE, 0, 0, SW_NRF, POTENSIC_init, POTENSIC_callback },
+ #endif
+ #if defined(PROPEL_NRF24L01_INO)
+ {PROTO_PROPEL, STR_PROPEL, STR_SUBTYPE_PROPEL, 1, OPTION_NONE, 0, 0, SW_NRF, PROPEL_init, PROPEL_callback },
+ #endif
+ #if defined(CX10_NRF24L01_INO)
+ {PROTO_Q2X2, STR_Q2X2, STR_SUBTYPE_Q2X2, 3, OPTION_NONE, 0, 0, SW_NRF, CX10_init, CX10_callback },
+ #endif
+ #if defined(Q303_NRF24L01_INO)
+ {PROTO_Q303, STR_Q303, STR_SUBTYPE_Q303, 4, OPTION_NONE, 0, 0, SW_NRF, Q303_init, Q303_callback },
+ #endif
+ #if defined(Q90C_NRF24L01_INO)
+ {PROTO_Q90C, STR_Q90C, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, Q90C_init, Q90C_callback },
+ #endif
+ #if defined(RLINK_CC2500_INO)
+ {PROTO_RLINK, STR_RLINK, STR_SUBTYPE_RLINK, 3, OPTION_RFTUNE, 0, 0, SW_CC2500, RLINK_init, RLINK_callback },
+ #endif
+ #if defined(REALACC_NRF24L01_INO)
+ {PROTO_REALACC, STR_REALACC, STR_SUBTYPE_REALACC, 1, OPTION_NONE, 0, 0, SW_NRF, REALACC_init, REALACC_callback },
+ #endif
+ #if defined(REDPINE_CC2500_INO)
+ {PROTO_REDPINE, STR_REDPINE, STR_SUBTYPE_REDPINE, 2, OPTION_RFTUNE, 0, 0, SW_CC2500, REDPINE_init, REDPINE_callback },
+ #endif
+ #if defined(SCANNER_CC2500_INO)
+ {PROTO_SCANNER, STR_SCANNER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_CC2500, SCANNER_init, SCANNER_callback },
+ #endif
+ #if defined(SHENQI_NRF24L01_INO)
+ {PROTO_SHENQI, STR_SHENQI, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, SHENQI_init, SHENQI_callback },
+ #endif
+ #if defined(SKYARTEC_CC2500_INO)
+ {PROTO_SKYARTEC, STR_SKYARTEC, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 1, SW_CC2500, SKYARTEC_init, SKYARTEC_callback },
+ #endif
+ #if defined(SLT_NRF24L01_INO)
+ {PROTO_SLT, STR_SLT, STR_SUBTYPE_SLT, 5, OPTION_RFTUNE, 0, 1, SW_NRF, SLT_init, SLT_callback },
+ #endif
+ #if defined(SYMAX_NRF24L01_INO)
+ {PROTO_SYMAX, STR_SYMAX, STR_SUBTYPE_SYMAX, 2, OPTION_NONE, 0, 0, SW_NRF, SYMAX_init, SYMAX_callback },
+ #endif
+ #if defined(TIGER_NRF24L01_INO)
+ {PROTO_TIGER, STR_TIGER, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, TIGER_init, TIGER_callback },
+ #endif
+ #if defined(TRAXXAS_CYRF6936_INO)
+ {PROTO_TRAXXAS, STR_TRAXXAS, STR_SUBTYPE_TRAXXAS, 1, OPTION_NONE, 0, 0, SW_CYRF, TRAXXAS_init, TRAXXAS_callback },
+ #endif
+ #if defined(V2X2_NRF24L01_INO)
+ {PROTO_V2X2, STR_V2X2, STR_SUBTYPE_V2X2, 3, OPTION_NONE, 0, 0, SW_NRF, V2X2_init, V2X2_callback },
+ #endif
+ #if defined(V761_NRF24L01_INO)
+ {PROTO_V761, STR_V761, STR_SUBTYPE_V761, 2, OPTION_NONE, 0, 0, SW_NRF, V761_init, V761_callback },
+ #endif
+ #if defined(V911S_NRF24L01_INO)
+ {PROTO_V911S, STR_V911S, STR_SUBTYPE_V911S, 2, OPTION_RFTUNE, 0, 0, SW_NRF, V911S_init, V911S_callback },
+ #endif
+ #if defined(WK2x01_CYRF6936_INO)
+ {PROTO_WK2x01, STR_WK2x01, STR_SUBTYPE_WK2x01, 6, OPTION_NONE, 1, 1, SW_CYRF, WK_init, WK_callback },
+ #endif
+ #if defined(WFLY_CYRF6936_INO)
+ {PROTO_WFLY, STR_WFLY, STR_SUBTYPE_WFLY, 1, OPTION_NONE, 0, 0, SW_CYRF, WFLY_init, WFLY_callback },
+ #endif
+ #if defined(WFLY2_A7105_INO)
+ {PROTO_WFLY2, STR_WFLY2, STR_SUBTYPE_WFLY2, 1, OPTION_OPTION, 1, 0, SW_A7105, WFLY2_init, WFLY2_callback },
+ #endif
+ #if defined(XK_NRF24L01_INO)
+ {PROTO_XK, STR_XK, STR_SUBTYPE_XK, 2, OPTION_RFTUNE, 0, 0, SW_NRF, XK_init, XK_callback },
+ #endif
+ #if defined(XN297DUMP_NRF24L01_INO)
+ {PROTO_XN297DUMP, STR_XN297DUMP, STR_SUBTYPE_XN297DUMP, 5, OPTION_RFCHAN, 0, 0, SW_NRF, XN297Dump_init, XN297Dump_callback },
+ #endif
+ #if defined(YD717_NRF24L01_INO)
+ {PROTO_YD717, STR_YD717, STR_SUBTYPE_YD717, 5, OPTION_NONE, 0, 0, SW_NRF, YD717_init, YD717_callback },
+ #endif
+ #if defined(ZSX_NRF24L01_INO)
+ {PROTO_ZSX, STR_ZSX, STR_SUBTYPE_ZSX, 1, OPTION_NONE, 0, 0, SW_NRF, ZSX_init, ZSX_callback },
+ #endif
+ #if defined(TEST_CC2500_INO)
+ {PROTO_TEST, STR_TEST, NO_SUBTYPE, 0, OPTION_RFTUNE, 0, 0, SW_NRF, TEST_init, TEST_callback },
+ #endif
+ #if defined(NANORF_NRF24L01_INO)
+ {PROTO_NANORF, STR_NANORF, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, NANORF_init, NANORF_callback },
+ #endif
+ {0x00, nullptr, nullptr, 0, 0, 0, 0, 0, nullptr, nullptr }
+};
+
diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h
index 59aacb7..97275f4 100644
--- a/Multiprotocol/Multiprotocol.h
+++ b/Multiprotocol/Multiprotocol.h
@@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 2
-#define VERSION_PATCH_LEVEL 32
+#define VERSION_PATCH_LEVEL 33
//******************
// Protocols
@@ -431,6 +431,7 @@ enum RLINK
#define AUTOBIND 1
#define NO_AUTOBIND 0
+//PPM protocols
struct PPM_Parameters
{
uint8_t protocol;
@@ -442,6 +443,33 @@ struct PPM_Parameters
uint32_t chan_order;
};
+//Callback
+typedef uint16_t (*uint16_function_t) (void); //pointer to a function with no parameters which return an uint16_t integer
+typedef void (*void_function_t ) (void); //pointer to a function with no parameters which returns nothing
+
+//Protocols definition
+struct mm_protocol_definition {
+ uint8_t protocol;
+ const char *ProtoString;
+ const char *SubProtoString;
+ uint8_t nbrSubProto : 4;
+ uint8_t optionType : 4;
+ uint8_t failSafe : 1;
+ uint8_t chMap : 1;
+ uint8_t rfSwitch : 2;
+ void_function_t Init;
+ uint16_function_t CallBack;
+};
+extern const mm_protocol_definition multi_protocols[];
+
+enum RF_SWITCH
+{
+ SW_A7105 = 0, //antenna RF1
+ SW_CC2500 = 1, //antenna RF2
+ SW_NRF = 2, //antenna RF3
+ SW_CYRF = 3, //antenna RF4
+};
+
// Telemetry
enum MultiPacketTypes
{
@@ -464,12 +492,6 @@ enum MultiPacketTypes
// Macros
#define NOP() __asm__ __volatile__("nop")
-//***************
-//*** Tests ***
-//***************
-#define IS_FAILSAFE_PROTOCOL ( (protocol==PROTO_HISKY && sub_protocol==HK310) || protocol==PROTO_AFHDS2A || protocol==PROTO_DEVO || protocol==PROTO_FUTABA || protocol==PROTO_WK2x01 || protocol== PROTO_HOTT || protocol==PROTO_FRSKYX || protocol==PROTO_FRSKYX2 || protocol==PROTO_FRSKY_R9 || protocol==PROTO_WFLY2 || protocol==PROTO_LOLI || protocol==PROTO_MLINK)
-#define IS_CHMAP_PROTOCOL ( (protocol==PROTO_HISKY && sub_protocol==HK310) || protocol==PROTO_AFHDS2A || protocol==PROTO_DEVO || protocol==PROTO_FUTABA || protocol==PROTO_WK2x01 || protocol== PROTO_DSM || protocol==PROTO_SLT || protocol==PROTO_FLYSKY || (protocol==PROTO_KYOSHO && sub_protocol==KYOSHO_HYPE) || protocol==PROTO_ESKY || protocol==PROTO_J6PRO || protocol==PROTO_PELIKAN || protocol==PROTO_SKYARTEC || protocol==PROTO_ESKY150V2 || protocol==PROTO_DSM_RX)
-
//***************
//*** Flags ***
//***************
diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino
index ba9bde2..183a87c 100644
--- a/Multiprotocol/Multiprotocol.ino
+++ b/Multiprotocol/Multiprotocol.ino
@@ -185,6 +185,8 @@ volatile uint8_t rx_ok_buff[RXBUFFER_SIZE];
volatile bool discard_frame = false;
volatile uint8_t rx_idx=0, rx_len=0;
+// Callback
+uint16_function_t remote_callback = 0;
// Telemetry
#define TELEMETRY_BUFFER_SIZE 32
@@ -247,18 +249,6 @@ uint8_t packet_in[TELEMETRY_BUFFER_SIZE];//telemetry receiving packets
uint16_t rx_rc_chan[16];
#endif
- //Multi names
- #ifdef MULTI_NAMES
- struct mm_protocol_definition {
- uint8_t protocol;
- const char *ProtoString;
- uint8_t nbrSubProto;
- const char *SubProtoString;
- uint8_t optionType;
- };
- extern const mm_protocol_definition multi_protocols[];
- uint8_t multi_protocols_index=0xFF;
- #endif
#ifdef HOTT_FW_TELEMETRY
uint8_t HoTT_SerialRX_val=0;
bool HoTT_SerialRX=false;
@@ -269,9 +259,7 @@ uint8_t packet_in[TELEMETRY_BUFFER_SIZE];//telemetry receiving packets
#endif
#endif // TELEMETRY
-// Callback
-typedef uint16_t (*void_function_t) (void);//pointer to a function with no parameters which return an uint16_t integer
-void_function_t remote_callback = 0;
+uint8_t multi_protocols_index=0xFF;
// Init
void setup()
@@ -1090,11 +1078,9 @@ inline void tx_resume()
// Protocol start
static void protocol_init()
{
- static uint16_t next_callback;
if(IS_WAIT_BIND_off)
{
remote_callback = 0; // No protocol
- next_callback=0; // Default is immediate call back
LED_off; // Led off during protocol init
modules_reset(); // Reset all modules
crc16_polynomial = 0x1021; // Default CRC crc16_polynomial
@@ -1106,9 +1092,7 @@ static void protocol_init()
#ifdef MULTI_SYNC
inputRefreshRate = 0; // Don't do it unless the protocol asks for it
#endif
- #ifdef MULTI_NAMES
- multi_protocols_index = 0xFF;
- #endif
+ multi_protocols_index = 0xFF;
tx_pause();
init_frskyd_link_telemetry();
pps_timer=millis();
@@ -1148,622 +1132,55 @@ static void protocol_init()
blink=millis();
- PE1_on; //NRF24L01 antenna RF3 by default
- PE2_off; //NRF24L01 antenna RF3 by default
-
- switch(protocol) // Init the requested protocol
- {
- #ifdef A7105_INSTALLED
- #if defined(FLYSKY_A7105_INO)
- case PROTO_FLYSKY:
- PE1_off; //antenna RF1
- next_callback = initFlySky();
- remote_callback = ReadFlySky;
- break;
- #endif
- #if defined(AFHDS2A_A7105_INO)
- case PROTO_AFHDS2A:
- PE1_off; //antenna RF1
- next_callback = initAFHDS2A();
- remote_callback = ReadAFHDS2A;
- break;
- #endif
- #if defined(HUBSAN_A7105_INO)
- case PROTO_HUBSAN:
- PE1_off; //antenna RF1
- if(IS_BIND_BUTTON_FLAG_on) random_id(EEPROM_ID_OFFSET,true); // Generate new ID if bind button is pressed.
- next_callback = initHubsan();
- remote_callback = ReadHubsan;
- break;
- #endif
- #if defined(BUGS_A7105_INO)
- case PROTO_BUGS:
- PE1_off; //antenna RF1
- next_callback = initBUGS();
- remote_callback = ReadBUGS;
- break;
- #endif
- #if defined(HEIGHT_A7105_INO)
- case PROTO_HEIGHT:
- PE1_off; //antenna RF1
- next_callback = initHeight();
- remote_callback = ReadHeight;
- break;
- #endif
- #if defined(AFHDS2A_RX_A7105_INO)
- case PROTO_AFHDS2A_RX:
- PE1_off; //antenna RF1
- next_callback = initAFHDS2A_Rx();
- remote_callback = AFHDS2A_Rx_callback;
- break;
- #endif
- #if defined(PELIKAN_A7105_INO)
- case PROTO_PELIKAN:
- PE1_off; //antenna RF1
- next_callback = initPelikan();
- remote_callback = ReadPelikan;
- break;
- #endif
- #if defined(KYOSHO_A7105_INO)
- case PROTO_KYOSHO:
- PE1_off; //antenna RF1
- next_callback = initKyosho();
- remote_callback = ReadKyosho;
- break;
- #endif
- #if defined(WFLY2_A7105_INO)
- case PROTO_WFLY2:
- PE1_off; //antenna RF1
- next_callback = initWFLY2();
- remote_callback = ReadWFLY2;
- break;
- #endif
- #endif
- #ifdef CC2500_INSTALLED
- #if defined(FRSKYD_CC2500_INO)
- case PROTO_FRSKYD:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initFrSky_2way();
- remote_callback = ReadFrSky_2way;
- break;
- #endif
- #if defined(FRSKYL_CC2500_INO)
- case PROTO_FRSKYL:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initFrSkyL();
- remote_callback = ReadFrSkyL;
- break;
- #endif
- #if defined(FRSKYV_CC2500_INO)
- case PROTO_FRSKYV:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initFRSKYV();
- remote_callback = ReadFRSKYV;
- break;
- #endif
- #if defined(FRSKYX_CC2500_INO)
- case PROTO_FRSKYX:
- case PROTO_FRSKYX2:
- #ifdef EU_MODULE
- if(sub_protocol<2)
- break;
- #endif
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initFrSkyX();
- remote_callback = ReadFrSkyX;
- break;
- #endif
- #if defined(FUTABA_CC2500_INO)
- case PROTO_FUTABA:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initSFHSS();
- remote_callback = ReadSFHSS;
- break;
- #endif
- #if defined(CORONA_CC2500_INO)
- case PROTO_CORONA:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initCORONA();
- remote_callback = ReadCORONA;
- break;
- #endif
- #if defined(SKYARTEC_CC2500_INO)
- case PROTO_SKYARTEC:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initSKYARTEC();
- remote_callback = ReadSKYARTEC;
- break;
- #endif
- #if defined(REDPINE_CC2500_INO)
- case PROTO_REDPINE:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initREDPINE();
- remote_callback = ReadREDPINE;
- break;
- #endif
- #if defined(HITEC_CC2500_INO)
- case PROTO_HITEC:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initHITEC();
- remote_callback = ReadHITEC;
- break;
- #endif
- #if defined(HOTT_CC2500_INO)
- case PROTO_HOTT:
- PE1_off; //antenna RF2
- PE2_on;
- next_callback = initHOTT();
- remote_callback = ReadHOTT;
- break;
- #endif
- #if defined(SCANNER_CC2500_INO)
- case PROTO_SCANNER:
- PE1_off;
- PE2_on; //antenna RF2
- next_callback = initScanner();
- remote_callback = Scanner_callback;
- break;
- #endif
- #if defined(FRSKY_RX_CC2500_INO)
- case PROTO_FRSKY_RX:
- PE1_off;
- PE2_on; //antenna RF2
- next_callback = initFrSky_Rx();
- remote_callback = FrSky_Rx_callback;
- break;
- #endif
- #if defined(ESKY150V2_CC2500_INO)
- case PROTO_ESKY150V2:
- PE1_off;
- PE2_on; //antenna RF2
- next_callback = initESKY150V2();
- remote_callback = ESKY150V2_callback;
- break;
- #endif
- #if defined(RLINK_CC2500_INO)
- case PROTO_RLINK:
- PE1_off;
- PE2_on; //antenna RF2
- next_callback = initRLINK();
- remote_callback = RLINK_callback;
- break;
- #endif
- #if defined(E016HV2_CC2500_INO)
- case PROTO_E016HV2:
- PE1_off;
- PE2_on; //antenna RF2
- next_callback = initE016HV2();
- remote_callback = E016HV2_callback;
- break;
- #endif
- #endif
- #ifdef CYRF6936_INSTALLED
- #if defined(DSM_CYRF6936_INO)
- case PROTO_DSM:
- PE2_on; //antenna RF4
- next_callback = initDsm();
- remote_callback = ReadDsm;
- break;
- #endif
- #if defined(DSM_RX_CYRF6936_INO)
- case PROTO_DSM_RX:
- PE2_on; //antenna RF4
- next_callback = initDSM_Rx();
- remote_callback = DSM_Rx_callback;
- break;
- #endif
- #if defined(WFLY_CYRF6936_INO)
- case PROTO_WFLY:
- PE2_on; //antenna RF4
- next_callback = initWFLY();
- remote_callback = ReadWFLY;
- break;
- #endif
- #if defined(MLINK_CYRF6936_INO)
- case PROTO_MLINK:
- PE2_on; //antenna RF4
- next_callback = initMLINK();
- remote_callback = ReadMLINK;
- break;
- #endif
- #if defined(E010R5_CYRF6936_INO)
- case PROTO_E010R5:
- PE2_on; //antenna RF4
- next_callback = initE010R5();
- remote_callback = ReadE010R5;
- break;
- #endif
- #if defined(E129_CYRF6936_INO)
- case PROTO_E129:
- PE2_on; //antenna RF4
- next_callback = initE129();
- remote_callback = ReadE129;
- break;
- #endif
- #if defined(DEVO_CYRF6936_INO)
- case PROTO_DEVO:
- #ifdef ENABLE_PPM
- if(mode_select) //PPM mode
- {
- if(IS_BIND_BUTTON_FLAG_on)
- {
- eeprom_write_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num),0x00); // reset to autobind mode for the current model
- option=0;
- }
- else
- {
- option=eeprom_read_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num)); // load previous mode: autobind or fixed id
- if(option!=1) option=0; // if not fixed id mode then it should be autobind
- }
- }
- #endif //ENABLE_PPM
- PE2_on; //antenna RF4
- next_callback = DevoInit();
- remote_callback = devo_callback;
- break;
- #endif
- #if defined(WK2x01_CYRF6936_INO)
- case PROTO_WK2x01:
- #ifdef ENABLE_PPM
- if(mode_select) //PPM mode
- {
- if(IS_BIND_BUTTON_FLAG_on)
- {
- eeprom_write_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num),0x00); // reset to autobind mode for the current model
- option=0;
- }
- else
- {
- option=eeprom_read_byte((EE_ADDR)(MODELMODE_EEPROM_OFFSET+RX_num)); // load previous mode: autobind or fixed id
- if(option!=1) option=0; // if not fixed id mode then it should be autobind
- }
- }
- #endif //ENABLE_PPM
- PE2_on; //antenna RF4
- next_callback = WK_setup();
- remote_callback = WK_cb;
- break;
- #endif
- #if defined(J6PRO_CYRF6936_INO)
- case PROTO_J6PRO:
- PE2_on; //antenna RF4
- next_callback = initJ6Pro();
- remote_callback = ReadJ6Pro;
- break;
- #endif
- #if defined(TRAXXAS_CYRF6936_INO)
- case PROTO_TRAXXAS:
- PE2_on; //antenna RF4
- next_callback = initTRAXXAS();
- remote_callback = ReadTRAXXAS;
- break;
- #endif
- #endif
- #ifdef NRF24L01_INSTALLED
- #if defined(HISKY_NRF24L01_INO)
- case PROTO_HISKY:
- next_callback=initHiSky();
- remote_callback = hisky_cb;
- break;
- #endif
- #if defined(V2X2_NRF24L01_INO)
- case PROTO_V2X2:
- next_callback = initV2x2();
- remote_callback = ReadV2x2;
- break;
- #endif
- #if defined(YD717_NRF24L01_INO)
- case PROTO_YD717:
- next_callback=initYD717();
- remote_callback = yd717_callback;
- break;
- #endif
- #if defined(KN_NRF24L01_INO)
- case PROTO_KN:
- next_callback = initKN();
- remote_callback = kn_callback;
- break;
- #endif
- #if defined(SYMAX_NRF24L01_INO)
- case PROTO_SYMAX:
- next_callback = initSymax();
- remote_callback = symax_callback;
- break;
- #endif
- #if defined(SLT_NRF24L01_INO)
- case PROTO_SLT:
- next_callback=initSLT();
- remote_callback = SLT_callback;
- break;
- #endif
- #if defined(CX10_NRF24L01_INO)
- case PROTO_Q2X2:
- sub_protocol|=0x08; // Increase the number of sub_protocols for CX-10
- case PROTO_CX10:
- next_callback=initCX10();
- remote_callback = CX10_callback;
- break;
- #endif
- #if defined(CG023_NRF24L01_INO)
- case PROTO_CG023:
- next_callback=initCG023();
- remote_callback = CG023_callback;
- break;
- #endif
- #if defined(BAYANG_NRF24L01_INO)
- case PROTO_BAYANG:
- next_callback=initBAYANG();
- remote_callback = BAYANG_callback;
- break;
- #endif
- #if defined(ESKY_NRF24L01_INO)
- case PROTO_ESKY:
- next_callback=initESKY();
- remote_callback = ESKY_callback;
- break;
- #endif
- #if defined(MT99XX_NRF24L01_INO)
- case PROTO_MT99XX:
- next_callback=initMT99XX();
- remote_callback = MT99XX_callback;
- break;
- #endif
- #if defined(LOLI_NRF24L01_INO)
- case PROTO_LOLI:
- next_callback=initLOLI();
- remote_callback = LOLI_callback;
- break;
- #endif
- #if defined(MJXQ_NRF24L01_INO)
- case PROTO_MJXQ:
- next_callback=initMJXQ();
- remote_callback = MJXQ_callback;
- break;
- #endif
- #if defined(SHENQI_NRF24L01_INO)
- case PROTO_SHENQI:
- next_callback=initSHENQI();
- remote_callback = SHENQI_callback;
- break;
- #endif
- #if defined(FY326_NRF24L01_INO)
- case PROTO_FY326:
- next_callback=initFY326();
- remote_callback = FY326_callback;
- break;
- #endif
- #if defined(FQ777_NRF24L01_INO)
- case PROTO_FQ777:
- next_callback=initFQ777();
- remote_callback = FQ777_callback;
- break;
- #endif
- #if defined(ASSAN_NRF24L01_INO)
- case PROTO_ASSAN:
- next_callback=initASSAN();
- remote_callback = ASSAN_callback;
- break;
- #endif
- #if defined(HONTAI_NRF24L01_INO)
- case PROTO_HONTAI:
- next_callback=initHONTAI();
- remote_callback = HONTAI_callback;
- break;
- #endif
- #if defined(Q303_NRF24L01_INO)
- case PROTO_Q303:
- next_callback=initQ303();
- remote_callback = Q303_callback;
- break;
- #endif
- #if defined(GW008_NRF24L01_INO)
- case PROTO_GW008:
- next_callback=initGW008();
- remote_callback = GW008_callback;
- break;
- #endif
- #if defined(DM002_NRF24L01_INO)
- case PROTO_DM002:
- next_callback=initDM002();
- remote_callback = DM002_callback;
- break;
- #endif
- #if defined(CABELL_NRF24L01_INO)
- case PROTO_CABELL:
- next_callback=initCABELL();
- remote_callback = CABELL_callback;
- break;
- #endif
- #if defined(ESKY150_NRF24L01_INO)
- case PROTO_ESKY150:
- next_callback=initESKY150();
- remote_callback = ESKY150_callback;
- break;
- #endif
- #if defined(H8_3D_NRF24L01_INO)
- case PROTO_H8_3D:
- next_callback=initH8_3D();
- remote_callback = H8_3D_callback;
- break;
- #endif
- #if defined(CFLIE_NRF24L01_INO)
- case PROTO_CFLIE:
- next_callback=initCFlie();
- remote_callback = cflie_callback;
- break;
- #endif
- #if defined(BUGSMINI_NRF24L01_INO)
- case PROTO_BUGSMINI:
- next_callback=initBUGSMINI();
- remote_callback = BUGSMINI_callback;
- break;
- #endif
- #if defined(NCC1701_NRF24L01_INO)
- case PROTO_NCC1701:
- next_callback=initNCC();
- remote_callback = NCC_callback;
- break;
- #endif
- #if defined(E01X_NRF24L01_INO)
- case PROTO_E01X:
- next_callback=initE01X();
- remote_callback = E01X_callback;
- break;
- #endif
- #if defined(V911S_NRF24L01_INO)
- case PROTO_V911S:
- next_callback=initV911S();
- remote_callback = V911S_callback;
- break;
- #endif
- #if defined(GD00X_NRF24L01_INO)
- case PROTO_GD00X:
- next_callback=initGD00X();
- remote_callback = GD00X_callback;
- break;
- #endif
- #if defined(V761_NRF24L01_INO)
- case PROTO_V761:
- next_callback=initV761();
- remote_callback = V761_callback;
- break;
- #endif
- #if defined(KF606_NRF24L01_INO)
- case PROTO_KF606:
- next_callback=initKF606();
- remote_callback = KF606_callback;
- break;
- #endif
- #if defined(POTENSIC_NRF24L01_INO)
- case PROTO_POTENSIC:
- next_callback=initPOTENSIC();
- remote_callback = POTENSIC_callback;
- break;
- #endif
- #if defined(ZSX_NRF24L01_INO)
- case PROTO_ZSX:
- next_callback=initZSX();
- remote_callback = ZSX_callback;
- break;
- #endif
- #if defined(FX816_NRF24L01_INO)
- case PROTO_FX816:
- next_callback=initFX816();
- remote_callback = FX816_callback;
- break;
- #endif
- #if defined(BAYANG_RX_NRF24L01_INO)
- case PROTO_BAYANG_RX:
- next_callback=initBayang_Rx();
- remote_callback = Bayang_Rx_callback;
- break;
- #endif
- #if defined(TIGER_NRF24L01_INO)
- case PROTO_TIGER:
- next_callback=initTIGER();
- remote_callback = TIGER_callback;
- break;
- #endif
- #if defined(XK_NRF24L01_INO)
- case PROTO_XK:
- next_callback=initXK();
- remote_callback = XK_callback;
- break;
- #endif
- #if defined(PROPEL_NRF24L01_INO)
- case PROTO_PROPEL:
- next_callback=initPROPEL();
- remote_callback = PROPEL_callback;
- break;
- #endif
- #if defined(XN297DUMP_NRF24L01_INO)
- case PROTO_XN297DUMP:
- next_callback=initXN297Dump();
- remote_callback = XN297Dump_callback;
- break;
- #endif
- #if defined(JJRC345_NRF24L01_INO)
- case PROTO_JJRC345:
- next_callback=initJJRC345();
- remote_callback = JJRC345_callback;
- break;
- #endif
- #if defined(Q90C_NRF24L01_INO)
- case PROTO_Q90C:
- next_callback=initQ90C();
- remote_callback = Q90C_callback;
- break;
- #endif
- #if defined(REALACC_NRF24L01_INO)
- case PROTO_REALACC:
- next_callback=initREALACC();
- remote_callback = REALACC_callback;
- break;
- #endif
- #if defined(OMP_CC2500_INO)
- case PROTO_OMP:
- next_callback=initOMP();
- remote_callback = OMP_callback;
- break;
- #endif
- #if defined(TEST_CC2500_INO)
- case PROTO_TEST:
- next_callback=initTEST();
- remote_callback = TEST_callback;
- break;
- #endif
- #if defined(NANORF_NRF24L01_INO)
- case PROTO_NANORF:
- next_callback=initNANORF();
- remote_callback = NANORF_callback;
- break;
- #endif
- #endif
- #ifdef SX1276_INSTALLED
- #if defined(FRSKYR9_SX1276_INO)
- case PROTO_FRSKY_R9:
- next_callback = initFrSkyR9();
- remote_callback = FrSkyR9_callback;
- break;
- #endif
- #endif
- }
debugln("Protocol selected: %d, sub proto %d, rxnum %d, option %d", protocol, sub_protocol, RX_num, option);
- #ifdef MULTI_NAMES
- uint8_t index=0;
- while(multi_protocols[index].protocol != 0)
- {
- if(multi_protocols[index].protocol==protocol)
- {
- multi_protocols_index=index;
- SEND_MULTI_STATUS_on;
- #ifdef DEBUG_SERIAL
- debug("Proto=%s",multi_protocols[multi_protocols_index].ProtoString);
- uint8_t nbr=multi_protocols[multi_protocols_index].nbrSubProto;
- debug(", nbr_sub=%d, Sub=",nbr);
- if(nbr && (sub_protocol&0x07)32000)
- { // next_callback should not be more than 32767 so we will wait here...
- uint16_t temp=(next_callback>>10)-2;
- delayMilliseconds(temp);
- next_callback-=temp<<10; // between 2-3ms left at this stage
- }
+ //Wait 5ms after protocol init
cli(); // disable global int
- OCR1A = TCNT1 + next_callback*2; // set compare A for callback
+ OCR1A = TCNT1 + 5000*2; // set compare A for callback
#ifndef STM32_BOARD
TIFR1 = OCF1A_bm ; // clear compare A flag
#else
@@ -1973,8 +1385,9 @@ void update_serial_data()
cur_protocol[i] = rx_ok_buff[i];
//disable channel mapping
- if(!IS_CHMAP_PROTOCOL) //not a protocol supporting ch map to be disabled
- DISABLE_CH_MAP_off;
+ if(multi_protocols[multi_protocols_index].chMap == 0)
+ DISABLE_CH_MAP_off; //not a protocol supporting ch map to be disabled
+
if(prev_ch_mapping!=IS_DISABLE_CH_MAP_on)
{
prev_ch_mapping=IS_DISABLE_CH_MAP_on;
diff --git a/Multiprotocol/NCC1701_nrf24l01.ino b/Multiprotocol/NCC1701_nrf24l01.ino
index e151f9e..ff0ab27 100644
--- a/Multiprotocol/NCC1701_nrf24l01.ino
+++ b/Multiprotocol/NCC1701_nrf24l01.ino
@@ -31,7 +31,7 @@ enum {
NCC_RX3,
};
-static void __attribute__((unused)) NCC_init()
+static void __attribute__((unused)) NCC_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -247,7 +247,7 @@ const uint8_t PROGMEM NCC_TX_DATA[][6]= {
{ 0xC2, 0x93, 0x55, 0x44, 0x4C, 0x0B },
};
-uint16_t initNCC(void)
+void NCC_init(void)
{
BIND_IN_PROGRESS; // autobind protocol
@@ -269,9 +269,8 @@ uint16_t initNCC(void)
hopping_frequency[4]=0x08; // bind channel 1
hopping_frequency[5]=0x2A; // bind channel 2
hopping_frequency_no=4; // start with bind
- NCC_init();
+ NCC_RF_init();
phase=NCC_BIND_TX1;
- return 10000;
}
#endif
diff --git a/Multiprotocol/NanoRF_nrf24l01.ino b/Multiprotocol/NanoRF_nrf24l01.ino
index 4005a9f..06f8d48 100644
--- a/Multiprotocol/NanoRF_nrf24l01.ino
+++ b/Multiprotocol/NanoRF_nrf24l01.ino
@@ -42,7 +42,7 @@ static void __attribute__((unused)) NANORF_send_packet()
}
-static void __attribute__((unused)) NANORF_init()
+static void __attribute__((unused)) NANORF_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -63,11 +63,10 @@ uint16_t NANORF_callback()
return NANORF_PACKET_PERIOD;
}
-uint16_t initNANORF()
+void NANORF_init()
{
BIND_DONE;
- NANORF_init();
- return NANORF_INITIAL_WAIT;
+ NANORF_RF_init();
}
#endif
diff --git a/Multiprotocol/OMP_cc2500.ino b/Multiprotocol/OMP_cc2500.ino
index 322d11c..e2dbbfa 100644
--- a/Multiprotocol/OMP_cc2500.ino
+++ b/Multiprotocol/OMP_cc2500.ino
@@ -106,7 +106,7 @@ static void __attribute__((unused)) OMP_send_packet()
XN297L_WriteEnhancedPayload(packet, OMP_PAYLOAD_SIZE, packet_sent!=0);
}
-static void __attribute__((unused)) OMP_init()
+static void __attribute__((unused)) OMP_RF_init()
{
//Config CC2500
#ifdef OMP_HUB_TELEMETRY
@@ -278,10 +278,10 @@ uint16_t OMP_callback()
return OMP_PACKET_PERIOD;
}
-uint16_t initOMP()
+void OMP_init()
{
OMP_initialize_txid();
- OMP_init();
+ OMP_RF_init();
hopping_frequency_no = 0;
packet_sent = 0;
#ifdef OMP_HUB_TELEMETRY
@@ -295,7 +295,6 @@ uint16_t initOMP()
}
else
phase = OMP_PREPDATA;
- return OMP_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/POTENSIC_nrf24l01.ino b/Multiprotocol/POTENSIC_nrf24l01.ino
index 5e4b6ac..3d70a8a 100644
--- a/Multiprotocol/POTENSIC_nrf24l01.ino
+++ b/Multiprotocol/POTENSIC_nrf24l01.ino
@@ -71,7 +71,7 @@ static void __attribute__((unused)) POTENSIC_send_packet()
NRF24L01_SetPower();
}
-static void __attribute__((unused)) POTENSIC_init()
+static void __attribute__((unused)) POTENSIC_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -116,13 +116,12 @@ uint16_t POTENSIC_callback()
return POTENSIC_PACKET_PERIOD;
}
-uint16_t initPOTENSIC(void)
+void POTENSIC_init(void)
{
bind_counter = POTENSIC_BIND_COUNT;
POTENSIC_initialize_txid();
- POTENSIC_init();
+ POTENSIC_RF_init();
hopping_frequency_no = 0;
- return POTENSIC_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/Pelikan_a7105.ino b/Multiprotocol/Pelikan_a7105.ino
index 805625b..6354161 100644
--- a/Multiprotocol/Pelikan_a7105.ino
+++ b/Multiprotocol/Pelikan_a7105.ino
@@ -110,7 +110,7 @@ static void __attribute__((unused)) pelikan_build_packet()
A7105_SetPower();
}
-uint16_t ReadPelikan()
+uint16_t PELIKAN_callback()
{
if(phase==0)
{
@@ -242,7 +242,7 @@ const uint8_t PROGMEM pelikan_lite_hopp[][PELIKAN_NUM_RF_CHAN] = {
};
#endif
-uint16_t initPelikan()
+void PELIKAN_init()
{
A7105_Init();
if(IS_BIND_IN_PROGRESS || sub_protocol==PELIKAN_LITE)
@@ -288,6 +288,5 @@ uint16_t initPelikan()
hopping_frequency_no=PELIKAN_NUM_RF_CHAN;
packet_count=5;
phase=0;
- return 2400;
}
#endif
diff --git a/Multiprotocol/Propel_nrf24l01.ino b/Multiprotocol/Propel_nrf24l01.ino
index 42a698f..2febec8 100644
--- a/Multiprotocol/Propel_nrf24l01.ino
+++ b/Multiprotocol/Propel_nrf24l01.ino
@@ -155,7 +155,7 @@ static void __attribute__((unused)) PROPEL_data_packet()
NRF24L01_WritePayload(packet, PROPEL_PACKET_SIZE);
}
-static void __attribute__((unused)) PROPEL_init()
+static void __attribute__((unused)) PROPEL_RF_init()
{
NRF24L01_Initialize();
NRF24L01_WriteReg(NRF24L01_00_CONFIG, 0x7f);
@@ -281,14 +281,13 @@ uint16_t PROPEL_callback()
return PROPEL_PACKET_PERIOD;
}
-uint16_t initPROPEL()
+void PROPEL_init()
{
BIND_IN_PROGRESS; // autobind protocol
PROPEL_initialize_txid();
- PROPEL_init();
+ PROPEL_RF_init();
hopping_frequency_no = 0;
phase=PROPEL_BIND1;
- return PROPEL_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/Q303_nrf24l01.ino b/Multiprotocol/Q303_nrf24l01.ino
index 396e910..a1cdec5 100644
--- a/Multiprotocol/Q303_nrf24l01.ino
+++ b/Multiprotocol/Q303_nrf24l01.ino
@@ -281,7 +281,7 @@ static void __attribute__((unused)) Q303_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) Q303_init()
+static void __attribute__((unused)) Q303_RF_init()
{
const uint8_t bind_address[] = {0xcc,0xcc,0xcc,0xcc,0xcc};
@@ -377,10 +377,10 @@ uint16_t Q303_callback()
return packet_period;
}
-uint16_t initQ303()
+void Q303_init()
{
Q303_initialize_txid();
- Q303_init();
+ Q303_RF_init();
bind_counter = Q303_BIND_COUNT;
switch(sub_protocol)
{
@@ -407,7 +407,6 @@ uint16_t initQ303()
}
hopping_frequency_no = 0;
BIND_IN_PROGRESS; // autobind protocol
- return Q303_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/Q90C_nrf24l01.ino b/Multiprotocol/Q90C_nrf24l01.ino
index d28ea68..d118c7a 100644
--- a/Multiprotocol/Q90C_nrf24l01.ino
+++ b/Multiprotocol/Q90C_nrf24l01.ino
@@ -131,7 +131,7 @@ static void __attribute__((unused)) Q90C_initialize_txid()
crc8=rx_tx_addr[0]^rx_tx_addr[1]^rx_tx_addr[2]^rx_tx_addr[3];
}
-static void __attribute__((unused)) Q90C_init()
+static void __attribute__((unused)) Q90C_RF_init()
{
XN297L_Init();
if(IS_BIND_IN_PROGRESS)
@@ -157,10 +157,10 @@ uint16_t Q90C_callback()
return Q90C_PACKET_PERIOD;
}
-uint16_t initQ90C()
+void Q90C_init()
{
Q90C_initialize_txid();
- Q90C_init();
+ Q90C_RF_init();
hopping_frequency_no = 0;
packet_count = 0;
bind_counter=Q90C_BIND_COUNT;
@@ -170,7 +170,6 @@ uint16_t initQ90C()
Q90C_VTX=CH6_SW;
packet[8] = 0x00;
packet[9] = 0x00;
- return Q90C_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/REALACC_nrf24l01.ino b/Multiprotocol/REALACC_nrf24l01.ino
index eff18e2..ef962c7 100644
--- a/Multiprotocol/REALACC_nrf24l01.ino
+++ b/Multiprotocol/REALACC_nrf24l01.ino
@@ -86,7 +86,7 @@ static void __attribute__((unused)) REALACC_initialize_txid()
#endif
}
-static void __attribute__((unused)) REALACC_init()
+static void __attribute__((unused)) REALACC_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -124,14 +124,13 @@ uint16_t REALACC_callback()
return REALACC_PACKET_PERIOD;
}
-uint16_t initREALACC()
+void REALACC_init()
{
BIND_IN_PROGRESS; // autobind protocol
REALACC_initialize_txid();
- REALACC_init();
+ REALACC_RF_init();
bind_counter=REALACC_BIND_COUNT;
hopping_frequency_no=0;
- return REALACC_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/RadioLink_cc2500.ino b/Multiprotocol/RadioLink_cc2500.ino
index f273a6a..b502105 100644
--- a/Multiprotocol/RadioLink_cc2500.ino
+++ b/Multiprotocol/RadioLink_cc2500.ino
@@ -95,7 +95,7 @@ static void __attribute__((unused)) RLINK_hop()
hopping_frequency[rf_ch_num]=12*16+inc;
}
-static void __attribute__((unused)) RLINK_init()
+static void __attribute__((unused)) RLINK_TXID_init()
{
#ifdef RLINK_FORCE_ID
//surface RC6GS
@@ -296,14 +296,13 @@ uint16_t RLINK_callback()
return 0;
}
-uint16_t initRLINK()
+void RLINK_init()
{
BIND_DONE; // Not a TX bind protocol
- RLINK_init();
+ RLINK_TXID_init();
RLINK_rf_init();
packet_count = 0;
phase = RLINK_DATA;
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/Redpine_cc2500.ino b/Multiprotocol/Redpine_cc2500.ino
index 41b202f..57f22d6 100644
--- a/Multiprotocol/Redpine_cc2500.ino
+++ b/Multiprotocol/Redpine_cc2500.ino
@@ -96,13 +96,13 @@ static void REDPINE_data_frame() {
packet[10] = REDPINE_LOOPTIME_SLOW;
}
-static uint16_t ReadREDPINE()
+uint16_t REDPINE_callback()
{
CC2500_SetFreqOffset();
if(IS_BIND_IN_PROGRESS)
{
if (state == REDPINE_BIND) {
- REDPINE_init(0);
+ REDPINE_RF_init(0);
}
REDPINE_set_channel(49);
CC2500_SetTxRxMode(TX_EN);
@@ -114,7 +114,7 @@ static uint16_t ReadREDPINE()
if(--bind_counter==0)
{
BIND_DONE;
- REDPINE_init(sub_protocol);
+ REDPINE_RF_init(sub_protocol);
}
return 4000;
}
@@ -171,7 +171,7 @@ static const uint8_t REDPINE_init_data[][3] = {
{CC2500_3E_PATABLE, 0xff, 0xff}
};
-static void REDPINE_init(uint8_t format)
+static void REDPINE_RF_init(uint8_t format)
{
CC2500_Reset();
@@ -195,7 +195,7 @@ static void REDPINE_init(uint8_t format)
}
}
-static uint16_t initREDPINE()
+void REDPINE_init()
{
hopping_frequency_no = 0;
// Used from kn_nrf24l01.c : kn_calculate_freqency_hopping_channels
@@ -228,8 +228,7 @@ static uint16_t initREDPINE()
packet_period = REDPINE_LOOPTIME_SLOW*1000;
bind_counter=REDPINE_BIND;
- REDPINE_init(sub_protocol);
+ REDPINE_RF_init(sub_protocol);
CC2500_SetTxRxMode(TX_EN); // enable PA
- return 10000;
}
#endif
diff --git a/Multiprotocol/SHENQI_nrf24l01.ino b/Multiprotocol/SHENQI_nrf24l01.ino
index dcbc6c8..c38d96a 100644
--- a/Multiprotocol/SHENQI_nrf24l01.ino
+++ b/Multiprotocol/SHENQI_nrf24l01.ino
@@ -29,7 +29,7 @@ const uint8_t PROGMEM SHENQI_Freq[] = {
10,60,10,50,30,40,
20,10,40,30,60,20 };
-void SHENQI_init()
+void SHENQI_RF_init()
{
NRF24L01_Initialize();
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70); // Clear data ready, data sent, and retransmit
@@ -116,14 +116,13 @@ uint16_t SHENQI_callback()
return packet_period;
}
-uint16_t initSHENQI()
+void SHENQI_init()
{
BIND_IN_PROGRESS; // autobind protocol
- SHENQI_init();
+ SHENQI_RF_init();
hopping_frequency_no = 0;
packet_count=0;
packet_period=500;
- return 1000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/SLT_nrf24l01.ino b/Multiprotocol/SLT_nrf24l01.ino
index 771caa0..4ae60bc 100644
--- a/Multiprotocol/SLT_nrf24l01.ino
+++ b/Multiprotocol/SLT_nrf24l01.ino
@@ -52,7 +52,7 @@ enum {
SLT_BIND2,
};
-static void __attribute__((unused)) SLT_init()
+static void __attribute__((unused)) SLT_RF_init()
{
NRF250K_Init();
NRF250K_SetTXAddr(rx_tx_addr, SLT_TXID_SIZE);
@@ -258,7 +258,7 @@ uint16_t SLT_callback()
return 19000;
}
-uint16_t initSLT()
+void SLT_init()
{
BIND_DONE; // Not a TX bind protocol
packet_count = 0;
@@ -273,10 +273,9 @@ uint16_t initSLT()
/* rx_tx_addr[0]=0x01;rx_tx_addr[1]=0x02;rx_tx_addr[2]=0x0B;rx_tx_addr[3]=0x57;*/
#endif
}
- SLT_init();
+ SLT_RF_init();
SLT_set_freq();
phase = SLT_BUILD;
- return 50000;
}
#endif
diff --git a/Multiprotocol/Scanner_cc2500.ino b/Multiprotocol/Scanner_cc2500.ino
index fa7c416..e7e1cdd 100644
--- a/Multiprotocol/Scanner_cc2500.ino
+++ b/Multiprotocol/Scanner_cc2500.ino
@@ -93,7 +93,7 @@ static int __attribute__((unused)) Scanner_scan_rssi()
return rssi_rel;
}
-uint16_t Scanner_callback()
+uint16_t SCANNER_callback()
{
uint8_t rssi,max_rssi;
@@ -131,7 +131,7 @@ uint16_t Scanner_callback()
return 0;
}
-uint16_t initScanner(void)
+void SCANNER_init(void)
{
rf_ch_num = 0;
telemetry_link = 0;
@@ -141,7 +141,6 @@ uint16_t initScanner(void)
CC2500_Strobe(CC2500_SIDLE);
CC2500_SetTxRxMode(RX_EN);
CC2500_Strobe(CC2500_SRX); // Receive mode
- return 1250;
}
#endif
diff --git a/Multiprotocol/Skyartec_cc2500.ino b/Multiprotocol/Skyartec_cc2500.ino
index 3e45969..e82870c 100644
--- a/Multiprotocol/Skyartec_cc2500.ino
+++ b/Multiprotocol/Skyartec_cc2500.ino
@@ -120,7 +120,7 @@ static void __attribute__((unused)) SKYARTEC_send_bind_packet()
CC2500_WriteData(packet, 12);
}
-uint16_t ReadSKYARTEC()
+uint16_t SKYARTEC_callback()
{
if (phase & 0x01)
{
@@ -154,7 +154,7 @@ uint16_t ReadSKYARTEC()
return 3000;
}
-uint16_t initSKYARTEC()
+void SKYARTEC_init()
{
SKYARTEC_rf_init();
@@ -168,7 +168,6 @@ uint16_t initSKYARTEC()
bind_counter = 250;
phase = SKYARTEC_PKT1;
- return 10000;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/Symax_nrf24l01.ino b/Multiprotocol/Symax_nrf24l01.ino
index 4bbf645..0409424 100644
--- a/Multiprotocol/Symax_nrf24l01.ino
+++ b/Multiprotocol/Symax_nrf24l01.ino
@@ -189,7 +189,7 @@ static void __attribute__((unused)) SYMAX_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) symax_init()
+static void __attribute__((unused)) symax_rf_init()
{
NRF24L01_Initialize();
//
@@ -331,7 +331,7 @@ static uint8_t chans_data_x5c[] = {0x1d, 0x2f, 0x26, 0x3d, 0x15, 0x2b, 0x25, 0x2
packet_count = 0;
}
-uint16_t symax_callback()
+uint16_t SYMAX_callback()
{
switch (phase)
{
@@ -368,14 +368,13 @@ uint16_t symax_callback()
return SYMAX_PACKET_PERIOD;
}
-uint16_t initSymax()
+void SYMAX_init()
{
packet_count = 0;
flags = 0;
BIND_IN_PROGRESS; // autobind protocol
- symax_init();
+ symax_rf_init();
phase = SYMAX_INIT1;
- return SYMAX_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/TEST_cc2500.ino b/Multiprotocol/TEST_cc2500.ino
index e868a4f..bd838cc 100644
--- a/Multiprotocol/TEST_cc2500.ino
+++ b/Multiprotocol/TEST_cc2500.ino
@@ -43,7 +43,7 @@ uint16_t TEST_callback()
return TEST_PACKET_PERIOD>>1;
}
-uint16_t initTEST()
+void TEST_init()
{
option=1;
@@ -57,7 +57,6 @@ uint16_t initTEST()
phase=0;
for(uint8_t i=0; i5)
address_length=5; //default
- XN297Dump_init();
+ XN297Dump_RF_init();
bind_counter=0;
rf_ch_num=0xFF;
prev_option=option^0x55;
phase=0; // init
- return XN297DUMP_INITIAL_WAIT;
}
#endif
diff --git a/Multiprotocol/YD717_nrf24l01.ino b/Multiprotocol/YD717_nrf24l01.ino
index 959da75..72ebebf 100644
--- a/Multiprotocol/YD717_nrf24l01.ino
+++ b/Multiprotocol/YD717_nrf24l01.ino
@@ -12,7 +12,7 @@
You should have received a copy of the GNU General Public License
along with Multiprotocol. If not, see .
*/
-// Last sync with hexfet new_protocols/yd717_nrf24l01.c dated 2015-09-28
+// Last sync with hexfet new_protocols/YD717_nrf24l01.c dated 2015-09-28
#if defined(YD717_NRF24L01_INO)
@@ -33,10 +33,10 @@
#define YD717_PAYLOADSIZE 8 // receive data pipes set to this size, but unused
-static void __attribute__((unused)) yd717_send_packet(uint8_t bind)
+static void __attribute__((unused)) YD717_send_packet()
{
uint8_t rudder_trim, elevator_trim, aileron_trim;
- if (bind)
+ if (IS_BIND_IN_PROGRESS)
{
packet[0]= rx_tx_addr[0]; // send data phase address in first 4 bytes
packet[1]= rx_tx_addr[1];
@@ -117,7 +117,7 @@ static void __attribute__((unused)) yd717_send_packet(uint8_t bind)
NRF24L01_SetPower(); // Set tx_power
}
-static void __attribute__((unused)) yd717_init()
+static void __attribute__((unused)) YD717_RF_init()
{
NRF24L01_Initialize();
@@ -152,42 +152,32 @@ static void __attribute__((unused)) yd717_init()
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, bind_rx_tx_addr, 5);
}
-uint16_t yd717_callback()
+uint16_t YD717_callback()
{
- if(IS_BIND_DONE)
+ if (bind_counter)
{
- #ifdef MULTI_SYNC
- telemetry_set_input_sync(YD717_PACKET_PERIOD);
- #endif
- yd717_send_packet(0);
- }
- else
- {
- if (bind_counter == 0)
+ bind_counter--;
+ if(bind_counter==0)
{
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, rx_tx_addr, 5); // set address
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, rx_tx_addr, 5);
- yd717_send_packet(0);
BIND_DONE; // bind complete
}
- else
- {
- yd717_send_packet(1);
- bind_counter--;
- }
}
+ else
+ #ifdef MULTI_SYNC
+ telemetry_set_input_sync(YD717_PACKET_PERIOD);
+ #endif
+ YD717_send_packet();
return YD717_PACKET_PERIOD; // Packet every 8ms
}
-uint16_t initYD717()
+void YD717_init()
{
BIND_IN_PROGRESS; // autobind protocol
rx_tx_addr[4] = 0xC1; // always uses first data port
- yd717_init();
+ YD717_RF_init();
bind_counter = YD717_BIND_COUNT;
-
- // Call callback in 50ms
- return YD717_INITIAL_WAIT;
}
#endif
\ No newline at end of file
diff --git a/Multiprotocol/ZSX_nrf24l01.ino b/Multiprotocol/ZSX_nrf24l01.ino
index 454a6cd..4b1f4b4 100644
--- a/Multiprotocol/ZSX_nrf24l01.ino
+++ b/Multiprotocol/ZSX_nrf24l01.ino
@@ -63,7 +63,7 @@ static void __attribute__((unused)) ZSX_initialize_txid()
#endif
}
-static void __attribute__((unused)) ZSX_init()
+static void __attribute__((unused)) ZSX_RF_init()
{
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TX_EN);
@@ -94,13 +94,12 @@ uint16_t ZSX_callback()
return ZSX_PACKET_PERIOD;
}
-uint16_t initZSX()
+void ZSX_init()
{
BIND_IN_PROGRESS; // autobind protocol
ZSX_initialize_txid();
- ZSX_init();
+ ZSX_RF_init();
bind_counter=ZSX_BIND_COUNT;
- return ZSX_INITIAL_WAIT;
}
#endif