diff options
| author | krolyxon <me@krolyxon.com> | 2026-05-06 12:33:33 +0530 |
|---|---|---|
| committer | krolyxon <me@krolyxon.com> | 2026-05-06 12:33:33 +0530 |
| commit | be5e6e75827480bc0dd55d32ad4a99b9d2c0a364 (patch) | |
| tree | 2962de42ef8bda3a9d8149b5054f045a4d5d3ef3 /firmware/nrf24.cpp | |
| parent | bf0a032a4e135d457272119d4a08206a19c4f893 (diff) | |
add BLE jammer, move NRF activities into submenu
Diffstat (limited to 'firmware/nrf24.cpp')
| -rw-r--r-- | firmware/nrf24.cpp | 198 |
1 files changed, 134 insertions, 64 deletions
diff --git a/firmware/nrf24.cpp b/firmware/nrf24.cpp index 8c1b4d9..78bab39 100644 --- a/firmware/nrf24.cpp +++ b/firmware/nrf24.cpp @@ -9,91 +9,161 @@ extern SPIClass *RADIO_SPI; extern RF24 radio1; extern RF24 radio2; +const byte bleChannels[] = {2, 26, 80}; + +const byte bluetoothChannels[] = { + 32, 34, 46, 48, 50, 52, + 0, 1, 2, 4, 6, 8, + 22, 24, 26, 28, 30, + 74, 76, 78, 80 +}; + void initNRF(RF24 &radio) { - radio.begin(RADIO_SPI); + if (!radio.begin(RADIO_SPI)) { + Serial.println("NRF not found"); + return; + } radio.setAutoAck(false); radio.stopListening(); - radio.setRetries(0, 0); + radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_2MBPS); -radio.setPALevel(RF24_PA_MAX); - radio.openWritingPipe(0xE7E7E7E7E7LL); -} - - -void jamChannels(const char* label, int startCh, int endCh) { - byte data1[32], data2[32]; - for (int i = 0; i < 32; i++) { - data1[i] = random(0, 256); - data2[i] = random(0, 256); - } - - for (int ch = startCh; ch <= endCh; ch++) { - // Status screen - u8g2.clearBuffer(); - u8g2.drawStr(0, 10, "Jamming:"); - u8g2.setCursor(60, 10); - u8g2.print(label); - u8g2.setCursor(0, 30); - u8g2.print("Channel: "); - u8g2.print(ch); - u8g2.sendBuffer(); - - unsigned long startTime = millis(); - while (millis() - startTime < JAM_DURATION) { - radio1.setChannel(ch); - radio1.stopListening(); - radio1.write(data1, sizeof(data1)); - delayMicroseconds(100); - - radio2.setChannel(ch); - radio2.stopListening(); - radio2.write(data2, sizeof(data2)); - delayMicroseconds(100); + Serial.println("NRF Initialized"); - } } -} - - -void nrfJammerSweep() -{ - static uint8_t ch1 = 0; - static uint8_t ch2 = 124; - uint8_t payload[32] = {0xFF}; - radio1.setChannel(ch1); - radio1.writeFast(payload, sizeof(payload)); - - radio2.setChannel(ch2); - radio2.writeFast(payload, sizeof(payload)); - - ch1++; - ch2--; - - if (ch1 > 124) ch1 = 0; - if (ch2 > 124) ch2 = 124; -} -void startNRFJammer() +//void startBleJammer() { +// initNRF(radio1); +// initNRF(radio2); +// +// Serial.println("NRF JAMMER STARTED"); +// +// const char payload[] = "xxxxxxxxxxxxxxxx"; +// +// u8g2.clearBuffer(); +// u8g2.drawStr(0, 10, "Jamming:"); +// u8g2.setCursor(60, 10); +// u8g2.print("Bluetooth"); +// u8g2.sendBuffer(); +// +// while(true) { +// +// // Channels (you can change this set) +// const byte channels[] = {2, 26, 80}; +// +// +// for (int i = 0; i < sizeof(channels); i++) { +// radio1.setChannel(channels[i]); +// radio1.write(&payload, sizeof(payload)); +// //radio2.setChannel(channels[i]); +// //radio2.write(&payload, sizeof(payload)); +// } +// +// if (btnBack()) +// { +// Serial.println("Jammer stopped"); +// return; +// } +// } +// +//} +// +//void startBluetoothJammer() +//{ +// initNRF(radio1); +// initNRF(radio2); +// +// Serial.println("NRF JAMMER STARTED"); +// +// const char payload[] = "xxxxxxxxxxxxxxxx"; +// +// u8g2.clearBuffer(); +// u8g2.drawStr(0, 10, "Jamming:"); +// u8g2.setCursor(60, 10); +// u8g2.print("Bluetooth"); +// u8g2.sendBuffer(); +// +// while(true) { +// +// // Channels (you can change this set) +// const byte channels[] = {32, 34, 46, 48, 50, 52, 0, 1, 2, 4, 6, 8, 22, 24, 26, 28, 30, 74, 76, 78, 80}; +// +// +// for (int i = 0; i < sizeof(channels); i++) { +// radio1.setChannel(channels[i]); +// radio1.write(&payload, sizeof(payload)); +// //radio2.setChannel(channels[i]); +// //radio2.write(&payload, sizeof(payload)); +// } +// +// if (btnBack()) +// { +// Serial.println("Jammer stopped"); +// return; +// } +// } +//} + +void startJammer(const char* name, const byte* channels, size_t channelCount) { initNRF(radio1); initNRF(radio2); Serial.println("NRF JAMMER STARTED"); - // nrfJammerSweep(); - jamChannels("Bluetooth", 0, 78); + const char payload[] = "xxxxxxxxxxxxxxxx"; - if (btnBack()) + u8g2.clearBuffer(); + u8g2.drawStr(0, 10, "Jamming:"); + u8g2.setCursor(60, 10); + u8g2.print(name); + u8g2.sendBuffer(); + + while (true) { - Serial.println("Jammer stopped"); - return; + for (size_t i = 0; i < channelCount; i++) + { + radio1.setChannel(channels[i]); + radio1.write(&payload, sizeof(payload)); + + // Optional second NRF + // radio2.setChannel(channels[i]); + // radio2.write(&payload, sizeof(payload)); + } + + if (btnBack()) + { + Serial.println("Jammer stopped"); + return; + } } +} - delayMicroseconds(200); +void NRFToolsMenu(int index) { + switch (index) { + case 0: + // startBleJammer(); + // BLE + startJammer( + "BLE", + bleChannels, + sizeof(bleChannels) + ); + + break; + case 1: + // startBluetoothJammer(); + // Bluetooth + startJammer( + "Bluetooth", + bluetoothChannels, + sizeof(bluetoothChannels) + ); + break; + } } |
