diff options
Diffstat (limited to 'src/rf')
| -rw-r--r-- | src/rf/cc1101.cpp | 535 | ||||
| -rw-r--r-- | src/rf/nrf24.cpp | 359 |
2 files changed, 405 insertions, 489 deletions
diff --git a/src/rf/cc1101.cpp b/src/rf/cc1101.cpp index 50530f4..f9b16b7 100644 --- a/src/rf/cc1101.cpp +++ b/src/rf/cc1101.cpp @@ -1,10 +1,10 @@ -#include <Arduino.h> -#include "../libs/ELECHOUSE_CC1101_SRC_DRV.h" #include "cc1101.h" #include "../config.h" -#include "SPI.h" +#include "../libs/ELECHOUSE_CC1101_SRC_DRV.h" #include "../ui/display.h" #include "../utils/buttons.h" +#include "SPI.h" +#include <Arduino.h> // ===== CONFIG ===== #define RAW_BUF_MAX 512 @@ -26,383 +26,332 @@ float rxBW = 325.0; int powerLevel = 10; // ===== ISR ===== -void IRAM_ATTR pulseISR() -{ - unsigned long now = micros(); +void IRAM_ATTR pulseISR() { + unsigned long now = micros(); - if (!capturing) return; - if (pulseIndex >= RAW_BUF_MAX) return; + if (!capturing) + return; + if (pulseIndex >= RAW_BUF_MAX) + return; - unsigned long duration = now - lastEdgeTime; + unsigned long duration = now - lastEdgeTime; - if (duration < 150) return; + if (duration < 150) + return; - captureBuffer[pulseIndex++] = duration; - lastEdgeTime = now; + captureBuffer[pulseIndex++] = duration; + lastEdgeTime = now; } // ===== OOK SETUP ===== -void setupOOKMode() -{ - ELECHOUSE_cc1101.SetRx(); - ELECHOUSE_cc1101.setMHZ(currentFreq); - - ELECHOUSE_cc1101.setModulation(2); // ASK/OOK - ELECHOUSE_cc1101.setDRate(dataRate); - ELECHOUSE_cc1101.setDeviation(0); - ELECHOUSE_cc1101.setRxBW(rxBW); - ELECHOUSE_cc1101.setSyncMode(0); - ELECHOUSE_cc1101.setPA(powerLevel); +void setupOOKMode() { + ELECHOUSE_cc1101.SetRx(); + ELECHOUSE_cc1101.setMHZ(currentFreq); + + ELECHOUSE_cc1101.setModulation(2); // ASK/OOK + ELECHOUSE_cc1101.setDRate(dataRate); + ELECHOUSE_cc1101.setDeviation(0); + ELECHOUSE_cc1101.setRxBW(rxBW); + ELECHOUSE_cc1101.setSyncMode(0); + ELECHOUSE_cc1101.setPA(powerLevel); } // ===== INIT (LAZY, SAFE) ===== // ================= CC1101 INIT ================= -bool initCC1101() -{ - Serial.println(); - Serial.println("===== CC1101 INIT ====="); - - // ===== SPI ===== - SPI.begin( - cc1101_SCK, - cc1101_MISO, - cc1101_MOSI, - CC1101_CS - ); - - pinMode(CC1101_CS, OUTPUT); - digitalWrite(CC1101_CS, HIGH); - - delay(100); - - // ===== GDO ===== - ELECHOUSE_cc1101.setGDO( - CC1101_GDO0, - -1 - ); - - ELECHOUSE_cc1101.setSpiPin( - cc1101_SCK, - cc1101_MISO, - cc1101_MOSI, - CC1101_CS - ); - - // ===== DETECT ===== - Serial.println("Checking chip..."); - - if (!ELECHOUSE_cc1101.getCC1101()) - { - Serial.println("❌ CC1101 NOT FOUND"); - return false; - } +bool initCC1101() { + Serial.println(); + Serial.println("===== CC1101 INIT ====="); + + // ===== SPI ===== + SPI.begin(cc1101_SCK, cc1101_MISO, cc1101_MOSI, CC1101_CS); + + pinMode(CC1101_CS, OUTPUT); + digitalWrite(CC1101_CS, HIGH); + + delay(100); + + // ===== GDO ===== + ELECHOUSE_cc1101.setGDO(CC1101_GDO0, -1); + + ELECHOUSE_cc1101.setSpiPin(cc1101_SCK, cc1101_MISO, cc1101_MOSI, CC1101_CS); + + // ===== DETECT ===== + Serial.println("Checking chip..."); - Serial.println("✅ CC1101 FOUND"); + if (!ELECHOUSE_cc1101.getCC1101()) { + Serial.println("❌ CC1101 NOT FOUND"); + return false; + } - // ===== IMPORTANT ===== - // DO NOT CALL Init() - // it freezes on some ESP32-S3 setups + Serial.println("✅ CC1101 FOUND"); - // ===== MANUAL CONFIG ===== - ELECHOUSE_cc1101.setMHZ(currentFreq); + // ===== IMPORTANT ===== + // DO NOT CALL Init() + // it freezes on some ESP32-S3 setups - // 2 = ASK/OOK - ELECHOUSE_cc1101.setModulation(2); + // ===== MANUAL CONFIG ===== + ELECHOUSE_cc1101.setMHZ(currentFreq); - ELECHOUSE_cc1101.setDRate(dataRate); + // 2 = ASK/OOK + ELECHOUSE_cc1101.setModulation(2); - ELECHOUSE_cc1101.setRxBW(rxBW); + ELECHOUSE_cc1101.setDRate(dataRate); - ELECHOUSE_cc1101.setDeviation(0); + ELECHOUSE_cc1101.setRxBW(rxBW); - // disable sync requirement - ELECHOUSE_cc1101.setSyncMode(0); + ELECHOUSE_cc1101.setDeviation(0); - ELECHOUSE_cc1101.setPA(powerLevel); + // disable sync requirement + ELECHOUSE_cc1101.setSyncMode(0); - // async serial mode - ELECHOUSE_cc1101.setCCMode(0); + ELECHOUSE_cc1101.setPA(powerLevel); - // enter RX - ELECHOUSE_cc1101.SetRx(); + // async serial mode + ELECHOUSE_cc1101.setCCMode(0); - pinMode(CC1101_GDO0, INPUT); + // enter RX + ELECHOUSE_cc1101.SetRx(); - Serial.println("✅ RX MODE READY"); + pinMode(CC1101_GDO0, INPUT); - cc1101Inited = true; - return true; + Serial.println("✅ RX MODE READY"); + + cc1101Inited = true; + return true; } // ===== CAPTURE CONTROL ===== -void startCapture() -{ - pulseIndex = 0; - capturing = true; - lastEdgeTime = micros(); - - attachInterrupt( - digitalPinToInterrupt(CC1101_GDO0), - pulseISR, - CHANGE - ); - - Serial.println("Looking for RF... "); -} +void startCapture() { + pulseIndex = 0; + capturing = true; + lastEdgeTime = micros(); -bool isCC1101Ready() { - return cc1101Inited; + attachInterrupt(digitalPinToInterrupt(CC1101_GDO0), pulseISR, CHANGE); + + Serial.println("Looking for RF... "); } -void stopCapture() -{ - capturing = false; +bool isCC1101Ready() { return cc1101Inited; } + +void stopCapture() { + capturing = false; - detachInterrupt(digitalPinToInterrupt(CC1101_GDO0)); + detachInterrupt(digitalPinToInterrupt(CC1101_GDO0)); - Serial.println("Capture stopped"); + Serial.println("Capture stopped"); } // ===== DEBUG PRINT ===== -void printCapture() -{ - Serial.println("Captured pulses:"); +void printCapture() { + Serial.println("Captured pulses:"); - for (int i = 0; i < pulseIndex; i++) - { - Serial.println(captureBuffer[i]); - } + for (int i = 0; i < pulseIndex; i++) { + Serial.println(captureBuffer[i]); + } } - // ================= REPLAY ================= -void replaySignal() -{ - Serial.println(); - Serial.println("Replaying signal..."); +void replaySignal() { + Serial.println(); + Serial.println("Replaying signal..."); - stopCapture(); + stopCapture(); - ELECHOUSE_cc1101.SetTx(); + ELECHOUSE_cc1101.SetTx(); - pinMode(CC1101_GDO0, OUTPUT); + pinMode(CC1101_GDO0, OUTPUT); - for (int i = 0; i < pulseIndex; i++) - { - digitalWrite( - CC1101_GDO0, - (i % 2 == 0) ? HIGH : LOW - ); + for (int i = 0; i < pulseIndex; i++) { + digitalWrite(CC1101_GDO0, (i % 2 == 0) ? HIGH : LOW); - delayMicroseconds(captureBuffer[i]); - } + delayMicroseconds(captureBuffer[i]); + } - digitalWrite(CC1101_GDO0, LOW); + digitalWrite(CC1101_GDO0, LOW); - ELECHOUSE_cc1101.SetRx(); + ELECHOUSE_cc1101.SetRx(); - pinMode(CC1101_GDO0, INPUT); + pinMode(CC1101_GDO0, INPUT); - Serial.println("Replay complete"); + Serial.println("Replay complete"); } - -void captureAndDisplay() -{ - if (!cc1101Inited) - { - if (!initCC1101()) - { - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); - u8g2.drawStr(0, 20, "CC1101 Failed"); - u8g2.sendBuffer(); - return; - } +void captureAndDisplay() { + if (!cc1101Inited) { + if (!initCC1101()) { + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 20, "CC1101 Failed"); + u8g2.sendBuffer(); + return; } + } + + startCapture(); + + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 12, "CC1101 Capture"); + u8g2.drawStr(0, 28, "Waiting RF..."); + u8g2.drawStr(0, 60, "BACK = Exit"); + u8g2.sendBuffer(); - startCapture(); + unsigned long lastSignal = millis(); + int lastPulseCount = 0; + while (true) { + // signal detected + if (pulseIndex > lastPulseCount) { + lastPulseCount = pulseIndex; + lastSignal = millis(); + } + + // update OLED u8g2.clearBuffer(); u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 12, "CC1101 Capture"); - u8g2.drawStr(0, 28, "Waiting RF..."); - u8g2.drawStr(0, 60, "BACK = Exit"); + + u8g2.setCursor(0, 28); + u8g2.print("Pulses: "); + u8g2.print(pulseIndex); + + u8g2.setCursor(0, 42); + u8g2.print("Freq: "); + u8g2.print(currentFreq); + u8g2.print(" MHz"); + + if (pulseIndex > 0) { + u8g2.drawStr(0, 54, "Signal Detected"); + } else { + u8g2.drawStr(0, 54, "Waiting..."); + } + u8g2.sendBuffer(); - unsigned long lastSignal = millis(); - int lastPulseCount = 0; - - while (true) - { - // signal detected - if (pulseIndex > lastPulseCount) - { - lastPulseCount = pulseIndex; - lastSignal = millis(); - } - - // update OLED - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); - - u8g2.drawStr(0, 12, "CC1101 Capture"); - - u8g2.setCursor(0, 28); - u8g2.print("Pulses: "); - u8g2.print(pulseIndex); - - u8g2.setCursor(0, 42); - u8g2.print("Freq: "); - u8g2.print(currentFreq); - u8g2.print(" MHz"); - - if (pulseIndex > 0) - { - u8g2.drawStr(0, 54, "Signal Detected"); - } - else - { - u8g2.drawStr(0, 54, "Waiting..."); - } - - u8g2.sendBuffer(); - - // auto print once capture stabilizes - if (pulseIndex > 20 && (millis() - lastSignal > 1500)) - { - stopCapture(); - - Serial.println(); - Serial.println("===== RF CAPTURE ====="); - - for (int i = 0; i < pulseIndex; i++) - { - Serial.print(captureBuffer[i]); - Serial.print(", "); - } - - Serial.println(); - - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); - u8g2.drawStr(0, 15, "Capture Complete"); - - u8g2.setCursor(0, 35); -} -} -} + // auto print once capture stabilizes + if (pulseIndex > 20 && (millis() - lastSignal > 1500)) { + stopCapture(); + + Serial.println(); + Serial.println("===== RF CAPTURE ====="); + + for (int i = 0; i < pulseIndex; i++) { + Serial.print(captureBuffer[i]); + Serial.print(", "); + } -void handleMenu() -{ - if (!isCC1101Ready()) - { - if (!initCC1101()) - { - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); - u8g2.drawStr(0, 20, "CC1101 Failed"); - u8g2.sendBuffer(); - delay(1500); - return; - } + Serial.println(); + + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 15, "Capture Complete"); + + u8g2.setCursor(0, 35); } + } +} - pulseIndex = 0; +void handleMenu() { + if (!isCC1101Ready()) { + if (!initCC1101()) { + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 20, "CC1101 Failed"); + u8g2.sendBuffer(); + delay(1500); + return; + } + } - startCapture(); + pulseIndex = 0; - // ===== CAPTURE FOR 5 SEC ===== - unsigned long start = millis(); + startCapture(); - while (millis() - start < 5000) - { - noInterrupts(); - int count = pulseIndex; - interrupts(); + // ===== CAPTURE FOR 5 SEC ===== + unsigned long start = millis(); - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); + while (millis() - start < 5000) { + noInterrupts(); + int count = pulseIndex; + interrupts(); - u8g2.drawStr(0, 12, "RF Capturing..."); + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); - u8g2.setCursor(0, 30); - u8g2.print("Pulses: "); - u8g2.print(count); + u8g2.drawStr(0, 12, "RF Capturing..."); - u8g2.sendBuffer(); + u8g2.setCursor(0, 30); + u8g2.print("Pulses: "); + u8g2.print(count); - delay(50); - } + u8g2.sendBuffer(); - stopCapture(); + delay(50); + } - // ===== DISPLAY CAPTURE BUFFER ===== - int scroll = 0; + stopCapture(); - while (1) - { - noInterrupts(); - int count = pulseIndex; - interrupts(); + // ===== DISPLAY CAPTURE BUFFER ===== + int scroll = 0; - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_5x8_tr); + while (1) { + noInterrupts(); + int count = pulseIndex; + interrupts(); - u8g2.drawStr(0, 8, "Captured Buffer"); + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_5x8_tr); - // display 6 lines - for (int i = 0; i < 6; i++) - { - int idx = scroll + i; + u8g2.drawStr(0, 8, "Captured Buffer"); - if (idx >= count) - break; + // display 6 lines + for (int i = 0; i < 6; i++) { + int idx = scroll + i; - noInterrupts(); - unsigned long val = captureBuffer[idx]; - interrupts(); + if (idx >= count) + break; - char buf[32]; + noInterrupts(); + unsigned long val = captureBuffer[idx]; + interrupts(); - snprintf(buf, sizeof(buf), "%03d: %lu", idx, val); + char buf[32]; - u8g2.drawStr(0, 20 + (i * 8), buf); - } + snprintf(buf, sizeof(buf), "%03d: %lu", idx, val); - u8g2.sendBuffer(); + u8g2.drawStr(0, 20 + (i * 8), buf); + } - // scroll down - if (btnDown()) - { - if (scroll < count - 1) - scroll++; + u8g2.sendBuffer(); - delay(120); - } + // scroll down + if (btnDown()) { + if (scroll < count - 1) + scroll++; - // scroll up - if (btnUp()) - { - if (scroll > 0) - scroll--; + delay(120); + } - delay(120); - } + // scroll up + if (btnUp()) { + if (scroll > 0) + scroll--; - // replay - if (btnSelect()) - { - replaySignal(); - delay(300); - } + delay(120); + } - // exit - if (btnBack()) - { - delay(150); - return; - } + // replay + if (btnSelect()) { + replaySignal(); + delay(300); + } - delay(20); + // exit + if (btnBack()) { + delay(150); + return; } + + delay(20); + } } diff --git a/src/rf/nrf24.cpp b/src/rf/nrf24.cpp index b780725..fb6e1ee 100644 --- a/src/rf/nrf24.cpp +++ b/src/rf/nrf24.cpp @@ -1,8 +1,8 @@ -#include <Arduino.h> -#include <RF24.h> #include "nrf24.h" #include "../ui/display.h" #include "../utils/buttons.h" +#include <Arduino.h> +#include <RF24.h> #define JAM_DURATION 500 extern SPIClass *RADIO_SPI; @@ -11,239 +11,206 @@ extern RF24 radio2; // ============ CHANNELS ============= 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 -}; -const byte wifiChannels[] = { - 12, 17, 22, 27, 32, - 37, 42, 47, 52, 57, - 62, 67, 72 -}; -const byte usbWireless_channels[] = {40, 50, 60}; +const byte bluetoothChannels[] = {32, 34, 46, 48, 50, 52, 0, 1, 2, 4, 6, + 8, 22, 24, 26, 28, 30, 74, 76, 78, 80}; +const byte wifiChannels[] = {12, 17, 22, 27, 32, 37, 42, + 47, 52, 57, 62, 67, 72}; +const byte usbWireless_channels[] = {40, 50, 60}; const byte videoTransmitter_channels[] = {70, 75, 80}; -const byte zigbee_channels[] = {11, 15, 20, 25}; -const byte rc_channels[] = {1, 3, 5, 7}; - -void initNRF(RF24 &radio) -{ - 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, true); - radio.setDataRate(RF24_2MBPS); - radio.openWritingPipe(0xE7E7E7E7E7LL); - radio.setCRCLength(RF24_CRC_DISABLED); - Serial.println("NRF Initialized"); - +const byte zigbee_channels[] = {11, 15, 20, 25}; +const byte rc_channels[] = {1, 3, 5, 7}; + +void initNRF(RF24 &radio) { + 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, true); + radio.setDataRate(RF24_2MBPS); + radio.openWritingPipe(0xE7E7E7E7E7LL); + radio.setCRCLength(RF24_CRC_DISABLED); + Serial.println("NRF Initialized"); } - - -//void startBleJammer() { -// initNRF(radio1); -// initNRF(radio2); +// void startBleJammer() { +// initNRF(radio1); +// initNRF(radio2); // -// Serial.println("NRF JAMMER STARTED"); +// Serial.println("NRF JAMMER STARTED"); // -// const char payload[] = "xxxxxxxxxxxxxxxx"; +// const char payload[] = "xxxxxxxxxxxxxxxx"; // -// u8g2.clearBuffer(); -// u8g2.drawStr(0, 10, "Jamming:"); -// u8g2.setCursor(60, 10); -// u8g2.print("Bluetooth"); -// u8g2.sendBuffer(); +// u8g2.clearBuffer(); +// u8g2.drawStr(0, 10, "Jamming:"); +// u8g2.setCursor(60, 10); +// u8g2.print("Bluetooth"); +// u8g2.sendBuffer(); // -// while(true) { +// while(true) { // -// // Channels (you can change this set) -// const byte channels[] = {2, 26, 80}; +// // 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)); -// } +// 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; -// } -// } +// if (btnBack()) +// { +// Serial.println("Jammer stopped"); +// return; +// } +// } // -//} +// } // -//void startBluetoothJammer() +// void startBluetoothJammer() //{ -// initNRF(radio1); -// initNRF(radio2); +// initNRF(radio1); +// initNRF(radio2); // -// Serial.println("NRF JAMMER STARTED"); +// Serial.println("NRF JAMMER STARTED"); // -// const char payload[] = "xxxxxxxxxxxxxxxx"; +// const char payload[] = "xxxxxxxxxxxxxxxx"; // -// u8g2.clearBuffer(); -// u8g2.drawStr(0, 10, "Jamming:"); -// u8g2.setCursor(60, 10); -// u8g2.print("Bluetooth"); -// u8g2.sendBuffer(); +// u8g2.clearBuffer(); +// u8g2.drawStr(0, 10, "Jamming:"); +// u8g2.setCursor(60, 10); +// u8g2.print("Bluetooth"); +// u8g2.sendBuffer(); // -// while(true) { +// 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}; +// // 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)); -// } +// 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"); +// if (btnBack()) +// { +// Serial.println("Jammer stopped"); +// return; +// } +// } +// } - const char payload[] = "xxxxxxxxxxxxxxxx"; +void startJammer(const char *name, const byte *channels, size_t channelCount) { + initNRF(radio1); + initNRF(radio2); - u8g2.clearBuffer(); - u8g2.setFont(u8g2_font_6x10_tr); - u8g2.drawStr(0, 15, "NRF24 Jammer"); - u8g2.drawStr(0, 35, name); - u8g2.drawStr(0, 55, "BACK = Exit"); - u8g2.sendBuffer(); + Serial.println("NRF JAMMER STARTED"); - while (true) - { - for (size_t i = 0; i < channelCount; i++) - { - //radio1.setChannel(channels[i]); - //radio1.write(&payload, sizeof(payload)); + const char payload[] = "xxxxxxxxxxxxxxxx"; - // Optional second NRF - // radio2.setChannel(channels[i]); - // radio2.write(&payload, sizeof(payload)); + u8g2.clearBuffer(); + u8g2.setFont(u8g2_font_6x10_tr); + u8g2.drawStr(0, 15, "NRF24 Jammer"); + u8g2.drawStr(0, 35, name); + u8g2.drawStr(0, 55, "BACK = Exit"); + u8g2.sendBuffer(); + while (true) { + for (size_t i = 0; i < channelCount; i++) { + // radio1.setChannel(channels[i]); + // radio1.write(&payload, sizeof(payload)); - radio1.setChannel(channels[i]); - radio2.setChannel(channels[(i + 1) % channelCount]); + // Optional second NRF + // radio2.setChannel(channels[i]); + // radio2.write(&payload, sizeof(payload)); - radio1.writeFast(&payload, sizeof(payload)); - radio2.writeFast(&payload, sizeof(payload)); - } + radio1.setChannel(channels[i]); + radio2.setChannel(channels[(i + 1) % channelCount]); - if (btnBack()) - { - Serial.println("Jammer stopped"); - radio1.powerDown(); - radio2.powerDown(); - return; - } - } + radio1.writeFast(&payload, sizeof(payload)); + radio2.writeFast(&payload, sizeof(payload)); + } - //while (true) { - //for (size_t i = 0; i < channelCount; i++) - //{ - // radio1.setChannel(channels[i]); - // radio2.setChannel(channels[(i + 1) % channelCount]); + if (btnBack()) { + Serial.println("Jammer stopped"); + radio1.powerDown(); + radio2.powerDown(); + return; + } + } - // radio1.writeFast(&payload, sizeof(payload)); - // radio2.writeFast(&payload, sizeof(payload)); + // while (true) { + // for (size_t i = 0; i < channelCount; i++) + //{ + // radio1.setChannel(channels[i]); + // radio2.setChannel(channels[(i + 1) % channelCount]); - // radio1.txStandBy(1); - // radio2.txStandBy(1); + // radio1.writeFast(&payload, sizeof(payload)); + // radio2.writeFast(&payload, sizeof(payload)); - // delayMicroseconds(200); - //} + // radio1.txStandBy(1); + // radio2.txStandBy(1); + // delayMicroseconds(200); + //} - //if (btnBack()) - //{ - // Serial.println("Jammer stopped"); + // if (btnBack()) + //{ + // Serial.println("Jammer stopped"); - // radio1.powerDown(); - // radio2.powerDown(); + // radio1.powerDown(); + // radio2.powerDown(); - // return; - //} -//} + // return; + //} + //} } void NRFToolsMenu(int index) { - switch (index) { - case 0: - // startBleJammer(); - // BLE - startJammer( - "BLE", - bleChannels, - sizeof(bleChannels) / sizeof(bleChannels[0]) - ); - - break; - case 1: - // startBluetoothJammer(); - // Bluetooth - startJammer( - "Bluetooth", - bluetoothChannels, - sizeof(bluetoothChannels) / sizeof(bluetoothChannels[0]) - ); - break; - - case 2: - startJammer( - "WiFi", - wifiChannels, - sizeof(wifiChannels) / sizeof(wifiChannels[0]) - ); - break; - case 3: - startJammer( - "USB Wireless", - usbWireless_channels, - sizeof(usbWireless_channels) / sizeof(usbWireless_channels[0]) - ); - break; - case 4: - startJammer( - "Video TX", - videoTransmitter_channels, - sizeof(videoTransmitter_channels) / sizeof(videoTransmitter_channels[0]) - ); - break; - case 5: - break; - startJammer( - "RC", - rc_channels, - sizeof(rc_channels) / sizeof(rc_channels[0]) - ); - break; - case 6: - - break; + switch (index) { + case 0: + // startBleJammer(); + // BLE + startJammer("BLE", bleChannels, + sizeof(bleChannels) / sizeof(bleChannels[0])); + + break; + case 1: + // startBluetoothJammer(); + // Bluetooth + startJammer("Bluetooth", bluetoothChannels, + sizeof(bluetoothChannels) / sizeof(bluetoothChannels[0])); + break; + + case 2: + startJammer("WiFi", wifiChannels, + sizeof(wifiChannels) / sizeof(wifiChannels[0])); + break; + case 3: + startJammer("USB Wireless", usbWireless_channels, + sizeof(usbWireless_channels) / sizeof(usbWireless_channels[0])); + break; + case 4: + startJammer("Video TX", videoTransmitter_channels, + sizeof(videoTransmitter_channels) / + sizeof(videoTransmitter_channels[0])); + break; + case 5: + break; + startJammer("RC", rc_channels, + sizeof(rc_channels) / sizeof(rc_channels[0])); + break; + case 6: + + break; + } } - } |
