mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-29 08:18:12 +00:00
- SSD1306Display: track _text_sz in setTextSize(); override getCharWidth() and getLineHeight() so line spacing scales with text size (fixes text overlap on splash/clock screens at size 2) - gat562_30s_mesh_kit variant.h: fix PIN_GPS_EN 33→34 (IO2/P1.02 controls GPS module power via Q3/Q5 transistors; 33 = BEE_EN = buzzer) - gat562_30s_mesh_kit variant.h: correct joystick pin comments (P0.xx labels were cyclically wrong; pin numbers already correct) - gat562_30s_mesh_kit target.h/cpp: declare and instantiate joystick_up/down under UI_HAS_JOYSTICK_UPDOWN guard (fixes compile error in solo envs) - gat562_30s_mesh_kit platformio.ini: add solo_ble and solo_dual environments with GPS, BLE, joystick up/down, QSPI flash, and buzzer (NonBlockingRTTTL) - gat562_mesh_watch13 platformio.ini: add solo_ble environment with GPS Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "DisplayDriver.h"
|
|
#include <Wire.h>
|
|
#include <Adafruit_GFX.h>
|
|
#define SSD1306_NO_SPLASH
|
|
#include <Adafruit_SSD1306.h>
|
|
#include <helpers/RefCountedDigitalPin.h>
|
|
|
|
#ifndef PIN_OLED_RESET
|
|
#define PIN_OLED_RESET 21 // Reset pin # (or -1 if sharing Arduino reset pin)
|
|
#endif
|
|
|
|
#ifndef DISPLAY_ADDRESS
|
|
#define DISPLAY_ADDRESS 0x3C
|
|
#endif
|
|
|
|
class SSD1306Display : public DisplayDriver {
|
|
Adafruit_SSD1306 display;
|
|
bool _isOn;
|
|
uint8_t _color;
|
|
int _text_sz = 1;
|
|
RefCountedDigitalPin* _peripher_power;
|
|
|
|
bool i2c_probe(TwoWire& wire, uint8_t addr);
|
|
public:
|
|
SSD1306Display(RefCountedDigitalPin* peripher_power=NULL) : DisplayDriver(128, 64),
|
|
display(128, 64, &Wire, PIN_OLED_RESET),
|
|
_peripher_power(peripher_power)
|
|
{
|
|
_isOn = false;
|
|
}
|
|
bool begin();
|
|
|
|
int getCharWidth() const override { return 6 * _text_sz; }
|
|
int getLineHeight() const override { return 8 * _text_sz; }
|
|
|
|
bool isOn() override { return _isOn; }
|
|
void turnOn() override;
|
|
void turnOff() override;
|
|
void clear() override;
|
|
void startFrame(Color bkg = DARK) override;
|
|
void setTextSize(int sz) override;
|
|
void setColor(Color c) override;
|
|
void setCursor(int x, int y) override;
|
|
void print(const char* str) override;
|
|
void fillRect(int x, int y, int w, int h) override;
|
|
void drawRect(int x, int y, int w, int h) override;
|
|
void drawXbm(int x, int y, const uint8_t* bits, int w, int h) override;
|
|
uint16_t getTextWidth(const char* str) override;
|
|
void endFrame() override;
|
|
|
|
#ifdef ENABLE_SCREENSHOT
|
|
const uint8_t* getBuffer() override { return display.getBuffer(); }
|
|
uint16_t getBufferSize() override { return (uint16_t)((width() * height()) / 8); }
|
|
uint8_t getDisplayType() override { return 0; }
|
|
#endif
|
|
};
|