#ifndef CONFIG_H
#define CONFIG_H

// CC1101 #1 (315 MHz band)
#define CC1101_1_CS   7
#define CC1101_1_GDO0 4
#define CC1101_1_FREQ_MHZ 315.0f

// CC1101 #2 (433.92 MHz band)
#define CC1101_2_CS   8
#define CC1101_2_GDO0 5
#define CC1101_2_FREQ_MHZ 433.92f

// Shared SPI (FSPI default on ESP32-S3: 11=MOSI, 12=SCK, 13=MISO)
#define SPI_SCK_PIN 12
#define SPI_MISO_PIN 13
#define SPI_MOSI_PIN 11
#define SPI_SPEED_HZ 500000

// WiFi AP for read-only telemetry UI
#define WIFI_AP_SSID "killer"
#define WIFI_AP_PASS "password"   // simple demo password

// Web server
#define WEB_PORT 80

// Jamming configuration
#define JAMMING_ENABLED true           // Start jamming immediately on boot
// CC1101 only accepts 8 discrete power levels (index 0-7):
// { -30, -20, -15, -10, 0, 5, 7, 10 } dBm
#define JAM_POWER_LEVELS      8
#define DEFAULT_JAM_POWER_IDX 7        // index into power table (7 = 10 dBm, max)
#define JAM_NOISE_PATTERN_LEN 64

// External amplifier gain in dB (used only for display — does not affect CC1101 output)
#define DEFAULT_AMP_GAIN_DB   20

// Modulation parameters for jamming
// Deviation 380 kHz = CC1101 hardware maximum.
// Carson's rule BW ≈ 2*(380 + 125) ≈ 1010 kHz of noise per hop.
// With ~1 MHz per hop we get solid overlap between steps and leave no gaps.
#define JAM_BITRATE_KBPS 250.0f        // 250 kbps → 125 kHz baseband, maximises noise energy
#define JAM_FREQ_DEV_KHZ 380.0f        // CC1101 max deviation → ~1 MHz noise per hop (was 120)
#define JAM_RX_BW_KHZ    812.0f        // Maximum RX BW

// Frequency sweep — full coverage of all known car-key-fob sub-GHz bands
//
// Radio 1 (CC1101 #1) — 300–320 MHz  [CC1101 Band 1: 300–348 MHz]
//   Honda/Acura (US): 303.825 MHz
//   Chamberlain/LiftMaster: 310.0 MHz
//   Toyota/Lexus/Scion: 314.98 MHz
//   Ford/GM/Chrysler/Dodge/Jeep: 315.0 MHz
//   Linear Delta-3 / LiftMaster: 318.0 MHz
//
//   With 1 MHz/hop: 25 steps × 0.83 MHz spacing → solid overlap, 75ms full cycle at 3ms dwell
#define SWEEP_1_CENTER_MHZ  310.0f
#define SWEEP_1_SPAN_MHZ    20.0f      // 300–320 MHz
#define SWEEP_1_STEPS       25         // 0.83 MHz/step, well within 1 MHz hop bandwidth

// Radio 2 (CC1101 #2) — 390–436 MHz  [CC1101 Band 2: 387–464 MHz]
//   Chamberlain/LiftMaster: 390.0 MHz
//   Holtek-based remotes: 418.0 MHz
//   Somfy RTS / SMC 5326: 433.42 MHz
//   Global standard (BMW/VW/Audi/Mercedes/Hyundai/Kia…): 433.92 MHz
//   Nero Radio / some Asian fobs: 434.42 MHz
//
//   With 1 MHz/hop: 60 steps × 0.77 MHz spacing → no gaps, 180ms full cycle at 3ms dwell
#define SWEEP_2_CENTER_MHZ  413.0f
#define SWEEP_2_SPAN_MHZ    46.0f      // 390–436 MHz
#define SWEEP_2_STEPS       60         // increased from 47 for guaranteed overlap

// Dwell per hop — 3ms balances CC1101 lock time vs cycle speed
// Full cycle: R1 = 75ms, R2 = 180ms → any target frequency is jammed at least every 180ms
// Car fob TX window is typically 200–500ms so every transmission gets hit
#define SWEEP_DWELL_MS      3

// 0.96" SSD1306 OLED display — I2C via SW_I2C (any free GPIO)
// Wiring: VCC→3V3, GND→GND, SDA→GPIO17, SCL→GPIO18
#define OLED_SDA_PIN  17
#define OLED_SCL_PIN  18

// Rotary encoder — dial to cycle OLED pages
// Wiring: CLK→GPIO14, DT→GPIO21, GND→GND  (both pins use internal pull-ups)
#define ENC_CLK_PIN   14
#define ENC_DT_PIN    21

#endif
