From 06b336ee597de3edb5bf28f1cc65858f70be8ae3 Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Tue, 4 May 2021 14:58:40 +0200 Subject: [PATCH] Mould King: fix frequencies --- Multiprotocol/MouldKg_nrf24l01.ino | 24 +++++++++++++++++------- Multiprotocol/Multiprotocol.h | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Multiprotocol/MouldKg_nrf24l01.ino b/Multiprotocol/MouldKg_nrf24l01.ino index 52317c9..cbad176 100644 --- a/Multiprotocol/MouldKg_nrf24l01.ino +++ b/Multiprotocol/MouldKg_nrf24l01.ino @@ -88,14 +88,13 @@ static void __attribute__((unused)) MOULDKG_send_packet() static void __attribute__((unused)) MOULDKG_initialize_txid() { - rx_tx_addr[0]=rx_tx_addr[3]; // Use RX_num; + rx_tx_addr[0] = rx_tx_addr[3]; // Use RX_num; + #ifdef FORCE_MOULDKG_ORIGINAL_ID rx_tx_addr[0]=0x57; rx_tx_addr[1]=0x1B; rx_tx_addr[2]=0xF8; #endif - //Are the frequencies constant??? If not where are they coming from??? - memcpy(hopping_frequency,(uint8_t*)"\x0F\x1C\x39\x3C", MOULDKG_RF_NUM_CHANNELS); // 15,28,57,60 } static void __attribute__((unused)) MOULDKG_RF_init() @@ -114,23 +113,33 @@ uint16_t MOULDKG_callback() { //Example: TX: C=11 S=Y A= 4B 44 48 P(7)= C0 37 02 4F 00 00 00 // RX: C=76 S=Y A= 4B 44 48 P(7)= 5A 37 02 4F 03 0D 8E + // 03 0D 8E => RF channels 0F,1C,39,3C XN297_ReadPayload(packet_in, MOULDKG_BIND_PAYLOAD_SIZE); for(uint8_t i=0; i < MOULDKG_BIND_PAYLOAD_SIZE; i++) debug("%02X ", packet_in[i]); debugln(); //Not sure if I should test packet_in[0] if(memcmp(&packet_in[1],&packet[1],3)==0) - {//TX ID match, use RX ID to transmit normal packets + {//TX ID match + //Use RX ID as address XN297_SetTXAddr(&packet_in[4], 3); - XN297_SetTxRxMode(TXRX_OFF); + //Calculate frequencies based on RX ID + hopping_frequency[0] = 0x0C + (packet_in[4] & 0x0F); + hopping_frequency[1] = 0x1C + (packet_in[4] >> 4); + hopping_frequency[2] = 0x2C + (packet_in[5] & 0x0F); + hopping_frequency[3] = 0x3C + (packet_in[5] >> 4); + //Switch to normal mode BIND_DONE; + XN297_SetTxRxMode(TXRX_OFF); + phase = MOULDKG_DATA; + break; } } XN297_RFChannel(MOULDKG_TX_BIND_CHANNEL); // Set TX bind channel XN297_SetTxRxMode(TXRX_OFF); MOULDKG_send_packet(); phase++; - return 500; + return 600; case MOULDKG_BINDRX: //Wait for the packet transmission to finish while(XN297_IsPacketSent()==false); @@ -139,7 +148,7 @@ uint16_t MOULDKG_callback() XN297_RFChannel(MOULDKG_RX_BIND_CHANNEL); // Set RX bind channel XN297_SetTxRxMode(RX_EN); phase = MOULDKG_BINDTX; - return MOULDKG_BIND_PACKET_PERIOD-500; + return MOULDKG_BIND_PACKET_PERIOD-600; case MOULDKG_DATA: #ifdef MULTI_SYNC telemetry_set_input_sync(MOULDKG_PACKET_PERIOD); @@ -156,6 +165,7 @@ void MOULDKG_init() MOULDKG_initialize_txid(); MOULDKG_RF_init(); bind_counter = MOULDKG_BIND_COUNT; + phase = MOULDKG_BINDTX; packet_count = 0; } diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index b8c1625..b22c735 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 81 +#define VERSION_PATCH_LEVEL 82 #define MODE_SERIAL 0