Skip to content

Commit 6e7daf9

Browse files
committed
fix SSD1306 bugs
1 parent 8689685 commit 6e7daf9

File tree

20 files changed

+41
-36
lines changed

20 files changed

+41
-36
lines changed

src/components/i2c/WipperSnapper_I2C.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,8 @@ bool WipperSnapper_Component_I2C::initI2CDevice(
878878
}
879879
_drivers_out.push_back(_sevenSeg);
880880
WS_DEBUG_PRINTLN("7-Segement LED Matrix Initialized Successfully!");
881-
} else if (strcmp("ssd1306", msgDeviceInitReq->i2c_device_name) == 0) {
881+
} else if (strcmp("oled128x32default", msgDeviceInitReq->i2c_device_name) ==
882+
0) {
882883
WS_DEBUG_PRINTLN("SSD1306 display detected!");
883884
_ssd1306 = new WipperSnapper_I2C_Driver_Out_Ssd1306(this->_i2c, i2cAddress);
884885
WS_DEBUG_PRINTLN("Configuring SSD1306 display...");

src/components/i2c/drivers/WipperSnapper_I2C_Driver_Out_Ssd1306.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,8 @@ class WipperSnapper_I2C_Driver_Out_Ssd1306
7373
// Configure the text size and color
7474
_display->setTextSize(_text_sz);
7575
_display->setTextColor(SSD1306_WHITE);
76-
// Reset the cursor position
77-
_display->setCursor(0, 0);
78-
_display->display();
76+
// Use full 256 char 'Code Page 437' font
77+
_display->cp437(true);
7978
return true;
8079
}
8180

@@ -118,13 +117,18 @@ class WipperSnapper_I2C_Driver_Out_Ssd1306
118117
int16_t line_height = 8 * _text_sz;
119118
uint16_t c_idx = 0;
120119
size_t msg_size = strlen(message);
120+
// _display->cp437(true);
121121
for (size_t i = 0; i < msg_size && c_idx < msg_size; i++) {
122122
if (message[i] == '\\' && i + 1 < msg_size && message[i + 1] == 'n') {
123123
// detected a newline char sequence (\n)
124124
i++;
125125
// Skip to the next possible line
126126
y_idx += line_height;
127127
_display->setCursor(0, y_idx);
128+
} else if (message[i] == 0xC2 || message[i + 1] == 0xB0) {
129+
_display->write(char(248));
130+
_display->display();
131+
i++;
128132
} else {
129133
_display->print(message[i]);
130134
_display->display();

src/wippersnapper/description/v1/description.pb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb constant definitions */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#include "wippersnapper/description/v1/description.pb.h"
55
#if PB_PROTO_HEADER_VERSION != 40

src/wippersnapper/description/v1/description.pb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb header */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#ifndef PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED
55
#define PB_WIPPERSNAPPER_DESCRIPTION_V1_WIPPERSNAPPER_DESCRIPTION_V1_DESCRIPTION_PB_H_INCLUDED

src/wippersnapper/ds18x20/v1/ds18x20.pb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb constant definitions */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#include "wippersnapper/ds18x20/v1/ds18x20.pb.h"
55
#if PB_PROTO_HEADER_VERSION != 40

src/wippersnapper/ds18x20/v1/ds18x20.pb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb header */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#ifndef PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED
55
#define PB_WIPPERSNAPPER_DS18X20_V1_WIPPERSNAPPER_DS18X20_V1_DS18X20_PB_H_INCLUDED

src/wippersnapper/i2c/v1/i2c.pb.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb constant definitions */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#include "wippersnapper/i2c/v1/i2c.pb.h"
55
#if PB_PROTO_HEADER_VERSION != 40
@@ -27,13 +27,13 @@ PB_BIND(wippersnapper_i2c_v1_I2CDeviceSensorProperties, wippersnapper_i2c_v1_I2C
2727
PB_BIND(wippersnapper_i2c_v1_I2CDeviceInitRequests, wippersnapper_i2c_v1_I2CDeviceInitRequests, AUTO)
2828

2929

30-
PB_BIND(wippersnapper_i2c_v1_I2CDeviceInitRequest, wippersnapper_i2c_v1_I2CDeviceInitRequest, AUTO)
30+
PB_BIND(wippersnapper_i2c_v1_I2CDeviceInitRequest, wippersnapper_i2c_v1_I2CDeviceInitRequest, 2)
3131

3232

3333
PB_BIND(wippersnapper_i2c_v1_I2CDeviceInitResponse, wippersnapper_i2c_v1_I2CDeviceInitResponse, AUTO)
3434

3535

36-
PB_BIND(wippersnapper_i2c_v1_I2CDeviceUpdateRequest, wippersnapper_i2c_v1_I2CDeviceUpdateRequest, AUTO)
36+
PB_BIND(wippersnapper_i2c_v1_I2CDeviceUpdateRequest, wippersnapper_i2c_v1_I2CDeviceUpdateRequest, 2)
3737

3838

3939
PB_BIND(wippersnapper_i2c_v1_I2CDeviceUpdateResponse, wippersnapper_i2c_v1_I2CDeviceUpdateResponse, AUTO)
@@ -51,7 +51,7 @@ PB_BIND(wippersnapper_i2c_v1_SensorEvent, wippersnapper_i2c_v1_SensorEvent, AUTO
5151
PB_BIND(wippersnapper_i2c_v1_I2CDeviceEvent, wippersnapper_i2c_v1_I2CDeviceEvent, AUTO)
5252

5353

54-
PB_BIND(wippersnapper_i2c_v1_I2CDeviceOutputWrite, wippersnapper_i2c_v1_I2CDeviceOutputWrite, AUTO)
54+
PB_BIND(wippersnapper_i2c_v1_I2CDeviceOutputWrite, wippersnapper_i2c_v1_I2CDeviceOutputWrite, 2)
5555

5656

5757
PB_BIND(wippersnapper_i2c_v1_LEDBackpackConfig, wippersnapper_i2c_v1_LEDBackpackConfig, AUTO)
@@ -72,7 +72,7 @@ PB_BIND(wippersnapper_i2c_v1_LEDBackpackWrite, wippersnapper_i2c_v1_LEDBackpackW
7272
PB_BIND(wippersnapper_i2c_v1_CharLCDWrite, wippersnapper_i2c_v1_CharLCDWrite, AUTO)
7373

7474

75-
PB_BIND(wippersnapper_i2c_v1_SSD1306Write, wippersnapper_i2c_v1_SSD1306Write, AUTO)
75+
PB_BIND(wippersnapper_i2c_v1_SSD1306Write, wippersnapper_i2c_v1_SSD1306Write, 2)
7676

7777

7878

src/wippersnapper/i2c/v1/i2c.pb.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb header */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#ifndef PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED
55
#define PB_WIPPERSNAPPER_I2C_V1_WIPPERSNAPPER_I2C_V1_I2C_PB_H_INCLUDED
@@ -150,7 +150,7 @@ typedef struct _wippersnapper_i2c_v1_SSD1306Config {
150150
} wippersnapper_i2c_v1_SSD1306Config;
151151

152152
typedef struct _wippersnapper_i2c_v1_SSD1306Write {
153-
char message[128];
153+
char message[256];
154154
} wippersnapper_i2c_v1_SSD1306Write;
155155

156156
typedef struct _wippersnapper_i2c_v1_SensorEvent {
@@ -172,7 +172,7 @@ typedef struct _wippersnapper_i2c_v1_I2CDeviceEvent {
172172

173173
typedef struct _wippersnapper_i2c_v1_I2CDeviceOutputWrite {
174174
uint32_t i2c_device_address;
175-
char i2c_device_name[15];
175+
char i2c_device_name[256];
176176
pb_size_t which_output_msg;
177177
union {
178178
wippersnapper_i2c_v1_LEDBackpackWrite write_led_backpack;
@@ -184,7 +184,7 @@ typedef struct _wippersnapper_i2c_v1_I2CDeviceOutputWrite {
184184
typedef struct _wippersnapper_i2c_v1_I2CDeviceUpdateRequest {
185185
int32_t i2c_port_number;
186186
uint32_t i2c_device_address;
187-
char i2c_device_name[15];
187+
char i2c_device_name[256];
188188
pb_size_t i2c_device_properties_count;
189189
wippersnapper_i2c_v1_I2CDeviceSensorProperties i2c_device_properties[15];
190190
} wippersnapper_i2c_v1_I2CDeviceUpdateRequest;
@@ -203,7 +203,7 @@ typedef struct _wippersnapper_i2c_v1_I2CDeviceInitRequest {
203203
bool has_i2c_bus_init_req;
204204
wippersnapper_i2c_v1_I2CBusInitRequest i2c_bus_init_req;
205205
uint32_t i2c_device_address;
206-
char i2c_device_name[15];
206+
char i2c_device_name[256];
207207
pb_size_t i2c_device_properties_count;
208208
wippersnapper_i2c_v1_I2CDeviceSensorProperties i2c_device_properties[15];
209209
bool is_output_device;
@@ -559,22 +559,22 @@ extern const pb_msgdesc_t wippersnapper_i2c_v1_SSD1306Write_msg;
559559
#define wippersnapper_i2c_v1_I2CBusScanResponse_size 722
560560
#define wippersnapper_i2c_v1_I2CDeviceSensorProperties_size 8
561561
/* wippersnapper_i2c_v1_I2CDeviceInitRequests_size depends on runtime parameters */
562-
#define wippersnapper_i2c_v1_I2CDeviceInitRequest_size 244
562+
#define wippersnapper_i2c_v1_I2CDeviceInitRequest_size 486
563563
#define wippersnapper_i2c_v1_I2CDeviceInitResponse_size 8
564-
#define wippersnapper_i2c_v1_I2CDeviceUpdateRequest_size 183
564+
#define wippersnapper_i2c_v1_I2CDeviceUpdateRequest_size 425
565565
#define wippersnapper_i2c_v1_I2CDeviceUpdateResponse_size 8
566566
#define wippersnapper_i2c_v1_I2CDeviceDeinitRequest_size 17
567567
#define wippersnapper_i2c_v1_I2CDeviceDeinitResponse_size 8
568568
#define wippersnapper_i2c_v1_SensorEvent_size 7
569569
#define wippersnapper_i2c_v1_I2CDeviceEvent_size 141
570-
#define wippersnapper_i2c_v1_I2CDeviceOutputWrite_size 157
570+
#define wippersnapper_i2c_v1_I2CDeviceOutputWrite_size 525
571571
#define wippersnapper_i2c_v1_LEDBackpackConfig_size 13
572572
#define wippersnapper_i2c_v1_CharLCDConfig_size 12
573573
#define wippersnapper_i2c_v1_SSD1306Config_size 14
574574
#define wippersnapper_i2c_v1_I2COutputAdd_size 16
575575
#define wippersnapper_i2c_v1_LEDBackpackWrite_size 6
576576
#define wippersnapper_i2c_v1_CharLCDWrite_size 132
577-
#define wippersnapper_i2c_v1_SSD1306Write_size 130
577+
#define wippersnapper_i2c_v1_SSD1306Write_size 258
578578

579579
#ifdef __cplusplus
580580
} /* extern "C" */

src/wippersnapper/pin/v1/pin.pb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb constant definitions */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#include "wippersnapper/pin/v1/pin.pb.h"
55
#if PB_PROTO_HEADER_VERSION != 40

src/wippersnapper/pin/v1/pin.pb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb header */
2-
/* Generated by nanopb-0.4.5-dev at Tue May 20 15:26:04 2025. */
2+
/* Generated by nanopb-0.4.5-dev at Thu Jun 5 15:39:11 2025. */
33

44
#ifndef PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED
55
#define PB_WIPPERSNAPPER_PIN_V1_WIPPERSNAPPER_PIN_V1_PIN_PB_H_INCLUDED

0 commit comments

Comments
 (0)