mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-23 21:40:14 +00:00
Merge branch 'master' into dismiss_frames
This commit is contained in:
commit
e08c0378cf
@ -40,6 +40,9 @@
|
|||||||
#ifdef OLED_PL
|
#ifdef OLED_PL
|
||||||
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_PL // Height: 19
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_PL // Height: 19
|
||||||
#else
|
#else
|
||||||
|
#ifdef OLED_RU
|
||||||
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_RU // Height: 19
|
||||||
|
#else
|
||||||
#ifdef OLED_UA
|
#ifdef OLED_UA
|
||||||
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_UA // Height: 19
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_UA // Height: 19
|
||||||
#else
|
#else
|
||||||
@ -50,9 +53,13 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef OLED_PL
|
#ifdef OLED_PL
|
||||||
#define FONT_LARGE_LOCAL ArialMT_Plain_24_PL // Height: 28
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_PL // Height: 28
|
||||||
#else
|
#else
|
||||||
|
#ifdef OLED_RU
|
||||||
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_RU // Height: 28
|
||||||
|
#else
|
||||||
#ifdef OLED_UA
|
#ifdef OLED_UA
|
||||||
#define FONT_LARGE_LOCAL ArialMT_Plain_24_UA // Height: 28
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_UA // Height: 28
|
||||||
#else
|
#else
|
||||||
@ -63,6 +70,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
||||||
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS)) && \
|
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS)) && \
|
||||||
|
@ -137,7 +137,11 @@ void drawStringWithEmotes(OLEDDisplay *display, int x, int y, const std::string
|
|||||||
display->drawString(cursorX + 1, fontY, textChunk.c_str());
|
display->drawString(cursorX + 1, fontY, textChunk.c_str());
|
||||||
}
|
}
|
||||||
display->drawString(cursorX, fontY, textChunk.c_str());
|
display->drawString(cursorX, fontY, textChunk.c_str());
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
cursorX += display->getStringWidth(textChunk.c_str(), textChunk.length(), true);
|
||||||
|
#else
|
||||||
cursorX += display->getStringWidth(textChunk.c_str());
|
cursorX += display->getStringWidth(textChunk.c_str());
|
||||||
|
#endif
|
||||||
i = nextControl;
|
i = nextControl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -155,7 +159,12 @@ void drawStringWithEmotes(OLEDDisplay *display, int x, int y, const std::string
|
|||||||
display->drawString(cursorX + 1, fontY, remaining.c_str());
|
display->drawString(cursorX + 1, fontY, remaining.c_str());
|
||||||
}
|
}
|
||||||
display->drawString(cursorX, fontY, remaining.c_str());
|
display->drawString(cursorX, fontY, remaining.c_str());
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
cursorX += display->getStringWidth(remaining.c_str(), remaining.length(), true);
|
||||||
|
#else
|
||||||
cursorX += display->getStringWidth(remaining.c_str());
|
cursorX += display->getStringWidth(remaining.c_str());
|
||||||
|
#endif
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -374,10 +383,16 @@ std::vector<std::string> generateLines(OLEDDisplay *display, const char *headerS
|
|||||||
} else {
|
} else {
|
||||||
word += ch;
|
word += ch;
|
||||||
std::string test = line + word;
|
std::string test = line + word;
|
||||||
// Keep these lines for diagnostics
|
// Keep these lines for diagnostics
|
||||||
// LOG_INFO("Char: '%c' (0x%02X)", ch, (unsigned char)ch);
|
// LOG_INFO("Char: '%c' (0x%02X)", ch, (unsigned char)ch);
|
||||||
// LOG_INFO("Current String: %s", test.c_str());
|
// LOG_INFO("Current String: %s", test.c_str());
|
||||||
if (display->getStringWidth(test.c_str()) > textWidth) {
|
// Note: there are boolean comparison uint16 (getStringWidth) with int (textWidth), hope textWidth is always positive :)
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
uint16_t strWidth = display->getStringWidth(test.c_str(), test.length(), true);
|
||||||
|
#else
|
||||||
|
uint16_t strWidth = display->getStringWidth(test.c_str());
|
||||||
|
#endif
|
||||||
|
if (strWidth > textWidth) {
|
||||||
if (!line.empty())
|
if (!line.empty())
|
||||||
lines.push_back(line);
|
lines.push_back(line);
|
||||||
line = word;
|
line = word;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,4 +8,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const uint8_t ArialMT_Plain_10_RU[] PROGMEM;
|
extern const uint8_t ArialMT_Plain_10_RU[] PROGMEM;
|
||||||
|
extern const uint8_t ArialMT_Plain_16_RU[] PROGMEM;
|
||||||
|
extern const uint8_t ArialMT_Plain_24_RU[] PROGMEM;
|
||||||
#endif
|
#endif
|
@ -282,10 +282,14 @@ void cpuDeepSleep(uint32_t msecToWake)
|
|||||||
#if SPI_INTERFACES_COUNT > 1
|
#if SPI_INTERFACES_COUNT > 1
|
||||||
SPI1.end();
|
SPI1.end();
|
||||||
#endif
|
#endif
|
||||||
// This may cause crashes as debug messages continue to flow.
|
if (Serial) // Another check in case of disabled default serial, does nothing bad
|
||||||
Serial.end();
|
Serial.end(); // This may cause crashes as debug messages continue to flow.
|
||||||
|
|
||||||
|
// This causes troubles with waking up on nrf52 (on pro-micro in particular):
|
||||||
|
// we have no Serial1 in use on nrf52, check Serial and GPS modules.
|
||||||
#ifdef PIN_SERIAL1_RX
|
#ifdef PIN_SERIAL1_RX
|
||||||
Serial1.end();
|
if (Serial1) // A straightforward solution to the wake from deepsleep problem
|
||||||
|
Serial1.end();
|
||||||
#endif
|
#endif
|
||||||
setBluetoothEnable(false);
|
setBluetoothEnable(false);
|
||||||
|
|
||||||
@ -362,6 +366,7 @@ void cpuDeepSleep(uint32_t msecToWake)
|
|||||||
// Resume on user button press
|
// Resume on user button press
|
||||||
// https://github.com/lyusupov/SoftRF/blob/81c519ca75693b696752235d559e881f2e0511ee/software/firmware/source/SoftRF/src/platform/nRF52.cpp#L1738
|
// https://github.com/lyusupov/SoftRF/blob/81c519ca75693b696752235d559e881f2e0511ee/software/firmware/source/SoftRF/src/platform/nRF52.cpp#L1738
|
||||||
constexpr uint32_t DFU_MAGIC_SKIP = 0x6d;
|
constexpr uint32_t DFU_MAGIC_SKIP = 0x6d;
|
||||||
|
sd_power_gpregret_clr(0, 0xFF); // Clear the register before setting a new values in it for stability reasons
|
||||||
sd_power_gpregret_set(0, DFU_MAGIC_SKIP); // Equivalent NRF_POWER->GPREGRET = DFU_MAGIC_SKIP
|
sd_power_gpregret_set(0, DFU_MAGIC_SKIP); // Equivalent NRF_POWER->GPREGRET = DFU_MAGIC_SKIP
|
||||||
|
|
||||||
// FIXME, use system off mode with ram retention for key state?
|
// FIXME, use system off mode with ram retention for key state?
|
||||||
@ -378,6 +383,12 @@ void cpuDeepSleep(uint32_t msecToWake)
|
|||||||
nrf_gpio_cfg_sense_set(PIN_BUTTON2, sense1);
|
nrf_gpio_cfg_sense_set(PIN_BUTTON2, sense1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef PROMICRO_DIY_TCXO
|
||||||
|
nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_PULLUP); // Enable internal pull-up on the button pin
|
||||||
|
nrf_gpio_pin_sense_t sense = NRF_GPIO_PIN_SENSE_LOW; // Configure SENSE signal on low edge
|
||||||
|
nrf_gpio_cfg_sense_set(BUTTON_PIN, sense); // Apply SENSE to wake up the device from the deep sleep
|
||||||
|
#endif
|
||||||
|
|
||||||
auto ok = sd_power_system_off();
|
auto ok = sd_power_system_off();
|
||||||
if (ok != NRF_SUCCESS) {
|
if (ok != NRF_SUCCESS) {
|
||||||
LOG_ERROR("FIXME: Ignoring soft device (EasyDMA pending?) and forcing system-off!");
|
LOG_ERROR("FIXME: Ignoring soft device (EasyDMA pending?) and forcing system-off!");
|
||||||
|
Loading…
Reference in New Issue
Block a user