- Replace 11 per-frequency build environments with 3 role-based targets (production, debug, test) using shared [env] base section - Move LoRa frequency and sender-ID config from build flags into config.h so all variants build from the same source - Add -fstack-protector-strong, -D_FORTIFY_SOURCE=2, -Wformat-security - Add Unity test framework to lib_deps for pio test support - Add __pycache__/ to .gitignore
58 lines
1.7 KiB
INI
58 lines
1.7 KiB
INI
; PlatformIO Project Configuration File
|
||
;
|
||
; Build targets:
|
||
; production – serial off, light-sleep on (normal deployment)
|
||
; debug – serial + meter diag + state tracing (real meter, real data)
|
||
; test – synthetic meter data + payload codec self-test (no real meter needed)
|
||
;
|
||
; LoRa frequency and sender IDs are configured in include/config.h,
|
||
; NOT via build flags. Change them there before building.
|
||
|
||
[env]
|
||
platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.07/platform-espressif32.zip
|
||
board = ttgo-lora32-v1
|
||
framework = arduino
|
||
lib_deps =
|
||
sandeepmistry/LoRa@^0.8.0
|
||
bblanchon/ArduinoJson@^6.21.5
|
||
adafruit/Adafruit SSD1306@^2.5.9
|
||
adafruit/Adafruit GFX Library@^1.11.9
|
||
knolleary/PubSubClient@^2.8
|
||
throwtheswitch/Unity@^2.6.1
|
||
|
||
; --- Hardening flags for all builds ---
|
||
build_flags =
|
||
-fstack-protector-strong
|
||
-D_FORTIFY_SOURCE=2
|
||
-Wformat -Wformat-security
|
||
-Wno-format-truncation
|
||
|
||
; --- Production: serial off, light-sleep on ---
|
||
[env:production]
|
||
build_flags =
|
||
${env.build_flags}
|
||
-DSERIAL_DEBUG_MODE_FLAG=0
|
||
-DENABLE_LIGHT_SLEEP_IDLE=1
|
||
|
||
; --- Debug: serial + all diagnostics, real meter data ---
|
||
; Does NOT enable test mode — uses real meter + real LoRa.
|
||
[env:debug]
|
||
build_flags =
|
||
${env.build_flags}
|
||
-DSERIAL_DEBUG_MODE_FLAG=1
|
||
-DENABLE_LIGHT_SLEEP_IDLE=1
|
||
-DDEBUG_METER_DIAG
|
||
-DDD3_DEBUG
|
||
|
||
; --- Test: synthetic meter samples, payload codec self-test at boot ---
|
||
; Replaces real meter reading with fake 1 Hz data and publishes to test MQTT topic.
|
||
; Use for bench testing without a physical meter attached.
|
||
[env:test]
|
||
build_flags =
|
||
${env.build_flags}
|
||
-DSERIAL_DEBUG_MODE_FLAG=1
|
||
-DENABLE_TEST_MODE
|
||
-DPAYLOAD_CODEC_TEST
|
||
-DDEBUG_METER_DIAG
|
||
-DDD3_DEBUG
|