From 206ed229198be252a9ae94342b39618aaab55925 Mon Sep 17 00:00:00 2001 From: krolyxon Date: Thu, 14 May 2026 23:14:31 +0530 Subject: apply code formatting --- src/rf/cc1101.cpp | 535 ++++++++++++++++++++++++------------------------------ 1 file changed, 242 insertions(+), 293 deletions(-) (limited to 'src/rf/cc1101.cpp') 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 -#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 // ===== 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); + } } -- cgit v1.2.3