Added initial Melody Playback Ability

Now, controlled via MQTT a Playback of a melody can Start, Stop, Pause 
etc. 

Settings like speed, total duration, pauses etc can be set.
This commit is contained in:
2025-01-19 21:15:07 +02:00
parent 2cbbc8d591
commit a33f626dde
36 changed files with 4263 additions and 236 deletions

18
build/sketch/.vscode/arduino.json vendored Normal file
View File

@@ -0,0 +1,18 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\.vscode\\arduino.json"
{
"port": "COM8",
"configuration": "UploadSpeed=921600,CPUFreq=240,FlashFreq=80,FlashMode=qio,FlashSize=4M,PartitionScheme=default,DebugLevel=none,PSRAM=disabled,LoopCore=1,EventsCore=1,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=default",
"output": "build",
"board": "esp32:esp32:esp32",
"programmer": "",
"useProgrammer": false,
"configurationRequired": true,
"monitorPortSettings": {
"port": "COM8",
"baudRate": 115200,
"lineEnding": "\r\n",
"dataBits": 8,
"parity": "none",
"stopBits": "one"
}
}

View File

@@ -0,0 +1,41 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\ESP32_Utils.hpp"
void ConnectWiFi_STA(bool useStaticIP = false)
{
Serial.println("");
WiFi.mode(WIFI_STA);
if(useStaticIP) {
WiFi.config(ip, gateway, subnet);
WiFi.setHostname(hostname);
}
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print('.');
}
Serial.println("");
Serial.print("Iniciado STA:\t");
Serial.println(ssid);
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());
}
void ConnectWiFi_AP(bool useStaticIP = false)
{
Serial.println("");
WiFi.mode(WIFI_AP);
while(!WiFi.softAP(ssid, password))
{
Serial.println(".");
delay(100);
}
if(useStaticIP) WiFi.softAPConfig(ip, gateway, subnet);
Serial.println("");
Serial.print("Iniciado AP:\t");
Serial.println(ssid);
Serial.print("IP address:\t");
Serial.println(WiFi.softAPIP());
}

View File

@@ -0,0 +1,89 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\ESP32_Utils_MQTT_Async.hpp"
#pragma once
TimerHandle_t mqttReconnectTimer;
TimerHandle_t wifiReconnectTimer;
void ConnectToMqtt()
{
Serial.println("Connecting to MQTT...");
mqttClient.connect();
}
void WiFiEvent(WiFiEvent_t event)
{
Serial.printf("[WiFi-event] event: %d\n", event);
switch(event)
{
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
ConnectToMqtt();
break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
Serial.println("WiFi lost connection");
xTimerStop(mqttReconnectTimer, 0); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi
xTimerStart(wifiReconnectTimer, 0);
break;
}
}
void OnMqttConnect(bool sessionPresent)
{
Serial.println("Connected to MQTT.");
Serial.print("Session present: ");
Serial.println(sessionPresent);
SuscribeMqtt();
}
void OnMqttDisconnect(AsyncMqttClientDisconnectReason reason)
{
Serial.println("Disconnected from MQTT.");
if(WiFi.isConnected())
{
xTimerStart(mqttReconnectTimer, 0);
}
}
void OnMqttSubscribe(uint16_t packetId, uint8_t qos)
{
Serial.println("Subscribe acknowledged.");
Serial.print(" packetId: ");
Serial.println(packetId);
Serial.print(" qos: ");
Serial.println(qos);
}
void OnMqttUnsubscribe(uint16_t packetId)
{
Serial.println("Unsubscribe acknowledged.");
Serial.print(" packetId: ");
Serial.println(packetId);
}
void OnMqttPublish(uint16_t packetId)
{
Serial.println("Publish acknowledged.");
Serial.print(" packetId: ");
Serial.println(packetId);
}
void InitMqtt()
{
mqttReconnectTimer = xTimerCreate("mqttTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, reinterpret_cast<TimerCallbackFunction_t>(ConnectToMqtt));
wifiReconnectTimer = xTimerCreate("wifiTimer", pdMS_TO_TICKS(5000), pdFALSE, (void*)0, reinterpret_cast<TimerCallbackFunction_t>(ConnectWiFi_STA));
mqttClient.onConnect(OnMqttConnect);
mqttClient.onDisconnect(OnMqttDisconnect);
mqttClient.onSubscribe(OnMqttSubscribe);
mqttClient.onUnsubscribe(OnMqttUnsubscribe);
mqttClient.onMessage(OnMqttReceived);
mqttClient.onPublish(OnMqttPublish);
mqttClient.setServer(MQTT_HOST, MQTT_PORT);
mqttClient.setCredentials(MQTT_USER, MQTT_PASS);
}

89
build/sketch/MQTT.hpp Normal file
View File

@@ -0,0 +1,89 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\MQTT.hpp"
#pragma once
const IPAddress MQTT_HOST(10,98,20,10);
const int MQTT_PORT = 1883;
AsyncMqttClient mqttClient;
extern bool forceStop;
extern volatile bool playing;
String GetPayloadContent(char * data, size_t len) {
String content = "";
for(size_t i = 0; i < len; i++)
{
content.concat(data[i]);
}
return content;
}
void SuscribeMqtt() {
String topicPlayback = String("vesper/") + DEV_ID + "/control/playback";
String topicSetMelody = String("vesper/") + DEV_ID + "/control/setMelody";
String topicAddMelody = String("vesper/") + DEV_ID + "/control/add_melody";
uint16_t control_id = mqttClient.subscribe(topicPlayback.c_str(), 2);
Serial.print("Subscribing to Playback Control topic, QoS 2, packetId: ");
Serial.println(control_id);
uint16_t set_melody_id = mqttClient.subscribe(topic_eBrake.c_str(), 2);
Serial.print("Subscribing to Set-Melody topic, QoS 2, packetId: ");
Serial.println(set_melody_id);
// doesn't work yet:
uint16_t add_melody_id = mqttClient.subscribe(topicAddMelody.c_str(), 2);
Serial.print("Subscribing to Add-Melody topic, QoS 2, packetId: ");
Serial.println(add_melody_id);
}
void PublishMqtt(unsigned long data) {
//Doesn't publish anything yet.
String topicData = String("vesper/") + DEV_ID + "/data";
String payload = String(data);
mqttClient.publish(topicData.c_str(), 0, true, (char*)payload.c_str());
}
void OnMqttReceived(char * topic, char * payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total)
{
String topicPlayback = String("vesper/") + DEV_ID + "/control/playback";
String topicSetMelody = String("vesper/") + DEV_ID + "/control/setMelody";
String topicAddMelody = String("vesper/") + DEV_ID + "/control/add_melody";
String payloadContent = String(payload).substring(0, len);
if (String(topic) == topicPlayback){
if (len == 1 && payload[0] == '0') { // Checking for raw '0' byte
forceStop = true;
Serial.println("STOPPING Playback!");
}
else if (len == 1 && payload[0] == '1'){
playing = true;
}
}
else if (String(topic) == topicSetMelody) {
// Handle the playback command
handleJSON(payload);
}
else if (String(topic) == topicAddMelody) {
// Handle adding melody
Serial.println("Adding melody...");
// You can call a function here to handle adding the melody
}
else {
// Handle unknown topics
Serial.println("Unknown topic received.");
}
}

28
build/sketch/Timers.hpp Normal file
View File

@@ -0,0 +1,28 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\Timers.hpp"
#pragma once
extern volatile uint64_t startTime;
extern melody_attributes melody;
extern volatile bool playing;
void durationTimer(void *param);
void durationTimer(void *param){
// SETUP TASK
for (;;){
if (playing){
uint64_t now = millis();
uint64_t timeToStop = startTime + melody.duration;
if (now > timeToStop) {
playing = false;
Serial.println("Time Limit Reached. Stopping !");
}
}
}
}

View File

@@ -0,0 +1,78 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\bellEngine.hpp"
// MELODY PLAYBACK WILL BE HANDLED HERE
#include <vector>
extern volatile bool playing;
extern melody_attributes melody;
extern uint16_t relayMask;
extern bool forceStop;
void loop_playback(std::vector<uint16_t> &melody_steps);
void itsHammerTime(uint16_t note);
void bellEngine(void *parameter) {
// SETUP TASK
for (;;) {
// Playback until stopped (Completes AT LEAST 1 full loop)
loop_playback(melody_steps);
/*
UBaseType_t highWaterMark = uxTaskGetStackHighWaterMark(NULL);
Serial.print("Stack high water mark: ");
Serial.println(highWaterMark);
*/
}
}
void loop_playback(std::vector<uint16_t> &melody_steps) {
while(playing){
// iterate through the beats and call the bell mechanism on each beat
for (uint16_t note : melody_steps) {
if (forceStop) return;
itsHammerTime(note);
int tempo = melody.speed;
vTaskDelay(pdMS_TO_TICKS(tempo));
}
// pause for "interval_duration"
vTaskDelay(pdMS_TO_TICKS(melody.interval_duration));
// pause for standard "breath-out" duration if interval was less than 3000ms
if (melody.interval_duration<3000) vTaskDelay(pdMS_TO_TICKS(3000));
}
}
void itsHammerTime(uint16_t note){
// THIS NEEDS REWORK, TO WAIT, DYNAMICLY PER RELAY
// MUST BE CONFIGURABLE REMOTELY
for (uint8_t i=0; i<16; i++) {
if (note & (1 << i)) {
relays.digitalWrite(i, LOW);
}
}
vTaskDelay(pdMS_TO_TICKS(relayDurations[0]));
for (uint8_t i=0; i<16; i++) {
relays.digitalWrite(i, HIGH);
}
}

11
build/sketch/config.h Normal file
View File

@@ -0,0 +1,11 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\config.h"
const char* ssid = "SmartNet";
const char* password = "smartpass";
const char* hostname = "ESP32_mqtt_test";
IPAddress ip(10, 98, 30, 150);
IPAddress gateway(10, 98, 30, 1);
IPAddress subnet(255, 255, 255, 0);
#define MQTT_USER "esp32_vesper"
#define MQTT_PASS "vesper"

View File

@@ -0,0 +1,92 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\functions.hpp"
#pragma once
extern std::vector<uint16_t> melody_steps;
void setMelodyAttributes(JsonDocument doc);
void loadMelodyInRAM(std::vector<uint16_t> &melody_steps);
void handleJSON(String * payload) {
JsonDocument doc;
DeserializationError error = deserializeJson(doc, payload);
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return;
}
setMelodyAttributes(doc);
loadMelodyInRAM(melody_steps);
}
void setMelodyAttributes(JsonDocument doc){
melody.name = doc["name"].as<const char*>(); // Convert to std::string "name" : "eortastiko"
melody.id = doc["id"].as<uint16_t>();
melody.duration = doc["duration"].as<uint32_t>();
melody.infinite_play = doc["infinite"].as<bool>();
melody.interval_duration = doc["inter_dur"].as<uint16_t>();
melody.speed = doc["speed"].as<uint16_t>();
// Print Just for Debugging Purposes
Serial.printf("Name: %s, ID: %d, Duration: %lu, Inf: %s, Inter: %d, Speed: %d\n",
melody.name.c_str(),
melody.id,
melody.duration,
melody.infinite_play ? "true" : "false",
melody.interval_duration,
melody.speed);
}
void loadMelodyInRAM(std::vector<uint16_t> &melody_steps) {
//if (!newMelody || !playing) return;
// read the file and save in RAM
std::string filePath = "/" + melody.name + ".bin";
Serial.println("New Melody Selected !!!");
Serial.println("Reading data from file...");
//Serial.println(filePath);
File bin_file = SPIFFS.open(filePath.c_str(), "r");
if (!bin_file) {
Serial.println("Failed to Open File");
return;
}
size_t fileSize = bin_file.size();
size_t steps = fileSize / 2;
melody_steps.resize(steps);
Serial.print("Opened File ! Size: ");
Serial.print(fileSize);
Serial.print(" Steps: ");
Serial.println(steps);
for (size_t i=0; i<steps; i++){
melody_steps[i] = bin_file.read() << 8 | bin_file.read();
}
for (size_t i=0; i<steps; i++){
Serial.print("Current Step: ");
Serial.printf("%03d // ", i);
Serial.print(" HEX Value: ");
Serial.printf("0x%04X\n", melody_steps[i]);
}
Serial.println("Closing File");
bin_file.close();
// closing the file
}

View File

@@ -0,0 +1 @@
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\hammerTime.hpp"

108
build/sketch/vesper.ino.cpp Normal file
View File

@@ -0,0 +1,108 @@
#include <Arduino.h>
#line 1 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\vesper.ino"
#include <WiFi.h>
#include <AsyncMqttClient.h>
#include <ArduinoJson.h>
#include <FS.h>
#include <SPIFFS.h>
#include <string>
#include <Wire.h>
#include <Adafruit_PCF8574.h>
#define PCF8574_ADDR 0x24
Adafruit_PCF8574 relays;
#define DEV_ID "id-96638646"
struct melody_attributes {
std::string name; // Contains the name of each Melody saved
uint16_t id; // The (internal) ID of the selected melody
uint32_t duration; // Indicates the total Duration in Minutes
bool infinite_play; // Infinite Loop Indicator (If True the melody will loop forever or until stoped, with pauses of "interval duration in between loops")
uint16_t interval_duration; // Indicates the Duration of the Interval between finished loops, IF "inf" is true
uint16_t speed; // Indicates the Speed in 9 Steps. 1-9 (Steps can be adjusted in the bellEngine function)
};
melody_attributes melody;
std::vector<uint16_t> melody_steps;
volatile bool playing = false;
uint16_t relayMask = 0; // Bitmask indicating which relays to activate
uint8_t relayDurations[16] = {100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100}; // Deactivation timers for each relay in milliseconds
volatile uint64_t startTime = 0;
bool forceStop = false;
#include "functions.hpp"
#include "config.h" // Sustituir con datos de vuestra red
#include "MQTT.hpp"
#include "ESP32_Utils.hpp"
#include "ESP32_Utils_MQTT_Async.hpp"
#include "bellEngine.hpp"
#include "hammerTime.hpp"
#include "Timers.hpp"
TaskHandle_t bellEngineHandle = NULL;
#line 47 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\vesper.ino"
void setup();
#line 99 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\vesper.ino"
void loop();
#line 47 "C:\\Users\\espi_\\Documents\\Arduino\\vesper\\vesper.ino"
void setup()
{
// Initialize Serial Communications & I2C Bus (for debugging)
Serial.begin(115200);
delay(50);
// Initialize PCF8574
Wire.begin(4,15);
relays.begin(PCF8574_ADDR, &Wire);
// Initialize Relays
for (uint8_t p=0; p<6; p++){
relays.pinMode(p, OUTPUT);
relays.digitalWrite(p, HIGH);
}
// Initialize SPIFFS
if (!SPIFFS.begin(true)) { // 'true' means format SPIFFS if initialization fails
Serial.println("Failed to mount SPIFFS");
return;
}
Serial.println("SPIFFS mounted successfully");
delay(50);
// Initialize WiFi and MQTT
WiFi.onEvent(WiFiEvent);
InitMqtt();
ConnectWiFi_STA();
delay(1000);
xTaskCreatePinnedToCore(
bellEngine, // Task function
"bellEngine", // Task name
8192, // Stack size
NULL, // Task input parameters
1, // Task priority, be carefull when changing this
&bellEngineHandle, // Task handle, add one if you want control over the task (resume or suspend the task)
1 // Core to run the task on
);
xTaskCreatePinnedToCore(
durationTimer, // Task function
"durationTimer", // Task name
8192, // Stack size
NULL, // Task input parameters
1, // Task priority, be carefull when changing this
NULL, // Task handle, add one if you want control over the task (resume or suspend the task)
1 // Core to run the task on
);
}
void loop()
{
}

View File

@@ -0,0 +1,248 @@
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\vesper.ino.cpp.o: \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\vesper.ino.cpp \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Arduino.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp_arduino_version.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/FreeRTOS.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/esp_additions/include/freertos/FreeRTOSConfig.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/esp_additions/arch/xtensa/include/freertos/FreeRTOSConfig_arch.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/xtensa_config.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/hal.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/core.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtensa-versions.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/core-isa.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/core-matmap.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/tie.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/system.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/xtensa_context.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtensa_context.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/corebits.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtruntime-frames.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/projdefs.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/portable.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/deprecated_definitions.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portmacro.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtruntime.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/specreg.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtruntime-core-state.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xt_instr_macros.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtruntime.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/spinlock.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_cpu.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/soc_caps.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtensa_api.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xtensa/xtensa_context.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/include/xt_utils.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/xtensa/esp32/include/xtensa/config/extreg.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_bit_defs.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_attr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_intr_alloc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_err.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_compiler.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_system/include/esp_private/crosscore_int.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_macros.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_assert.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_memory_utils.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/soc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_assert.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/reg_base.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/newlib/platform_include/esp_newlib.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/heap/include/esp_heap_caps.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/heap/include/multi_heap.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_rom/include/esp_rom_sys.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/reset_reasons.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_system/include/esp_system.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_common/include/esp_idf_version.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos/portbenchmark.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/mpu_wrappers.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/task.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/list.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/semphr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/queue.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/task.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_sleep.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/touch_sensor_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/gpio_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/queue.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/event_groups.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/freertos/FreeRTOS-Kernel/include/freertos/timers.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-log.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_timer/include/esp_timer.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_etm.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_rom/include/esp32/rom/ets_sys.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/log/include/esp_log.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/log/include/esp_log_internal.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-matrix.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/gpio_sig_map.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-uart.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/uart_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/clk_tree_defs.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-gpio.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\variants\esp32/pins_arduino.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/driver/gpio/include/driver/gpio.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_rom/include/esp_rom_gpio.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/gpio_pins.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/driver/gpio/include/driver/gpio_etm.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-touch.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-dac.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-adc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-spi.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-i2c.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-ledc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/ledc_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-rmt.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-sigmadelta.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-timer.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/driver/gptimer/include/driver/gptimer_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/timer_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-bt.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-psram.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-rgb-led.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-cpu.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp8266-compat.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/soc/esp32/include/soc/gpio_reg.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/stdlib_noniso.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/binary.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/extra_attr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/WCharacter.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/WString.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/pgmspace.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Stream.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Print.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Printable.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/IPAddress.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/ip_addr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/opt.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/port/include/lwipopts.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/newlib/platform_include/sys/ioctl.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/newlib/platform_include/sys/poll.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_system/include/esp_task.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_random.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/port/include/sntp/sntp_get_set_time.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/port/include/sockets_ext.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/port/freertos/include/arch/sys_arch.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/debug.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/arch.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/port/esp32xx/include/arch/cc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/newlib/platform_include/errno.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/def.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/ip4_addr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/ip6_addr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/def.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/ip6_zone.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_netif/include/esp_netif_ip_addr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Client.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Server.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Udp.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/HardwareSerial.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/HWCDC.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/USBCDC.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Esp.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_partition/include/esp_partition.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/hal/cpu_hal.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/hal/cpu_ll.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/io_pin_remap.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Arduino.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFi.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Print.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiType.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_wifi/include/esp_wifi_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_wifi/include/esp_private/esp_wifi_types_private.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/esp_interface.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_event/include/esp_event_base.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiSTA.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiGeneric.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_event/include/esp_event.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_event/include/esp_event_base.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_wifi/include/esp_smartconfig.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_netif/include/esp_netif_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_netif/include/esp_netif_ip_addr.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_eth/include/esp_eth_driver.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_eth/include/esp_eth_com.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/eth_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_eth/include/esp_eth_spec.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_eth/include/esp_eth_mac.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/driver/spi/include/driver/spi_master.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/hal/include/hal/spi_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/driver/spi/include/driver/spi_common.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_system/include/esp_ipc.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_hw_support/include/intr_types.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_eth/include/esp_eth_phy.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/espressif__network_provisioning/include/network_provisioning/manager.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/protocomm/include/common/protocomm.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/protocomm/include/security/protocomm_security.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/espressif__network_provisioning/include/network_provisioning/network_config.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/Network.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkInterface.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Printable.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkEvents.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkManager.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/WString.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkClient.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Client.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkServer.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Server.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkUdp.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/Udp.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/cbuf.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/esp_ringbuf/include/freertos/ringbuf.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiAP.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiScan.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiClient.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiServer.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\WiFi\src/WiFiUdp.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Network\src/NetworkUdp.h \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient.h \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient.hpp \
C:\Users\espi_\Documents\Arduino\libraries\Async_TCP\src/AsyncTCP.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/pbuf.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-632e0c2a\esp32/include/lwip/lwip/src/include/lwip/err.h \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Flags.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/ParsingInformation.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/MessageProperties.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Helpers.hpp \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-log.h \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Callbacks.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/DisconnectReasons.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Errors.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Storage.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Packet.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/ConnAckPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PingRespPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/SubAckPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/UnsubAckPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PublishPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PubRelPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PubAckPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PubRecPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/PubCompPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/Connect.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/OutPacket.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/PingReq.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/PubAck.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/Disconn.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/Subscribe.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/Unsubscribe.hpp \
C:\Users\espi_\Documents\Arduino\libraries\AsyncMqttClient\src/AsyncMqttClient/Packets/Out/Publish.hpp \
C:\Users\espi_\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.h \
C:\Users\espi_\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson.hpp \
C:\Users\espi_\Documents\Arduino\libraries\ArduinoJson\src/ArduinoJson/Configuration.hpp \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\FS\src/FS.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\SPIFFS\src/SPIFFS.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\Wire\src/Wire.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/HardwareI2C.h \
C:\Users\espi_\Documents\Arduino\libraries\Adafruit_PCF8574/Adafruit_PCF8574.h \
C:\Users\espi_\Documents\Arduino\libraries\Adafruit_BusIO/Adafruit_BusIO_Register.h \
C:\Users\espi_\Documents\Arduino\libraries\Adafruit_BusIO/Adafruit_I2CDevice.h \
C:\Users\espi_\Documents\Arduino\libraries\Adafruit_BusIO/Adafruit_SPIDevice.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\libraries\SPI\src/SPI.h \
C:\Users\espi_\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\cores\esp32/esp32-hal-spi.h \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\functions.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\config.h \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\MQTT.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\ESP32_Utils.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\ESP32_Utils_MQTT_Async.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\bellEngine.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\hammerTime.hpp \
c:\Users\espi_\Documents\Arduino\vesper\build\sketch\Timers.hpp