Skip to content

Commit 06b336e

Browse files
committed
Mould King: fix frequencies
1 parent a93adeb commit 06b336e

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

Multiprotocol/MouldKg_nrf24l01.ino

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,13 @@ static void __attribute__((unused)) MOULDKG_send_packet()
8888

8989
static void __attribute__((unused)) MOULDKG_initialize_txid()
9090
{
91-
rx_tx_addr[0]=rx_tx_addr[3]; // Use RX_num;
91+
rx_tx_addr[0] = rx_tx_addr[3]; // Use RX_num;
92+
9293
#ifdef FORCE_MOULDKG_ORIGINAL_ID
9394
rx_tx_addr[0]=0x57;
9495
rx_tx_addr[1]=0x1B;
9596
rx_tx_addr[2]=0xF8;
9697
#endif
97-
//Are the frequencies constant??? If not where are they coming from???
98-
memcpy(hopping_frequency,(uint8_t*)"\x0F\x1C\x39\x3C", MOULDKG_RF_NUM_CHANNELS); // 15,28,57,60
9998
}
10099

101100
static void __attribute__((unused)) MOULDKG_RF_init()
@@ -114,23 +113,33 @@ uint16_t MOULDKG_callback()
114113
{
115114
//Example: TX: C=11 S=Y A= 4B 44 48 P(7)= C0 37 02 4F 00 00 00
116115
// RX: C=76 S=Y A= 4B 44 48 P(7)= 5A 37 02 4F 03 0D 8E
116+
// 03 0D 8E => RF channels 0F,1C,39,3C
117117
XN297_ReadPayload(packet_in, MOULDKG_BIND_PAYLOAD_SIZE);
118118
for(uint8_t i=0; i < MOULDKG_BIND_PAYLOAD_SIZE; i++)
119119
debug("%02X ", packet_in[i]);
120120
debugln();
121121
//Not sure if I should test packet_in[0]
122122
if(memcmp(&packet_in[1],&packet[1],3)==0)
123-
{//TX ID match, use RX ID to transmit normal packets
123+
{//TX ID match
124+
//Use RX ID as address
124125
XN297_SetTXAddr(&packet_in[4], 3);
125-
XN297_SetTxRxMode(TXRX_OFF);
126+
//Calculate frequencies based on RX ID
127+
hopping_frequency[0] = 0x0C + (packet_in[4] & 0x0F);
128+
hopping_frequency[1] = 0x1C + (packet_in[4] >> 4);
129+
hopping_frequency[2] = 0x2C + (packet_in[5] & 0x0F);
130+
hopping_frequency[3] = 0x3C + (packet_in[5] >> 4);
131+
//Switch to normal mode
126132
BIND_DONE;
133+
XN297_SetTxRxMode(TXRX_OFF);
134+
phase = MOULDKG_DATA;
135+
break;
127136
}
128137
}
129138
XN297_RFChannel(MOULDKG_TX_BIND_CHANNEL); // Set TX bind channel
130139
XN297_SetTxRxMode(TXRX_OFF);
131140
MOULDKG_send_packet();
132141
phase++;
133-
return 500;
142+
return 600;
134143
case MOULDKG_BINDRX:
135144
//Wait for the packet transmission to finish
136145
while(XN297_IsPacketSent()==false);
@@ -139,7 +148,7 @@ uint16_t MOULDKG_callback()
139148
XN297_RFChannel(MOULDKG_RX_BIND_CHANNEL); // Set RX bind channel
140149
XN297_SetTxRxMode(RX_EN);
141150
phase = MOULDKG_BINDTX;
142-
return MOULDKG_BIND_PACKET_PERIOD-500;
151+
return MOULDKG_BIND_PACKET_PERIOD-600;
143152
case MOULDKG_DATA:
144153
#ifdef MULTI_SYNC
145154
telemetry_set_input_sync(MOULDKG_PACKET_PERIOD);
@@ -156,6 +165,7 @@ void MOULDKG_init()
156165
MOULDKG_initialize_txid();
157166
MOULDKG_RF_init();
158167
bind_counter = MOULDKG_BIND_COUNT;
168+
phase = MOULDKG_BINDTX;
159169
packet_count = 0;
160170
}
161171

Multiprotocol/Multiprotocol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#define VERSION_MAJOR 1
2020
#define VERSION_MINOR 3
2121
#define VERSION_REVISION 2
22-
#define VERSION_PATCH_LEVEL 81
22+
#define VERSION_PATCH_LEVEL 82
2323

2424
#define MODE_SERIAL 0
2525

0 commit comments

Comments
 (0)