diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index a2af902..3bb56a9 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 3 #define VERSION_REVISION 4 -#define VERSION_PATCH_LEVEL 16 +#define VERSION_PATCH_LEVEL 17 #define MODE_SERIAL 0 diff --git a/Multiprotocol/Yuxiang_nrf24l01.ino b/Multiprotocol/Yuxiang_nrf24l01.ino index 09db5da..cfe640f 100644 --- a/Multiprotocol/Yuxiang_nrf24l01.ino +++ b/Multiprotocol/Yuxiang_nrf24l01.ino @@ -19,9 +19,9 @@ Multiprotocol is distributed in the hope that it will be useful, #define YUXIANG_FORCE_ID -#define YUXIANG_PACKET_PERIOD 12430 +#define YUXIANG_PACKET_PERIOD 12422 #define YUXIANG_PACKET_SIZE 9 -#define YUXIANG_BIND_COUNT 20000 +#define YUXIANG_BIND_COUNT 150 #define YUXIANG_BIND_FREQ 0x30 #define YUXIANG_RF_NUM_CHANNELS 4 @@ -36,31 +36,36 @@ enum static void __attribute__((unused)) YUXIANG_send_packet() { - static bool bind_state = false; - - if(bind_counter && (hopping_frequency_no & 0x0E) == 0) + if(bind_counter && packet_sent < 5 && (hopping_frequency_no & 0x07) == 0) { bind_counter--; if(!bind_counter) BIND_DONE; - XN297_Hopping(YUXIANG_BIND_FREQ); + #if 0 + debug("B C:%d, ",YUXIANG_BIND_FREQ); + #endif + XN297_RFChannel(YUXIANG_BIND_FREQ); XN297_SetTXAddr((uint8_t*)"\x00\x00\x00\x00\x00", 5); - XN297_SetRXAddr((uint8_t*)"\x00\x00\x00\x00\x00", YUXIANG_PACKET_SIZE); - bind_state = true; + bind_phase = 1; + packet_sent++; } else - { + {//Normal operation XN297_Hopping(hopping_frequency_no & 0x03); - if(bind_state) + #if 0 + debug("C:%d, ",hopping_frequency[hopping_frequency_no & 0x03]); + #endif + hopping_frequency_no++; + if(bind_phase) { XN297_SetTXAddr(rx_tx_addr, 5); XN297_SetRXAddr(rx_tx_addr, YUXIANG_PACKET_SIZE); - bind_state = false; + bind_phase = 0; + packet_sent = 0; } } - hopping_frequency_no++; - - packet[0] = GET_FLAG(!bind_state, 0x80) // Bind packet + + packet[0] = GET_FLAG(!bind_phase, 0x80) // Bind packet | GET_FLAG(telemetry_lost, 0x20) // No telem | GET_FLAG(!CH5_SW, 0x10) // Lock | GET_FLAG(CH6_SW, 0x08) // High @@ -86,17 +91,15 @@ static void __attribute__((unused)) YUXIANG_send_packet() packet[6] = value; packet[7] |= (value >> 2) & 0xC0; - if(bind_state && (hopping_frequency_no&1)) + if(bind_phase) memcpy(&packet[3], rx_tx_addr, 4); - else - packet[0] |= 0x80; uint8_t checksum = 0; for(uint8_t i=0; i