diff --git a/.gitignore b/.gitignore index be630af..029fb96 100644 --- a/.gitignore +++ b/.gitignore @@ -336,3 +336,4 @@ StaticElectrics/__vm/ /SmartFuseBox/__vm/Compile.vmps.xml /SmartFuseBox/__vm/Upload.vmps.xml /SmartFuseBox/__vm/.SmartFuseBox.vsarduino.h +/LocalOnly diff --git a/Docs/Commands.md b/Docs/Commands.md index d053c1f..ee1780c 100644 --- a/Docs/Commands.md +++ b/Docs/Commands.md @@ -58,6 +58,7 @@ These are commands used to configure the system settings and can only be sent fr | `F11` — Uptime | F11 | Returns system uptime as "days HH:MM:SS" (e.g. 2d 03:12:45). No params. | | `F12` — OTA Check / Apply | `F12` or `F12:apply=1` | Trigger an OTA firmware check against the latest GitHub release. Without params (or `apply=0`) checks only and returns current status. With `apply=1` downloads and applies the update if one is available (or queues apply if a check is already in progress). Response params: `v=` current firmware version, `av=` available version tag (empty if none found yet), `s=` OTA state string. **PCH only** — requires `OTA_AUTO_UPDATE`, ESP32 and WiFi in client mode. | | `F13` — OTA Status | `F13` | Query current OTA state without triggering a check. Response params: `v=` current firmware version, `av=` available version tag, `s=` OTA state string (`idle`, `checking`, `available`, `downloading`, `rebooting`, `failed`, `uptodate`), `auto=<0\|1>` whether auto-apply is enabled. **PCH only** — requires `OTA_AUTO_UPDATE`, ESP32 and WiFi in client mode. | +| `F14` — PinGuard Mode | `F14` or `F14:a=true` or `F14:a=false;b=false` | Read or write the persistent PinGuard mode flags stored in `SystemHeader::pinGuardFlags`. **Params:** `a=` — AllowAdvisory: when `true`, advisory (strapping/UART) pins are permitted. `b=` — Bypass: when `true`, all PinGuard checks are skipped (no validation at all). If both `a` and `b` are `true`, Bypass takes precedence and the system returns `Safe` immediately. Changes are persisted immediately via `saveHeader()` and take effect at runtime without reboot. **Response:** `a=<0\|1>` current AllowAdvisory state, `b=<0\|1>` current Bypass state. No params = read-only. | **OTA behaviour (F12 / F13):** @@ -187,6 +188,7 @@ E0:i=;mt=;md=;mu=;bin=<0|1> | `3` | GpsSensor | | `4` | SystemSensor | | `5` | BinaryPresenceSensor | +| `6` | VoltageSensor | **How external sensors receive value updates:** After boot the `name` field doubles as the sensor's serial command ID. An external device pushes readings by sending the name as a command: @@ -328,34 +330,90 @@ Route: `/api/config/{command}` (shares the config route) ## Sensor Commands — `S` `S0`–`S6` are configuration commands (persisted in EEPROM, **reboot required**). -`S7`–`S22` are live telemetry commands (sensor readings). +`S7`–`S23` are live telemetry commands (sensor readings). ### Sensor Configuration — `S0`–`S6` | Command | Example | Purpose | |---|---|---| -| `S0` — Get All Sensor Config | `S0` | Returns one `S0` frame per configured sensor: `i=;t=;n=;p0=;p1=;o0=;o1=;en=<0\|1>`. No params. | -| `S1` — Add / Update Sensor | `S1:i=0;t=1;o0=0;o1=0` | Add or update sensor at index `i`. Params: `i=;t=;o0=;o1=`. `t` = `SensorIdList` enum value. ACK carries `reboot=1`. | -| `S2` — Remove Sensor | `S2:0` | Remove (clear) sensor at index. Param: ``. ACK carries `reboot=1`. | +| `S0` — Get All Sensor Config | `S0` | Returns one `S0` frame per configured sensor: `i=;t=;n=;p0=;p1=;u0=;u1=;o0=;o1=;en=<0\|1>`. The labels in the response are read-only aliases: `p0`/`p1` = `pins[0]`/`pins[1]`; `u0`/`u1` = `options1[0]`/`options1[1]` (signed byte); `o0`/`o1` = `options2[0]`/`options2[1]` (signed 16-bit). No params. | +| `S1` — Add / Update Sensor | `S1:i=;t=;o0=;o1=` | Add or update sensor at index `i`. **Only four params are accepted:** `i` (sensor index), `t` (type — `SensorIdList` enum value), `o0` (writes `options1[0]`), `o1` (writes `options1[1]`). Pins and all other options must be set separately via `S4` and `S6` **after** `S1`. All four params are required. ACK carries `reboot=1`. | +| `S2` — Remove Sensor | `S2:v=0` | Remove (clear) sensor at index. Param: `v=`. ACK carries `reboot=1`. | | `S3` — Rename Sensor | `S3:0=Bilge Pump` | Rename sensor at index. Param: `=`. ACK carries `reboot=1`. | -| `S4` — Set Sensor Pin | `S4:i=0;s=0;v=34` | Set pin slot `s` (0..`ConfigMaxSensorPins-1`) for sensor `i` to GPIO `v`. Use `255` to clear. ACK carries `reboot=1`. | +| `S4` — Set Sensor Pin | `S4:i=0;s=0;v=34` | Set a GPIO pin for sensor `i`. **All three params are required:** `i` (sensor index), `s` (pin slot, 0..`ConfigMaxSensorPins-1`), `v` (GPIO pin number; `255` to clear). Each sensor type uses specific slots — see the sensor type table below. ACK carries `reboot=1`. | | `S5` — Set Sensor Enabled | `S5:0=1` | Enable (`1`) / disable (`0`) sensor at index. ACK carries `reboot=1`. | -| `S6` — Set Sensor Option | `S6:i=0;s=0;v=1` | Set `options1[s]` for sensor `i` to signed byte `v`. ACK carries `reboot=1`. | - -**Sensor type values (`t` for `S1`):** - -| Value | Name | Pins / Options | -|---|---|---| -| `0` | Water Sensor | `p0`=data pin, `p1`=power pin | -| `1` | DHT11 | `p0`=data pin | -| `2` | Light Sensor | `p0`=analogue pin; `o0=1` enables digital mode | -| `3` | GPS Sensor | Requires GPS serial configured via `setGpsSerial()` | -| `4` | System Sensor | No pin required | -| `5` | Binary Presence Sensor | `p0`=sensor pin; `o0`=active state (1=HIGH, 0=LOW); `o1`=onDetected action; use `S4` to set `p1`=onDetected payload, `p2`=onClear payload; use `S6` (slot=1) to set onClear action | +| `S6` — Set Sensor Option | `S6:i=0;s=0;o=0;v=1` | Set an option value for sensor `i`. **All four params are required:** `i` (sensor index), `s` (slot, 0 or 1), `o` (group: `0`=`options1` signed byte, `1`=`options2` signed 16-bit), `v` (value). See the sensor type table below for which slot/group each sensor uses. ACK carries `reboot=1`. | + +> **Understanding the field storage and response labels** +> +> Sensor configuration is stored in three arrays inside `SensorEntry`. The `S0` response exposes these with short labels for readability, but you **cannot use those labels as input to `S1`**: +> +> | `S0` response label | Underlying storage | Command to write it | +> |---|---|---| +> | `p0` | `pins[0]` | `S4:i=;s=0;v=` | +> | `p1` | `pins[1]` | `S4:i=;s=1;v=` | +> | `u0` | `options1[0]` (signed byte) | `S6:i=;s=0;o=0;v=` | +> | `u1` | `options1[1]` (signed byte) | `S6:i=;s=1;o=0;v=` | +> | `o0` | `options2[0]` (signed 16-bit) | `S6:i=;s=0;o=1;v=` | +> | `o1` | `options2[1]` (signed 16-bit) | `S6:i=;s=1;o=1;v=` | +> +> `S1` only writes `options1[0]` and `options1[1]` (its `o0`/`o1` params). Everything else requires a separate `S4` or `S6` call. + +**Sensor type values (`t` for `S1`) — field mapping:** + +The table below shows what each storage field means for each sensor type and which command sets it. + +| Value | Name | Field | Meaning | Command | +|---|---|---|---|---| +| `0` | Water Sensor | `pins[0]` | Data pin | `S4:i=;s=0;v=` | +| | | `pins[1]` | Power pin | `S4:i=;s=1;v=` | +| `1` | DHT11 | `pins[0]` | Data pin | `S4:i=;s=0;v=` | +| `2` | Light Sensor | `pins[0]` | Analogue pin | `S4:i=;s=0;v=` | +| | | `options1[0]` | `1`=digital mode, `0`=analogue mode | `S1:…;o0=;o1=0` | +| `3` | GPS Sensor | `pins[0]` | RX pin (**required** — `255` raises `GpsInvalidConfig`) | `S4:i=;s=0;v=` | +| | | `pins[1]` | TX pin (**required** — `255` raises `GpsInvalidConfig`) | `S4:i=;s=1;v=` | +| | | `options1[0]` | UART number: `1` or `2` (ESP32 only; other values default to `2`). Baud rate fixed at 9600. | `S6:i=;s=0;o=0;v=` | +| `4` | System Sensor | — | No pin or option required | — | +| `5` | Binary Presence Sensor | `pins[0]` | Sensor pin | `S4:i=;s=0;v=` | +| | | `pins[1]` | onDetected payload | `S4:i=;s=1;v=` | +| | | `pins[2]` | onClear payload | `S4:i=;s=2;v=` | +| | | `options1[0]` | Active state: `1`=HIGH, `0`=LOW | `S1:…;o0=;o1=0` | +| | | `options1[1]` | onDetected action | `S6:i=;s=1;o=0;v=` | +| | | `options2[1]` | onClear action | `S6:i=;s=1;o=1;v=` | +| `6` | Voltage Sensor | `pins[0]` | Analogue input pin | `S4:i=;s=0;v=` | +| | | `options1[0]` | ADC Vref in tenths of a volt (`50`=5.0 V, `33`=3.3 V; `0`=default 5.0 V) | `S6:i=;s=0;o=0;v=` | +| | | `options1[1]` | R2 in tenths of kΩ (`75`=7.5 kΩ; `0`=default 7.5 kΩ) | `S6:i=;s=1;o=0;v=` | +| | | `options2[0]` | R1 in whole kΩ (`30`=30 kΩ; `0`=default 30 kΩ) | `S6:i=;s=0;o=1;v=` | +| | | `options2[1]` | Low-voltage warning threshold in tenths of a volt (`114`=11.4 V; `0`=disabled) | `S6:i=;s=1;o=1;v=` | + +**Voltage sensor setup example (30 kΩ / 7.5 kΩ divider, 12 V system, warn below 11.4 V):** +``` +S1:i=1;t=6;o0=0;o1=0 # Add Voltage sensor (type 6) +S3:1=Battery # Name it +S4:i=1;s=0;v=34 # Analogue pin = 34 +S6:i=1;s=0;o=0;v=50 # Vref = 5.0 V (50 tenths) +S6:i=1;s=1;o=0;v=75 # R2 = 7.5 kΩ (75 tenths) +S6:i=1;s=0;o=1;v=30 # R1 = 30 kΩ +S6:i=1;s=1;o=1;v=114 # Low-voltage warn at 11.4 V (114 tenths); use 0 to disable +S5:1=1 # Enable sensor +C0 # Save to EEPROM — reboot to activate +``` Common sensor config errors: `Config not available`, `Invalid sensor index`, `Missing sensor index`, `Missing parameters`, `Missing name`, `Invalid pin slot`, `Invalid option slot`. -### Sensor Telemetry — `S7`–`S22` +**GPS setup example (ESP32 NodeMCU-32S — Nextion on UART2, GPS remapped to UART1 on pins 25/26):** +``` +S1:i=0;t=3;o0=0;o1=0 # Add GPS sensor (type 3) +S3:0=GPS # Name it +S4:i=0;s=0;v=25 # RX pin = 25 +S4:i=0;s=1;v=26 # TX pin = 26 +S6:i=0;s=0;o=0;v=1 # UART number = 1 (avoids conflict with Nextion on UART2) +S5:0=1 # Enable sensor +C0 # Save to EEPROM — reboot to activate +``` +> **Note:** If either RX or TX pin is `255` (disabled) the GPS sensor will **not** be created at boot and a `GpsInvalidConfig` warning will be raised. Both pins must be set before saving. + +### Sensor Telemetry — `S7`–`S23` | Command | Example | Purpose | |---|---|---| @@ -375,6 +433,7 @@ Common sensor config errors: `Config not available`, `Invalid sensor index`, `Mi | `S20` — GPS Satellites | `S20:v=8` | Number of connected satellites. | | `S21` — GPS Distance | `S21:v=1.23` | Total distance travelled. | | `S22` — Binary Presence | `S22:v=1;name=PIR` | Pin-change event: `v=1` detected, `v=0` clear. `name` = configured sensor name. | +| `S23` — Voltage | `S23:v=12.45;avg=12.41` | Voltage reading from the DC 0–25 V module. `v`=latest sample in volts (2 d.p.), `avg`=10-reading rolling average in volts (2 d.p.). Raises `LowVoltage` warning when `avg` drops below the configured threshold; clears when it recovers. | ### WiFi sensor commands Route: `/api/sensor/` diff --git a/Docs/PinGuard.md b/Docs/PinGuard.md new file mode 100644 index 0000000..93155f0 --- /dev/null +++ b/Docs/PinGuard.md @@ -0,0 +1,212 @@ +# PinGuard — Compile-Time Pin Validation + +PinGuard is a framework-owned compile-time pin validation layer that prevents invalid GPIO assignments from crashing or silently corrupting hardware initialisation on ESP32 targets. + +--- + +## Why It Exists + +Several ESP32 GPIOs are permanently unusable for certain purposes: + +- **Flash-reserved GPIOs** — wired internally to the SPI flash chip. Writing to them causes an immediate watchdog reset or flash corruption. +- **Input-only GPIOs** — silicon-level limitation; using them as outputs silently fails or hangs the peripheral driver (e.g. SPI). +- **Strapping / UART0 GPIOs** — held at specific logic levels during boot; driving them during initialisation can prevent the board from booting at all. + +Without a guard these errors are invisible: the config command returns `ok`, the value is saved to EEPROM, and the board enters a watchdog reset loop on the next boot with no actionable serial output. + +PinGuard catches these problems at the point the pin is *set*, not when the board crashes. + +--- + +## How It Works + +PinGuard is included automatically via `BoardConfig.h` — no include is needed in consumer files. The correct pin table is selected at compile time using the IDF-provided macros `CONFIG_IDF_TARGET_ESP32S3` and `CONFIG_IDF_TARGET_ESP32`, which are emitted by the Arduino-ESP32 toolchain based on the board selected in the IDE. No manual defines are required in `Local.h`. + +When a pin-setting command is received (e.g. `C4` SPI pins, `C32` SD card CS, `R11` relay pin), the firmware calls: + +```cpp +PinGuardResult result = PinGuard::validate(pin, PinUse::SpiSck); +``` + +If the result is `HardBlocked` or `AdvisoryBlocked` the setter returns `ConfigResult::InvalidPin` / `RelayResult::InvalidPin`, the command handler sends back `ACK:=Invalid pin:`, and a serial debug message names the blocked pin and the reason. + +--- + +## Validation Tiers + +| Tier | Result | Meaning | Overrideable? | +|---|---|---|---| +| **Hard** | `HardBlocked` | Flash-reserved or input-only used as output — will crash or silently fail | No | +| **Advisory** | `AdvisoryBlocked` | Strapping or UART0 pin — risky but sometimes legitimate | Yes — via `F14` AllowAdvisory mode | +| **Safe** | `Safe` | No restriction | — | +| **Disabled** | `Disabled` | Pin == `0xFF` (`PinDisabled`) — not fitted, no check performed | — | + +The advisory and bypass behaviour is controlled by the persistent `pinGuardFlags` system setting — see [PinGuard System Mode](#pinGuard-system-mode) below. + +--- + +## Pin Use Types + +| `PinUse` value | Requires output-capable GPIO? | Typical caller | +|---|---|---| +| `Output` | Yes | Generic digital output, buzzer | +| `Input` | No | Generic digital / analogue input | +| `SpiSck` | Yes | `C4` SPI clock | +| `SpiMosi` | Yes | `C4` SPI MOSI | +| `SpiMiso` | No | `C4` SPI MISO | +| `SpiCs` | Yes | `C32` SD card chip-select | +| `Relay` | Yes | `R11` relay pin | +| `Sensor` | No | Sensor signal pin | + +--- + +## Board Pin Tables + +### Classic ESP32 (NodeMCU-32S, DevKitC, and all other ESP32 boards) + +Selected when `CONFIG_IDF_TARGET_ESP32` is defined by the toolchain. + +#### Hard-blocked (all uses) + +| GPIO | Reason | +|---|---| +| 6, 7, 8, 9, 10, 11 | Connected to internal SPI flash — any access causes immediate crash | + +#### Hard-blocked for output uses only (safe for input) + +| GPIO | Reason | +|---|---| +| 34, 35, 36, 37, 38, 39 | Input-only silicon — cannot drive output | + +#### Advisory (all uses) + +| GPIO | Reason | +|---|---| +| 0 | Strapping pin — held low during flash download mode | +| 1 | UART0 TX — used by serial debug output | +| 2 | Strapping pin — must be low at boot for flash download | +| 3 | UART0 RX — used by serial debug input | +| 5 | Strapping pin — controls SDIO slave timing | +| 12 | Strapping pin — selects flash voltage; held low at boot | +| 15 | Strapping pin — controls UART0 log output during boot | + +#### Recommended safe output pins + +14, 16, 17, 21, 22, 25, 26, 27, 32, 33 + +#### Recommended SPI assignment (NodeMCU-32S) + +| Signal | GPIO | +|---|---| +| SCK | 18 | +| MOSI | 23 | +| MISO | 19 | +| CS | 5 *(advisory — prefer 15 or 27)* | + +--- + +### ESP32-S3 Dev Module + +Selected when `CONFIG_IDF_TARGET_ESP32S3` is defined by the toolchain. + +#### Hard-blocked (all uses) + +| GPIO | Reason | +|---|---| +| 26, 27, 28, 29, 30, 31, 32 | Connected to internal Octal flash/PSRAM — any access causes immediate crash | + +#### Hard-blocked for output uses only (safe for input) + +| GPIO | Reason | +|---|---| +| 45, 46 | Input-only silicon on S3 | + +#### Advisory (all uses) + +| GPIO | Reason | +|---|---| +| 0 | Strapping pin | +| 3 | UART0 RX | +| 19 | USB D− | +| 20 | USB D+ | +| 45 | Boot-mode strapping | +| 46 | Boot-mode strapping | + +--- + +## Crash Loop Guard + +PinGuard prevents *new* bad pins from being saved, but a board that already has invalid pins in EEPROM will enter a watchdog reset loop before any serial handler is registered. + +The **crash loop guard** in `PowerControlHubApp::setup()` detects and breaks this cycle automatically: + +1. `ConfigManager::incrementCrashCounter()` is called **immediately after `ConfigManager::load()`**, before any hardware initialisation. The counter is persisted to EEPROM so a watchdog reset cannot undo it. +2. If `crashCounter >= CrashCounterThreshold` (default **3**), the firmware: + - Sends `ERR:Crash loop detected — resetting config to defaults` on the serial port. + - Calls `ConfigManager::resetToDefaults()` and saves to EEPROM. + - Raises the `DefaultConfigurationFuseBox` warning. + - Continues booting with safe default config. +3. At the very end of `setup()`, after `SystemInitialized` is sent, `ConfigManager::resetCrashCounter()` is called. This only executes if the full initialisation sequence completed without a watchdog reset. + +### Timeline example + +| Boot | crashCounter after increment | Outcome | +|---|---|---| +| 1 | 1 | WDT reset during SPI init — counter never cleared | +| 2 | 2 | WDT reset again — counter never cleared | +| 3 | 3 ≥ threshold | Config reset to defaults, boot completes, counter cleared to 0 | + +The threshold is defined in `ConfigManager.h`: + +```cpp +constexpr uint8_t CrashCounterThreshold = 3; +``` + +--- + +## PinGuard System Mode + +The PinGuard mode is a persistent bitmask stored in `SystemHeader::pinGuardFlags` and controlled via the `F14` serial command. It takes effect immediately at runtime without requiring a reboot and is also applied on every boot before any hardware initialisation. + +### Mode flags + +| Flag | Bit | `F14` param | Effect | +|---|---|---|---| +| `None` | `0x00` | — | Default strict mode — advisory pins are blocked | +| `AllowAdvisory` | `0x01` | `a=true` | Advisory (strapping/UART) pins are permitted | +| `Bypass` | `0x02` | `b=true` | All PinGuard checks are skipped — `validate()` always returns `Safe` | + +> **Note:** If both `AllowAdvisory` and `Bypass` are set, `Bypass` takes precedence and `validate()` returns `Safe` immediately. Hard-blocked pins (flash-reserved) are never automatically safe — `Bypass` is an explicit opt-out and should only be used when the board design intentionally uses risky GPIOs. + +### Command examples + +``` +F14 # read current mode — returns a=0;b=0 +F14:a=true # allow advisory pins, bypass off +F14:a=false;b=false # reset to strict mode (same as default) +F14:b=true # bypass all checks +``` + +### Recovery from invalid saved pins + +If a user saves invalid pins to EEPROM and the board enters a watchdog reset loop, the crash loop guard (see above) will reset the entire config — including `pinGuardFlags` — to safe defaults after three consecutive crashes. There is no need to use `Bypass` mode for recovery; the crash guard handles it automatically. + +The user can also send `C2` (Config Reset) over serial to reset to defaults at any time. + +--- + +## Adding a New Board Variant + +1. Open `PowerControlHub/PinGuard.h`. +2. Add a new `#elif defined(CONFIG_IDF_TARGET_)` block before the existing `#elif defined(CONFIG_IDF_TARGET_ESP32)` fallback. +3. Populate `_pinTable[]`, `_pinTableSize`, `_inputOnlyMin`, and `_inputOnlyMax` for the new target. +4. No changes to `Local.h` or any consumer file are needed — the toolchain macro selects the table automatically. + +--- + +## Related + +- [`PinGuard.h`](../PowerControlHub/PinGuard.h) — implementation +- [`ConfigManager.h`](../PowerControlHub/ConfigManager.h) — `CrashCounterThreshold`, `incrementCrashCounter`, `resetCrashCounter` +- [`Docs/Commands.md`](Commands.md) — `C4`, `C32`, `R11` pin-setting commands +- [`Docs/Warnings.md`](Warnings.md) — `SpiPinConfigError`, `DefaultConfigurationFuseBox` diff --git a/PowerControlHub.sln b/PowerControlHub.sln index 290cc91..50f23c4 100644 --- a/PowerControlHub.sln +++ b/PowerControlHub.sln @@ -6,7 +6,7 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{B2F18220-A117-4398-ABED-D0C31F1F5844}" ProjectSection(SolutionItems) = preProject ..\Docs\BluetoothBle.md = ..\Docs\BluetoothBle.md - ..\Docs\Commands.md = ..\Docs\Commands.md + Docs\Commands.md = Docs\Commands.md ..\Docs\DateTime.md = ..\Docs\DateTime.md ..\Docs\LedManager.md = ..\Docs\LedManager.md ..\LICENSE = ..\LICENSE @@ -29,11 +29,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestData", "TestData", "{AB95BD17-B702-40AE-B173-81CA10BAB122}" ProjectSection(SolutionItems) = preProject - ..\TestData\config-commands.txt = ..\TestData\config-commands.txt - ..\TestData\README.md = ..\TestData\README.md - ..\TestData\RESPONSE_FORMAT.md = ..\TestData\RESPONSE_FORMAT.md - ..\TestData\test-commands-wifi.txt = ..\TestData\test-commands-wifi.txt - ..\TestData\test-commands.txt = ..\TestData\test-commands.txt + TestData\config-commands.txt = TestData\config-commands.txt + TestData\README.md = TestData\README.md + TestData\RESPONSE_FORMAT.md = TestData\RESPONSE_FORMAT.md + TestData\test-commands-wifi.txt = TestData\test-commands-wifi.txt + TestData\test-commands.txt = TestData\test-commands.txt EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PowerControlHub", "PowerControlHub\PowerControlHub.vcxproj", "{BF57E525-5F6C-4BC1-9C83-B7ECAC52B23C}" diff --git a/PowerControlHub/BoardConfig.h b/PowerControlHub/BoardConfig.h index bb6ad29..3ed62e9 100644 --- a/PowerControlHub/BoardConfig.h +++ b/PowerControlHub/BoardConfig.h @@ -93,3 +93,9 @@ #undef OTA_AUTO_UPDATE #endif #endif + +// ─── Pin Guard ─────────────────────────────────────────────────────────────── +// PinGuard selects ESP32 pin validation tables using IDF target macros +// (for example CONFIG_IDF_TARGET_ESP32S3 / CONFIG_IDF_TARGET_ESP32). +// Non-ESP32 boards get a no-op implementation. +#include "PinGuard.h" diff --git a/PowerControlHub/Config.h b/PowerControlHub/Config.h index e34d351..fd86d82 100644 --- a/PowerControlHub/Config.h +++ b/PowerControlHub/Config.h @@ -57,7 +57,7 @@ struct SystemHeader { uint8_t headerVersion; // offset 10 — for future header migrations uint8_t crashCounter; // offset 11 uint8_t lastResetReason; // offset 12 - uint8_t safeModeFlagsf; // offset 13 + uint8_t pinGuardFlags; // offset 13 — PinGuardMode bitmask (see PinGuard.h) uint8_t reserved[16]; // offset 14 — reserved[0] = OTA flags (see OtaFlagAutoApply) uint16_t checksum; // offset 30 — always last } __attribute__((packed)); // = 32 bytes diff --git a/PowerControlHub/ConfigCommandHandler.cpp b/PowerControlHub/ConfigCommandHandler.cpp index aafd83e..22c3c8e 100644 --- a/PowerControlHub/ConfigCommandHandler.cpp +++ b/PowerControlHub/ConfigCommandHandler.cpp @@ -346,6 +346,14 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha else { result = _configController->setXpdzTonePin(pin); + + if (result == ConfigResult::InvalidPin) + { + char dbg[40]; + snprintf(dbg, sizeof(dbg), "XpdzTone pin %u blocked: %s", pin, + reinterpret_cast(PinGuard::reasonString(PinGuard::validate(pin, PinUse::Output)))); + sender->sendDebug(dbg, "C6"); + } } } else @@ -367,6 +375,13 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha else { result = _configController->setSpiPins(sckPin, mosiPin, misoPin); + + if (result == ConfigResult::InvalidPin) + { + char dbg[64]; + snprintf(dbg, sizeof(dbg), "SPI pin blocked: sck=%u mosi=%u miso=%u", sckPin, mosiPin, misoPin); + sender->sendDebug(dbg, "C4"); + } } } else @@ -403,6 +418,13 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha else { result = _configController->setHw479RgbPins(rPin, gPin, bPin); + + if (result == ConfigResult::InvalidPin) + { + char dbg[56]; + snprintf(dbg, sizeof(dbg), "RGB pin blocked: r=%u g=%u b=%u", rPin, gPin, bPin); + sender->sendDebug(dbg, "C8"); + } } } else @@ -541,6 +563,13 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha else { result = _configController->setRtcPins(dataPin, clockPin, resetPin); + + if (result == ConfigResult::InvalidPin) + { + char dbg[64]; + snprintf(dbg, sizeof(dbg), "RTC pin blocked: dat=%u clk=%u rst=%u", dataPin, clockPin, resetPin); + sender->sendDebug(dbg, "C18"); + } } } else @@ -791,6 +820,14 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha { uint8_t csPin = static_cast(atoi(params[0].value)); result = _configController->setSdCardCsPin(csPin); + + if (result == ConfigResult::InvalidPin) + { + char dbg[40]; + snprintf(dbg, sizeof(dbg), "SD CS pin %u blocked: %s", csPin, + reinterpret_cast(PinGuard::reasonString(PinGuard::validate(csPin, PinUse::SpiCs)))); + sender->sendDebug(dbg, "C32"); + } } else { @@ -979,6 +1016,9 @@ bool ConfigCommandHandler::handleCommand(SerialCommandManager* sender, const cha case ConfigResult::InvalidParameter: sendAckErr(sender, command, F("Invalid parameter"), ¶ms[0]); return true; + case ConfigResult::InvalidPin: + sendAckErr(sender, command, F("Invalid pin"), ¶ms[0]); + return true; case ConfigResult::BluetoothInitFailed: sendAckErr(sender, command, F("Bluetooth init failed"), ¶ms[0]); return true; diff --git a/PowerControlHub/ConfigController.cpp b/PowerControlHub/ConfigController.cpp index 66afcd2..e670d45 100644 --- a/PowerControlHub/ConfigController.cpp +++ b/PowerControlHub/ConfigController.cpp @@ -453,6 +453,9 @@ ConfigResult ConfigController::setSdCardCsPin(const uint8_t csPin) if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(csPin, PinUse::SpiCs))) + return ConfigResult::InvalidPin; + _config->sdCard.csPin = csPin; return ConfigResult::Success; } @@ -463,6 +466,13 @@ ConfigResult ConfigController::setSpiPins(const uint8_t sckPin, const uint8_t mo if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(sckPin, PinUse::SpiSck)) || + PinGuard::isBlocked(PinGuard::validate(mosiPin, PinUse::SpiMosi)) || + PinGuard::isBlocked(PinGuard::validate(misoPin, PinUse::SpiMiso))) + { + return ConfigResult::InvalidPin; + } + _config->spiPins.sckPin = sckPin; _config->spiPins.mosiPin = mosiPin; _config->spiPins.misoPin = misoPin; @@ -488,6 +498,9 @@ ConfigResult ConfigController::setXpdzTonePin(const uint8_t pin) if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(pin, PinUse::Output))) + return ConfigResult::InvalidPin; + _config->xpdzTone.pin = pin; return ConfigResult::Success; } @@ -498,6 +511,13 @@ ConfigResult ConfigController::setHw479RgbPins(const uint8_t rPin, const uint8_t if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(rPin, PinUse::Output)) || + PinGuard::isBlocked(PinGuard::validate(gPin, PinUse::Output)) || + PinGuard::isBlocked(PinGuard::validate(bPin, PinUse::Output))) + { + return ConfigResult::InvalidPin; + } + _config->hw479Rgb.rPin = rPin; _config->hw479Rgb.gPin = gPin; _config->hw479Rgb.bPin = bPin; @@ -510,6 +530,13 @@ ConfigResult ConfigController::setRtcPins(const uint8_t dataPin, const uint8_t c if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(dataPin, PinUse::Output)) || + PinGuard::isBlocked(PinGuard::validate(clockPin, PinUse::Output)) || + PinGuard::isBlocked(PinGuard::validate(resetPin, PinUse::Output))) + { + return ConfigResult::InvalidPin; + } + _config->rtc.dataPin = dataPin; _config->rtc.clockPin = clockPin; _config->rtc.resetPin = resetPin; @@ -540,6 +567,9 @@ ConfigResult ConfigController::setNextionRxPin(const uint8_t rxPin) if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(rxPin, PinUse::Input))) + return ConfigResult::InvalidPin; + _config->nextion.rxPin = rxPin; return ConfigResult::Success; } @@ -549,6 +579,9 @@ ConfigResult ConfigController::setNextionTxPin(const uint8_t txPin) if (_config == nullptr) return ConfigResult::InvalidConfig; + if (PinGuard::isBlocked(PinGuard::validate(txPin, PinUse::Output))) + return ConfigResult::InvalidPin; + _config->nextion.txPin = txPin; return ConfigResult::Success; } diff --git a/PowerControlHub/ConfigController.h b/PowerControlHub/ConfigController.h index 6d23311..81f5b9f 100644 --- a/PowerControlHub/ConfigController.h +++ b/PowerControlHub/ConfigController.h @@ -36,7 +36,8 @@ enum class ConfigResult : uint8_t InvalidCommand = 6, InvalidParameter = 7, BluetoothInitFailed = 8, - WifiInitFailed = 9 + WifiInitFailed = 9, + InvalidPin = 10 }; class ConfigController diff --git a/PowerControlHub/ConfigManager.cpp b/PowerControlHub/ConfigManager.cpp index 2e42818..794e3fb 100644 --- a/PowerControlHub/ConfigManager.cpp +++ b/PowerControlHub/ConfigManager.cpp @@ -453,6 +453,14 @@ bool ConfigManager::saveHeader() #endif } +void ConfigManager::incrementCrashCounter() +{ + if (_hdr.crashCounter < 0xFF) + _hdr.crashCounter++; + + saveHeader(); +} + void ConfigManager::resetCrashCounter() { _hdr.crashCounter = 0; @@ -465,6 +473,12 @@ SystemHeader* ConfigManager::getHeaderPtr() return &_hdr; } +void ConfigManager::setPinGuardFlags(uint8_t flags) +{ + _hdr.pinGuardFlags = flags; + saveHeader(); +} + uint16_t ConfigManager::calcHeaderChecksum(const SystemHeader& h) { const uint8_t* p = reinterpret_cast(&h); diff --git a/PowerControlHub/ConfigManager.h b/PowerControlHub/ConfigManager.h index daa8aa9..4cc1e0b 100644 --- a/PowerControlHub/ConfigManager.h +++ b/PowerControlHub/ConfigManager.h @@ -55,9 +55,16 @@ class ConfigManager // For debug or UI: how many bytes of EEPROM are available static size_t availableEEPROMBytes(); + // Increment crash counter and persist immediately. Call at the very start of + // setup(), before any hardware initialisation, so a watchdog reset is counted. + static void incrementCrashCounter(); + // Call after full system initialisation succeeds to reset the crash counter static void resetCrashCounter(); // Access current in-memory system header static SystemHeader* getHeaderPtr(); + + // Update pinGuardFlags in the system header and persist immediately. + static void setPinGuardFlags(uint8_t flags); }; \ No newline at end of file diff --git a/PowerControlHub/ConfigNetworkHandler.cpp b/PowerControlHub/ConfigNetworkHandler.cpp index 012d16a..cda232b 100644 --- a/PowerControlHub/ConfigNetworkHandler.cpp +++ b/PowerControlHub/ConfigNetworkHandler.cpp @@ -845,7 +845,7 @@ CommandResult ConfigNetworkHandler::handleRequest(const char* method, } else if (SystemFunctions::commandMatches(command, ExternalSensorRemove)) { - // E3: + // E3:v= Config* config = ConfigManager::getConfigPtr(); if (config == nullptr) { @@ -857,11 +857,20 @@ CommandResult ConfigNetworkHandler::handleRequest(const char* method, } else { - uint8_t idx = static_cast(atoi(params[0].value)); - if (idx >= ConfigMaxSensors || idx >= config->remoteSensors.count) + uint8_t idx; + if (!getParamValueU8t(params, paramCount, "v", idx)) + { + result = ConfigResult::InvalidParameter; + } + else if (idx >= ConfigMaxSensors) { result = ConfigResult::InvalidParameter; } + else if (idx >= config->remoteSensors.count) + { + // Already absent — treat as success + result = ConfigResult::Success; + } else { for (uint8_t j = idx; j + 1 < config->remoteSensors.count; j++) diff --git a/PowerControlHub/ExternalSensorConfigCommandHandler.h b/PowerControlHub/ExternalSensorConfigCommandHandler.h index 6d40bb1..2456d97 100644 --- a/PowerControlHub/ExternalSensorConfigCommandHandler.h +++ b/PowerControlHub/ExternalSensorConfigCommandHandler.h @@ -213,21 +213,28 @@ class ExternalSensorConfigCommandHandler : public virtual BaseCommandHandler, pu if (SystemFunctions::commandMatches(command, ExternalSensorRemove)) { - // E3: - if (paramCount < 1) + // E3:v= + uint8_t idx; + if (paramCount < 1 || !getParamValueU8t(params, paramCount, "v", idx)) { sendAckErr(sender, command, F("Missing sensor index")); return true; } - uint8_t idx = static_cast(atoi(params[0].value)); - - if (idx >= ConfigMaxSensors || idx >= config->remoteSensors.count) + if (idx >= ConfigMaxSensors) { sendAckErr(sender, command, F("Invalid sensor index")); return true; } + // Index beyond current count means the slot is already absent — treat as success. + if (idx >= config->remoteSensors.count) + { + StringKeyValue reboot = makeParam("reboot", 1); + sendAckOk(sender, command, &reboot); + return true; + } + RemoteSensorConfig& entry = config->remoteSensors.sensors[idx]; entry.sensorId = static_cast(0); memset(entry.name, 0, sizeof(entry.name)); diff --git a/PowerControlHub/ExternalSensorNetworkHandler.cpp b/PowerControlHub/ExternalSensorNetworkHandler.cpp index bf8fe09..48ff89a 100644 --- a/PowerControlHub/ExternalSensorNetworkHandler.cpp +++ b/PowerControlHub/ExternalSensorNetworkHandler.cpp @@ -156,18 +156,27 @@ CommandResult ExternalSensorNetworkHandler::handleRequest(const char* method, } else if (SystemFunctions::commandMatches(command, ExternalSensorRemove)) { - // E3: + // E3:v= if (paramCount < 1) { result = ConfigResult::InvalidParameter; } else { - uint8_t idx = static_cast(atoi(params[0].value)); - if (idx >= ConfigMaxSensors || idx >= config->remoteSensors.count) + uint8_t idx; + if (!getParamValueU8t(params, paramCount, "v", idx)) { result = ConfigResult::InvalidParameter; } + else if (idx >= ConfigMaxSensors) + { + result = ConfigResult::InvalidParameter; + } + else if (idx >= config->remoteSensors.count) + { + // Already absent — treat as success + result = ConfigResult::Success; + } else { for (uint8_t j = idx; j + 1 < config->remoteSensors.count; j++) diff --git a/PowerControlHub/Local.h b/PowerControlHub/Local.h index 52f4f51..b37ac1e 100644 --- a/PowerControlHub/Local.h +++ b/PowerControlHub/Local.h @@ -47,6 +47,12 @@ #define ESP32 #endif +// ─── ESP32 Pin Guard ───────────────────────────────────────────────────────── +// PinGuard.h selects the correct pin table automatically using the IDF-provided +// CONFIG_IDF_TARGET_ESP32S3 / CONFIG_IDF_TARGET_ESP32 macros, which are set by +// the Arduino-ESP32 toolchain based on the board chosen in the IDE. No manual +// sub-variant selection is needed here. + // CONFIGURE_SPI gates the board-specific SPI.begin(sck, miso, mosi) overload used // by cores that support custom pin assignment at bus-init time (e.g. ESP32). diff --git a/PowerControlHub/MicroSdDriver.cpp b/PowerControlHub/MicroSdDriver.cpp index 2b5ea63..8742296 100644 --- a/PowerControlHub/MicroSdDriver.cpp +++ b/PowerControlHub/MicroSdDriver.cpp @@ -95,6 +95,25 @@ void MicroSdDriver::beginInitialize(uint8_t misoPin, uint8_t mosiPin, uint8_t sc _lastInitAttemptTime = 0; _cardPresent = false; + // Guard: reject any pin that PinGuard hard-blocks for SPI use. + // This catches invalid ESP32 GPIOs (flash-reserved, input-only) that would + // hang or crash the SPI bus initialisation. + if (PinGuard::validate(_sckPin, PinUse::SpiSck) == PinGuardResult::HardBlocked || + PinGuard::validate(_mosiPin, PinUse::SpiMosi) == PinGuardResult::HardBlocked || + PinGuard::validate(_misoPin, PinUse::SpiMiso) == PinGuardResult::HardBlocked || + PinGuard::validate(_csPin, PinUse::SpiCs) == PinGuardResult::HardBlocked) + { + _initState = MicroSdInitState::NotInitialized; + + if (_warningManager != nullptr) + { + if (!_warningManager->isWarningActive(WarningType::SpiPinConfigError)) + _warningManager->raiseWarning(WarningType::SpiPinConfigError); + } + + return; + } + pinMode(_csPin, OUTPUT); digitalWrite(_csPin, HIGH); diff --git a/PowerControlHub/NextionConfigCommandHandler.h b/PowerControlHub/NextionConfigCommandHandler.h index ad958f7..beeda53 100644 --- a/PowerControlHub/NextionConfigCommandHandler.h +++ b/PowerControlHub/NextionConfigCommandHandler.h @@ -143,9 +143,19 @@ class NextionConfigCommandHandler : public virtual BaseCommandHandler, public Ba { uint8_t pin; if (!getParamValueU8t(params, paramCount, "v", pin)) + { result = ConfigResult::InvalidParameter; + } else + { result = _configController->setNextionRxPin(pin); + if (result == ConfigResult::InvalidPin) + { + char dbg[40]; + snprintf(dbg, sizeof(dbg), "Nextion RX pin %u blocked", pin); + sender->sendDebug(dbg, "N3"); + } + } } else { @@ -158,9 +168,19 @@ class NextionConfigCommandHandler : public virtual BaseCommandHandler, public Ba { uint8_t pin; if (!getParamValueU8t(params, paramCount, "v", pin)) + { result = ConfigResult::InvalidParameter; + } else + { result = _configController->setNextionTxPin(pin); + if (result == ConfigResult::InvalidPin) + { + char dbg[40]; + snprintf(dbg, sizeof(dbg), "Nextion TX pin %u blocked", pin); + sender->sendDebug(dbg, "N4"); + } + } } else { @@ -206,6 +226,9 @@ class NextionConfigCommandHandler : public virtual BaseCommandHandler, public Ba case ConfigResult::InvalidParameter: sendAckErr(sender, command, F("Invalid parameter"), ¶ms[0]); break; + case ConfigResult::InvalidPin: + sendAckErr(sender, command, F("Invalid pin"), ¶ms[0]); + break; case ConfigResult::InvalidConfig: sendAckErr(sender, command, F("Config not available"), ¶ms[0]); break; diff --git a/PowerControlHub/PinGuard.h b/PowerControlHub/PinGuard.h new file mode 100644 index 0000000..dd0cd74 --- /dev/null +++ b/PowerControlHub/PinGuard.h @@ -0,0 +1,327 @@ +/* + * PowerControlHub + * Copyright (C) 2025 Simon Carter (s1cart3r@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +/* + * PinGuard.h - framework-owned compile-time pin validation (do not edit) + * + * Selects the correct pin table automatically using the IDF-provided macros + * CONFIG_IDF_TARGET_ESP32S3 and CONFIG_IDF_TARGET_ESP32, which are emitted by + * the Arduino-ESP32 toolchain (via sdkconfig.h) based on the board chosen in + * the IDE — no manual defines in Local.h are required. + * + * Table tiers: + * PinCategory::Hard — always rejected (flash-reserved GPIO, input-only + * used as output) + * PinCategory::Advisory — risky but sometimes legitimate (strapping pins, + * UART0 TX/RX); behaviour controlled by PinGuardMode + * PinCategory::Safe — no restriction + * + * PinGuard mode is a persistent system setting stored in SystemHeader::pinGuardFlags. + * Call PinGuard::setMode() after loading the system header to apply it at runtime. + * Mode is configured via the F14 command (a=advisory, b=bypass). + * + * Usage: + * PinGuardResult r = PinGuard::validate(pin, PinUse::Output); + * if (PinGuard::isBlocked(r)) { ... } + * + * To add a new board: add a new CONFIG_IDF_TARGET_* block below. + * PinGuard.h is framework-owned — do not edit Local.h for table entries. + */ + +#include +#include "SystemDefinitions.h" + +// ─── Pin Use ───────────────────────────────────────────────────────────────── +// Describes the intended use of a pin. Input-only GPIO are fine for Input, +// Sensor reads etc. but are hard-blocked for anything that requires OUTPUT. +enum class PinUse : uint8_t +{ + Output, // generic digital output (e.g. LED, buzzer) + Input, // generic digital / analog input + SpiSck, // SPI clock — must be output-capable + SpiMosi, // SPI MOSI — must be output-capable + SpiMiso, // SPI MISO — input only is fine + SpiCs, // SPI chip-select — must be output-capable + Relay, // relay drive pin — must be output-capable + Sensor, // sensor signal pin — input only is fine +}; + +// ─── Pin Category ───────────────────────────────────────────────────────────── +enum class PinCategory : uint8_t +{ + Safe = 0, // unrestricted + Advisory = 1, // risky; behaviour governed by PinGuardMode + Hard = 2, // always rejected for the given use +}; + +// ─── Validation Result ──────────────────────────────────────────────────────── +enum class PinGuardResult : uint8_t +{ + Safe = 0, // pin is fine for the requested use + AdvisoryBlocked = 1, // advisory pin blocked (mode does not permit advisory) + HardBlocked = 2, // hard-blocked — must not be used for this purpose + Disabled = 3, // pin == PinDisabled (0xFF) — treated as not fitted +}; + +// ─── PinGuard Mode ──────────────────────────────────────────────────────────── +// Persistent system setting stored in SystemHeader::pinGuardFlags. +// Configured via the F14 command. +namespace PinGuardMode +{ + constexpr uint8_t None = 0x00; // strict — advisory pins are blocked + constexpr uint8_t AllowAdvisory = 0x01; // advisory pins are permitted + constexpr uint8_t Bypass = 0x02; // skip all checks — always returns Safe +} + +// ─── Internal helpers — not for direct use ─────────────────────────────────── +namespace PinGuardInternal +{ + // Returns true when the requested PinUse requires an output-capable pin. + inline bool requiresOutput(PinUse use) + { + return use == PinUse::Output + || use == PinUse::SpiSck + || use == PinUse::SpiMosi + || use == PinUse::SpiCs + || use == PinUse::Relay; + } +} + +// ─── Per-variant pin tables ─────────────────────────────────────────────────── +// +// Each entry is { gpio, category }. +// Hard entries only need to be listed for the use-cases they block. +// The validate() function applies "Hard if requiresOutput and pin is input-only" +// automatically — entries here are for additional hard blocks (flash, etc.) +// and for advisory classifications. + +struct PinTableEntry +{ + uint8_t gpio; + PinCategory category; +}; + +#if defined(CONFIG_IDF_TARGET_ESP32S3) + +// ── ESP32-S3 Dev Module ─────────────────────────────────────────────────────── +// Hard blocks +// GPIO 26–32 : connected to internal Octal flash/PSRAM — hard for ALL uses +// GPIO 45–46 : input-only on S3 silicon (promoted to Hard for output uses) +// Advisory +// GPIO 0,3,19,20,45,46 : strapping / USB / UART0 +static const PinTableEntry _pinTable[] PROGMEM = { + // Flash/PSRAM-reserved — hard for ALL uses + { 26, PinCategory::Hard }, + { 27, PinCategory::Hard }, + { 28, PinCategory::Hard }, + { 29, PinCategory::Hard }, + { 30, PinCategory::Hard }, + { 31, PinCategory::Hard }, + { 32, PinCategory::Hard }, + // Input-only on S3 — Advisory here; validate() promotes to Hard for output + { 45, PinCategory::Advisory }, + { 46, PinCategory::Advisory }, + // Strapping / USB / UART0 — advisory for all uses + { 0, PinCategory::Advisory }, + { 3, PinCategory::Advisory }, // UART0 RX + { 19, PinCategory::Advisory }, // USB D- + { 20, PinCategory::Advisory }, // USB D+ +}; +static constexpr uint8_t _pinTableSize = sizeof(_pinTable) / sizeof(_pinTable[0]); + +// Input-only GPIOs on S3 (45, 46) — no contiguous range, handled via table entries +static constexpr uint8_t _inputOnlyMin = 255; +static constexpr uint8_t _inputOnlyMax = 254; // min > max → range never matches + +#elif defined(CONFIG_IDF_TARGET_ESP32) + +// ── Classic ESP32 (NodeMCU-32S, DevKitC, and all other ESP32 boards) ───────── +// Hard blocks +// GPIO 6–11 : connected to internal SPI flash — touching causes immediate crash +// GPIO 34–39 : input-only silicon (promoted to Hard for output uses) +// Advisory +// GPIO 0,1,2,3,5,12,15 : strapping / UART0 +static const PinTableEntry _pinTable[] PROGMEM = { + // Flash-reserved — hard for ALL uses + { 6, PinCategory::Hard }, + { 7, PinCategory::Hard }, + { 8, PinCategory::Hard }, + { 9, PinCategory::Hard }, + { 10, PinCategory::Hard }, + { 11, PinCategory::Hard }, + // Input-only — Advisory here; validate() promotes to Hard for output uses + { 34, PinCategory::Advisory }, + { 35, PinCategory::Advisory }, + { 36, PinCategory::Advisory }, + { 37, PinCategory::Advisory }, + { 38, PinCategory::Advisory }, + { 39, PinCategory::Advisory }, + // Strapping / UART0 — advisory for all uses + { 0, PinCategory::Advisory }, + { 1, PinCategory::Advisory }, // UART0 TX + { 2, PinCategory::Advisory }, + { 3, PinCategory::Advisory }, // UART0 RX + { 5, PinCategory::Advisory }, + { 12, PinCategory::Advisory }, + { 15, PinCategory::Advisory }, +}; +static constexpr uint8_t _pinTableSize = sizeof(_pinTable) / sizeof(_pinTable[0]); + +// Input-only GPIO range for classic ESP32 +static constexpr uint8_t _inputOnlyMin = 34; +static constexpr uint8_t _inputOnlyMax = 39; + +#endif // CONFIG_IDF_TARGET_* + +// ─── PinGuard ──────────────────────────────────────────────────────────────── + +class PinGuard +{ +public: + /** + * @brief Apply a PinGuardMode bitmask loaded from SystemHeader::pinGuardFlags. + * Call this once after the system header is loaded, before any hardware init. + */ + static void setMode(uint8_t mode) { _mode = mode; } + + /** + * @brief Return the current PinGuardMode bitmask. + */ + static uint8_t getMode() { return _mode; } + + /** + * @brief Convenience helper — returns true when the result means the pin is unusable. + */ + static bool isBlocked(PinGuardResult result) + { + return result == PinGuardResult::HardBlocked || result == PinGuardResult::AdvisoryBlocked; + } + + /** + * @brief Validate a pin for a given use. + * + * @param pin GPIO number to validate (255/PinDisabled returns Disabled). + * @param use Intended use of the pin. + * @return PinGuardResult indicating whether the pin is usable. + * + * Mode is read from the static _mode field set via setMode(): + * PinGuardMode::Bypass — always returns Safe (no checks at all) + * PinGuardMode::AllowAdvisory — advisory pins are allowed + * If both bits are set, Bypass takes precedence and returns Safe immediately. + */ + static PinGuardResult validate(uint8_t pin, PinUse use) + { + if (pin == PinDisabled) + return PinGuardResult::Disabled; + + // Bypass: skip all checks + if (_mode & PinGuardMode::Bypass) + return PinGuardResult::Safe; + +#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32) + const bool needsOutput = PinGuardInternal::requiresOutput(use); + const bool allowAdvisory = (_mode & PinGuardMode::AllowAdvisory) != 0; + + // Walk the pin table + for (uint8_t i = 0; i < _pinTableSize; ++i) + { + uint8_t tablePin = pgm_read_byte(&_pinTable[i].gpio); + uint8_t tableCategory = pgm_read_byte(&_pinTable[i].category); + + if (tablePin != pin) + continue; + + PinCategory cat = static_cast(tableCategory); + + if (cat == PinCategory::Hard) + return PinGuardResult::HardBlocked; + + if (cat == PinCategory::Advisory) + { + // Input-only pins are hard-blocked for output uses regardless of mode + if (needsOutput && pin >= _inputOnlyMin && pin <= _inputOnlyMax) + return PinGuardResult::HardBlocked; + + if (!allowAdvisory) + return PinGuardResult::AdvisoryBlocked; + } + + return PinGuardResult::Safe; + } + + // Not found in table — safe + return PinGuardResult::Safe; + +#else + // Non-ESP32 boards — no pin restrictions modelled yet + (void)use; + return PinGuardResult::Safe; +#endif + } + + /** + * @brief Return a short human-readable reason string for a blocked result. + * String is in PROGMEM — use with F()-style printing or strcpy_P. + */ + static const __FlashStringHelper* reasonString(PinGuardResult result) + { + switch (result) + { + case PinGuardResult::HardBlocked: + return F("hard-blocked (flash/input-only)"); + case PinGuardResult::AdvisoryBlocked: + return F("advisory (strapping/UART pin)"); + case PinGuardResult::Disabled: + return F("disabled (255)"); + default: + return F("safe"); + } + } + + /** + * @brief Return a short human-readable string for a PinUse value. + */ + static const __FlashStringHelper* useString(PinUse use) + { + switch (use) + { + case PinUse::Output: + return F("Output"); + case PinUse::Input: + return F("Input"); + case PinUse::SpiSck: + return F("SPI-SCK"); + case PinUse::SpiMosi: + return F("SPI-MOSI"); + case PinUse::SpiMiso: + return F("SPI-MISO"); + case PinUse::SpiCs: + return F("SPI-CS"); + case PinUse::Relay: + return F("Relay"); + case PinUse::Sensor: + return F("Sensor"); + default: + return F("Unknown"); + } + } + +private: + inline static uint8_t _mode = PinGuardMode::None; +}; diff --git a/PowerControlHub/PowerControlHub.ino b/PowerControlHub/PowerControlHub.ino index 7bf7405..d28061e 100644 --- a/PowerControlHub/PowerControlHub.ino +++ b/PowerControlHub/PowerControlHub.ino @@ -26,14 +26,11 @@ #include "Dht11SensorHandler.h" #include "LightSensorHandler.h" #include "SystemSensorHandler.h" -#include "GpsSensorHandler.h" // Hardware UART selection. Change this define if your board routes its serial // port differently. // COMPUTER_SERIAL – connected to the host PC / debug monitor. -// GPS_SERIAL – connected to the GPS module. #define COMPUTER_SERIAL Serial -#define GPS_SERIAL Serial2 // forward declares void onComputerCommandReceived(SerialCommandManager* mgr); @@ -43,9 +40,10 @@ void onComputerCommandReceived(SerialCommandManager* mgr); // - `commandMgrComputer` is local to your .ino so you can select the hardware // Serial instance and baud rate appropriate for your board. Keep the callback // `onComputerCommandReceived` in this file so it can access the serial manager. -// - Construct `PowerControlHubApp` with a pointer to the serial manager. Then -// configure board-specific resources (e.g. GPS serial) via app accessors before -// calling `app.setup()`. Call `app.loop()` from `loop()`. +// - Construct `PowerControlHubApp` with a pointer to the serial manager, then +// call `app.setup()`. GPS and Nextion serial ports are initialised automatically +// from persisted config (SensorEntry pins/uartNum and NextionConfig respectively). +// - Call `app.loop()` from `loop()`. SerialCommandManager commandMgrComputer(&COMPUTER_SERIAL, onComputerCommandReceived, '\n', ':', ';', '=', 500, 64); @@ -56,9 +54,6 @@ void setup() // Serial initialization is performed first to ensure that any logging or error messages // from DateTimeManager or ConfigManager during initialization are properly output. SystemFunctions::initializeSerial(COMPUTER_SERIAL, 115200, true); - SystemFunctions::initializeSerial(GPS_SERIAL, GpsBaudRate, false); - - app.setGpsSerial(&GPS_SERIAL); // configure app app.setup(nullptr, 0); diff --git a/PowerControlHub/PowerControlHub.vcxproj b/PowerControlHub/PowerControlHub.vcxproj index e10f12d..5091a38 100644 --- a/PowerControlHub/PowerControlHub.vcxproj +++ b/PowerControlHub/PowerControlHub.vcxproj @@ -213,6 +213,7 @@ + @@ -261,6 +262,7 @@ + @@ -283,28 +285,18 @@ - - - - CppCode true - - - - - - VisualMicroDebugger - $(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\dio_qspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\cores\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\variants\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\newlib\platform_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\esp_additions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include\soc;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include\soc\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\dma\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\ldo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\debug_probe\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\tuning_scheme_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\power_supply\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\port\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\port\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\port\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\heap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\heap\tlsf;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3\register;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\platform_port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_system\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_system\port\include\private;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\deprecated_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_timer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include\apps;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include\apps\sntp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\lwip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include\arch;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include\sys;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\gemmlowp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\flatbuffers\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\ruy;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\kissfft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp32-camera\driver\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp32-camera\conversions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\deprecated;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\touch_sensor\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\touch_sensor\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_pm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_ringbuf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_gpio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_pcnt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_gptimer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_spi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_mcpwm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ana_cmpr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_i2s\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_dac\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_rmt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_tsens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_uart\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\vfs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ledc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_parlio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_usb_serial_jtag\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\app\ember_coupling;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib\dnssd;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\OpenThread;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\jsoncpp\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlfaultinjection\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlassert\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlio\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\zzz_generated\app-common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-idf\espressif__esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter\zap_common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter\utils;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter_bridge;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter_console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\nimble;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\route_hook;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_eth\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_event\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\include\esp32c3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\osi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\btc\profile\esp\blufi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\btc\profile\esp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\hci_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\ble_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core\storage;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\dfu;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\mbt;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\tinycrypt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\tinycrypt\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ans\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\bas\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\dis\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\gap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\gatt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\hr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\htp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ias\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ipss\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\lls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\prox\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\cts\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\tps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\sps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\cte\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\util\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\store\ram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\store\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ras\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\porting\nimble\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\porting\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\porting\npl\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\esp-hci\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\include\local;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\wifi_apps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\wifi_apps\nan_app\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_phy\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_phy\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_netif\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\library;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\esp_crt_bundle\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\everest\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\diskio;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\vfs;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wear_levelling\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_partition\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\app_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bootloader_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bootloader_support\bootloader_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_app_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_bootloader_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_vfs_console\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\openthread\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\nvs_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\spi_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_secure_cert_mgr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__json_parser\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__jsmn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\spiffs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_http_client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__json_generator\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\json\cJSON;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__mdns\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_delta_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_encrypted_img\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_insights\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diagnostics\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\esp-tts\esp_tts_chinese\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\efuse\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\efuse\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_mm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_security\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\pthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_psram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_psram\xip_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\app_trace\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\esp_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_coex\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_gdbstub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\unity\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\unity\unity\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\cmock\CMock\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_bitscrambler\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\http_parser;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-tls;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-tls\esp-tls-crypto;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\deprecated\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_isp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\dvp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ppa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_touch_sens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_touch_sens\hw_ver2\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hal_ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\tcp_transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_http_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_https_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_https_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\rgb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protobuf-c\protobuf-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\security;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\transports;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\crypto\srp6a;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\proto-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_local_ctrl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espcoredump\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espcoredump\include\port\xtensa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\idf_test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\idf_test\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mqtt\esp-mqtt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\nvs_sec_provider\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\perfmon\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\rt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\touch_element\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_fsm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_fsm\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\usb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wifi_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-nn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-nn\src\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__rmaker_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__cbor\tinycbor\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diag_data_store\src\rtc_store;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diag_data_store\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-serial-flasher\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-serial-flasher\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_rcp_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft\base;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft\base\isa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\dotprod\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\support\mem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\hann\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_harris\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\flat_top\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\iir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\fir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\sqrt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\fft\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\dct\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\conv\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf_imu13states\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\chmorgan__esp-libhelix-mp3\libhelix-mp3\pub;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-modbus\freemodbus\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zboss-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zigbee-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zigbee-lib\include\radio_spinel;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__libsodium\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__libsodium\port_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_modem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_modem\command\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_schedule\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__network_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_rainmaker\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__qrcode\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\joltwallet__littlefs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\arduino_tinyusb\tinyusb\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\arduino_tinyusb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fb_gfx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\xtensa-esp-elf\esp32s3\no-rtti;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\backward;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include-fixed;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src - $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32s3-elf-g++ - $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32s3-elf-g++ + $(ProjectDir)..\PowerControlHub;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\dio_qspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\cores\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\variants\nodemcu-32s;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\newlib\platform_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\esp_additions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include\soc;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include\soc\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\dma\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\ldo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\debug_probe\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\tuning_scheme_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\power_supply\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\port\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\port\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\heap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\heap\tlsf;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32\register;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\platform_port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_system\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_system\port\include\private;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\deprecated_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_timer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include\apps;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include\apps\sntp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\lwip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include\arch;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include\sys;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\gemmlowp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\flatbuffers\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\ruy;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\kissfft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp32-camera\driver\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp32-camera\conversions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\deprecated;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\touch_sensor\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\touch_sensor\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_pm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_ringbuf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_gpio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_pcnt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_gptimer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_spi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_mcpwm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ana_cmpr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_i2s\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_dac\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_rmt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_tsens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_uart\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\vfs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ledc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_parlio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_usb_serial_jtag\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\app\ember_coupling;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib\dnssd;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\OpenThread;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\jsoncpp\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlfaultinjection\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlassert\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlio\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\zzz_generated\app-common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-idf\espressif__esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter\zap_common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter\utils;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter_bridge;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter_console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\nimble;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\route_hook;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_eth\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_event\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\include\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\osi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\btc\profile\esp\blufi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\btc\profile\esp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\hci_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\ble_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\host\bluedroid\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core\storage;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\dfu;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\mbt;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\tinycrypt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\tinycrypt\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\include\local;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\wifi_apps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\wifi_apps\nan_app\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_phy\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_phy\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_netif\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\library;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\esp_crt_bundle\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\everest\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\diskio;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\vfs;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wear_levelling\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_partition\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\app_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bootloader_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bootloader_support\bootloader_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_app_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_bootloader_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_vfs_console\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\openthread\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\nvs_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\spi_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_secure_cert_mgr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__json_parser\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__jsmn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\spiffs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_http_client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__json_generator\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\json\cJSON;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__mdns\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_delta_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_encrypted_img\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_insights\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diagnostics\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\efuse\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\efuse\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_mm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_security\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\pthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_psram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\app_trace\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\esp_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_coex\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_gdbstub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\unity\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\unity\unity\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\cmock\CMock\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_bitscrambler\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\http_parser;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-tls;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-tls\esp-tls-crypto;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\deprecated\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_isp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_cam\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_cam\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ppa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_touch_sens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_touch_sens\hw_ver1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hal_ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\tcp_transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_http_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_https_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_https_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_lcd\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_lcd\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protobuf-c\protobuf-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\security;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\transports;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\crypto\srp6a;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\proto-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_local_ctrl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espcoredump\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espcoredump\include\port\xtensa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\idf_test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\idf_test\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mqtt\esp-mqtt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\nvs_sec_provider\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\perfmon\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\rt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_fsm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_fsm\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wifi_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-nn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-nn\src\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__rmaker_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__cbor\tinycbor\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diag_data_store\src\rtc_store;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diag_data_store\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-serial-flasher\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-serial-flasher\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_rcp_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\chmorgan__esp-libhelix-mp3\libhelix-mp3\pub;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-modbus\freemodbus\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zboss-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zigbee-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zigbee-lib\include\radio_spinel;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__libsodium\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__libsodium\port_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\dotprod\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\support\mem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\hann\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_harris\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\flat_top\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\iir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\fir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\sqrt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\fft\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\dct\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\conv\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf_imu13states\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_modem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_modem\command\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_schedule\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__network_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_rainmaker\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__lan86xx_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__lan867x\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__qrcode\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\joltwallet__littlefs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fb_gfx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\xtensa-esp-elf\esp32\no-rtti;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\backward;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include-fixed;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src + $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32-elf-g++ + $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32-elf-g++ false @@ -329,16 +321,16 @@ - $(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\dio_qspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\cores\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\variants\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\newlib\platform_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\config\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\esp_additions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include\soc;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\include\soc\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\dma\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\ldo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\debug_probe\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\tuning_scheme_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\power_supply\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\port\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\port\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\port\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\heap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\heap\tlsf;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\soc\esp32s3\register;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\platform_port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\hal\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_rom\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_system\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_system\port\include\private;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\xtensa\deprecated_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_timer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include\apps;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\include\apps\sntp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\lwip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include\arch;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\lwip\port\esp32xx\include\sys;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\gemmlowp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\flatbuffers\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\ruy;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\kissfft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp32-camera\driver\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp32-camera\conversions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\deprecated;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\touch_sensor\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\driver\touch_sensor\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_pm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_ringbuf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_gpio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_pcnt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_gptimer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_spi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_mcpwm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ana_cmpr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_i2s\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_dac\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_rmt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_tsens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_sdm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_uart\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\vfs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ledc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_parlio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_usb_serial_jtag\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\app\ember_coupling;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib\dnssd;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\OpenThread;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\jsoncpp\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlfaultinjection\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlassert\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlio\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\zzz_generated\app-common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-idf\espressif__esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter\zap_common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter\utils;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter_bridge;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_matter_console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\nimble;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\route_hook;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_eth\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_event\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\include\esp32c3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\osi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\btc\profile\esp\blufi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\btc\profile\esp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\hci_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\ble_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\core\storage;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\models\server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\dfu;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\mbt;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\tinycrypt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\common\tinycrypt\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ans\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\bas\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\dis\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\gap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\gatt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\hr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\htp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ias\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ipss\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\lls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\prox\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\cts\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\tps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\sps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\cte\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\util\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\store\ram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\store\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\host\services\ras\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\porting\nimble\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\nimble\transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\porting\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\nimble\porting\npl\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bt\host\nimble\esp-hci\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\include\local;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\wifi_apps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_wifi\wifi_apps\nan_app\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_phy\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_phy\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_netif\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\library;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\esp_crt_bundle\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\everest\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\diskio;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fatfs\vfs;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wear_levelling\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_partition\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\app_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bootloader_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\bootloader_support\bootloader_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_app_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_bootloader_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_vfs_console\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\openthread\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\nvs_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\spi_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_secure_cert_mgr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__json_parser\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__jsmn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\spiffs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_http_client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__json_generator\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\json\cJSON;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__mdns\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_delta_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_encrypted_img\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_insights\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diagnostics\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\esp-tts\esp_tts_chinese\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-sr\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\efuse\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\efuse\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_mm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_security\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\pthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_psram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_psram\xip_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\app_trace\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wpa_supplicant\esp_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_coex\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_gdbstub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\unity\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\unity\unity\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\cmock\CMock\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_bitscrambler\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\http_parser;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-tls;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp-tls\esp-tls-crypto;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\esp32s3\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_adc\deprecated\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_isp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_cam\dvp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_ppa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_touch_sens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_driver_touch_sens\hw_ver2\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hal_ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\tcp_transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_http_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_https_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_https_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_lcd\rgb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protobuf-c\protobuf-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\security;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\transports;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\include\crypto\srp6a;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\protocomm\proto-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\esp_local_ctrl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espcoredump\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espcoredump\include\port\xtensa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\idf_test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\idf_test\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\mqtt\esp-mqtt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\nvs_sec_provider\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\perfmon\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\rt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\touch_element\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_fsm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\ulp\ulp_fsm\include\esp32s3;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\usb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\wifi_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-nn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-nn\src\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__rmaker_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__cbor\tinycbor\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diag_data_store\src\rtc_store;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_diag_data_store\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-serial-flasher\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-serial-flasher\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_rcp_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft\base;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__dl_fft\base\isa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\dotprod\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\support\mem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\hann\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_harris\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\windows\flat_top\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\iir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\fir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\math\sqrt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\fft\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\dct\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\conv\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf_imu13states\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\chmorgan__esp-libhelix-mp3\libhelix-mp3\pub;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-modbus\freemodbus\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zboss-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zigbee-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp-zigbee-lib\include\radio_spinel;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__libsodium\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__libsodium\port_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_modem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_modem\command\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_schedule\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__network_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__esp_rainmaker\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\espressif__qrcode\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\joltwallet__littlefs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\arduino_tinyusb\tinyusb\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\arduino_tinyusb\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32s3-libs\3.3.7\include\fb_gfx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\xtensa-esp-elf\esp32s3\no-rtti;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\backward;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include-fixed;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;%(AdditionalIncludeDirectories) - $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32s3-elf-g++ + $(ProjectDir)..\PowerControlHub;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\dio_qspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\cores\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\variants\nodemcu-32s;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\newlib\platform_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\config\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\FreeRTOS-Kernel\portable\xtensa\include\freertos;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\freertos\esp_additions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include\soc;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\include\soc\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\dma\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\ldo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\debug_probe\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\mspi_timing_tuning\tuning_scheme_impl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\power_supply\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\port\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hw_support\port\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\heap\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\heap\tlsf;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\soc\esp32\register;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\platform_port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\hal\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_rom\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_system\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_system\port\include\private;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\xtensa\deprecated_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_timer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include\apps;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\include\apps\sntp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\lwip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\freertos\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include\arch;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\lwip\port\esp32xx\include\sys;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\gemmlowp;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\flatbuffers\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\ruy;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-tflite-micro\third_party\kissfft;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp32-camera\driver\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp32-camera\conversions\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\deprecated;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\touch_sensor\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\driver\touch_sensor\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_pm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_ringbuf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_gpio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_pcnt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_gptimer\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_spi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_mcpwm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ana_cmpr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_i2s\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\sdmmc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdspi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_dac\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_rmt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_tsens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_sdm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_i2c\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_uart\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\vfs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ledc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_parlio\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_usb_serial_jtag\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_twai\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\app\ember_coupling;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\lib\dnssd;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\OpenThread;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\jsoncpp\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlfaultinjection\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlassert\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\third_party\nlio\repo\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\zzz_generated\app-common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-idf\espressif__esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter\zap_common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter\utils;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter_bridge;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_matter_console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\nimble;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_matter\connectedhomeip\connectedhomeip\src\platform\ESP32\route_hook;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_eth\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_event\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\include\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\osi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\btc\profile\esp\blufi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\btc\profile\esp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\hci_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\ble_log\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\host\bluedroid\api\include\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\core\storage;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\models\server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\api;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\core\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\api\models\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\btc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\dfu;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\esp_ble_mesh\v1.1\mbt;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\tinycrypt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bt\common\tinycrypt\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\include\local;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\wifi_apps\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_wifi\wifi_apps\nan_app\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_phy\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_phy\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_netif\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\library;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\esp_crt_bundle\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\everest\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mbedtls\mbedtls\3rdparty\p256-m\p256-m;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\diskio;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fatfs\vfs;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wear_levelling\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_partition\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\app_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bootloader_support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\bootloader_support\bootloader_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_app_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_bootloader_format\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\console;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_vfs_console\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\openthread\openthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\nvs_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\spi_flash\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_secure_cert_mgr\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__json_parser\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__jsmn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\spiffs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_http_client\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__json_generator\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\json\cJSON;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__mdns\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_delta_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_encrypted_img\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_insights\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diagnostics\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\efuse\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\efuse\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_mm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_security\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\pthread\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_psram\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\app_trace\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\port\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wpa_supplicant\esp_supplicant\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_coex\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_gdbstub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\unity\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\unity\unity\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\cmock\CMock\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_bitscrambler\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\http_parser;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-tls;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp-tls\esp-tls-crypto;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\esp32\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_adc\deprecated\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_isp\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_cam\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_cam\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_jpeg\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_ppa\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_touch_sens\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_driver_touch_sens\hw_ver1\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hal_ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_hid\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\tcp_transport\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_http_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_https_ota\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_https_server\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_lcd\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_lcd\interface;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protobuf-c\protobuf-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\security;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\transports;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\include\crypto\srp6a;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\protocomm\proto-c;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\esp_local_ctrl\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espcoredump\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espcoredump\include\port\xtensa;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\idf_test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\idf_test\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ieee802154\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\mqtt\esp-mqtt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\nvs_sec_provider\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\perfmon\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\rt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_fsm\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\ulp\ulp_fsm\include\esp32;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\wifi_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-nn\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-nn\src\common;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__rmaker_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__cbor\tinycbor\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diag_data_store\src\rtc_store;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_diag_data_store\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-serial-flasher\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-serial-flasher\port;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_rcp_update\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\chmorgan__esp-libhelix-mp3\libhelix-mp3\pub;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-modbus\freemodbus\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zboss-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zigbee-lib\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-zigbee-lib\include\radio_spinel;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__libsodium\libsodium\src\libsodium\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__libsodium\port_include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\dotprod\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\support\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\support\mem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\hann\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_harris\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\blackman_nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\nuttall\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\windows\flat_top\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\iir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\fir\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\math\sqrt\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\add\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\addc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mulc\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\sub\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\fft\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\dct\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\conv\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\matrix\mul\test\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp-dsp\modules\kalman\ekf_imu13states\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_modem\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_modem\command\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_schedule\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__network_provisioning\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__esp_rainmaker\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__lan86xx_common\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__lan867x\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\espressif__qrcode\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\joltwallet__littlefs\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp32-libs\3.3.7\include\fb_gfx\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\xtensa-esp-elf\esp32\no-rtti;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include\c++\14.2.0\backward;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\lib\gcc\xtensa-esp-elf\14.2.0\include-fixed;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\xtensa-esp-elf\include;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SerialCommandManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SensorManager\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\SdFat\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\SPI\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\WiFi\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Network\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\NextionControl\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\TinyGPSPlus\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\EEPROM\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\HTTPClient\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\NetworkClientSecure\src;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\hardware\esp32\3.3.7\libraries\Update\src;$(ProjectDir)..\..\..\Users\Simon\Documents\Arduino\libraries\Ds1302\src;%(AdditionalIncludeDirectories) + $(ProjectDir)..\..\..\Users\Simon\AppData\Local\arduino15\packages\esp32\tools\esp-x32\2511\bin\xtensa-esp32-elf-g++ c++2a gnu11 - $(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default\vm-intelli-pre.h;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\Temp\VMBuilds\PowerControlHub\esp32_esp32s3\Debug\.vmintelli\43a5584cc1e3cbf43014a5b588f12f8e\vm-intelli-gcc-defines.h;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default\vm-intelli-post.h;$(ProjectDir)__vm\.PowerControlHub.vsarduino.h;%(ForcedIncludeFiles) + $(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default\vm-intelli-pre.h;$(ProjectDir)..\..\..\Users\Simon\AppData\Local\Temp\VMBuilds\PowerControlHub\esp32_nodemcu-32s\Debug\.vmintelli\9234217d3fd56d3c24eaf5e7c61f241f\vm-intelli-gcc-defines.h;$(ProjectDir)..\..\..\program files\microsoft visual studio\18\insiders\common7\ide\extensions\0qz5sbjj.e2i\Micro Platforms\default\vm-intelli-post.h;$(ProjectDir)__vm\.PowerControlHub.vsarduino.h;%(ForcedIncludeFiles) true true - _VMICRO_INTELLISENSE;__2511_esp32s3__;__2511_ESP32S3__;_VMDEBUG=1;F_CPU=240000000L;ARDUINO=108010;ARDUINO_ESP32S3_DEV;ARDUINO_ARCH_ESP32;ARDUINO_BOARD=ESP32S3_DEV;ARDUINO_VARIANT=esp32s3;ARDUINO_PARTITION_default;ARDUINO_HOST_OS=windows;ARDUINO_FQBN={build.fqbn};ESP32=ESP32;CORE_DEBUG_LEVEL=0;ARDUINO_RUNNING_CORE=1;ARDUINO_EVENT_RUNNING_CORE=1;ARDUINO_USB_MODE=1;ARDUINO_USB_CDC_ON_BOOT=0;ARDUINO_USB_MSC_ON_BOOT=0;ARDUINO_USB_DFU_ON_BOOT=0;%(PreprocessorDefinitions) + _VMICRO_INTELLISENSE;__2511_esp32__;__2511_ESP32__;_VMDEBUG=1;F_CPU=240000000L;ARDUINO=108010;ARDUINO_NODEMCU_32S;ARDUINO_ARCH_ESP32;ARDUINO_BOARD=NODEMCU_32S;ARDUINO_VARIANT=nodemcu-32s;ARDUINO_PARTITION_default;ARDUINO_HOST_OS=windows;ARDUINO_FQBN={build.fqbn};ESP32=ESP32;CORE_DEBUG_LEVEL=0;ARDUINO_USB_CDC_ON_BOOT=0;%(PreprocessorDefinitions) @@ -360,7 +352,7 @@ - + \ No newline at end of file diff --git a/PowerControlHub/PowerControlHub.vcxproj.filters b/PowerControlHub/PowerControlHub.vcxproj.filters index 58f4303..9c0af03 100644 --- a/PowerControlHub/PowerControlHub.vcxproj.filters +++ b/PowerControlHub/PowerControlHub.vcxproj.filters @@ -324,9 +324,6 @@ - - Header Files - Header Files\SerialCommandHandlers @@ -702,17 +699,11 @@ Header Files - - - - - - - - - - - - + + Header Files + + + Header Files + \ No newline at end of file diff --git a/PowerControlHub/PowerControlHubApp.cpp b/PowerControlHub/PowerControlHubApp.cpp index 513a817..612f7bd 100644 --- a/PowerControlHub/PowerControlHubApp.cpp +++ b/PowerControlHub/PowerControlHubApp.cpp @@ -20,6 +20,7 @@ #include "SystemCpuMonitor.h" #include "DateTimeManager.h" #include "ConfigManager.h" +#include "PinGuard.h" #include "SensorFactory.h" #if defined(NEXTION_DISPLAY_DEVICE) @@ -131,6 +132,26 @@ void PowerControlHubApp::setup(RemoteSensor** remoteSensors, uint8_t remoteSenso _warningManager.raiseWarning(WarningType::DefaultConfigurationFuseBox); } + // Increment crash counter immediately after load, before any hardware init. + // If the board watchdog-resets during setup() this counter will never be cleared, + // so it will keep rising. Once it hits the threshold we know we are in a crash + // loop caused by the current config and we reset to safe defaults. + ConfigManager::incrementCrashCounter(); + SystemHeader* hdr = ConfigManager::getHeaderPtr(); + + // Apply persisted PinGuard mode before any hardware init + if (hdr) + PinGuard::setMode(hdr->pinGuardFlags); + + if (hdr->crashCounter >= CrashCounterThreshold) + { + _commandMgrComputer->sendError("Crash loop detected — resetting config to defaults", "PowerControlHubApp"); + ConfigManager::resetToDefaults(); + ConfigManager::save(); + PinGuard::setMode(PinGuardMode::None); // strict mode after defaults reset + _warningManager.raiseWarning(WarningType::DefaultConfigurationFuseBox); + } + // Sync relay pin assignments from config (overrides the bootstrap pins // passed at construction; disabled relays will have pin == 0xFF). _relayController.syncPinsFromConfig(); @@ -353,6 +374,9 @@ void PowerControlHubApp::setup(RemoteSensor** remoteSensors, uint8_t remoteSenso // indicate system initialized _commandMgrComputer->sendCommand(SystemInitialized, ""); _scheduleController.begin(); + + // Full initialisation completed without a watchdog reset — clear the crash counter. + ConfigManager::resetCrashCounter(); } void PowerControlHubApp::loop() diff --git a/PowerControlHub/RelayCommandHandler.cpp b/PowerControlHub/RelayCommandHandler.cpp index be15e1a..66f1505 100644 --- a/PowerControlHub/RelayCommandHandler.cpp +++ b/PowerControlHub/RelayCommandHandler.cpp @@ -356,7 +356,18 @@ bool RelayCommandHandler::handleCommand(SerialCommandManager* sender, const char return true; } - _relayController->setRelayPin(relayIndex, pin); + RelayResult pinResult = _relayController->setRelayPin(relayIndex, pin); + + if (pinResult == RelayResult::InvalidPin) + { + PinGuardResult pgr = PinGuard::validate(pin, PinUse::Relay); + char debugMsg[56]; + snprintf(debugMsg, sizeof(debugMsg), "Pin %u blocked: %s", pin, + reinterpret_cast(PinGuard::reasonString(pgr))); + sender->sendDebug(debugMsg, "RelaySetPin"); + sendAckErr(sender, command, F("Invalid pin"), ¶ms[0]); + return true; + } sendAckOk(sender, command, ¶ms[0]); } else diff --git a/PowerControlHub/RelayController.h b/PowerControlHub/RelayController.h index 63c3646..0c95088 100644 --- a/PowerControlHub/RelayController.h +++ b/PowerControlHub/RelayController.h @@ -29,7 +29,8 @@ enum class RelayResult : uint8_t Reserved = 2, InvalidConfig = 3, InvalidParameter = 4, - Failed = 5 + Failed = 5, + InvalidPin = 6 }; @@ -344,6 +345,9 @@ class RelayController if (pin == 0) return RelayResult::InvalidParameter; + if (PinGuard::isBlocked(PinGuard::validate(pin, PinUse::Relay))) + return RelayResult::InvalidPin; + config->relay.relays[relayIndex].pin = pin; return RelayResult::Success; } diff --git a/PowerControlHub/SensorConfigCommandHandler.h b/PowerControlHub/SensorConfigCommandHandler.h index 14d18bc..a4a6117 100644 --- a/PowerControlHub/SensorConfigCommandHandler.h +++ b/PowerControlHub/SensorConfigCommandHandler.h @@ -53,14 +53,16 @@ class SensorConfigCommandHandler : public virtual BaseCommandHandler, public Bas void broadcastSensorConfig(SerialCommandManager* sender, uint8_t index, const SensorEntry& entry) { - char buf[96]; + char buf[112]; snprintf(buf, sizeof(buf), - "i=%u;t=%u;n=%s;p0=%u;p1=%u;o0=%d;o1=%d;en=%u", + "i=%u;t=%u;n=%s;p0=%u;p1=%u;u0=%d;u1=%d;o0=%d;o1=%d;en=%u", index, static_cast(entry.sensorType), entry.name, entry.pins[0], entry.pins[1], + entry.options1[0], + entry.options1[1], entry.options2[0], entry.options2[1], entry.enabled ? 1 : 0); @@ -149,21 +151,28 @@ class SensorConfigCommandHandler : public virtual BaseCommandHandler, public Bas if (SystemFunctions::commandMatches(command, SensorConfigRemove)) { - // N2: - if (paramCount < 1) + // S2:v= + uint8_t idx; + if (paramCount < 1 || !getParamValueU8t(params, paramCount, "v", idx)) { sendAckErr(sender, command, F("Missing sensor index")); return true; } - uint8_t idx = static_cast(atoi(params[0].value)); - - if (idx >= ConfigMaxSensors || idx >= config->sensors.count) + if (idx >= ConfigMaxSensors) { sendAckErr(sender, command, F("Invalid sensor index")); return true; } + // Index beyond current count means the slot is already absent — treat as success. + if (idx >= config->sensors.count) + { + StringKeyValue reboot = makeParam("reboot", 1); + sendAckOk(sender, command, &reboot); + return true; + } + SensorEntry& entry = config->sensors.sensors[idx]; entry.enabled = false; entry.sensorType = static_cast(0); diff --git a/PowerControlHub/SensorFactory.h b/PowerControlHub/SensorFactory.h index 50e9266..5fd7acc 100644 --- a/PowerControlHub/SensorFactory.h +++ b/PowerControlHub/SensorFactory.h @@ -37,6 +37,7 @@ #include "LightSensorHandler.h" #include "SystemSensorHandler.h" #include "BinaryPresenceSensor.h" +#include "VoltageSensorHandler.h" /** * @brief Dependencies injected by PowerControlHubApp into SensorFactory::create(). @@ -236,8 +237,39 @@ class SensorFactory case SensorIdList::GpsSensor: { +#if defined(ESP32) + // pins[0] = RX pin, pins[1] = TX pin, options1[0] = UART number (1 or 2; 0/unset defaults to 2) + const uint8_t rxPin = entry.pins[0]; + const uint8_t txPin = entry.pins[1]; + + if (rxPin == PinDisabled || txPin == PinDisabled) + { + if (ctx.warningManager != nullptr) + ctx.warningManager->raiseWarning(WarningType::GpsInvalidConfig); + return nullptr; + } + + const uint8_t uartNum = (entry.options1[0] == 1 || entry.options1[0] == 2) + ? static_cast(entry.options1[0]) + : 2; + + // HardwareSerial is allocated once; ownership transferred to GpsSensorHandler via Stream*. + HardwareSerial* hwSerial = new HardwareSerial(uartNum); + hwSerial->begin(GpsBaudRate, SERIAL_8N1, rxPin, txPin); + + return new GpsSensorHandler( + hwSerial, + ctx.broadcastManager, + ctx.sensorCommandHandler, + ctx.warningManager, + entry.name); +#else if (ctx.gpsSerial == nullptr) + { + if (ctx.warningManager != nullptr) + ctx.warningManager->raiseWarning(WarningType::GpsInvalidConfig); return nullptr; + } return new GpsSensorHandler( ctx.gpsSerial, @@ -245,6 +277,25 @@ class SensorFactory ctx.sensorCommandHandler, ctx.warningManager, entry.name); +#endif + } + + case SensorIdList::VoltageSensor: + { + // pins[0] = analog sensor pin + // options1[0] = ADC Vref in tenths of a volt (e.g. 50 = 5.0 V); 0 = default (5.0 V) + // options1[1] = R2 in tenths of kΩ (e.g. 75 = 7.5 kΩ); 0 = default (7.5 kΩ) + // options2[0] = R1 in whole kΩ (e.g. 30 = 30 kΩ); 0 = default (30 kΩ) + // options2[1] = low-voltage warning threshold in tenths of a volt (e.g. 114 = 11.4 V); 0 = disabled + return new VoltageSensorHandler( + ctx.broadcastManager, + ctx.warningManager, + entry.pins[0], + entry.options1[0], + entry.options2[0], + entry.options1[1], + entry.options2[1], + entry.name); } default: diff --git a/PowerControlHub/SystemCommandHandler.cpp b/PowerControlHub/SystemCommandHandler.cpp index ee05eed..23b96d5 100644 --- a/PowerControlHub/SystemCommandHandler.cpp +++ b/PowerControlHub/SystemCommandHandler.cpp @@ -18,6 +18,7 @@ #include "SystemCommandHandler.h" #include "SystemCpuMonitor.h" #include "ConfigManager.h" +#include "PinGuard.h" #include "DateTimeManager.h" #if defined(WIFI_SUPPORT) #include "WifiController.h" @@ -42,7 +43,7 @@ const char* const* SystemCommandHandler::supportedCommands(size_t& count) const SystemHeartbeatCommand, SystemInitialized, SystemFreeMemory, SystemCpuUsage, SystemBluetoothStatus, SystemWifiStatus, SystemSetDateTime, SystemGetDateTime, SystemSdCardPresent, SystemSdCardLogFileSize, SystemRtcDiagnostic, SystemUptime, - SystemCheckForUpdate, SystemOtaStatus + SystemCheckForUpdate, SystemOtaStatus, SystemPinGuardMode }; count = sizeof(cmds) / sizeof(cmds[0]); return cmds; @@ -341,6 +342,54 @@ bool SystemCommandHandler::handleCommand(SerialCommandManager* sender, const cha sendAckOk(sender, command, respParams, argCount); } #endif // OTA_AUTO_UPDATE + else if (SystemFunctions::commandMatches(command, SystemPinGuardMode)) + { + if (paramCount > 0) + { + // Write mode: a= for AllowAdvisory, b= for Bypass + SystemHeader* hdr = ConfigManager::getHeaderPtr(); + if (hdr) + { + const char* aStr = getParamValue(params, paramCount, "a"); + const char* bStr = getParamValue(params, paramCount, "b"); + + if (aStr) + { + bool allow = (strcmp(aStr, "true") == 0 || strcmp(aStr, "1") == 0); + + if (allow) + hdr->pinGuardFlags |= PinGuardMode::AllowAdvisory; + else + hdr->pinGuardFlags &= ~PinGuardMode::AllowAdvisory; + } + + if (bStr) + { + bool bypass = (strcmp(bStr, "true") == 0 || strcmp(bStr, "1") == 0); + + if (bypass) + hdr->pinGuardFlags |= PinGuardMode::Bypass; + else + hdr->pinGuardFlags &= ~PinGuardMode::Bypass; + } + + ConfigManager::setPinGuardFlags(hdr->pinGuardFlags); + PinGuard::setMode(hdr->pinGuardFlags); + } + } + + // Read back current mode + SystemHeader* hdr = ConfigManager::getHeaderPtr(); + constexpr uint8_t argCount = 2; + StringKeyValue respParams[argCount]; + strncpy(respParams[0].key, "a", sizeof(respParams[0].key)); + respParams[0].value[0] = (hdr && (hdr->pinGuardFlags & PinGuardMode::AllowAdvisory)) ? '1' : '0'; + respParams[0].value[1] = '\0'; + strncpy(respParams[1].key, "b", sizeof(respParams[1].key)); + respParams[1].value[0] = (hdr && (hdr->pinGuardFlags & PinGuardMode::Bypass)) ? '1' : '0'; + respParams[1].value[1] = '\0'; + sendAckOk(sender, command, respParams, argCount); + } else { sendAckErr(sender, command, F("Unknown system command")); diff --git a/PowerControlHub/SystemDefinitions.h b/PowerControlHub/SystemDefinitions.h index a46cfd7..0b92dcc 100644 --- a/PowerControlHub/SystemDefinitions.h +++ b/PowerControlHub/SystemDefinitions.h @@ -41,6 +41,7 @@ constexpr char SystemRtcDiagnostic[] = "F10"; constexpr char SystemUptime[] = "F11"; constexpr char SystemCheckForUpdate[] = "F12"; constexpr char SystemOtaStatus[] = "F13"; +constexpr char SystemPinGuardMode[] = "F14"; constexpr char SystemPageDemo[] = "F150"; constexpr char RelayTurnAllOff[] = "R0"; @@ -157,6 +158,7 @@ constexpr char SensorGpsSpeed[] = "S19"; constexpr char SensorGpsSatellites[] = "S20"; constexpr char SensorGpsDistance[] = "S21"; constexpr char SensorBinaryPresence[] = "S22"; +constexpr char SensorVoltage[] = "S23"; constexpr char NextionGetConfig[] = "N0"; constexpr char NextionEnabled[] = "N1"; @@ -233,6 +235,7 @@ enum class SensorIdList : uint8_t GpsSensor = 0x3, SystemSensor = 0x4, BinaryPresenceSensor = 0x5, + VoltageSensor = 0x6, None = 0xFF }; diff --git a/PowerControlHub/VoltageSensorHandler.h b/PowerControlHub/VoltageSensorHandler.h new file mode 100644 index 0000000..eda9cb1 --- /dev/null +++ b/PowerControlHub/VoltageSensorHandler.h @@ -0,0 +1,264 @@ +/* + * PowerControlHub + * Copyright (C) 2025 Simon Carter (s1cart3r@gmail.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "Local.h" +#include "Queue.h" +#include "PowerControlHubConstants.h" +#include "WarningManager.h" +#include "WarningType.h" +#include "LoggingSupport.h" +#include "JsonVisitor.h" +#include "BaseSensor.h" + +/// Poll the sensor every 5 seconds. +constexpr uint64_t VoltageSensorCheckIntervalMs = 5000; + +/// Rolling average depth (10 readings). +constexpr uint8_t VoltageSensorQueueSize = 10; + +/// ADC full-scale count (10-bit ADC on both Arduino and ESP32 by default). +constexpr uint16_t VoltageSensorAdcFullScale = 1024; + +/// Default ADC reference voltage in tenths of a volt (50 = 5.0 V). +constexpr int8_t VoltageSensorDefaultVrefTenths = 50; + +/// Default R1 in kΩ — matches the 30k/7.5k module variant. +constexpr int16_t VoltageSensorDefaultR1kOhm = 30; + +/// Default R2 in tenths of kΩ (75 = 7.5 kΩ) — matches the 30k/7.5k module variant. +constexpr int8_t VoltageSensorDefaultR2TenthskOhm = 75; + +/** + * @brief Sensor handler for the DC 0–25 V voltage detection module. + * + * The module uses a resistor voltage divider to scale the measured voltage + * down to a range readable by the MCU's ADC. The measured voltage is + * recovered with: + * + * Vout = (adcValue / AdcFullScale) * Vref + * Vin = Vout * (R1 + R2) / R2 + * + * A 10-reading rolling average is maintained to smooth noise. + * + * Configuration (SensorEntry fields): + * pins[0] – analog input pin + * options1[0] – ADC reference voltage in tenths of a volt (e.g. 50 = 5.0 V, + * 33 = 3.3 V). 0 defaults to 50 (5.0 V). + * options1[1] – R2 in tenths of kΩ (e.g. 75 = 7.5 kΩ). + * 0 defaults to 75 (7.5 kΩ). + * options2[0] – R1 in whole kΩ (e.g. 30 = 30 kΩ). + * 0 defaults to 30 (30 kΩ). + * options2[1] – Low-voltage warning threshold in tenths of a volt + * (e.g. 114 = 11.4 V). 0 disables the warning. + */ +class VoltageSensorHandler : public BaseSensor, public BroadcastLoggerSupport +{ +private: + WarningManager* _warningManager; + const uint8_t _sensorPin; + + /// Pre-computed divisor: R2 / (R1 + R2), avoids float division every tick. + float _voltageDivisor; + + /// ADC reference voltage in volts. + float _vref; + + /// Low-voltage warning threshold in volts. 0.0 = disabled. + float _warnThresholdV; + + Queue _voltageQueue; + + /// Latest raw ADC reading. + uint16_t _latestRaw; + + /// Whether the low-voltage warning is currently active. + bool _warningActive; + +#if defined(MQTT_SUPPORT) + char _slugVoltage[32]; + char _slugAvgVoltage[40]; + char _nameVoltage[48]; + char _nameAvgVoltage[48]; +#endif + + /** + * @brief Convert a raw ADC count to the actual input voltage. + * @param raw 10-bit ADC count (0–1023). + * @return Input voltage in volts. + */ + float rawToVolts(uint16_t raw) const + { + float vout = (static_cast(raw) / static_cast(VoltageSensorAdcFullScale)) * _vref; + return (_voltageDivisor > 0.0f) ? (vout / _voltageDivisor) : 0.0f; + } + +protected: + void initialize() override + { + pinMode(_sensorPin, INPUT); + + char buf[56]; + snprintf(buf, sizeof(buf), "pin=%d vref=%.1f warn=%.1fV", _sensorPin, _vref, _warnThresholdV); + sendDebug(buf, _name); + } + + uint64_t update() override + { + _latestRaw = static_cast(analogRead(_sensorPin)); + + if (_voltageQueue.isFull()) + _voltageQueue.dequeue(); + + _voltageQueue.enqueue(_latestRaw); + + float instantV = rawToVolts(_latestRaw); + float avgV = rawToVolts(_voltageQueue.average()); + + // Raise or clear low-voltage warning based on the smoothed average. + if (_warningManager != nullptr && _warnThresholdV > 0.0f) + { + if (!_warningActive && avgV < _warnThresholdV) + { + _warningManager->raiseWarning(WarningType::LowVoltage); + _warningActive = true; + } + else if (_warningActive && avgV >= _warnThresholdV) + { + _warningManager->clearWarning(WarningType::LowVoltage); + _warningActive = false; + } + } + + // Encode voltages as millivolts for the integer key-value transport. + StringKeyValue params[2]; + strncpy(params[0].key, "v", sizeof(params[0].key)); + snprintf(params[0].value, sizeof(params[0].value), "%u", + static_cast(instantV * 1000.0f + 0.5f)); + strncpy(params[1].key, "avg", sizeof(params[1].key)); + snprintf(params[1].value, sizeof(params[1].value), "%u", + static_cast(avgV * 1000.0f + 0.5f)); + + sendCommand(SensorVoltage, params, 2); + + char dbuf[56]; + snprintf(dbuf, sizeof(dbuf), "raw=%u inst=%.2fV avg=%.2fV", _latestRaw, instantV, avgV); + sendDebug(dbuf, _name); + + return VoltageSensorCheckIntervalMs; + } + +public: + /** + * @param broadcastManager Shared broadcast/logging bus. + * @param warningManager Warning manager; may be nullptr. + * @param sensorPin Analog pin wired to the module's signal output. + * @param vrefTenths ADC reference voltage in tenths of a volt + * (e.g. 50 = 5.0 V). Pass 0 to use the default. + * @param r1kOhm R1 resistor value in whole kΩ. 0 → default (30). + * @param r2TenthskOhm R2 resistor value in tenths of kΩ. 0 → default (75 = 7.5 kΩ). + * @param warnThresholdTenths Low-voltage threshold in tenths of a volt (e.g. 114 = 11.4 V). + * 0 disables the warning. + * @param name Friendly sensor name. + */ + VoltageSensorHandler(BroadcastManager* broadcastManager, + WarningManager* warningManager, + uint8_t sensorPin, + int8_t vrefTenths, + int16_t r1kOhm, + int8_t r2TenthskOhm, + int16_t warnThresholdTenths, + const char* name = "Voltage") + : BaseSensor(name), + BroadcastLoggerSupport(broadcastManager), + _warningManager(warningManager), + _sensorPin(sensorPin), + _voltageQueue(VoltageSensorQueueSize, 0), + _latestRaw(0), + _warningActive(false) + { + // Resolve ADC reference voltage. + int8_t effectiveVref = (vrefTenths != 0) ? vrefTenths : VoltageSensorDefaultVrefTenths; + _vref = static_cast(effectiveVref) / 10.0f; + + // Resolve resistor values (convert to Ω for the divisor). + float r1 = static_cast((r1kOhm != 0) ? r1kOhm : VoltageSensorDefaultR1kOhm) * 1000.0f; + float r2 = static_cast((r2TenthskOhm != 0) ? r2TenthskOhm : VoltageSensorDefaultR2TenthskOhm) / 10.0f * 1000.0f; + _voltageDivisor = (r1 + r2 > 0.0f) ? (r2 / (r1 + r2)) : 0.0f; + + // Resolve warning threshold. + _warnThresholdV = (warnThresholdTenths != 0) + ? (static_cast(warnThresholdTenths) / 10.0f) + : 0.0f; + +#if defined(MQTT_SUPPORT) + snprintf(_slugVoltage, sizeof(_slugVoltage), "%s_voltage", _safeSlug); + snprintf(_slugAvgVoltage, sizeof(_slugAvgVoltage), "%s_avg_voltage", _safeSlug); + snprintf(_nameVoltage, sizeof(_nameVoltage), "%s Voltage", _name); + snprintf(_nameAvgVoltage, sizeof(_nameAvgVoltage), "%s Avg Voltage", _name); +#endif + } + + void formatStatusJson(char* buffer, size_t size) override + { + float instantV = rawToVolts(_latestRaw); + float avgV = rawToVolts(_voltageQueue.average()); + snprintf(buffer, size, "\"voltage\":%.2f,\"avg\":%.2f", instantV, avgV); + } + + SensorIdList getSensorIdType() const override + { + return SensorIdList::VoltageSensor; + } + + SensorType getSensorType() const override + { + return SensorType::Local; + } + + const char* getSensorCommandId() const override + { + return SensorVoltage; + } + +#if defined(MQTT_SUPPORT) + + uint8_t getMqttChannelCount() const override + { + return 2; + } + + MqttSensorChannel getMqttChannel(uint8_t channelIndex) const override + { + switch (channelIndex) + { + case 0: return { _nameVoltage, _slugVoltage, "voltage", "voltage", "V", false }; + default: return { _nameAvgVoltage, _slugAvgVoltage, "voltage", "voltage", "V", false }; + } + } + + void getMqttValue(uint8_t channelIndex, char* buffer, size_t size) const override + { + float v = (channelIndex == 0) + ? rawToVolts(_latestRaw) + : rawToVolts(_voltageQueue.average()); + snprintf(buffer, size, "%.2f", v); + } + +#endif +}; diff --git a/PowerControlHub/WarningType.h b/PowerControlHub/WarningType.h index c341935..432d57f 100644 --- a/PowerControlHub/WarningType.h +++ b/PowerControlHub/WarningType.h @@ -51,12 +51,14 @@ enum class WarningType : uint32_t SdCardMissing = 1UL << 12, // 0x00001000 - SD card not detected SdCardLowSpace = 1UL << 13, // 0x00002000 - SD card free space below 10% NextionInvalidConfig = 1UL << 14, // 0x00004000 - Nextion display configuration invalid + GpsInvalidConfig = 1UL << 15, // 0x00008000 - GPS sensor pin/UART configuration invalid - // Sensor warnings (bits 20+) + // Sensor warnings (bits 20+) SensorFailure = 1UL << 20, // 0x00100000 - Sensor communication failure TemperatureSensorFailure = 1UL << 21, // 0x00200000 - Temperature sensor failure CompassFailure = 1UL << 22, // 0x00400000 - Compass failed to initialize GpsFailure = 1UL << 23, // 0x00800000 - GPS sensor failure + LowVoltage = 1UL << 24, // 0x01000000 - Voltage below configured threshold }; // Warning type display strings - keep in sync with WarningType enum @@ -76,7 +78,7 @@ static const char WT_11[] PROGMEM = "SD Card Error"; static const char WT_12[] PROGMEM = "SD Card Not Found"; static const char WT_13[] PROGMEM = "SD Card Low Space"; static const char WT_14[] PROGMEM = "Nextion Invalid Config"; -static const char WT_15[] PROGMEM = ""; +static const char WT_15[] PROGMEM = "GPS Invalid Config"; static const char WT_16[] PROGMEM = ""; static const char WT_17[] PROGMEM = ""; static const char WT_18[] PROGMEM = ""; @@ -85,7 +87,7 @@ static const char WT_20[] PROGMEM = "Sensor Failure"; static const char WT_21[] PROGMEM = "Temperature Sensor Failure"; static const char WT_22[] PROGMEM = "Compass Failure"; static const char WT_23[] PROGMEM = "GPS Module Failure"; -static const char WT_24[] PROGMEM = ""; +static const char WT_24[] PROGMEM = "Low Voltage"; static const char WT_25[] PROGMEM = ""; static const char WT_26[] PROGMEM = ""; static const char WT_27[] PROGMEM = ""; diff --git a/README.md b/README.md index e5f7143..37e1b3e 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,8 @@ Key events: `WarningChanged`, `RelayStatusChanged`, `TemperatureUpdated`, `Humid - **CPU usage monitoring** via `SystemCpuMonitor`. Available over serial, WiFi, and MQTT. - **Boot counter** and **crash counter** tracked in `SystemHeader` with magic number validation (`0x53464201`). - **RGB LED warning indicator** (HW479) driven on configurable pins (`C8`). +- **PinGuard** — compile-time GPIO validation layer that rejects flash-reserved, input-only, and strapping pins at the point of assignment, returning `ACK:=Invalid pin` before the value reaches EEPROM. Board-specific tables are selected automatically from the IDF toolchain macros — no manual configuration required. See [Docs/PinGuard.md](Docs/PinGuard.md). +- **Crash loop guard** — `crashCounter` in `SystemHeader` is incremented at the start of every boot and only reset after full initialisation succeeds. If the counter reaches `CrashCounterThreshold` (default 3), the firmware resets the config to safe defaults before any hardware initialisation runs, breaking a watchdog reset loop caused by invalid pin configuration. ### Nextion Display @@ -386,6 +388,7 @@ GET /api/system/F13 |---|---| | [Docs/Commands.md](Docs/Commands.md) | Full serial and REST command reference (all groups F, C, R, H, W, S, M, N, E, T) | | [Docs/Local.md](Docs/Local.md) | `Local.h` configuration reference: board selection, feature flags, pin layout | +| [Docs/PinGuard.md](Docs/PinGuard.md) | GPIO validation: board pin tables, blocked pin tiers, crash loop guard | | [Docs/Sensors.md](Docs/Sensors.md) | Sensor classes, poll intervals, MQTT channels, warning behaviour, extensibility guide | | [Docs/Warnings.md](Docs/Warnings.md) | 32-bit warning type reference, `WarningManager` API, propagation model | | [Docs/Wifi.md](Docs/Wifi.md) | WiFi architecture: connection state machine, persistent connection model, handler pattern | @@ -416,7 +419,7 @@ GET /api/system/F13 | [Setup Guide](Docs/SETUP.md) | [Local.h Reference](Docs/Local.md) | [WiFi Architecture](Docs/Wifi.md) | | [Bill of Materials](Docs/BOM.md) | [Scheduled Events](Docs/ScheduleEvents.md) | [Bluetooth BLE](Docs/BluetoothBle.md) | | [Sensor Reference](Docs/Sensors.md) | [Warning System](Docs/Warnings.md) | [Message Bus](Docs/MessageBus.md) | -| [Command Reference](Docs/Commands.md) | | | +| [Command Reference](Docs/Commands.md) | [PinGuard & Crash Loop](Docs/PinGuard.md) | | --- diff --git a/TestData/test-commands.txt b/TestData/test-commands.txt index 4ec9d2b..2db56b1 100644 --- a/TestData/test-commands.txt +++ b/TestData/test-commands.txt @@ -819,15 +819,15 @@ E2:i=0;mt=binary_sensor;md=motion;mu=;bin=1 -> ACK:E2=ok:reboot=1 E4:0=Outside Temp -> ACK:E4=ok:reboot=1 # E3: Remove sensor at index 1 -E3:1 -> ACK:E3=ok:reboot=1 +E3:v=1 -> ACK:E3=ok:reboot=1 # E3: Remove sensor at index 0 -E3:0 -> ACK:E3=ok:reboot=1 +E3:v=0 -> ACK:E3=ok:reboot=1 # Error cases - invalid sensor index E1:i=8;id=7;n=TooMany;mn=x;ms=x -> ACK:E1=Invalid sensor index:*|ACK:E1=Invalid parameter:* E2:i=8;mt=sensor;md=temperature;mu=C;bin=0 -> ACK:E2=Invalid sensor index:*|ACK:E2=Invalid parameter:* -E3:8 -> ACK:E3=Invalid sensor index:* +E3:v=8 -> ACK:E3=Invalid sensor index:* E4:8=NewName -> ACK:E4=Invalid sensor index:* # Error cases - missing parameters