CX-10A bind improvement

This commit is contained in:
pascallanger 2016-02-01 11:39:24 +01:00
parent 2f983f42fe
commit 38c6330a2a

View File

@ -25,6 +25,7 @@
#define Q282_PACKET_SIZE 21
#define CX10_PACKET_PERIOD 1316 // Timeout for callback in uSec
#define CX10A_PACKET_PERIOD 6000
#define CX10A_BIND_COUNT 400 // 2 seconds
#define INITIAL_WAIT 500
@ -198,13 +199,22 @@ uint16_t CX10_callback() {
}
break;
case CX10_BIND2:
bind_counter--;
if(bind_counter==0)
{ // Needed for some CX-10A to properly finish the bind
CX10_init();
bind_counter=CX10A_BIND_COUNT;
}
if( NRF24L01_ReadReg(NRF24L01_07_STATUS) & BV(NRF24L01_07_RX_DR))
{ // RX fifo data ready
XN297_ReadPayload(packet, packet_length);
NRF24L01_SetTxRxMode(TXRX_OFF);
NRF24L01_SetTxRxMode(TX_EN);
if(packet[9] == 1)
{
phase = CX10_BIND1;
bind_counter=0;
}
}
else
{
@ -259,8 +269,10 @@ uint16_t initCX10(void)
{
packet_length = CX10A_PACKET_SIZE;
packet_period = CX10A_PACKET_PERIOD;
phase = CX10_BIND2;
bind_counter=0;
bind_counter=CX10A_BIND_COUNT;
for(uint8_t i=0; i<4; i++)
packet[5+i] = 0xff; // clear aircraft id
packet[9] = 0;