Add beginEPD full implementation with safety concerns and a better init flow
This commit is contained in:
parent
c308694233
commit
fc41a7de82
23 changed files with 148 additions and 64 deletions
13
.vscode/settings.json
vendored
13
.vscode/settings.json
vendored
|
|
@ -1,7 +1,18 @@
|
||||||
{
|
{
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"limits": "c",
|
"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,
|
"C_Cpp.dimInactiveRegions": true,
|
||||||
"dotnet.defaultSolution": "disable",
|
"dotnet.defaultSolution": "disable",
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ DisplayHardware::DisplayHardware() {
|
||||||
The display type to set.
|
The display type to set.
|
||||||
*/
|
*/
|
||||||
void DisplayHardware::setType(wippersnapper_display_v1_DisplayType type) {
|
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.
|
@return The current display type.
|
||||||
*/
|
*/
|
||||||
wippersnapper_display_v1_DisplayType DisplayHardware::getType() {
|
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.
|
Pointer to the SPI configuration structure for EPD.
|
||||||
@return True if configuration was successful, False otherwise.
|
@return True if configuration was successful, False otherwise.
|
||||||
*/
|
*/
|
||||||
bool DisplayHardware::beginEPD(wippersnapper_display_v1_EPDConfig *config, wippersnapper_display_v1_EpdSpiConfig *spi_config) {
|
bool DisplayHardware::beginEPD(
|
||||||
// Convert pins in config to int16_t instances
|
wippersnapper_display_v1_EPDConfig *config,
|
||||||
int16_t dc = -1, rst = -1, cs = -1, srcs = -1, busy = -1;
|
wippersnapper_display_v1_EpdSpiConfig *spi_config) {
|
||||||
dc = (int16_t)atoi(spi_config->pin_dc+ 1);
|
// Validate pointers
|
||||||
rst = (int16_t)atoi(spi_config->pin_rst+ 1);
|
if (config == nullptr || spi_config == nullptr) {
|
||||||
cs = (int16_t)atoi(spi_config->pin_cs+ 1);
|
return false;
|
||||||
srcs = (int16_t)atoi(spi_config->pin_sram_cs+ 1);
|
}
|
||||||
busy = (int16_t)atoi(spi_config->pin_busy+ 1);
|
|
||||||
|
|
||||||
// Configure EPD mode
|
// Validate panel type
|
||||||
thinkinkmode_t epd_mode;
|
if (config->panel ==
|
||||||
if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_GRAYSCALE4) {
|
wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED) {
|
||||||
epd_mode = THINKINK_GRAYSCALE4;
|
return false; // Unsupported panel type
|
||||||
} else if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_MONO) {
|
}
|
||||||
epd_mode = THINKINK_MONO;
|
|
||||||
} else {
|
|
||||||
epd_mode = THINKINK_MONO; // Default to mono
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assign driver instance based on panel type
|
// Validate mode is a correct EPD mode
|
||||||
if (config->panel == wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_213_GRAYSCALE4_MFGN) {
|
if (config->mode == wippersnapper_display_v1_EPDMode_EPD_MODE_UNSPECIFIED) {
|
||||||
_disp_thinkink_grayscale4_eaamfgn = new ThinkInk_290_Grayscale4_EAAMFGN(dc, rst, cs, srcs, busy);
|
return false; // Unsupported mode
|
||||||
_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
|
|
||||||
}
|
|
||||||
|
|
||||||
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.
|
@return True if initialization was successful, false otherwise.
|
||||||
*/
|
*/
|
||||||
bool DisplayHardware::begin(bool reset) {
|
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.
|
The size of the text to set.
|
||||||
*/
|
*/
|
||||||
void setTextSize(uint8_t sz) {
|
void setTextSize(uint8_t sz) {
|
||||||
// Placeholder for setting text size on the display TODO
|
// Placeholder for setting text size on the display TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,15 +33,20 @@ public:
|
||||||
// High-level API functions
|
// High-level API functions
|
||||||
void setType(wippersnapper_display_v1_DisplayType type);
|
void setType(wippersnapper_display_v1_DisplayType type);
|
||||||
wippersnapper_display_v1_DisplayType getType();
|
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);
|
bool begin(bool reset = true);
|
||||||
// API functions to abstract Adafruit_GFX
|
// API functions to abstract Adafruit_GFX
|
||||||
void setTextSize(uint8_t sz);
|
void setTextSize(uint8_t sz);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wippersnapper_display_v1_DisplayType _type; ///< Display type
|
wippersnapper_display_v1_DisplayType _type; ///< Display type
|
||||||
// TODO: Make these drivers instead?
|
wippersnapper_display_v1_EPDThinkInkPanel
|
||||||
ThinkInk_290_Grayscale4_EAAMFGN *_disp_thinkink_grayscale4_eaamfgn = nullptr; //< 2025 MagTag with SSD1680Z chipset
|
_thinkink_driver; ///< ThinkInk driver type
|
||||||
ThinkInk_290_Grayscale4_T5 *_disp_thinkink_grayscale4_t5 = nullptr; ///< Pre-2025 MagTag with IL0373 chipset
|
// 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
|
#endif // WS_DISPLAY_HARDWARE_H
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/description/v1/description.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/display/v1/display.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_DISPLAY_V1_WIPPERSNAPPER_DISPLAY_V1_DISPLAY_PB_H_INCLUDED
|
||||||
#define 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 {
|
typedef enum _wippersnapper_display_v1_EPDThinkInkPanel {
|
||||||
wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_UNSPECIFIED = 0,
|
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_290_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_T5 = 2
|
||||||
} wippersnapper_display_v1_EPDThinkInkPanel;
|
} wippersnapper_display_v1_EPDThinkInkPanel;
|
||||||
|
|
||||||
/* Struct definitions */
|
/* 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_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_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_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_213_GRAYSCALE4_T5+1))
|
#define _wippersnapper_display_v1_EPDThinkInkPanel_ARRAYSIZE ((wippersnapper_display_v1_EPDThinkInkPanel)(wippersnapper_display_v1_EPDThinkInkPanel_EPD_THINK_INK_PANEL_290_GRAYSCALE4_T5+1))
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/ds18x20/v1/ds18x20.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/i2c/v1/i2c.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/pin/v1/pin.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/pixels/v1/pixels.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_PIXELS_V1_WIPPERSNAPPER_PIXELS_V1_PIXELS_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_PIXELS_V1_WIPPERSNAPPER_PIXELS_V1_PIXELS_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_PIXELS_V1_WIPPERSNAPPER_PIXELS_V1_PIXELS_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/pwm/v1/pwm.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_PWM_V1_WIPPERSNAPPER_PWM_V1_PWM_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_PWM_V1_WIPPERSNAPPER_PWM_V1_PWM_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_PWM_V1_WIPPERSNAPPER_PWM_V1_PWM_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/servo/v1/servo.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_SERVO_V1_WIPPERSNAPPER_SERVO_V1_SERVO_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_SERVO_V1_WIPPERSNAPPER_SERVO_V1_SERVO_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_SERVO_V1_WIPPERSNAPPER_SERVO_V1_SERVO_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/signal/v1/signal.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_SIGNAL_V1_WIPPERSNAPPER_SIGNAL_V1_SIGNAL_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_SIGNAL_V1_WIPPERSNAPPER_SIGNAL_V1_SIGNAL_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_SIGNAL_V1_WIPPERSNAPPER_SIGNAL_V1_SIGNAL_PB_H_INCLUDED
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb constant definitions */
|
/* 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"
|
#include "wippersnapper/uart/v1/uart.pb.h"
|
||||||
#if PB_PROTO_HEADER_VERSION != 40
|
#if PB_PROTO_HEADER_VERSION != 40
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* Automatically generated nanopb header */
|
/* 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
|
#ifndef PB_WIPPERSNAPPER_UART_V1_WIPPERSNAPPER_UART_V1_UART_PB_H_INCLUDED
|
||||||
#define PB_WIPPERSNAPPER_UART_V1_WIPPERSNAPPER_UART_V1_UART_PB_H_INCLUDED
|
#define PB_WIPPERSNAPPER_UART_V1_WIPPERSNAPPER_UART_V1_UART_PB_H_INCLUDED
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue