From fc41a7de828cf124c1aa85ef8e609abbeeedb481 Mon Sep 17 00:00:00 2001 From: brentru Date: Fri, 15 Aug 2025 13:41:36 -0400 Subject: [PATCH] Add beginEPD full implementation with safety concerns and a better init flow --- .vscode/settings.json | 13 +- src/components/display/hardware.cpp | 134 +++++++++++++----- src/components/display/hardware.h | 17 ++- .../description/v1/description.pb.c | 2 +- .../description/v1/description.pb.h | 2 +- src/wippersnapper/display/v1/display.pb.c | 2 +- src/wippersnapper/display/v1/display.pb.h | 10 +- src/wippersnapper/ds18x20/v1/ds18x20.pb.c | 2 +- src/wippersnapper/ds18x20/v1/ds18x20.pb.h | 2 +- src/wippersnapper/i2c/v1/i2c.pb.c | 2 +- src/wippersnapper/i2c/v1/i2c.pb.h | 2 +- src/wippersnapper/pin/v1/pin.pb.c | 2 +- src/wippersnapper/pin/v1/pin.pb.h | 2 +- src/wippersnapper/pixels/v1/pixels.pb.c | 2 +- src/wippersnapper/pixels/v1/pixels.pb.h | 2 +- src/wippersnapper/pwm/v1/pwm.pb.c | 2 +- src/wippersnapper/pwm/v1/pwm.pb.h | 2 +- src/wippersnapper/servo/v1/servo.pb.c | 2 +- src/wippersnapper/servo/v1/servo.pb.h | 2 +- src/wippersnapper/signal/v1/signal.pb.c | 2 +- src/wippersnapper/signal/v1/signal.pb.h | 2 +- src/wippersnapper/uart/v1/uart.pb.c | 2 +- src/wippersnapper/uart/v1/uart.pb.h | 2 +- 23 files changed, 148 insertions(+), 64 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 12d7d847..9356a495 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,18 @@ { "files.associations": { "limits": "c", - "type_traits": "c" + "type_traits": "c", + "array": "cpp", + "deque": "cpp", + "list": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "string_view": "cpp", + "format": "cpp", + "initializer_list": "cpp", + "span": "cpp" }, "C_Cpp.dimInactiveRegions": true, "dotnet.defaultSolution": "disable", diff --git a/src/components/display/hardware.cpp b/src/components/display/hardware.cpp index fadeaa63..c8a4a58c 100644 --- a/src/components/display/hardware.cpp +++ b/src/components/display/hardware.cpp @@ -34,7 +34,7 @@ DisplayHardware::DisplayHardware() { The display type to set. */ void DisplayHardware::setType(wippersnapper_display_v1_DisplayType type) { - _type = type; + _type = type; } /*! @@ -42,7 +42,7 @@ void DisplayHardware::setType(wippersnapper_display_v1_DisplayType type) { @return The current display type. */ wippersnapper_display_v1_DisplayType DisplayHardware::getType() { - return _type; + return _type; } /*! @@ -53,37 +53,106 @@ wippersnapper_display_v1_DisplayType DisplayHardware::getType() { Pointer to the SPI configuration structure for EPD. @return True if configuration was successful, False otherwise. */ -bool DisplayHardware::beginEPD(wippersnapper_display_v1_EPDConfig *config, wippersnapper_display_v1_EpdSpiConfig *spi_config) { - // Convert pins in config to int16_t instances - int16_t dc = -1, rst = -1, cs = -1, srcs = -1, busy = -1; - dc = (int16_t)atoi(spi_config->pin_dc+ 1); - rst = (int16_t)atoi(spi_config->pin_rst+ 1); - cs = (int16_t)atoi(spi_config->pin_cs+ 1); - srcs = (int16_t)atoi(spi_config->pin_sram_cs+ 1); - busy = (int16_t)atoi(spi_config->pin_busy+ 1); +bool DisplayHardware::beginEPD( + wippersnapper_display_v1_EPDConfig *config, + wippersnapper_display_v1_EpdSpiConfig *spi_config) { + // Validate pointers + if (config == nullptr || spi_config == nullptr) { + return false; + } - // Configure EPD mode - thinkinkmode_t epd_mode; - if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_GRAYSCALE4) { - epd_mode = THINKINK_GRAYSCALE4; - } else if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_MONO) { - epd_mode = THINKINK_MONO; - } else { - epd_mode = THINKINK_MONO; // Default to mono - } + // Validate panel type + if (config->panel == + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED) { + return false; // Unsupported panel type + } - // Assign driver instance based on panel type - if (config->panel == wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_MFGN) { - _disp_thinkink_grayscale4_eaamfgn = new ThinkInk_290_Grayscale4_EAAMFGN(dc, rst, cs, srcs, busy); - _disp_thinkink_grayscale4_eaamfgn->begin(epd_mode); - } else if (config->panel == wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_T5) { - _disp_thinkink_grayscale4_t5 = new ThinkInk_290_Grayscale4_T5(dc, rst, cs, srcs, busy); - _disp_thinkink_grayscale4_t5->begin(epd_mode); - } else { - return false; // Unsupported panel type - } + // Validate mode is a correct EPD mode + if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_UNSPECIFIED) { + return false; // Unsupported mode + } - return true; // Configuration successful + // If we already have a display driver assigned to this hardware instance, + // clean it up! + if (_thinkink_driver == + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_MFGN) { + delete _disp_thinkink_grayscale4_eaamfgn; + _disp_thinkink_grayscale4_eaamfgn = nullptr; + _thinkink_driver = + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED; + } else if ( + _thinkink_driver == + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5) { + delete _disp_thinkink_grayscale4_t5; + _disp_thinkink_grayscale4_t5 = nullptr; + _thinkink_driver = + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED; + } + + // Parse all SPI bus pins + // Check length + if (strlen(spi_config->pin_dc) < 2 || strlen(spi_config->pin_rst) < 2 || + strlen(spi_config->pin_cs) < 2) { + return false; + } + // SPI pins must start with 'D' + if (spi_config->pin_dc[0] != 'D' || spi_config->pin_rst[0] != 'D' || + spi_config->pin_cs[0] != 'D') { + return false; + } + + // Parse and assign pins + int16_t srcs = -1, busy = -1; + int16_t dc = (int16_t)atoi(spi_config->pin_dc + 1); + int16_t rst = (int16_t)atoi(spi_config->pin_rst + 1); + int16_t cs = (int16_t)atoi(spi_config->pin_cs + 1); + + // Optionally parse SRAM CS and BUSY pins + if (strlen(spi_config->pin_sram_cs) >= 2 && + spi_config->pin_sram_cs[0] == 'D') { + srcs = (int16_t)atoi(spi_config->pin_sram_cs + 1); + } + if (strlen(spi_config->pin_busy) >= 2 && spi_config->pin_busy[0] == 'D') { + busy = (int16_t)atoi(spi_config->pin_busy + 1); + } + + // TODO: Configure SPI bus selection (UNUSED AS OF RIGHT NOW) + + // Configure EPD mode + thinkinkmode_t epd_mode; + if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_GRAYSCALE4) { + epd_mode = THINKINK_GRAYSCALE4; + } else if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_MONO) { + epd_mode = THINKINK_MONO; + } + + // Assign driver instance based on panel type + if (config->panel == + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_MFGN) { + _disp_thinkink_grayscale4_eaamfgn = + new ThinkInk_290_Grayscale4_EAAMFGN(dc, rst, cs, srcs, busy); + if (!_disp_thinkink_grayscale4_eaamfgn) + return false; // Allocation failed + // Initialize the display + _disp_thinkink_grayscale4_eaamfgn->begin(epd_mode); + _thinkink_driver = + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_MFGN; + } else if ( + config->panel == + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5) { + _disp_thinkink_grayscale4_t5 = + new ThinkInk_290_Grayscale4_T5(dc, rst, cs, srcs, busy); + if (!_disp_thinkink_grayscale4_t5) + return false; // Allocation failed + // Initialize the display + _disp_thinkink_grayscale4_t5->begin(epd_mode); + _thinkink_driver = + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5; + } else { + return false; // Unsupported panel type + } + + return true; // Configuration successful } /*! @@ -93,7 +162,7 @@ bool DisplayHardware::beginEPD(wippersnapper_display_v1_EPDConfig *config, wippe @return True if initialization was successful, false otherwise. */ bool DisplayHardware::begin(bool reset) { - return true; // Placeholder for actual initialization logic + return true; // Placeholder for actual initialization logic } /*! @@ -102,6 +171,5 @@ bool DisplayHardware::begin(bool reset) { The size of the text to set. */ void setTextSize(uint8_t sz) { - // Placeholder for setting text size on the display TODO + // Placeholder for setting text size on the display TODO } - diff --git a/src/components/display/hardware.h b/src/components/display/hardware.h index 815f8380..b4fef854 100644 --- a/src/components/display/hardware.h +++ b/src/components/display/hardware.h @@ -33,15 +33,20 @@ public: // High-level API functions void setType(wippersnapper_display_v1_DisplayType type); wippersnapper_display_v1_DisplayType getType(); - void beginEPD(wippersnapper_display_v1_EPDConfig *config, wippersnapper_display_v1_EpdSpiConfig *spi_config); + void beginEPD(wippersnapper_display_v1_EPDConfig *config, + wippersnapper_display_v1_EpdSpiConfig *spi_config); bool begin(bool reset = true); // API functions to abstract Adafruit_GFX void setTextSize(uint8_t sz); - private: - wippersnapper_display_v1_DisplayType _type; ///< Display type - // TODO: Make these drivers instead? - ThinkInk_290_Grayscale4_EAAMFGN *_disp_thinkink_grayscale4_eaamfgn = nullptr; //< 2025 MagTag with SSD1680Z chipset - ThinkInk_290_Grayscale4_T5 *_disp_thinkink_grayscale4_t5 = nullptr; ///< Pre-2025 MagTag with IL0373 chipset +private: + wippersnapper_display_v1_DisplayType _type; ///< Display type + wippersnapper_display_v1_EPDThinkInkPanel + _thinkink_driver; ///< ThinkInk driver type + // TODO: Make these drivers instead? + ThinkInk_290_Grayscale4_EAAMFGN *_disp_thinkink_grayscale4_eaamfgn = + nullptr; //< 2025 MagTag with SSD1680Z chipset + ThinkInk_290_Grayscale4_T5 *_disp_thinkink_grayscale4_t5 = + nullptr; ///< Pre-2025 MagTag with IL0373 chipset }; #endif // WS_DISPLAY_HARDWARE_H \ No newline at end of file diff --git a/src/wippersnapper/description/v1/description.pb.c b/src/wippersnapper/description/v1/description.pb.c index d325e1ea..b0f15a4a 100644 --- a/src/wippersnapper/description/v1/description.pb.c +++ b/src/wippersnapper/description/v1/description.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/description/v1/description.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/description/v1/description.pb.h b/src/wippersnapper/description/v1/description.pb.h index 357aeabe..c7487894 100644 --- a/src/wippersnapper/description/v1/description.pb.h +++ b/src/wippersnapper/description/v1/description.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED #define PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED diff --git a/src/wippersnapper/display/v1/display.pb.c b/src/wippersnapper/display/v1/display.pb.c index 257c9ea0..e0ced97b 100644 --- a/src/wippersnapper/display/v1/display.pb.c +++ b/src/wippersnapper/display/v1/display.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/display/v1/display.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/display/v1/display.pb.h b/src/wippersnapper/display/v1/display.pb.h index aeefbbcb..fb19c2f7 100644 --- a/src/wippersnapper/display/v1/display.pb.h +++ b/src/wippersnapper/display/v1/display.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_DISPLAY_V1_WIPPERSNAPPER_DISPLAY_V1_DISPLAY_PB_H_INCLUDED #define PB_WIPPERSNAPPER_DISPLAY_V1_WIPPERSNAPPER_DISPLAY_V1_DISPLAY_PB_H_INCLUDED @@ -37,8 +37,8 @@ typedef enum _wippersnapper_display_v1_EPDColors { typedef enum _wippersnapper_display_v1_EPDThinkInkPanel { wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED = 0, - wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_MFGN = 1, - wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_T5 = 2 + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_MFGN = 1, + wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5 = 2 } wippersnapper_display_v1_EPDThinkInkPanel; /* Struct definitions */ @@ -112,8 +112,8 @@ typedef struct _wippersnapper_display_v1_DisplayWrite { #define _wippersnapper_display_v1_EPDColors_ARRAYSIZE ((wippersnapper_display_v1_EPDColors)(wippersnapper_display_v1_EPDColors_EPD_COLORS_YELLOW+1)) #define _wippersnapper_display_v1_EPDThinkInkPanel_MIN wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED -#define _wippersnapper_display_v1_EPDThinkInkPanel_MAX wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_T5 -#define _wippersnapper_display_v1_EPDThinkInkPanel_ARRAYSIZE ((wippersnapper_display_v1_EPDThinkInkPanel)(wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_T5+1)) +#define _wippersnapper_display_v1_EPDThinkInkPanel_MAX wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5 +#define _wippersnapper_display_v1_EPDThinkInkPanel_ARRAYSIZE ((wippersnapper_display_v1_EPDThinkInkPanel)(wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5+1)) #ifdef __cplusplus diff --git a/src/wippersnapper/ds18x20/v1/ds18x20.pb.c b/src/wippersnapper/ds18x20/v1/ds18x20.pb.c index 947c8ddd..982aa0c7 100644 --- a/src/wippersnapper/ds18x20/v1/ds18x20.pb.c +++ b/src/wippersnapper/ds18x20/v1/ds18x20.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/ds18x20/v1/ds18x20.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/ds18x20/v1/ds18x20.pb.h b/src/wippersnapper/ds18x20/v1/ds18x20.pb.h index 6aa00817..83268480 100644 --- a/src/wippersnapper/ds18x20/v1/ds18x20.pb.h +++ b/src/wippersnapper/ds18x20/v1/ds18x20.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED #define PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED diff --git a/src/wippersnapper/i2c/v1/i2c.pb.c b/src/wippersnapper/i2c/v1/i2c.pb.c index 94777ff2..4e0b0d55 100644 --- a/src/wippersnapper/i2c/v1/i2c.pb.c +++ b/src/wippersnapper/i2c/v1/i2c.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/i2c/v1/i2c.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/i2c/v1/i2c.pb.h b/src/wippersnapper/i2c/v1/i2c.pb.h index 64a591c4..bb436342 100644 --- a/src/wippersnapper/i2c/v1/i2c.pb.h +++ b/src/wippersnapper/i2c/v1/i2c.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED #define PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED diff --git a/src/wippersnapper/pin/v1/pin.pb.c b/src/wippersnapper/pin/v1/pin.pb.c index 60f3b328..b36c39da 100644 --- a/src/wippersnapper/pin/v1/pin.pb.c +++ b/src/wippersnapper/pin/v1/pin.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/pin/v1/pin.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/pin/v1/pin.pb.h b/src/wippersnapper/pin/v1/pin.pb.h index 5de5a10f..a4327150 100644 --- a/src/wippersnapper/pin/v1/pin.pb.h +++ b/src/wippersnapper/pin/v1/pin.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED #define PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED diff --git a/src/wippersnapper/pixels/v1/pixels.pb.c b/src/wippersnapper/pixels/v1/pixels.pb.c index c1e20312..ab8eea0e 100644 --- a/src/wippersnapper/pixels/v1/pixels.pb.c +++ b/src/wippersnapper/pixels/v1/pixels.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/pixels/v1/pixels.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/pixels/v1/pixels.pb.h b/src/wippersnapper/pixels/v1/pixels.pb.h index f2c080b0..0185e165 100644 --- a/src/wippersnapper/pixels/v1/pixels.pb.h +++ b/src/wippersnapper/pixels/v1/pixels.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_PIXELS_V1_WIPPERSNAPPER_PIXELS_V1_PIXELS_PB_H_INCLUDED #define PB_WIPPERSNAPPER_PIXELS_V1_WIPPERSNAPPER_PIXELS_V1_PIXELS_PB_H_INCLUDED diff --git a/src/wippersnapper/pwm/v1/pwm.pb.c b/src/wippersnapper/pwm/v1/pwm.pb.c index ad194786..4064b8e2 100644 --- a/src/wippersnapper/pwm/v1/pwm.pb.c +++ b/src/wippersnapper/pwm/v1/pwm.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/pwm/v1/pwm.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/pwm/v1/pwm.pb.h b/src/wippersnapper/pwm/v1/pwm.pb.h index 8877acde..56d380ed 100644 --- a/src/wippersnapper/pwm/v1/pwm.pb.h +++ b/src/wippersnapper/pwm/v1/pwm.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_PWM_V1_WIPPERSNAPPER_PWM_V1_PWM_PB_H_INCLUDED #define PB_WIPPERSNAPPER_PWM_V1_WIPPERSNAPPER_PWM_V1_PWM_PB_H_INCLUDED diff --git a/src/wippersnapper/servo/v1/servo.pb.c b/src/wippersnapper/servo/v1/servo.pb.c index 2ae84879..19195804 100644 --- a/src/wippersnapper/servo/v1/servo.pb.c +++ b/src/wippersnapper/servo/v1/servo.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/servo/v1/servo.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/servo/v1/servo.pb.h b/src/wippersnapper/servo/v1/servo.pb.h index 0b5851d9..754f4c0d 100644 --- a/src/wippersnapper/servo/v1/servo.pb.h +++ b/src/wippersnapper/servo/v1/servo.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_SERVO_V1_WIPPERSNAPPER_SERVO_V1_SERVO_PB_H_INCLUDED #define PB_WIPPERSNAPPER_SERVO_V1_WIPPERSNAPPER_SERVO_V1_SERVO_PB_H_INCLUDED diff --git a/src/wippersnapper/signal/v1/signal.pb.c b/src/wippersnapper/signal/v1/signal.pb.c index bf493953..2c3c348f 100644 --- a/src/wippersnapper/signal/v1/signal.pb.c +++ b/src/wippersnapper/signal/v1/signal.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/signal/v1/signal.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/signal/v1/signal.pb.h b/src/wippersnapper/signal/v1/signal.pb.h index 2f214bca..2426bbac 100644 --- a/src/wippersnapper/signal/v1/signal.pb.h +++ b/src/wippersnapper/signal/v1/signal.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_SIGNAL_V1_WIPPERSNAPPER_SIGNAL_V1_SIGNAL_PB_H_INCLUDED #define PB_WIPPERSNAPPER_SIGNAL_V1_WIPPERSNAPPER_SIGNAL_V1_SIGNAL_PB_H_INCLUDED diff --git a/src/wippersnapper/uart/v1/uart.pb.c b/src/wippersnapper/uart/v1/uart.pb.c index 512c9776..7c4c7886 100644 --- a/src/wippersnapper/uart/v1/uart.pb.c +++ b/src/wippersnapper/uart/v1/uart.pb.c @@ -1,5 +1,5 @@ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #include "wippersnapper/uart/v1/uart.pb.h" #if PB_PROTO_HEADER_VERSION != 40 diff --git a/src/wippersnapper/uart/v1/uart.pb.h b/src/wippersnapper/uart/v1/uart.pb.h index 9cf2ac47..3a9b70fb 100644 --- a/src/wippersnapper/uart/v1/uart.pb.h +++ b/src/wippersnapper/uart/v1/uart.pb.h @@ -1,5 +1,5 @@ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.4.5-dev at Fri Aug 15 16:18:27 2025. */ +/* Generated by nanopb-0.4.5-dev at Fri Aug 15 17:34:50 2025. */ #ifndef PB_WIPPERSNAPPER_UART_V1_WIPPERSNAPPER_UART_V1_UART_PB_H_INCLUDED #define PB_WIPPERSNAPPER_UART_V1_WIPPERSNAPPER_UART_V1_UART_PB_H_INCLUDED