diff --git a/Firmware/main/CMakeLists.txt b/Firmware/main/CMakeLists.txt index fe4b6e1..fa612de 100644 --- a/Firmware/main/CMakeLists.txt +++ b/Firmware/main/CMakeLists.txt @@ -5,5 +5,6 @@ idf_component_register(SRCS src/spi_global.cpp src/i2c_global.cpp src/disp_tools.cpp + src/disp_tty.cpp PRIV_REQUIRES spi_flash esp_driver_i2c driver INCLUDE_DIRS "include") diff --git a/Firmware/main/include/Fonts.hpp b/Firmware/main/include/Fonts.hpp new file mode 100644 index 0000000..972fbb4 --- /dev/null +++ b/Firmware/main/include/Fonts.hpp @@ -0,0 +1,4878 @@ +// +// Created by Stepan Usatiuk on 26.04.2024. +// + +#ifndef CB_FONTS_HPP +#define CB_FONTS_HPP + +#include + +// Terminess Powerline +static constexpr std::array, 256> fonts_Terminess_Powerline{ + std::array{ + // ++---000-0x00----- + 0b00000000, + 0b00000000, + 0b00110000, + 0b01001000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---001-0x01----- + 0b00000000, + 0b00000000, + 0b01001000, + 0b01001000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---002-0x02----- + 0b00000000, + 0b00000000, + 0b00101000, + 0b00010000, + 0b00101000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---003-0x03----- + 0b00000000, + 0b00000000, + 0b00110010, + 0b01001100, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---004-0x04----- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---005-0x05----- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---006-0x06----- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---007-0x07----- + 0b00000000, + 0b00000000, + 0b00110010, + 0b01001100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---008-0x08----- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---009-0x09----- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b01111100, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---010-0x0a----- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000010, + 0b00111100, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b10111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---011-0x0b----- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---012-0x0c----- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---013-0x0d----- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---014-0x0e----- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---015-0x0f----- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---016-0x10----- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + std::array{ + // ++---017-0x11----- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---018-0x12----- + 0b00111100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---019-0x13----- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---020-0x14----- + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---021-0x15----- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---022-0x16----- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000010, + 0b00000100, + 0b00000011, + 0b00000000, + }, + std::array{ + // ++---023-0x17----- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000100, + 0b00000011, + 0b00000000, + }, + std::array{ + // ++---024-0x18----- + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---025-0x19----- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---026-0x1a----- + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---027-0x1b----- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---028-0x1c----- + 0b00100100, + 0b00011000, + 0b00000000, + 0b01111000, + 0b01000100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---029-0x1d----- + 0b00100100, + 0b00011000, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---030-0x1e----- + 0b00000000, + 0b00000000, + 0b00000010, + 0b00001111, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---031-0x1f----- + 0b00111100, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---032-0x20-' '- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---033-0x21-'!'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---034-0x22-'"'- + 0b00000000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---035-0x23-'#'- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---036-0x24-'$'- + 0b00000000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b10010010, + 0b10010000, + 0b10010000, + 0b01111100, + 0b00010010, + 0b00010010, + 0b10010010, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---037-0x25-'%'- + 0b00000000, + 0b00000000, + 0b01100100, + 0b10010100, + 0b01101000, + 0b00001000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00101100, + 0b01010010, + 0b01001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---038-0x26-'&'- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00110000, + 0b01001010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---039-0x27-'''- + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---040-0x28-'('- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---041-0x29-')'- + 0b00000000, + 0b00000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---042-0x2a-'*'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100100, + 0b00011000, + 0b01111110, + 0b00011000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---043-0x2b-'+'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---044-0x2c-','- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---045-0x2d-'-'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---046-0x2e-'.'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---047-0x2f-'/'- + 0b00000000, + 0b00000000, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00001000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00100000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---048-0x30-'0'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---049-0x31-'1'- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00011000, + 0b00101000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---050-0x32-'2'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---051-0x33-'3'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00000010, + 0b00011100, + 0b00000010, + 0b00000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---052-0x34-'4'- + 0b00000000, + 0b00000000, + 0b00000010, + 0b00000110, + 0b00001010, + 0b00010010, + 0b00100010, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---053-0x35-'5'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---054-0x36-'6'- + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---055-0x37-'7'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00001000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---056-0x38-'8'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---057-0x39-'9'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---058-0x3a-':'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---059-0x3b-';'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---060-0x3c-'<'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---061-0x3d-'='- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---062-0x3e-'>'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---063-0x3f-'?'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000100, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---064-0x40-'@'- + 0b00000000, + 0b00000000, + 0b01111100, + 0b10000010, + 0b10011110, + 0b10100010, + 0b10100010, + 0b10100010, + 0b10100110, + 0b10011010, + 0b10000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---065-0x41-'A'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---066-0x42-'B'- + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---067-0x43-'C'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---068-0x44-'D'- + 0b00000000, + 0b00000000, + 0b01111000, + 0b01000100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---069-0x45-'E'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---070-0x46-'F'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---071-0x47-'G'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01001110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---072-0x48-'H'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---073-0x49-'I'- + 0b00000000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---074-0x4a-'J'- + 0b00000000, + 0b00000000, + 0b00001110, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---075-0x4b-'K'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000100, + 0b01001000, + 0b01010000, + 0b01100000, + 0b01100000, + 0b01010000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---076-0x4c-'L'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---077-0x4d-'M'- + 0b00000000, + 0b00000000, + 0b10000010, + 0b11000110, + 0b10101010, + 0b10010010, + 0b10010010, + 0b10000010, + 0b10000010, + 0b10000010, + 0b10000010, + 0b10000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---078-0x4e-'N'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01100010, + 0b01010010, + 0b01001010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---079-0x4f-'O'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---080-0x50-'P'- + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---081-0x51-'Q'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01001010, + 0b00111100, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---082-0x52-'R'- + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01010000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---083-0x53-'S'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000010, + 0b00000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---084-0x54-'T'- + 0b00000000, + 0b00000000, + 0b11111110, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---085-0x55-'U'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---086-0x56-'V'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---087-0x57-'W'- + 0b00000000, + 0b00000000, + 0b10000010, + 0b10000010, + 0b10000010, + 0b10000010, + 0b10000010, + 0b10010010, + 0b10010010, + 0b10101010, + 0b11000110, + 0b10000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---088-0x58-'X'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---089-0x59-'Y'- + 0b00000000, + 0b00000000, + 0b10000010, + 0b10000010, + 0b01000100, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---090-0x5a-'Z'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---091-0x5b-'['- + 0b00000000, + 0b00000000, + 0b00111000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---092-0x5c-'\'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00010000, + 0b00001000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---093-0x5d-']'- + 0b00000000, + 0b00000000, + 0b00111000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---094-0x5e-'^'- + 0b00000000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---095-0x5f-'_'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---096-0x60-'`'- + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---097-0x61-'a'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---098-0x62-'b'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---099-0x63-'c'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---100-0x64-'d'- + 0b00000000, + 0b00000000, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---101-0x65-'e'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---102-0x66-'f'- + 0b00000000, + 0b00000000, + 0b00001110, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---103-0x67-'g'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---104-0x68-'h'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---105-0x69-'i'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---106-0x6a-'j'- + 0b00000000, + 0b00000000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00001100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + }, + std::array{ + // ++---107-0x6b-'k'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000100, + 0b01001000, + 0b01110000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---108-0x6c-'l'- + 0b00000000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---109-0x6d-'m'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111100, + 0b10010010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---110-0x6e-'n'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---111-0x6f-'o'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---112-0x70-'p'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + std::array{ + // ++---113-0x71-'q'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + }, + std::array{ + // ++---114-0x72-'r'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01011110, + 0b01100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---115-0x73-'s'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---116-0x74-'t'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---117-0x75-'u'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---118-0x76-'v'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---119-0x77-'w'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10000010, + 0b10000010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---120-0x78-'x'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---121-0x79-'y'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---122-0x7a-'z'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---123-0x7b-'{'- + 0b00000000, + 0b00000000, + 0b00001100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---124-0x7c-'|'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---125-0x7d-'}'- + 0b00000000, + 0b00000000, + 0b00110000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---126-0x7e-'~'- + 0b00000000, + 0b01100010, + 0b10010010, + 0b10001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---127-0x7f-''- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---128-0x80-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b10010010, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010010, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---129-0x81-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b00111000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---130-0x82-'�'- + 0b00000000, + 0b00000000, + 0b10000010, + 0b10000010, + 0b01000100, + 0b00101000, + 0b00010000, + 0b01111100, + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---131-0x83-'�'- + 0b00000000, + 0b00111000, + 0b01000100, + 0b01000000, + 0b00110000, + 0b01001000, + 0b01000100, + 0b01000100, + 0b00100100, + 0b00011000, + 0b00000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---132-0x84-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b10000001, + 0b10011001, + 0b10100101, + 0b10100001, + 0b10100101, + 0b10011001, + 0b10000001, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---133-0x85-'�'- + 0b00000000, + 0b00111000, + 0b00000100, + 0b00111100, + 0b01000100, + 0b00111100, + 0b00000000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---134-0x86-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010010, + 0b00100100, + 0b01001000, + 0b10010000, + 0b01001000, + 0b00100100, + 0b00010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---135-0x87-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b10000001, + 0b10111001, + 0b10100101, + 0b10111001, + 0b10101001, + 0b10100101, + 0b10000001, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---136-0x88-'�'- + 0b00000000, + 0b00011000, + 0b00100100, + 0b00001000, + 0b00010000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---137-0x89-'�'- + 0b10000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000001, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b10000000, + }, + std::array{ + // ++---138-0x8a-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000110, + 0b01111010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + std::array{ + // ++---139-0x8b-'�'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b10010010, + 0b10010010, + 0b10010010, + 0b10010010, + 0b01110010, + 0b00010010, + 0b00010010, + 0b00010010, + 0b00010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---140-0x8c-'�'- + 0b00000000, + 0b00111000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---141-0x8d-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10010000, + 0b01001000, + 0b00100100, + 0b00010010, + 0b00100100, + 0b01001000, + 0b10010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---142-0x8e-'�'- + 0b00000000, + 0b00100000, + 0b01100000, + 0b00100000, + 0b00100010, + 0b00100100, + 0b00001000, + 0b00010000, + 0b00100010, + 0b01000110, + 0b10001010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---143-0x8f-'�'- + 0b00000000, + 0b00100000, + 0b01100000, + 0b00100000, + 0b00100010, + 0b00100100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01001100, + 0b10010010, + 0b00000100, + 0b00001000, + 0b00011110, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---144-0x90-'�'- + 0b00000001, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b10000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + }, + std::array{ + // ++---145-0x91-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---146-0x92-'�'- + 0b00010000, + 0b00001000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---147-0x93-'�'- + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---148-0x94-'�'- + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---149-0x95-'�'- + 0b00110010, + 0b01001100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---150-0x96-'�'- + 0b00100100, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---151-0x97-'�'- + 0b00011000, + 0b00100100, + 0b00011000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---152-0x98-'�'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b10010000, + 0b10010000, + 0b10010000, + 0b11111100, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---153-0x99-'�'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00000000, + }, + std::array{ + // ++---154-0x9a-'�'- + 0b00010000, + 0b00001000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---155-0x9b-'�'- + 0b00001000, + 0b00010000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---156-0x9c-'�'- + 0b00011000, + 0b00100100, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---157-0x9d-'�'- + 0b00100100, + 0b00100100, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---158-0x9e-'�'- + 0b00100000, + 0b00010000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---159-0x9f-'�'- + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---160-0xa0-'�'- + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---161-0xa1-'�'- + 0b01000100, + 0b01000100, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---162-0xa2-'�'- + 0b00000000, + 0b00000000, + 0b01111000, + 0b01000100, + 0b01000010, + 0b01000010, + 0b11110010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---163-0xa3-'�'- + 0b00110010, + 0b01001100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01100010, + 0b01010010, + 0b01001010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---164-0xa4-'�'- + 0b00010000, + 0b00001000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---165-0xa5-'�'- + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---166-0xa6-'�'- + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---167-0xa7-'�'- + 0b00110010, + 0b01001100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---168-0xa8-'�'- + 0b00100100, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---169-0xa9-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---170-0xaa-'�'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000011, + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b11000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---171-0xab-'�'- + 0b00010000, + 0b00001000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---172-0xac-'�'- + 0b00001000, + 0b00010000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---173-0xad-'�'- + 0b00011000, + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---174-0xae-'�'- + 0b00100100, + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---175-0xaf-'�'- + 0b00001000, + 0b00010000, + 0b10000010, + 0b10000010, + 0b01000100, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---176-0xb0-'�'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---177-0xb1-'�'- + 0b00000000, + 0b00000000, + 0b00111000, + 0b01000100, + 0b01000100, + 0b01001000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---178-0xb2-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---179-0xb3-'�'- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---180-0xb4-'�'- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---181-0xb5-'�'- + 0b00000000, + 0b00000000, + 0b00110010, + 0b01001100, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---182-0xb6-'�'- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---183-0xb7-'�'- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00011000, + 0b00111100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---184-0xb8-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01101100, + 0b00010010, + 0b01110010, + 0b10011110, + 0b10010000, + 0b10010000, + 0b01101100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---185-0xb9-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00010000, + 0b00010000, + 0b00100000, + 0b00000000, + }, + std::array{ + // ++---186-0xba-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---187-0xbb-'�'- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---188-0xbc-'�'- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---189-0xbd-'�'- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---190-0xbe-'�'- + 0b00000000, + 0b00000000, + 0b00100000, + 0b00010000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---191-0xbf-'�'- + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---192-0xc0-'�'- + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100000, + 0b00100000, + 0b01111000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---193-0xc1-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01010100, + 0b00111000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---194-0xc2-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000011, + 0b00001111, + 0b00111111, + 0b11111111, + 0b00111111, + 0b00001111, + 0b00000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---195-0xc3-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11000000, + 0b11110000, + 0b11111100, + 0b11111111, + 0b11111100, + 0b11110000, + 0b11000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---196-0xc4-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00111000, + 0b01010100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---197-0xc5-'�'- + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + 0b10001000, + 0b00100010, + }, + std::array{ + // ++---198-0xc6-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00111100, + 0b00111100, + 0b00111100, + 0b00111100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---199-0xc7-'�'- + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + 0b10101010, + 0b01010101, + }, + std::array{ + // ++---200-0xc8-'�'- + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---201-0xc9-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00111000, + 0b01111100, + 0b11111110, + 0b01111100, + 0b00111000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---202-0xca-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---203-0xcb-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---204-0xcc-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---205-0xcd-'�'- + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b11101111, + 0b00000000, + 0b11101111, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + }, + std::array{ + // ++---206-0xce-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---207-0xcf-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---208-0xd0-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---209-0xd1-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---210-0xd2-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---211-0xd3-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00000000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---212-0xd4-'�'- + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---213-0xd5-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---214-0xd6-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---215-0xd7-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---216-0xd8-'�'- + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + }, + std::array{ + // ++---217-0xd9-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---218-0xda-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---219-0xdb-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---220-0xdc-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---221-0xdd-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---222-0xde-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---223-0xdf-'�'- + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + std::array{ + // ++---224-0xe0-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---225-0xe1-'�'- + 0b00010000, + 0b00010000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---226-0xe2-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---227-0xe3-'�'- + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000010, + 0b00000100, + 0b00000011, + 0b00000000, + }, + std::array{ + // ++---228-0xe4-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00000000, + }, + std::array{ + // ++---229-0xe5-'�'- + 0b00100100, + 0b00011000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---230-0xe6-'�'- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---231-0xe7-'�'- + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01001110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---232-0xe8-'�'- + 0b00000000, + 0b00000000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---233-0xe9-'�'- + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000000, + 0b01000000, + 0b01001110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + }, + std::array{ + // ++---234-0xea-'�'- + 0b00000000, + 0b00000100, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00111100, + 0b00000000, + }, + std::array{ + // ++---235-0xeb-'�'- + 0b00110010, + 0b01001100, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---236-0xec-'�'- + 0b00000000, + 0b00000000, + 0b00110100, + 0b01011000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---237-0xed-'�'- + 0b01111100, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---238-0xee-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---239-0xef-'�'- + 0b00000000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00010000, + 0b00100000, + 0b00011000, + 0b00000000, + }, + std::array{ + // ++---240-0xf0-'�'- + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00010000, + 0b00100000, + 0b00011000, + 0b00000000, + }, + std::array{ + // ++---241-0xf1-'�'- + 0b00010000, + 0b00010000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---242-0xf2-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---243-0xf3-'�'- + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000100, + 0b01001000, + 0b01010000, + 0b01100000, + 0b01100000, + 0b01010000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + }, + std::array{ + // ++---244-0xf4-'�'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000010, + 0b01000100, + 0b01001000, + 0b01110000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + }, + std::array{ + // ++---245-0xf5-'�'- + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000100, + 0b01001000, + 0b01110000, + 0b01001000, + 0b01000100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---246-0xf6-'�'- + 0b00100000, + 0b01000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---247-0xf7-'�'- + 0b00001000, + 0b00010000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---248-0xf8-'�'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + }, + std::array{ + // ++---249-0xf9-'�'- + 0b00000000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00100000, + }, + std::array{ + // ++---250-0xfa-'�'- + 0b00100100, + 0b00011000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---251-0xfb-'�'- + 0b01001000, + 0b00110000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---252-0xfc-'�'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000100, + 0b01000100, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---253-0xfd-'�'- + 0b00000000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010001, + 0b00010001, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---254-0xfe-'�'- + 0b00000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01100000, + 0b11000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + std::array{ + // ++---255-0xff-'�'- + 0b00000000, + 0b00000000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011000, + 0b00110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }}; + + +#endif //FONTS_HPP diff --git a/Firmware/main/include/disp_tty.hpp b/Firmware/main/include/disp_tty.hpp new file mode 100644 index 0000000..945cc5a --- /dev/null +++ b/Firmware/main/include/disp_tty.hpp @@ -0,0 +1,42 @@ +// +// Created by Stepan Usatiuk on 02.03.2025. +// + +#ifndef DISP_TTY_HPP +#define DISP_TTY_HPP + +#include +#include + +#include "config.hpp" + +#include + +class FbTty { +public: + void putchar(char c); + void putstr(const char* str); + char readchar(); + + template + auto fmt(std::format_string fmt, Args&&... args) { + auto str = std::format(fmt, std::forward(args)...); + putstr(str.c_str()); + } +private: + void draw_char(int col, int row); + + int _cur_col = 0; + int _cur_row = 0; + + static constexpr size_t _max_col = DISP_WIDTH / 8; + static constexpr size_t _max_row = DISP_HEIGHT / 16; + + std::array, _max_col> _buf = {}; + + void next_col(); + void next_row(); +}; + + +#endif // DISP_TTY_HPP diff --git a/Firmware/main/src/disp_tty.cpp b/Firmware/main/src/disp_tty.cpp new file mode 100644 index 0000000..c2bf57a --- /dev/null +++ b/Firmware/main/src/disp_tty.cpp @@ -0,0 +1,59 @@ +// +// Created by Stepan Usatiuk on 26.04.2024. +// + +#include "disp_tty.hpp" + +#include + +#include "Fonts.hpp" + +void FbTty::draw_char(int col, int row) { + for (int x = 0; x < 8; x++) { + for (int y = 0; y < 16; y++) { + bool color = fonts_Terminess_Powerline[_buf[col][row]][y] & (1 << (8 - x)); + if (color) + disp_tools::set_pixel(col * 8 + x, row * 16 + y); + else + disp_tools::reset_pixel(col * 8 + x, row * 16 + y); + } + } +} + +void FbTty::putchar(char c) { + if (c == '\n') { + next_row(); + return; + } + + _buf[_cur_col][_cur_row] = c; + + draw_char(_cur_col, _cur_row); + + next_col(); +} +void FbTty::putstr(const char* str) { + while (*str != 0) { + putchar(*str); + str++; + } +} +void FbTty::next_col() { + _cur_col++; + _cur_col = _cur_col % _max_col; + if (_cur_col == 0) { + next_row(); + } else { + _buf[_cur_col][_cur_row] = ' '; + draw_char(_cur_col, _cur_row); + } +} +void FbTty::next_row() { + _cur_col = 0; + _cur_row++; + _cur_row = _cur_row % _max_row; + for (int i = 0; i < _max_col; i++) { + _buf[i][_cur_row] = ' '; + draw_char(i, _cur_row); + } +} diff --git a/Firmware/main/src/hello_world_main.cpp b/Firmware/main/src/hello_world_main.cpp index b2457f8..0554c3b 100644 --- a/Firmware/main/src/hello_world_main.cpp +++ b/Firmware/main/src/hello_world_main.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include "esp_chip_info.h" @@ -26,6 +27,7 @@ #include #include +FbTty tty; extern "C" void app_main() { printf("Hello world!\n"); @@ -35,19 +37,25 @@ extern "C" void app_main() { SMD::init(); SMD::clear(); disp_tools::clear(); - disp_tools::draw_line(0,0,400,240); + disp_tools::draw_line(0, 0, 400, 240); disp_tools::draw_circle(100, 100, 20); disp_tools::draw_to_display(); + tty.putstr("Hello\nworld!"); + disp_tools::draw_to_display(); - for (int i = 10; i >= 0; i--) { + while (true){ // SMD::clear(); - printf("Voltage: %f\n", BatMon::get_voltage()); - printf("Current: %f\n", BatMon::get_current()); - printf("Charge: %f\n", BatMon::get_charge()); - printf("Restarting in %d seconds...\n", i); - vTaskDelay(1000 / portTICK_PERIOD_MS); + // printf("Voltage: %f\n", BatMon::get_voltage()); + tty.fmt("Current: {}\n", BatMon::get_current()); + tty.fmt("Voltage: {}\n", BatMon::get_voltage()); + // printf("Current: %f\n", BatMon::get_current()); + // printf("Charge: %f\n", BatMon::get_charge()); + tty.fmt("Charge: {}\n", BatMon::get_charge()); + // printf("Restarting in %d seconds...\n", i); + disp_tools::draw_to_display(); + vTaskDelay(2000 / portTICK_PERIOD_MS); } - printf("Restarting now.\n"); - fflush(stdout); - esp_restart(); + // printf("Restarting now.\n"); + // fflush(stdout); + // esp_restart(); } diff --git a/Firmware/sdkconfig b/Firmware/sdkconfig index 94102f6..10b94da 100644 --- a/Firmware/sdkconfig +++ b/Firmware/sdkconfig @@ -1149,9 +1149,7 @@ CONFIG_ESP32H2_UNIVERSAL_MAC_ADDRESSES=2 # # Sleep Config # -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set -CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y -# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=0 # CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set @@ -1256,11 +1254,11 @@ CONFIG_PM_DFS_INIT_AUTO=y # CONFIG_PM_PROFILING is not set # CONFIG_PM_TRACE is not set CONFIG_PM_SLP_IRAM_OPT=y -# CONFIG_PM_RTOS_IDLE_OPT is not set +CONFIG_PM_RTOS_IDLE_OPT=y CONFIG_PM_SLP_DISABLE_GPIO=y CONFIG_PM_LIGHTSLEEP_RTC_OSC_CAL_INTERVAL=1 CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y -# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set +CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP=y # CONFIG_PM_LIGHT_SLEEP_CALLBACKS is not set # end of Power Management @@ -2240,7 +2238,7 @@ CONFIG_POST_EVENTS_FROM_IRAM_ISR=y CONFIG_GDBSTUB_SUPPORT_TASKS=y CONFIG_GDBSTUB_MAX_TASKS=32 # CONFIG_OTA_ALLOW_HTTP is not set -# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP_SYSTEM_PD_FLASH=y CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 CONFIG_ESP32_PHY_MAX_TX_POWER=20 diff --git a/Firmware/sdkconfig.old b/Firmware/sdkconfig.old index 040d363..bc19232 100644 --- a/Firmware/sdkconfig.old +++ b/Firmware/sdkconfig.old @@ -522,14 +522,14 @@ CONFIG_ESPTOOLPY_FLASHFREQ_64M=y # CONFIG_ESPTOOLPY_FLASHFREQ_16M is not set CONFIG_ESPTOOLPY_FLASHFREQ="48m" # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y -# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set # CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" # CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set CONFIG_ESPTOOLPY_BEFORE_RESET=y # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set @@ -571,12 +571,13 @@ CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 CONFIG_COMPILER_HIDE_PATHS_MACROS=y # CONFIG_COMPILER_CXX_EXCEPTIONS is not set # CONFIG_COMPILER_CXX_RTTI is not set -CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NONE is not set # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set -# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +CONFIG_COMPILER_STACK_CHECK=y # CONFIG_COMPILER_NO_MERGE_CONSTANTS is not set -# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +CONFIG_COMPILER_WARN_WRITE_STRINGS=y # CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS=y # CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set @@ -587,7 +588,7 @@ CONFIG_COMPILER_RT_LIB_GCCLIB=y CONFIG_COMPILER_RT_LIB_NAME="gcc" CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y # CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE is not set -# CONFIG_COMPILER_STATIC_ANALYZER is not set +CONFIG_COMPILER_STATIC_ANALYZER=y # end of Compiler options # @@ -608,10 +609,212 @@ CONFIG_APPTRACE_LOCK_ENABLE=y # # Bluetooth # -# CONFIG_BT_ENABLED is not set +CONFIG_BT_ENABLED=y +# CONFIG_BT_BLUEDROID_ENABLED is not set +CONFIG_BT_NIMBLE_ENABLED=y +# CONFIG_BT_CONTROLLER_ONLY is not set +CONFIG_BT_CONTROLLER_ENABLED=y +# CONFIG_BT_CONTROLLER_DISABLED is not set + +# +# NimBLE Options +# +CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_NONE is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_ERROR is not set +# CONFIG_BT_NIMBLE_LOG_LEVEL_WARNING is not set +CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y +# CONFIG_BT_NIMBLE_LOG_LEVEL_DEBUG is not set +CONFIG_BT_NIMBLE_LOG_LEVEL=1 +CONFIG_BT_NIMBLE_MAX_CONNECTIONS=3 +CONFIG_BT_NIMBLE_MAX_BONDS=3 +CONFIG_BT_NIMBLE_MAX_CCCDS=8 +CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0 +CONFIG_BT_NIMBLE_PINNED_TO_CORE=0 +CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=4096 +CONFIG_BT_NIMBLE_ROLE_CENTRAL=y +CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y +CONFIG_BT_NIMBLE_ROLE_OBSERVER=y +# CONFIG_BT_NIMBLE_NVS_PERSIST is not set +# CONFIG_BT_NIMBLE_SMP_ID_RESET is not set +CONFIG_BT_NIMBLE_SECURITY_ENABLE=y +CONFIG_BT_NIMBLE_SM_LEGACY=y +CONFIG_BT_NIMBLE_SM_SC=y +# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y +CONFIG_BT_NIMBLE_SM_LVL=0 +# CONFIG_BT_NIMBLE_DEBUG is not set +# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set +CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256 +CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0 + +# +# Memory Settings +# +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE=128 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE=320 +CONFIG_BT_NIMBLE_MSYS_BUF_FROM_HEAP=y +CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=24 +CONFIG_BT_NIMBLE_TRANSPORT_ACL_SIZE=255 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_SIZE=70 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=30 +CONFIG_BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT=8 +CONFIG_BT_NIMBLE_L2CAP_COC_SDU_BUFF_COUNT=1 +# end of Memory Settings + +CONFIG_BT_NIMBLE_GATT_MAX_PROCS=4 +# CONFIG_BT_NIMBLE_HS_FLOW_CTRL is not set +CONFIG_BT_NIMBLE_RPA_TIMEOUT=900 +# CONFIG_BT_NIMBLE_MESH is not set +CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y +CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000 +CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT=y +CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT=3 +CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY=y +CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY=y +# CONFIG_BT_NIMBLE_EXT_ADV is not set +CONFIG_BT_NIMBLE_EXT_SCAN=y +CONFIG_BT_NIMBLE_ENABLE_PERIODIC_SYNC=y +CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS=0 +CONFIG_BT_NIMBLE_MAX_PERIODIC_ADVERTISER_LIST=5 +# CONFIG_BT_NIMBLE_BLE_POWER_CONTROL is not set +# CONFIG_BT_NIMBLE_GATT_CACHING is not set +CONFIG_BT_NIMBLE_WHITELIST_SIZE=12 +# CONFIG_BT_NIMBLE_TEST_THROUGHPUT_TEST is not set +# CONFIG_BT_NIMBLE_BLUFI_ENABLE is not set +CONFIG_BT_NIMBLE_USE_ESP_TIMER=y +# CONFIG_BT_NIMBLE_BLE_GATT_BLOB_TRANSFER is not set + +# +# GAP Service +# + +# +# GAP Appearance write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE is not set +# end of GAP Appearance write permissions + +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN=0 +CONFIG_BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR=0 +CONFIG_BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP=y +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP is not set +# CONFIG_BT_NIMBLE_SVC_GAP_CAR_SUPP is not set +CONFIG_BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION=-1 + +# +# GAP device name write permissions +# +# CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE is not set +# end of GAP device name write permissions + +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN=0 +CONFIG_BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 +CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 +# end of GAP Service + +# +# BLE Services +# +# CONFIG_BT_NIMBLE_HID_SERVICE is not set +# end of BLE Services + +# CONFIG_BT_NIMBLE_VS_SUPPORT is not set +# CONFIG_BT_NIMBLE_OPTIMIZE_MULTI_CONN is not set +# CONFIG_BT_NIMBLE_ENC_ADV_DATA is not set +# CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL is not set +# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set + +# +# Host-controller Transport +# +CONFIG_UART_HW_FLOWCTRL_DISABLE=y +# CONFIG_UART_HW_FLOWCTRL_CTS_RTS is not set +CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0 +CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 +CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 +# end of Host-controller Transport +# end of NimBLE Options + +# +# Controller Options +# + +# +# HCI Config +# +CONFIG_BT_LE_HCI_INTERFACE_USE_RAM=y +# CONFIG_BT_LE_HCI_INTERFACE_USE_UART is not set +# end of HCI Config + +CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT=y +CONFIG_BT_LE_CONTROLLER_TASK_STACK_SIZE=4096 +# CONFIG_BT_LE_CONTROLLER_LOG_ENABLED is not set +CONFIG_BT_LE_LL_RESOLV_LIST_SIZE=4 +CONFIG_BT_LE_LL_DUP_SCAN_LIST_COUNT=20 +CONFIG_BT_LE_LL_SCA=60 +# CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set +CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y +CONFIG_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 +CONFIG_BT_LE_SLEEP_ENABLE=y +# CONFIG_BT_LE_LP_CLK_SRC_MAIN_XTAL is not set +CONFIG_BT_LE_LP_CLK_SRC_DEFAULT=y +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y +CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 +CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 +CONFIG_BT_LE_SCAN_DUPL=y +CONFIG_BT_LE_SCAN_DUPL_TYPE_DEVICE=y +# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA is not set +# CONFIG_BT_LE_SCAN_DUPL_TYPE_DATA_DEVICE is not set +CONFIG_BT_LE_SCAN_DUPL_TYPE=0 +CONFIG_BT_LE_SCAN_DUPL_CACHE_REFRESH_PERIOD=0 +CONFIG_BT_LE_MSYS_INIT_IN_CONTROLLER=y +# CONFIG_BT_LE_TX_CCA_ENABLED is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N24 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N21 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N18 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N15 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N12 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N9 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N6 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N3 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_N0 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P3 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P6 is not set +CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P9=y +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P12 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P15 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P18 is not set +# CONFIG_BT_LE_DFT_TX_POWER_LEVEL_P20 is not set +CONFIG_BT_LE_DFT_TX_POWER_LEVEL_DBM_EFF=9 +# CONFIG_BT_LE_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set +# end of Controller Options + +# +# Common Options +# CONFIG_BT_ALARM_MAX_NUM=50 +# end of Common Options + +# CONFIG_BT_HCI_LOG_DEBUG_EN is not set # end of Bluetooth +# CONFIG_BLE_MESH is not set + # # Console Library # @@ -716,8 +919,8 @@ CONFIG_ESP_TLS_USE_DS_PERIPHERAL=y # Wireless Coexistence # CONFIG_ESP_COEX_ENABLED=y -# CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE is not set -# CONFIG_ESP_COEX_GPIO_DEBUG is not set +CONFIG_ESP_COEX_SW_COEXIST_ENABLE=y +# CONFIG_ESP_COEX_POWER_MANAGEMENT is not set # end of Wireless Coexistence # @@ -811,7 +1014,7 @@ CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y # # ESP-Driver:SPI Configurations # -# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_IN_IRAM=y CONFIG_SPI_MASTER_ISR_IN_IRAM=y # CONFIG_SPI_SLAVE_IN_IRAM is not set CONFIG_SPI_SLAVE_ISR_IN_IRAM=y @@ -834,6 +1037,7 @@ CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # ESP-Driver:USB Serial/JTAG Configuration # CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y +# CONFIG_USJ_NO_AUTO_LS_ON_CONNECTION is not set # end of ESP-Driver:USB Serial/JTAG Configuration # @@ -945,21 +1149,20 @@ CONFIG_ESP32H2_UNIVERSAL_MAC_ADDRESSES=2 # # Sleep Config # -# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set -CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y -# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=0 # CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set # CONFIG_ESP_SLEEP_DEBUG is not set CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# CONFIG_ESP_SLEEP_EVENT_CALLBACKS is not set # end of Sleep Config # # RTC Clock Config # -CONFIG_RTC_CLK_SRC_INT_RC=y -# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_INT_RC is not set +CONFIG_RTC_CLK_SRC_EXT_CRYS=y # CONFIG_RTC_CLK_SRC_EXT_OSC is not set CONFIG_RTC_CLK_CAL_CYCLES=1024 # end of RTC Clock Config @@ -992,6 +1195,7 @@ CONFIG_XTAL_FREQ=32 # end of Main XTAL Config CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +CONFIG_ESP_SPI_BUS_LOCK_FUNCS_IN_IRAM=y # end of Hardware Settings # @@ -1045,10 +1249,17 @@ CONFIG_ESP_PHY_CALIBRATION_MODE=0 # # Power Management # -# CONFIG_PM_ENABLE is not set -# CONFIG_PM_SLP_IRAM_OPT is not set +CONFIG_PM_ENABLE=y +CONFIG_PM_DFS_INIT_AUTO=y +# CONFIG_PM_PROFILING is not set +# CONFIG_PM_TRACE is not set +CONFIG_PM_SLP_IRAM_OPT=y +CONFIG_PM_RTOS_IDLE_OPT=y +CONFIG_PM_SLP_DISABLE_GPIO=y +CONFIG_PM_LIGHTSLEEP_RTC_OSC_CAL_INTERVAL=1 CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y # CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set +# CONFIG_PM_LIGHT_SLEEP_CALLBACKS is not set # end of Power Management # @@ -1089,6 +1300,8 @@ CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y +CONFIG_ESP_SYSTEM_RTC_EXT_XTAL=y +CONFIG_ESP_SYSTEM_RTC_EXT_XTAL_BOOTSTRAP_CYCLES=0 CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y # CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set @@ -1138,11 +1351,11 @@ CONFIG_ESP_BROWNOUT_DET=y # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3=y # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set # CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y -CONFIG_ESP_BROWNOUT_DET_LVL=0 +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=3 # end of Brownout Detector CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y @@ -1235,7 +1448,7 @@ CONFIG_FATFS_LINK_LOCK=y # # CONFIG_FREERTOS_SMP is not set CONFIG_FREERTOS_UNICORE=y -CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_HZ=1000 CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set @@ -1259,6 +1472,8 @@ CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set # CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +CONFIG_FREERTOS_USE_TICKLESS_IDLE=y +CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP=3 # CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set # end of Kernel @@ -1339,6 +1554,7 @@ CONFIG_IEEE802154_CCA_THRESHOLD=-60 CONFIG_IEEE802154_PENDING_TABLE_SIZE=20 # CONFIG_IEEE802154_MULTI_PAN_ENABLE is not set # CONFIG_IEEE802154_TIMING_OPTIMIZATION is not set +# CONFIG_IEEE802154_SLEEP_ENABLE is not set # CONFIG_IEEE802154_DEBUG is not set # end of IEEE 802.15.4 @@ -1603,7 +1819,7 @@ CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 # end of Certificate Bundle # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set -# CONFIG_MBEDTLS_CMAC_C is not set +CONFIG_MBEDTLS_CMAC_C=y CONFIG_MBEDTLS_HARDWARE_AES=y CONFIG_MBEDTLS_AES_USE_INTERRUPT=y CONFIG_MBEDTLS_AES_INTERRUPT_LEVEL=0 @@ -1780,9 +1996,9 @@ CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" # # MMU Config # -CONFIG_MMU_PAGE_SIZE_32KB=y -CONFIG_MMU_PAGE_MODE="32KB" -CONFIG_MMU_PAGE_SIZE=0x8000 +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 # end of MMU Config # @@ -1934,6 +2150,170 @@ CONFIG_WL_SECTOR_SIZE=4096 CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +CONFIG_WIFI_PROV_BLE_SEC_CONN=y # end of Component config # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set + +# Deprecated options for backward compatibility +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +# CONFIG_STACK_CHECK_NONE is not set +# CONFIG_STACK_CHECK_NORM is not set +CONFIG_STACK_CHECK_STRONG=y +# CONFIG_STACK_CHECK_ALL is not set +CONFIG_STACK_CHECK=y +CONFIG_WARN_WRITE_STRINGS=y +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_BLUEDROID_ENABLED is not set +CONFIG_NIMBLE_ENABLED=y +CONFIG_NIMBLE_MEM_ALLOC_MODE_INTERNAL=y +# CONFIG_NIMBLE_MEM_ALLOC_MODE_DEFAULT is not set +CONFIG_NIMBLE_MAX_CONNECTIONS=3 +CONFIG_NIMBLE_MAX_BONDS=3 +CONFIG_NIMBLE_MAX_CCCDS=8 +CONFIG_NIMBLE_L2CAP_COC_MAX_NUM=0 +CONFIG_NIMBLE_PINNED_TO_CORE=0 +CONFIG_NIMBLE_TASK_STACK_SIZE=4096 +CONFIG_BT_NIMBLE_TASK_STACK_SIZE=4096 +CONFIG_NIMBLE_ROLE_CENTRAL=y +CONFIG_NIMBLE_ROLE_PERIPHERAL=y +CONFIG_NIMBLE_ROLE_BROADCASTER=y +CONFIG_NIMBLE_ROLE_OBSERVER=y +# CONFIG_NIMBLE_NVS_PERSIST is not set +CONFIG_NIMBLE_SM_LEGACY=y +CONFIG_NIMBLE_SM_SC=y +# CONFIG_NIMBLE_SM_SC_DEBUG_KEYS is not set +CONFIG_BT_NIMBLE_SM_SC_LVL=0 +# CONFIG_NIMBLE_DEBUG is not set +CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME="nimble" +CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31 +CONFIG_NIMBLE_ATT_PREFERRED_MTU=256 +CONFIG_NIMBLE_SVC_GAP_APPEARANCE=0 +CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=24 +CONFIG_BT_NIMBLE_ACL_BUF_COUNT=24 +CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255 +CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 +CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30 +CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8 +# CONFIG_NIMBLE_HS_FLOW_CTRL is not set +CONFIG_NIMBLE_RPA_TIMEOUT=900 +# CONFIG_NIMBLE_MESH is not set +CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS=y +# CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EN is not set +CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS=y +CONFIG_SW_COEXIST_ENABLE=y +CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE=y +CONFIG_ESP_WIFI_SW_COEXIST_ENABLE=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_GDBSTUB_SUPPORT_TASKS=y +CONFIG_GDBSTUB_MAX_TASKS=32 +# CONFIG_OTA_ALLOW_HTTP is not set +CONFIG_ESP_SYSTEM_PD_FLASH=y +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_REDUCE_PHY_TX_POWER is not set +# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set +CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y +CONFIG_ESP32_RTC_XTAL_BOOTSTRAP_CYCLES=0 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_TASK_WDT=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_BROWNOUT_DET=y +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +CONFIG_BROWNOUT_DET_LVL_SEL_3=y +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_0 is not set +CONFIG_BROWNOUT_DET_LVL=3 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5760 +CONFIG_TCP_WND_DEFAULT=5760 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options