More code optimization

This commit is contained in:
Pascal Langer 2021-02-12 11:21:42 +01:00
parent 5a49d99c4f
commit 29d1fb00b1
32 changed files with 114 additions and 206 deletions

View File

@ -364,10 +364,10 @@ static void __attribute__((unused)) CABELL_RF_init()
CABELL_setAddress();
NRF24L01_WriteReg(NRF24L01_11_RX_PW_P0, 0x20); // 32 byte packet length
NRF24L01_WriteReg(NRF24L01_12_RX_PW_P1, 0x20); // 32 byte packet length
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3F); // Enable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x04); // Enable dynamic Payload Length
NRF24L01_Activate(0x73);
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
//-----------------------------------------------------------------------------------------

View File

@ -658,11 +658,10 @@ static void CFLIE_RF_init()
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, rx_tx_addr, TX_ADDR_SIZE);
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, rx_tx_addr, TX_ADDR_SIZE);
// this sequence necessary for module from stock tx
NRF24L01_Activate(0x73); // Activate feature register
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
NRF24L01_Activate(0x73);
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
// TODO: Fix telemetry

View File

@ -128,18 +128,14 @@ static void __attribute__((unused)) CG023_RF_init()
uint16_t CG023_callback()
{
if(IS_BIND_DONE)
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
}
else
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
{
bind_counter--;
if (bind_counter == 0)
BIND_DONE;
else
bind_counter--;
}
CG023_send_packet();
return packet_period;

View File

@ -37,10 +37,10 @@ enum DM002_FLAGS {
DM002_FLAG_CAMERA2 = 0x80,
};
static void __attribute__((unused)) DM002_send_packet(uint8_t bind)
static void __attribute__((unused)) DM002_send_packet()
{
memcpy(packet+5,(uint8_t *)"\x00\x7F\x7F\x7F\x00\x00\x00",7);
if(bind)
if(IS_BIND_IN_PROGRESS)
{
packet[0] = 0xAA;
packet[1] = rx_tx_addr[0];
@ -83,10 +83,7 @@ static void __attribute__((unused)) DM002_send_packet(uint8_t bind)
// Power on, TX mode, 2byte CRC
// Why CRC0? xn297 does not interpret it - either 16-bit CRC or nothing
XN297_Configure(_BV(NRF24L01_00_EN_CRC) | _BV(NRF24L01_00_CRCO) | _BV(NRF24L01_00_PWR_UP));
if (bind)
NRF24L01_WriteReg(NRF24L01_05_RF_CH, DM002_RF_BIND_CHANNEL);
else
NRF24L01_WriteReg(NRF24L01_05_RF_CH, hopping_frequency[hopping_frequency_no]);
NRF24L01_WriteReg(NRF24L01_05_RF_CH, IS_BIND_IN_PROGRESS ? DM002_RF_BIND_CHANNEL : hopping_frequency[hopping_frequency_no]);
// clear packet status bits and TX FIFO
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70);
NRF24L01_FlushTx();
@ -104,26 +101,19 @@ static void __attribute__((unused)) DM002_RF_init()
uint16_t DM002_callback()
{
if(IS_BIND_DONE)
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(DM002_PACKET_PERIOD);
#endif
DM002_send_packet(0);
}
else
#ifdef MULTI_SYNC
telemetry_set_input_sync(DM002_PACKET_PERIOD);
#endif
if (bind_counter)
{
bind_counter--;
if (bind_counter == 0)
{
BIND_DONE;
XN297_SetTXAddr(rx_tx_addr, 5);
}
else
{
DM002_send_packet(1);
bind_counter--;
}
}
DM002_send_packet();
return DM002_PACKET_PERIOD;
}

View File

@ -55,11 +55,8 @@ uint16_t E010R5_callback()
{
//Bind
if(bind_counter)
{
bind_counter--;
if(bind_counter==0)
if(--bind_counter==0)
BIND_DONE;
}
//Send packet
RF2500_SendPayload();

View File

@ -95,14 +95,14 @@ static void __attribute__((unused)) E015_check_arming()
}
}
static void __attribute__((unused)) E01X_send_packet(uint8_t bind)
static void __attribute__((unused)) E01X_send_packet()
{
uint8_t can_flip = 0, calibrate = 1;
if(sub_protocol==E012)
{
packet_length=E012_PACKET_SIZE;
packet[0] = rx_tx_addr[1];
if(bind)
if(IS_BIND_IN_PROGRESS)
{
packet[1] = 0xaa;
memcpy(&packet[2], hopping_frequency, E012_NUM_RF_CHANNELS);
@ -134,7 +134,7 @@ static void __attribute__((unused)) E01X_send_packet(uint8_t bind)
}
else if(sub_protocol==E015)
{ // E015
if(bind)
if(IS_BIND_IN_PROGRESS)
{
packet[0] = 0x18;
packet[1] = 0x04;
@ -173,7 +173,7 @@ static void __attribute__((unused)) E01X_send_packet(uint8_t bind)
else
{ // E016H
packet_length=E016H_PACKET_SIZE;
if(bind)
if(IS_BIND_IN_PROGRESS)
{
rf_ch_num=E016H_BIND_CHANNEL;
memcpy(packet, &rx_tx_addr[1], 4);
@ -258,8 +258,12 @@ static void __attribute__((unused)) E01X_RF_init()
uint16_t E01X_callback()
{
if(IS_BIND_IN_PROGRESS)
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
{
bind_counter--;
if (bind_counter == 0)
{
if(sub_protocol==E016H)
@ -268,19 +272,8 @@ uint16_t E01X_callback()
HS6200_SetTXAddr(rx_tx_addr, E01X_ADDRESS_LENGTH);
BIND_DONE;
}
else
{
E01X_send_packet(1);
bind_counter--;
}
}
else
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
E01X_send_packet(0);
}
E01X_send_packet();
return packet_period;
}

View File

@ -92,14 +92,11 @@ uint16_t E129_callback()
//Bind
if(bind_counter)
{
bind_counter--;
if(bind_counter==0)
if(--bind_counter==0)
{
BIND_DONE;
RF2500_SetTXAddr(rx_tx_addr); // 4 bytes of address
}
}
//Build packet
E129_build_data_packet();

View File

@ -36,11 +36,11 @@ static void __attribute__((unused)) ESKY150_RF_init()
NRF24L01_WriteReg(NRF24L01_11_RX_PW_P0, ESKY150_PAYLOADSIZE); // bytes of data payload for pipe 0
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, rx_tx_addr, ESKY150_TX_ADDRESS_SIZE);
NRF24L01_Activate(0x73);
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 1); // Dynamic payload for data pipe 0
// Enable: Dynamic Payload Length, Payload with ACK , W_TX_PAYLOAD_NOACK
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, _BV(NRF2401_1D_EN_DPL) | _BV(NRF2401_1D_EN_ACK_PAY) | _BV(NRF2401_1D_EN_DYN_ACK));
NRF24L01_Activate(0x73);
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
static void __attribute__((unused)) ESKY150_bind_init()

View File

@ -160,6 +160,9 @@ static void __attribute__((unused)) FQ777_RF_init()
uint16_t FQ777_callback()
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(FQ777_PACKET_PERIOD);
#endif
if(bind_counter)
{
bind_counter--;
@ -169,11 +172,6 @@ uint16_t FQ777_callback()
BIND_DONE;
}
}
#ifdef MULTI_SYNC
else
telemetry_set_input_sync(FQ777_PACKET_PERIOD);
#endif
FQ777_send_packet();
return FQ777_PACKET_PERIOD;
}

View File

@ -81,7 +81,7 @@ uint16_t FX816_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(FX816_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
BIND_DONE;
FX816_send_packet();

View File

@ -102,10 +102,8 @@ static void __attribute__((unused)) FY326_RF_init()
NRF24L01_WriteReg(NRF24L01_05_RF_CH, FY326_RF_BIND_CHANNEL);
NRF24L01_SetBitrate(NRF24L01_BR_250K);
NRF24L01_Activate(0x73);
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3f);
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x07);
NRF24L01_Activate(0x73);
//Switch to RX
NRF24L01_SetTxRxMode(TXRX_OFF);

View File

@ -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_send_packet()
{
uint8_t i;
//servodata timing range for flysky.
@ -137,7 +137,7 @@ static void __attribute__((unused)) FLYSKY_build_packet(uint8_t init)
//+100% =~ 0x07ca//=1994us(max)
//Center = 0x5d9//=1497us(center)
//channel order AIL;ELE;THR;RUD;CH5;CH6;CH7;CH8
packet[0] = init ? 0xaa : 0x55;
packet[0] = IS_BIND_IN_PROGRESS ? 0xaa : 0x55;
packet[1] = rx_tx_addr[3];
packet[2] = rx_tx_addr[2];
packet[3] = rx_tx_addr[1];
@ -151,31 +151,27 @@ static void __attribute__((unused)) FLYSKY_build_packet(uint8_t init)
packet[6 + i*2]=(temp>>8)&0xFF; //high byte of servo timing(1000-2000us)
}
FLYSKY_apply_extension_flags();
A7105_SetPower();
A7105_WriteData(21, IS_BIND_IN_PROGRESS ? 0x01:hopping_frequency[hopping_frequency_no & 0x0F]);
hopping_frequency_no++;
}
uint16_t FLYSKY_callback()
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
#ifndef FORCE_FLYSKY_TUNING
A7105_AdjustLOBaseFreq(1);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
{
FLYSKY_build_packet(1);
A7105_WriteData(21, 1);
bind_counter--;
if (bind_counter==0)
BIND_DONE;
}
else
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
FLYSKY_build_packet(0);
A7105_WriteData(21, hopping_frequency[hopping_frequency_no & 0x0F]);
A7105_SetPower();
}
hopping_frequency_no++;
FLYSKY_send_packet();
return packet_period;
}

View File

@ -204,13 +204,13 @@ static void __attribute__((unused)) GD00X_initialize_txid()
uint16_t GD00X_callback()
{
if(IS_BIND_IN_PROGRESS)
if(--bind_counter==0)
BIND_DONE;
GD00X_send_packet();
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
if(--bind_counter==0)
BIND_DONE;
GD00X_send_packet();
return packet_period;
}

View File

@ -141,14 +141,14 @@ static void __attribute__((unused)) HONTAI_RF_init()
else
XN297_SetTXAddr((const uint8_t*)"\xd2\xb5\x99\xb3\x4a", 5);
NRF24L01_Activate(0x73); // Activate feature register
if(sub_protocol == JJRCX1)
{
NRF24L01_WriteReg(NRF24L01_04_SETUP_RETR, 0xff); // JJRC uses dynamic payload length
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3f); // match other stock settings even though AA disabled...
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x07);
}
NRF24L01_Activate(0x73); // Deactivate feature register
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
const uint8_t PROGMEM HONTAI_hopping_frequency_nonels[][3] = {
@ -201,7 +201,9 @@ static void __attribute__((unused)) HONTAI_initialize_txid()
uint16_t HONTAI_callback()
{
HONTAI_send_packet();
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
{
bind_counter--;
@ -211,11 +213,7 @@ uint16_t HONTAI_callback()
BIND_DONE;
}
}
#ifdef MULTI_SYNC
else
telemetry_set_input_sync(packet_period);
#endif
HONTAI_send_packet();
return packet_period;
}

View File

@ -143,11 +143,10 @@ uint16_t JJRC345_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(JJRC345_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
{
if (bind_counter)
bind_counter--;
else
bind_counter--;
if (bind_counter==0)
BIND_DONE;
}
JJRC345_send_packet();

View File

@ -89,7 +89,7 @@ uint16_t KF606_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(KF606_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;

View File

@ -247,11 +247,11 @@ static void __attribute__((unused)) KN_RF_init()
NRF24L01_Initialize();
NRF24L01_WriteReg(NRF24L01_11_RX_PW_P0, 0x20); // bytes of data payload for pipe 0
NRF24L01_Activate(0x73);
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 1); // Dynamic payload for data pipe 0
// Enable: Dynamic Payload Length to enable PCF
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, _BV(NRF2401_1D_EN_DPL));
NRF24L01_Activate(0x73);
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
//================================================================================================

View File

@ -166,14 +166,11 @@ uint16_t LOLI_callback()
{
case LOLI_BIND1:
if(bind_counter)
{
bind_counter--;
if(bind_counter==0)
if(--bind_counter==0)
{
phase=LOLI_PREP_DATA;
break;
}
}
// send bind packet
NRF24L01_SetTxRxMode(TXRX_OFF);
NRF24L01_SetTxRxMode(TX_EN);

View File

@ -320,6 +320,9 @@ static void __attribute__((unused)) MT99XX_initialize_txid()
uint16_t MT99XX_callback()
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
{
bind_counter--;
@ -333,10 +336,6 @@ uint16_t MT99XX_callback()
BIND_DONE;
}
}
#ifdef MULTI_SYNC
else
telemetry_set_input_sync(packet_period);
#endif
MT99XX_send_packet();
return packet_period;

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 2
#define VERSION_PATCH_LEVEL 39
#define VERSION_PATCH_LEVEL 40
//******************
// Protocols

View File

@ -38,12 +38,8 @@ void NRF24L01_Initialize()
NRF24L01_WriteReg(NRF24L01_03_SETUP_AW, 0x03); // 5 bytes rx/tx address
NRF24L01_WriteReg(NRF24L01_04_SETUP_RETR, 0x00); // no retransmits
NRF24L01_SetBitrate(NRF24L01_BR_1M); // 1Mbps
/* Already done in NRF24L01_Reset
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x00); // Disable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x01); // Set feature bits off and enable the command NRF24L01_B0_TX_PYLD_NOACK
NRF24L01_Activate(0x73);
*/
NRF24L01_SetPower();
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
@ -134,13 +130,13 @@ static uint8_t NRF24L01_GetDynamicPayloadSize()
return len;
}
void NRF24L01_Activate(uint8_t code)
/*void NRF24L01_Activate(uint8_t code)
{
NRF_CSN_off;
SPI_Write(ACTIVATE);
SPI_Write(code);
NRF_CSN_on;
}
}*/
void NRF24L01_SetBitrate(uint8_t bitrate)
{
@ -234,13 +230,6 @@ void NRF24L01_SetTxRxMode(enum TXRX_State mode)
void NRF24L01_Reset()
{
//** not in deviation but needed to hot switch between models
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x00); // Disable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x01); // Set feature bits off
NRF24L01_Activate(0x73);
//**
NRF24L01_FlushTx();
NRF24L01_FlushRx();
NRF24L01_Strobe(0xff); // NOP

View File

@ -91,15 +91,15 @@ static void __attribute__((unused)) POTENSIC_initialize_txid()
uint16_t POTENSIC_callback()
{
if(IS_BIND_IN_PROGRESS)
#ifdef MULTI_SYNC
telemetry_set_input_sync(POTENSIC_PACKET_PERIOD);
#endif
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;
XN297_SetTXAddr(rx_tx_addr,5);
}
#ifdef MULTI_SYNC
telemetry_set_input_sync(POTENSIC_PACKET_PERIOD);
#endif
POTENSIC_send_packet();
return POTENSIC_PACKET_PERIOD;
}

View File

@ -160,16 +160,16 @@ static void __attribute__((unused)) PROPEL_RF_init()
NRF24L01_Initialize();
NRF24L01_WriteReg(NRF24L01_00_CONFIG, 0x7f);
NRF24L01_WriteReg(NRF24L01_01_EN_AA, 0x3f); // AA on all pipes
NRF24L01_WriteReg(NRF24L01_02_EN_RXADDR, 0x3f); // Enable all pipes
NRF24L01_WriteReg(NRF24L01_04_SETUP_RETR, 0x36); // retransmit 1ms, 6 times
NRF24L01_WriteReg(NRF24L01_01_EN_AA, 0x3f); // AA on all pipes
NRF24L01_WriteReg(NRF24L01_02_EN_RXADDR, 0x3f); // Enable all pipes
NRF24L01_WriteReg(NRF24L01_04_SETUP_RETR, 0x36); // retransmit 1ms, 6 times
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, (uint8_t *)"\x99\x77\x55\x33\x11", PROPEL_ADDRESS_LENGTH); //Bind address
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, (uint8_t *)"\x99\x77\x55\x33\x11", PROPEL_ADDRESS_LENGTH); //Bind address
NRF24L01_WriteReg(NRF24L01_05_RF_CH, PROPEL_BIND_RF_CHANNEL);
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3f); // Enable dynamic payload length
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x07); // Enable all features
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3f); // Enable dynamic payload length
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x07); // Enable all features
NRF24L01_SetTxRxMode(TX_EN); // Clear data ready, data sent, retransmit and enable CRC 16bits, ready for TX
}
const uint8_t PROGMEM PROPEL_hopping []= { 0x47,0x36,0x27,0x44,0x33,0x0D,0x3C,0x2E,0x1B,0x39,0x2A,0x18 };

View File

@ -174,10 +174,10 @@ static uint8_t __attribute__((unused)) cx35_lastButton()
return command;
}
static void __attribute__((unused)) Q303_send_packet(uint8_t bind)
static void __attribute__((unused)) Q303_send_packet()
{
uint16_t aileron, elevator, throttle, rudder, slider;
if(bind)
if(IS_BIND_IN_PROGRESS)
{
packet[0] = 0xaa;
memcpy(&packet[1], rx_tx_addr + 1, 4);
@ -270,7 +270,7 @@ static void __attribute__((unused)) Q303_send_packet(uint8_t bind)
// Power on, TX mode, CRC enabled
XN297_Configure(_BV(NRF24L01_00_EN_CRC) | _BV(NRF24L01_00_CRCO) | _BV(NRF24L01_00_PWR_UP));
NRF24L01_WriteReg(NRF24L01_05_RF_CH, bind ? Q303_RF_BIND_CHANNEL : hopping_frequency[hopping_frequency_no++]);
NRF24L01_WriteReg(NRF24L01_05_RF_CH, IS_BIND_IN_PROGRESS ? Q303_RF_BIND_CHANNEL : hopping_frequency[hopping_frequency_no++]);
hopping_frequency_no %= rf_ch_num;
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70);
@ -334,27 +334,20 @@ static void __attribute__((unused)) Q303_initialize_txid()
uint16_t Q303_callback()
{
if(IS_BIND_DONE)
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
Q303_send_packet(0);
}
else
#ifdef MULTI_SYNC
telemetry_set_input_sync(packet_period);
#endif
if(bind_counter)
{
bind_counter--;
if (bind_counter == 0)
{
XN297_SetTXAddr(rx_tx_addr, 5);
packet_count = 0;
BIND_DONE;
}
else
{
Q303_send_packet(1);
bind_counter--;
}
}
Q303_send_packet();
return packet_period;
}

View File

@ -147,7 +147,7 @@ uint16_t Q90C_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(Q90C_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;

View File

@ -120,7 +120,7 @@ uint16_t TIGER_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(TIGER_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;

View File

@ -225,8 +225,7 @@ uint16_t V2X2_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(V2X2_PACKET_PERIOD);
#endif
V2X2_send_packet();
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
{
if (--bind_counter == 0)
{
@ -241,6 +240,7 @@ uint16_t V2X2_callback()
hopping_frequency_no = 0;
}
}
V2X2_send_packet();
// Packet every 4ms
return V2X2_PACKET_PERIOD;
}

View File

@ -35,9 +35,9 @@
// flags going to packet[2]
#define V911S_FLAG_CALIB 0x01
static void __attribute__((unused)) V911S_send_packet(uint8_t bind)
static void __attribute__((unused)) V911S_send_packet()
{
if(bind)
if(IS_BIND_IN_PROGRESS)
{
packet[0] = 0x42;
packet[1] = 0x4E;
@ -104,7 +104,7 @@ static void __attribute__((unused)) V911S_send_packet(uint8_t bind)
if(sub_protocol==V911S_STD)
XN297L_WritePayload(packet, V911S_PACKET_SIZE);
else
XN297L_WriteEnhancedPayload(packet, V911S_PACKET_SIZE, bind?0:1);
XN297L_WriteEnhancedPayload(packet, V911S_PACKET_SIZE, IS_BIND_IN_PROGRESS?0:1);
XN297L_SetPower(); // Set tx_power
XN297L_SetFreqOffset(); // Set frequency offset
@ -135,29 +135,22 @@ static void __attribute__((unused)) V911S_initialize_txid()
uint16_t V911S_callback()
{
if(IS_BIND_DONE)
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(V911S_PACKET_PERIOD);
#endif
V911S_send_packet(0);
}
else
#ifdef MULTI_SYNC
telemetry_set_input_sync(V911S_PACKET_PERIOD);
#endif
if(bind_counter)
{
bind_counter--;
if (bind_counter == 0)
{
BIND_DONE;
XN297_SetTXAddr(rx_tx_addr, 5);
packet_period=V911S_PACKET_PERIOD;
}
else
{
V911S_send_packet(1);
bind_counter--;
if(bind_counter==100) // same as original TX...
packet_period=V911S_BIND_PACKET_PERIOD*3;
}
else if(bind_counter==100) // same as original TX...
packet_period=V911S_BIND_PACKET_PERIOD*3;
}
V911S_send_packet();
return packet_period;
}

View File

@ -200,7 +200,7 @@ uint16_t XK_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(XK_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;

View File

@ -43,11 +43,6 @@ static void __attribute__((unused)) XN297Dump_RF_init()
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(RX_EN);
NRF24L01_FlushTx();
NRF24L01_FlushRx();
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70); // Clear data ready, data sent, and retransmit
NRF24L01_WriteReg(NRF24L01_01_EN_AA, 0x00); // No Auto Acknowledgment on all data pipes
NRF24L01_WriteReg(NRF24L01_02_EN_RXADDR, 0x01); // Enable data pipe 0 only
NRF24L01_WriteReg(NRF24L01_03_SETUP_AW, 0x01); // 3 bytes RX/TX address
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, (uint8_t*)"\x55\x0F\x71", 3); // set up RX address to xn297 preamble
NRF24L01_WriteReg(NRF24L01_11_RX_PW_P0, XN297DUMP_MAX_PACKET_LEN); // Enable rx pipe 0
@ -69,11 +64,6 @@ static void __attribute__((unused)) XN297Dump_RF_init()
break;
}
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x00); // Disable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x01);
NRF24L01_Activate(0x73);
NRF24L01_SetPower();
}
static boolean __attribute__((unused)) XN297Dump_process_packet(void)
@ -636,11 +626,6 @@ static uint16_t XN297Dump_callback()
NRF24L01_Initialize();
NRF24L01_SetTxRxMode(TXRX_OFF);
NRF24L01_SetTxRxMode(RX_EN);
NRF24L01_FlushTx();
NRF24L01_FlushRx();
NRF24L01_WriteReg(NRF24L01_07_STATUS, 0x70); // Clear data ready, data sent, and retransmit
NRF24L01_WriteReg(NRF24L01_01_EN_AA, 0x00); // No Auto Acknowledgment on all data pipes
NRF24L01_WriteReg(NRF24L01_02_EN_RXADDR, 0x01); // Enable data pipe 0 only
NRF24L01_WriteReg(NRF24L01_03_SETUP_AW, address_length-2); // RX/TX address length
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, rx_tx_addr, address_length); // set up RX address
NRF24L01_WriteReg(NRF24L01_11_RX_PW_P0, packet_length); // Enable rx pipe 0
@ -663,11 +648,6 @@ static uint16_t XN297Dump_callback()
break;
}
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x00); // Disable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x01);
NRF24L01_Activate(0x73);
NRF24L01_SetPower();
NRF24L01_WriteReg(NRF24L01_00_CONFIG, _BV(NRF24L01_00_PWR_UP) | _BV(NRF24L01_00_PRIM_RX)); //_BV(NRF24L01_00_EN_CRC) | _BV(NRF24L01_00_CRCO) |
phase++;
}

View File

@ -127,10 +127,8 @@ static void __attribute__((unused)) YD717_RF_init()
NRF24L01_WriteReg(NRF24L01_04_SETUP_RETR, 0x1A); // 500uS retransmit t/o, 10 tries
NRF24L01_WriteReg(NRF24L01_05_RF_CH, YD717_RF_CHANNEL); // Channel 3C
NRF24L01_Activate(0x73); // Activate feature register
NRF24L01_WriteReg(NRF24L01_1C_DYNPD, 0x3F); // Enable dynamic payload length on all pipes
NRF24L01_WriteReg(NRF24L01_1D_FEATURE, 0x07); // Set feature bits on
NRF24L01_Activate(0x73);
// for bind packets set address to prearranged value known to receiver
uint8_t bind_rx_tx_addr[5];
@ -144,26 +142,24 @@ static void __attribute__((unused)) YD717_RF_init()
bind_rx_tx_addr[i] = 0x60 + offset;
NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, bind_rx_tx_addr, 5);
NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, bind_rx_tx_addr, 5);
NRF24L01_WriteReg(NRF24L01_00_CONFIG, _BV(NRF24L01_00_EN_CRC) | _BV(NRF24L01_00_PWR_UP));
}
uint16_t YD717_callback()
{
#ifdef MULTI_SYNC
telemetry_set_input_sync(YD717_PACKET_PERIOD);
#endif
if (bind_counter)
{
bind_counter--;
if(bind_counter==0)
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);
BIND_DONE; // bind complete
}
}
else
#ifdef MULTI_SYNC
telemetry_set_input_sync(YD717_PACKET_PERIOD);
#endif
YD717_send_packet();
return YD717_PACKET_PERIOD; // Packet every 8ms
return YD717_PACKET_PERIOD; // Packet every 8ms
}
void YD717_init()

View File

@ -76,7 +76,7 @@ uint16_t ZSX_callback()
#ifdef MULTI_SYNC
telemetry_set_input_sync(ZSX_PACKET_PERIOD);
#endif
if(IS_BIND_IN_PROGRESS)
if(bind_counter)
if(--bind_counter==0)
{
BIND_DONE;