diff --git a/Multiprotocol/GD00X_nrf24l01.ino b/Multiprotocol/GD00X_nrf24l01.ino index 888aa05..72e6299 100644 --- a/Multiprotocol/GD00X_nrf24l01.ino +++ b/Multiprotocol/GD00X_nrf24l01.ino @@ -26,7 +26,7 @@ Multiprotocol is distributed in the hope that it will be useful, #define GD00X_PAYLOAD_SIZE 15 #define GD00X_BIND_COUNT 857 //3sec -#define GD00X_V2_BIND_PACKET_PERIOD 1700 +#define GD00X_V2_BIND_PACKET_PERIOD 5110 #define GD00X_V2_RF_BIND_CHANNEL 0x43 #define GD00X_V2_PAYLOAD_SIZE 6 @@ -99,7 +99,7 @@ static void __attribute__((unused)) GD00X_send_packet() len--; } - packet[3]=(packet[0]+packet[1]+packet[2]+packet[4])^0x65; + packet[3]=(packet[0]+packet[1]+packet[2]+packet[4])^(rx_tx_addr[0]^rx_tx_addr[1]^rx_tx_addr[2]); if( (packet_count%12) == 0 ) hopping_frequency_no ^= 1; // Toggle between the 2 frequencies @@ -174,14 +174,48 @@ static void __attribute__((unused)) GD00X_initialize_txid() } else { - //Only 1 ID for now... - rx_tx_addr[0]=0x65; + //Generate 64 different IDs rx_tx_addr[1]=0x00; rx_tx_addr[2]=0x00; + rx_tx_addr[1+((rx_tx_addr[3]&0x10)>>4)]=rx_tx_addr[3]&0x8F; + rx_tx_addr[0]=0x65; rx_tx_addr[3]=0x95; rx_tx_addr[4]=0x47; //'G' - hopping_frequency[0]=0x05; - hopping_frequency[1]=0x25; + + //hopping calculation + hopping_frequency[0]=(0x15+(rx_tx_addr[0]^rx_tx_addr[1]^rx_tx_addr[2]^rx_tx_addr[3]))&0x1F; + if( hopping_frequency[0] == 0x0F ) + hopping_frequency[0]=0x0E; + else if( (hopping_frequency[0]&0xFE) == 0x10 ) + hopping_frequency[0]+=2; + hopping_frequency[1]=0x20+hopping_frequency[0]; + + #ifdef FORCE_GD00X_ORIGINAL_ID + //ID 1 + rx_tx_addr[0]=0x65; + rx_tx_addr[1]=0x00; + rx_tx_addr[2]=0x00; + rx_tx_addr[3]=0x95; + rx_tx_addr[4]=0x47; //'G' + hopping_frequency[0]=0x05; + hopping_frequency[1]=0x25; + //ID 2 + rx_tx_addr[0]=0xFD; + rx_tx_addr[1]=0x09; + rx_tx_addr[2]=0x00; + rx_tx_addr[3]=0x65; + rx_tx_addr[4]=0x47; //'G' + hopping_frequency[0]=0x06; + hopping_frequency[1]=0x26; + //ID 3 + rx_tx_addr[0]=0x67; + rx_tx_addr[1]=0x0F; + rx_tx_addr[2]=0x00; + rx_tx_addr[3]=0x69; + rx_tx_addr[4]=0x47; //'G' + hopping_frequency[0]=0x16; + hopping_frequency[1]=0x36; + #endif } } diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index 8289fe9..1d84444 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 2 #define VERSION_REVISION 1 -#define VERSION_PATCH_LEVEL 32 +#define VERSION_PATCH_LEVEL 33 //****************** // Protocols