From 6cf464c3e36d67adb131df3e7add3aa37c93f055 Mon Sep 17 00:00:00 2001 From: Djuri Baars Date: Mon, 2 Sep 2024 23:04:23 +0200 Subject: [PATCH] Dependency upgrade and cleanup --- platformio.ini | 3 +- src/lib/improv.cpp | 143 --------------------------------------------- src/lib/improv.hpp | 86 --------------------------- 3 files changed, 1 insertion(+), 231 deletions(-) delete mode 100644 src/lib/improv.cpp delete mode 100644 src/lib/improv.hpp diff --git a/platformio.ini b/platformio.ini index 2321a84..14799cf 100644 --- a/platformio.ini +++ b/platformio.ini @@ -33,8 +33,7 @@ build_unflags = lib_deps = https://github.com/joltwallet/esp_littlefs.git bblanchon/ArduinoJson@^7.1.0 - esphome/Improv@^1.2.3 - mathieucarbou/ESP Async WebServer@2.10.8 + mathieucarbou/ESPAsyncWebServer @ 3.2.0 adafruit/Adafruit BusIO@^1.16.1 adafruit/Adafruit MCP23017 Arduino Library@^2.3.2 adafruit/Adafruit NeoPixel@^1.12.3 diff --git a/src/lib/improv.cpp b/src/lib/improv.cpp deleted file mode 100644 index 3de3ef5..0000000 --- a/src/lib/improv.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "improv.h" - -namespace improv { - -ImprovCommand parse_improv_data(const std::vector &data, - bool check_checksum) { - return parse_improv_data(data.data(), data.size(), check_checksum); -} - -ImprovCommand parse_improv_data(const uint8_t *data, size_t length, - bool check_checksum) { - ImprovCommand improv_command; - Command command = (Command)data[0]; - uint8_t data_length = data[1]; - - if (data_length != length - 2 - check_checksum) { - improv_command.command = UNKNOWN; - return improv_command; - } - - if (check_checksum) { - uint8_t checksum = data[length - 1]; - - uint32_t calculated_checksum = 0; - for (uint8_t i = 0; i < length - 1; i++) { - calculated_checksum += data[i]; - } - - if ((uint8_t)calculated_checksum != checksum) { - improv_command.command = BAD_CHECKSUM; - return improv_command; - } - } - - if (command == WIFI_SETTINGS) { - uint8_t ssid_length = data[2]; - uint8_t ssid_start = 3; - size_t ssid_end = ssid_start + ssid_length; - - uint8_t pass_length = data[ssid_end]; - size_t pass_start = ssid_end + 1; - size_t pass_end = pass_start + pass_length; - - std::string ssid(data + ssid_start, data + ssid_end); - std::string password(data + pass_start, data + pass_end); - return {.command = command, .ssid = ssid, .password = password}; - } - - improv_command.command = command; - return improv_command; -} - -bool parse_improv_serial_byte(size_t position, uint8_t byte, - const uint8_t *buffer, - std::function &&callback, - std::function &&on_error) { - if (position == 0) return byte == 'I'; - if (position == 1) return byte == 'M'; - if (position == 2) return byte == 'P'; - if (position == 3) return byte == 'R'; - if (position == 4) return byte == 'O'; - if (position == 5) return byte == 'V'; - - if (position == 6) return byte == IMPROV_SERIAL_VERSION; - - if (position <= 8) return true; - - uint8_t type = buffer[7]; - uint8_t data_len = buffer[8]; - - if (position <= 8 + data_len) return true; - - if (position == 8 + data_len + 1) { - uint8_t checksum = 0x00; - for (size_t i = 0; i < position; i++) checksum += buffer[i]; - - if (checksum != byte) { - on_error(ERROR_INVALID_RPC); - return false; - } - - if (type == TYPE_RPC) { - auto command = parse_improv_data(&buffer[9], data_len, false); - return callback(command); - } - } - - return false; -} - -std::vector build_rpc_response(Command command, - const std::vector &datum, - bool add_checksum) { - std::vector out; - uint32_t length = 0; - out.push_back(command); - for (const auto &str : datum) { - uint8_t len = str.length(); - length += len + 1; - out.push_back(len); - out.insert(out.end(), str.begin(), str.end()); - } - out.insert(out.begin() + 1, length); - - if (add_checksum) { - uint32_t calculated_checksum = 0; - - for (uint8_t byte : out) { - calculated_checksum += byte; - } - out.push_back(calculated_checksum); - } - return out; -} - -#ifdef ARDUINO -std::vector build_rpc_response(Command command, - const std::vector &datum, - bool add_checksum) { - std::vector out; - uint32_t length = 0; - out.push_back(command); - for (const auto &str : datum) { - uint8_t len = str.length(); - length += len; - out.push_back(len); - out.insert(out.end(), str.begin(), str.end()); - } - out.insert(out.begin() + 1, length); - - if (add_checksum) { - uint32_t calculated_checksum = 0; - - for (uint8_t byte : out) { - calculated_checksum += byte; - } - out.push_back(calculated_checksum); - } - return out; -} -#endif // ARDUINO - -} // namespace improv \ No newline at end of file diff --git a/src/lib/improv.hpp b/src/lib/improv.hpp deleted file mode 100644 index 1c9453d..0000000 --- a/src/lib/improv.hpp +++ /dev/null @@ -1,86 +0,0 @@ -#pragma once - -#ifdef ARDUINO -#include -#endif // ARDUINO - -#include -#include -#include -#include - -namespace improv { - -static const char *const SERVICE_UUID = "00467768-6228-2272-4663-277478268000"; -static const char *const STATUS_UUID = "00467768-6228-2272-4663-277478268001"; -static const char *const ERROR_UUID = "00467768-6228-2272-4663-277478268002"; -static const char *const RPC_COMMAND_UUID = - "00467768-6228-2272-4663-277478268003"; -static const char *const RPC_RESULT_UUID = - "00467768-6228-2272-4663-277478268004"; -static const char *const CAPABILITIES_UUID = - "00467768-6228-2272-4663-277478268005"; - -enum Error : uint8_t { - ERROR_NONE = 0x00, - ERROR_INVALID_RPC = 0x01, - ERROR_UNKNOWN_RPC = 0x02, - ERROR_UNABLE_TO_CONNECT = 0x03, - ERROR_NOT_AUTHORIZED = 0x04, - ERROR_UNKNOWN = 0xFF, -}; - -enum State : uint8_t { - STATE_STOPPED = 0x00, - STATE_AWAITING_AUTHORIZATION = 0x01, - STATE_AUTHORIZED = 0x02, - STATE_PROVISIONING = 0x03, - STATE_PROVISIONED = 0x04, -}; - -enum Command : uint8_t { - UNKNOWN = 0x00, - WIFI_SETTINGS = 0x01, - IDENTIFY = 0x02, - GET_CURRENT_STATE = 0x02, - GET_DEVICE_INFO = 0x03, - GET_WIFI_NETWORKS = 0x04, - BAD_CHECKSUM = 0xFF, -}; - -static const uint8_t CAPABILITY_IDENTIFY = 0x01; -static const uint8_t IMPROV_SERIAL_VERSION = 1; - -enum ImprovSerialType : uint8_t { - TYPE_CURRENT_STATE = 0x01, - TYPE_ERROR_STATE = 0x02, - TYPE_RPC = 0x03, - TYPE_RPC_RESPONSE = 0x04 -}; - -struct ImprovCommand { - Command command; - std::string ssid; - std::string password; -}; - -ImprovCommand parse_improv_data(const std::vector &data, - bool check_checksum = true); -ImprovCommand parse_improv_data(const uint8_t *data, size_t length, - bool check_checksum = true); - -bool parse_improv_serial_byte(size_t position, uint8_t byte, - const uint8_t *buffer, - std::function &&callback, - std::function &&on_error); - -std::vector build_rpc_response(Command command, - const std::vector &datum, - bool add_checksum = true); -#ifdef ARDUINO -std::vector build_rpc_response(Command command, - const std::vector &datum, - bool add_checksum = true); -#endif // ARDUINO - -} // namespace improv \ No newline at end of file