float battery_percent = 0.0;
uint8_t battery_state = 0x00;
uint8_t display_intensity = 0xFF;
+ uint8_t display_addr = 0xFF;
bool display_diagnostics = true;
bool device_init_done = false;
bool eeprom_ok = false;
#define DISP_ADDR 0x3C
#elif BOARD_MODEL == BOARD_TBEAM
#define DISP_RST 13
- #define DISP_ADDR 0x3D
- // #define DISP_ADDR 0x3C
+ #define DISP_ADDR 0x3C
+ #define DISP_CUSTOM_ADDR true
#elif BOARD_MODEL == BOARD_HELTEC32_V2 || BOARD_MODEL == BOARD_LORA32_V1_0
#define DISP_RST 16
#define DISP_ADDR 0x3C
#define SCL_OLED 15
#define SDA_OLED 4
+#elif BOARD_MODEL == BOARD_RNODE_NG_21
+ #define DISP_RST -1
+ #define DISP_ADDR 0x3C
#else
#define DISP_RST -1
#define DISP_ADDR 0x3C
+ #define DISP_CUSTOM_ADDR true
#endif
#define SMALL_FONT &Org_01
digitalWrite(pin_display_en, HIGH);
Wire.begin(SDA_OLED, SCL_OLED);
#endif
+
+ #if DISP_CUSTOM_ADDR == true
+ uint8_t display_address = EEPROM.read(eeprom_addr(ADDR_CONF_DADR));
+ if (display_address == 0xFF) display_address = DISP_ADDR;
+ #else
+ uint8_t display_address = DISP_ADDR;
+ #endif
+
- if(!display.begin(SSD1306_SWITCHCAPVCC, DISP_ADDR)) {
+ if(!display.begin(SSD1306_SWITCHCAPVCC, display_address)) {
return false;
} else {
set_contrast(&display, display_contrast);
#define CMD_FB_WRITE 0x43
#define CMD_FB_READL 0x44
#define CMD_DISP_INT 0x45
+ #define CMD_DISP_ADDR 0x63
#define CMD_BT_CTRL 0x46
#define CMD_BT_PIN 0x62
di_conf_save(display_intensity);
}
+ #endif
+ } else if (command == CMD_DISP_ADDR) {
+ #if HAS_DISPLAY
+ if (sbyte == FESC) {
+ ESCAPE = true;
+ } else {
+ if (ESCAPE) {
+ if (sbyte == TFEND) sbyte = FEND;
+ if (sbyte == TFESC) sbyte = FESC;
+ ESCAPE = false;
+ }
+ display_addr = sbyte;
+ da_conf_save(display_addr);
+ }
+
#endif
}
}
#define ADDR_CONF_BT 0xB0
#define ADDR_CONF_DSET 0xB1
#define ADDR_CONF_DINT 0xB2
+ #define ADDR_CONF_DADR 0xB3
#define INFO_LOCK_BYTE 0x73
#define CONF_OK_BYTE 0x73
eeprom_update(eeprom_addr(ADDR_CONF_DINT), dint);
}
+void da_conf_save(uint8_t dadr) {
+ eeprom_update(eeprom_addr(ADDR_CONF_DADR), dadr);
+}
+
bool eeprom_have_conf() {
if (EEPROM.read(eeprom_addr(ADDR_CONF_OK)) == CONF_OK_BYTE) {
return true;