From daa2600bde6a42b4d77bb05571645746425ddab6 Mon Sep 17 00:00:00 2001 From: eddy Date: Wed, 5 Aug 2026 08:23:34 +0200 Subject: [PATCH] refactor: extract duplicate isHex/parseHex into shared serial_utils.h Fixes #19 --- src/client.cpp | 15 +-------------- src/main.cpp | 15 +-------------- src/serial_utils.h | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 28 deletions(-) create mode 100644 src/serial_utils.h diff --git a/src/client.cpp b/src/client.cpp index 15746fc..44a08e6 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -10,6 +10,7 @@ #include #include "version.h" #include "ecdh_helper.h" +#include "serial_utils.h" static const char *TAG = "client"; @@ -126,20 +127,6 @@ class MyClientCallbacks : public NimBLEClientCallbacks { static MyClientCallbacks clientCallbacks; -static bool isHex(const String &hex) { - for (int i = 0; i < hex.length(); i++) { - char c = hex.charAt(i); - if (!((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'))) return false; - } - return true; -} - -static void parseHex(const String &hex, uint8_t *out, int len) { - for (int i = 0; i < len; i++) { - out[i] = (uint8_t)strtoul(hex.substring(i * 2, i * 2 + 2).c_str(), nullptr, 16); - } -} - static void buildAesPacket(uint8_t cmd, uint8_t *packet) { uint32_t s = ++seq; packet[0] = (s >> 24) & 0xFF; diff --git a/src/main.cpp b/src/main.cpp index f795bb5..990d880 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,6 +13,7 @@ #include #include "version.h" #include "ecdh_helper.h" +#include "serial_utils.h" static const char *TAG = "server"; @@ -211,20 +212,6 @@ static bool decryptAesGcm(const uint8_t *packet, int idx, uint8_t *outCmd) { return true; } -static bool isHex(const String &hex) { - for (int i = 0; i < hex.length(); i++) { - char c = hex.charAt(i); - if (!((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'))) return false; - } - return true; -} - -static void parseHex(const String &hex, uint8_t *out, int len) { - for (int i = 0; i < len; i++) { - out[i] = (uint8_t)strtoul(hex.substring(i * 2, i * 2 + 2).c_str(), nullptr, 16); - } -} - static void otaReset() { otaInProgress = false; otaHandle = 0; diff --git a/src/serial_utils.h b/src/serial_utils.h new file mode 100644 index 0000000..6ca1137 --- /dev/null +++ b/src/serial_utils.h @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +#pragma once + +#include + +static inline bool isHex(const String &hex) { + for (int i = 0; i < hex.length(); i++) { + char c = hex.charAt(i); + if (!((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F'))) return false; + } + return true; +} + +static inline void parseHex(const String &hex, uint8_t *out, int len) { + for (int i = 0; i < len; i++) { + out[i] = (uint8_t)strtoul(hex.substring(i * 2, i * 2 + 2).c_str(), nullptr, 16); + } +}