├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── components ├── tarableina226 │ ├── component.mk │ ├── ina226.c │ └── include │ │ └── ina226.h └── tarablessd1306 │ ├── component.mk │ ├── draw.c │ ├── font.c │ ├── fonts │ ├── font_Comic_Neue_25x28.c │ ├── font_Liberation_Sans_15x16.c │ ├── font_Liberation_Serif_19x19.c │ └── font_Ubuntu_Mono_6x10.c │ ├── iface_esp32_i2c.c │ ├── iface_esp32_spi.c │ ├── iface_virtual.c │ ├── include │ ├── config.h │ ├── font.h │ ├── iface_esp32_i2c.h │ ├── iface_esp32_spi.h │ ├── iface_virtual.h │ └── ssd1306.h │ └── ssd1306.c ├── main ├── component.mk └── main.c ├── sdkconfig ├── sdkconfig.defaults └── sdkconfig.old /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | build 3 | 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Tara Keeling 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is a project Makefile. It is assumed the directory this Makefile resides in is a 3 | # project subdirectory. 4 | # 5 | 6 | PROJECT_NAME := ssd1306-esp32-idf-testing 7 | 8 | include $(IDF_PATH)/make/project.mk 9 | 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Test 2 | -------------------------------------------------------------------------------- /components/tarableina226/component.mk: -------------------------------------------------------------------------------- 1 | COMPONENT_SRCDIRS := . 2 | -------------------------------------------------------------------------------- /components/tarableina226/ina226.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "ina226.h" 15 | 16 | static const int USE_THIS_I2C_PORT = 1; 17 | static int Address = 0; 18 | 19 | #define RangeCheck( value, min, max, retexpr ) { \ 20 | if ( value < min || value > max ) { \ 21 | printf( "ERROR %s: %s out of range. Got %d, expected [%d to %d]\n", __FUNCTION__, #value, value, min, max ); \ 22 | retexpr; \ 23 | } \ 24 | } 25 | 26 | static bool INA226_SetRegisterPointer( INA226_Reg Register ) { 27 | i2c_cmd_handle_t CommandHandle = NULL; 28 | esp_err_t Result = ESP_FAIL; 29 | 30 | if ( ( CommandHandle = i2c_cmd_link_create( ) ) ) { 31 | i2c_master_start( CommandHandle ); 32 | i2c_master_write_byte( CommandHandle, ( Address << 1 ) | I2C_MASTER_WRITE, true ); 33 | i2c_master_write_byte( CommandHandle, ( uint8_t ) Register, true ); 34 | i2c_master_stop( CommandHandle ); 35 | 36 | Result = i2c_master_cmd_begin( USE_THIS_I2C_PORT, CommandHandle, pdMS_TO_TICKS( 1000 ) ); 37 | i2c_cmd_link_delete( CommandHandle ); 38 | } 39 | 40 | return ( Result == ESP_OK ) ? true : false; 41 | } 42 | 43 | bool INA226_WriteReg( INA226_Reg Register, uint16_t Value ) { 44 | i2c_cmd_handle_t CommandHandle = NULL; 45 | esp_err_t Result = ESP_FAIL; 46 | 47 | if ( ( CommandHandle = i2c_cmd_link_create( ) ) ) { 48 | i2c_master_start( CommandHandle ); 49 | i2c_master_write_byte( CommandHandle, ( Address << 1 ) | I2C_MASTER_WRITE, true ); 50 | i2c_master_write_byte( CommandHandle, ( uint8_t ) Register, true ); 51 | i2c_master_write_byte( CommandHandle, ( uint8_t ) ( Value >> 8 ), true ); 52 | i2c_master_write_byte( CommandHandle, ( uint8_t ) Value, true ); 53 | i2c_master_stop( CommandHandle ); 54 | 55 | Result = i2c_master_cmd_begin( USE_THIS_I2C_PORT, CommandHandle, pdMS_TO_TICKS( 1000 ) ); 56 | i2c_cmd_link_delete( CommandHandle ); 57 | } 58 | 59 | return ( Result == ESP_OK ) ? true : false; 60 | } 61 | 62 | uint16_t INA226_ReadReg16( INA226_Reg Register ) { 63 | i2c_cmd_handle_t CommandHandle = NULL; 64 | esp_err_t Result = ESP_FAIL; 65 | uint8_t Value_lo = 0; 66 | uint8_t Value_hi = 0; 67 | 68 | if ( INA226_SetRegisterPointer( Register ) == true ) { 69 | vTaskDelay( pdMS_TO_TICKS( 1 ) ); 70 | 71 | if ( ( CommandHandle = i2c_cmd_link_create( ) ) ) { 72 | i2c_master_start( CommandHandle ); 73 | i2c_master_write_byte( CommandHandle, ( Address << 1 ) | I2C_MASTER_READ, true ); 74 | i2c_master_read_byte( CommandHandle, &Value_hi, false ); 75 | i2c_master_read_byte( CommandHandle, &Value_lo, false ); 76 | i2c_master_stop( CommandHandle ); 77 | 78 | Result = i2c_master_cmd_begin( USE_THIS_I2C_PORT, CommandHandle, pdMS_TO_TICKS( 1000 ) ); 79 | i2c_cmd_link_delete( CommandHandle ); 80 | 81 | if ( Result == ESP_OK ) { 82 | return ( ( Value_hi << 8 ) | Value_lo ); 83 | } 84 | } 85 | } 86 | 87 | return 0xBAAD; 88 | } 89 | 90 | uint16_t INA226_GetManufacturerId( void ) { 91 | return INA226_ReadReg16( INA226_Reg_ManufacturerId ); 92 | } 93 | 94 | uint16_t INA226_GetDieId( void ) { 95 | return INA226_ReadReg16( INA226_Reg_DieId ); 96 | } 97 | 98 | uint16_t INA226_ReadConfig( void ) { 99 | return INA226_ReadReg16( INA226_Reg_Cfg ); 100 | } 101 | 102 | void INA226_WriteConfig( uint16_t Config ) { 103 | INA226_WriteReg( INA226_Reg_Cfg, Config ); 104 | } 105 | 106 | void INA226_Reset( void ) { 107 | INA226_WriteConfig( INA226_ReadConfig( ) | INA226_CFG_Reset ); 108 | } 109 | 110 | INA226_AveragingMode INA226_GetAveragingMode( void ) { 111 | uint16_t CurrentConfig = 0; 112 | 113 | CurrentConfig = INA226_ReadConfig( ); 114 | CurrentConfig>>= INA226_CFG_AveragingOffset; 115 | CurrentConfig &= 0x07; 116 | 117 | return ( INA226_AveragingMode ) CurrentConfig; 118 | } 119 | 120 | void INA226_SetAveragingMode( INA226_AveragingMode Mode ) { 121 | uint16_t CurrentConfig = 0; 122 | 123 | RangeCheck( Mode, 0, INA226_Num_Averages, return ); 124 | 125 | CurrentConfig = INA226_ReadConfig( ); 126 | CurrentConfig &= ~INA226_CFG_AveragingMask; 127 | CurrentConfig |= ( Mode << INA226_CFG_AveragingOffset ); 128 | 129 | INA226_WriteReg( INA226_Reg_Cfg, CurrentConfig ); 130 | } 131 | 132 | INA226_ConversionTime INA226_GetBusVoltageConversionTime( void ) { 133 | uint16_t CurrentConfig = 0; 134 | 135 | CurrentConfig = INA226_ReadConfig( ); 136 | CurrentConfig>>= INA226_CFG_BusVoltageTimeOffset; 137 | CurrentConfig&= 0x07; 138 | 139 | return ( INA226_ConversionTime ) CurrentConfig; 140 | } 141 | 142 | void INA226_SetBusVoltageConversionTime( INA226_ConversionTime ConversionTime ) { 143 | uint16_t CurrentConfig = 0; 144 | 145 | RangeCheck( ConversionTime, 0, INA226_Num_ConversionTimes, return ); 146 | 147 | CurrentConfig = INA226_ReadConfig( ); 148 | CurrentConfig &= ~INA226_CFG_BusVoltageTimeMask; 149 | CurrentConfig |= ( ConversionTime << INA226_CFG_BusVoltageTimeOffset ); 150 | 151 | INA226_WriteReg( INA226_Reg_Cfg, CurrentConfig ); 152 | } 153 | 154 | INA226_ConversionTime INA226_GetShuntVoltageConversionTime( void ) { 155 | uint16_t CurrentConfig = 0; 156 | 157 | CurrentConfig = INA226_ReadConfig( ); 158 | CurrentConfig>>= INA226_CFG_ShuntVoltageTimeOffset; 159 | CurrentConfig&= 0x07; 160 | 161 | return ( INA226_ConversionTime ) CurrentConfig; 162 | } 163 | 164 | void INA226_SetShuntVoltageConversionTime( INA226_ConversionTime ConversionTime ) { 165 | uint16_t CurrentConfig = 0; 166 | 167 | RangeCheck( ConversionTime, 0, INA226_Num_ConversionTimes, return ); 168 | 169 | CurrentConfig = INA226_ReadConfig( ); 170 | CurrentConfig &= ~INA226_CFG_ShuntVoltageTimeMask; 171 | CurrentConfig |= ( ConversionTime << INA226_CFG_ShuntVoltageTimeOffset ); 172 | 173 | INA226_WriteReg( INA226_Reg_Cfg, CurrentConfig ); 174 | } 175 | 176 | INA226_Mode INA226_GetOperatingMode( void ) { 177 | uint16_t CurrentConfig = 0; 178 | 179 | CurrentConfig = INA226_ReadConfig( ); 180 | CurrentConfig&= 0x07; 181 | 182 | return ( INA226_Mode ) CurrentConfig; 183 | } 184 | 185 | void INA226_SetOperatingMode( INA226_Mode Mode ) { 186 | uint16_t CurrentConfig = 0; 187 | 188 | RangeCheck( Mode, 0, INA226_Num_Modes, return ); 189 | 190 | CurrentConfig = INA226_ReadConfig( ); 191 | CurrentConfig &= ~INA226_CFG_ModeMask; 192 | CurrentConfig |= Mode; 193 | 194 | INA226_WriteReg( INA226_Reg_Cfg, CurrentConfig ); 195 | } 196 | 197 | uint32_t INA226_GetBusVoltage( void ) { 198 | uint32_t Data = 0; 199 | 200 | Data = INA226_ReadReg16( INA226_Reg_BusVolage ); 201 | Data*= 125; 202 | 203 | return Data / 100; 204 | } 205 | 206 | bool INA226_Init( int I2CAddress ) { 207 | Address = I2CAddress; 208 | 209 | INA226_Reset( ); 210 | vTaskDelay( pdMS_TO_TICKS( 10 ) ); 211 | 212 | return true; 213 | } 214 | -------------------------------------------------------------------------------- /components/tarableina226/include/ina226.h: -------------------------------------------------------------------------------- 1 | #ifndef _INA226_H_ 2 | #define _INA226_H_ 3 | 4 | #if ! defined BIT 5 | #define BIT( n ) ( 1 << n ) 6 | #endif 7 | 8 | typedef enum { 9 | INA226_Reg_Cfg = 0x00, 10 | INA226_Reg_ShuntVoltage, 11 | INA226_Reg_BusVolage, 12 | INA226_Reg_AvgPower, 13 | INA226_Reg_AvgCurrent, 14 | INA226_Reg_Calibration, 15 | INA226_Reg_AlertMask, 16 | INA226_Reg_AlertLimit, 17 | INA226_Reg_ManufacturerId = 0xFE, 18 | INA226_Reg_DieId 19 | } INA226_Reg; 20 | 21 | typedef enum { 22 | INA226_Averages_1 = 0, 23 | INA226_Averages_4, 24 | INA226_Averages_16, 25 | INA226_Averages_64, 26 | INA226_Averages_128, 27 | INA226_Averages_256, 28 | INA226_Averages_512, 29 | INA226_Averages_1024, 30 | INA226_Num_Averages = 7 31 | } INA226_AveragingMode; 32 | 33 | typedef enum { 34 | INA226_ConversionTime_140us = 0, 35 | INA226_ConversionTime_204us, 36 | INA226_ConversionTime_332us, 37 | INA226_ConversionTime_588us, 38 | INA226_ConversionTime_1_1ms, 39 | INA226_ConversionTime_2_116ms, 40 | INA226_ConversionTime_4_156ms, 41 | INA226_ConversionTime_8_244ms, 42 | INA226_Num_ConversionTimes = 7 43 | } INA226_ConversionTime; 44 | 45 | typedef enum { 46 | INA226_Mode_Shutdown = 0, 47 | INA226_Mode_ShuntVoltage_Triggered, 48 | INA226_Mode_BusVoltage_Triggered, 49 | INA226_Mode_ShuntAndBus_Triggered, 50 | INA226_Mode_Shutdown2, 51 | INA226_Mode_ShuntVoltage_Continuous, 52 | INA226_Mode_BusVoltage_Continuous, 53 | INA226_Mode_ShuntAndBus_Continuous, 54 | INA226_Num_Modes = 7 55 | } INA226_Mode; 56 | 57 | #define INA226_CFG_Reset BIT( 15 ) 58 | 59 | #define INA226_CFG_AveragingMask ( BIT( 9 ) | BIT( 10 ) | BIT( 11 ) ) 60 | #define INA226_CFG_AveragingOffset 9 61 | 62 | #define INA226_CFG_BusVoltageTimeMask ( BIT( 6 ) | BIT( 7 ) | BIT( 8 ) ) 63 | #define INA226_CFG_BusVoltageTimeOffset 6 64 | 65 | #define INA226_CFG_ShuntVoltageTimeMask ( BIT( 3 ) | BIT( 4 ) | BIT( 5 ) ) 66 | #define INA226_CFG_ShuntVoltageTimeOffset 3 67 | 68 | #define INA226_CFG_ModeMask ( BIT( 0 ) | BIT( 1 ) | BIT( 2 ) ) 69 | 70 | bool INA226_Init( int Address ); 71 | bool INA226_WriteReg( INA226_Reg Register, uint16_t Value ); 72 | uint16_t INA226_ReadReg16( INA226_Reg Register ); 73 | 74 | uint16_t INA226_GetManufacturerId( void ); 75 | uint16_t INA226_GetDieId( void ); 76 | uint16_t INA226_ReadCfg( void ); 77 | 78 | void INA226_Reset( void ); 79 | 80 | INA226_AveragingMode INA226_GetAveragingMode( void ); 81 | void INA226_SetAveragingMode( INA226_AveragingMode Mode ); 82 | 83 | INA226_ConversionTime INA226_GetBusVoltageConversionTime( void ); 84 | void INA226_SetBusVoltageConversionTime( INA226_ConversionTime ConversionTime ); 85 | 86 | INA226_ConversionTime INA226_GetShuntVoltageConversionTime( void ); 87 | void INA226_SetShuntVoltageConversionTime( INA226_ConversionTime ConversionTime ); 88 | 89 | INA226_Mode INA226_GetOperatingMode( void ); 90 | void INA226_SetOperatingMode( INA226_Mode Mode ); 91 | 92 | uint32_t INA226_GetBusVoltage( void ); 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /components/tarablessd1306/component.mk: -------------------------------------------------------------------------------- 1 | COMPONENT_SRCDIRS := . fonts 2 | -------------------------------------------------------------------------------- /components/tarablessd1306/draw.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "ssd1306.h" 16 | 17 | void SSD1306_DrawPixel( struct SSD1306_Device* DeviceHandle, uint32_t X, uint32_t Y, bool Color ) { 18 | uint32_t YBit = ( Y & 0x07 ); 19 | uint8_t* FBOffset = NULL; 20 | 21 | NullCheck( DeviceHandle, return ); 22 | NullCheck( DeviceHandle->Framebuffer, return ); 23 | 24 | /* 25 | * We only need to modify the Y coordinate since the pitch 26 | * of the screen is the same as the width. 27 | * Dividing Y by 8 gives us which row the pixel is in but not 28 | * the bit position. 29 | */ 30 | Y>>= 3; 31 | 32 | FBOffset = DeviceHandle->Framebuffer + ( ( Y * DeviceHandle->Width ) + X ); 33 | *FBOffset = ( Color == true ) ? *FBOffset | BIT( YBit ) : *FBOffset & ~BIT( YBit ); 34 | } 35 | 36 | void SSD1306_DrawHLine( struct SSD1306_Device* DeviceHandle, int x, int y, int x2, bool Color ) { 37 | NullCheck( DeviceHandle, return ); 38 | NullCheck( DeviceHandle->Framebuffer, return ); 39 | 40 | CheckBounds( x >= DeviceHandle->Width, return ); 41 | CheckBounds( ( x2 + x ) >= DeviceHandle->Width, return ); 42 | CheckBounds( y >= DeviceHandle->Height, return ); 43 | 44 | for ( ; x <= x2; x++ ) { 45 | SSD1306_DrawPixel( DeviceHandle, x, y, Color ); 46 | } 47 | } 48 | 49 | void SSD1306_DrawVLine( struct SSD1306_Device* DeviceHandle, int x, int y, int y2, bool Color ) { 50 | NullCheck( DeviceHandle, return ); 51 | NullCheck( DeviceHandle->Framebuffer, return ); 52 | 53 | CheckBounds( x >= DeviceHandle->Width, return ); 54 | CheckBounds( y >= DeviceHandle->Height, return ); 55 | CheckBounds( ( y2 + y ) >= DeviceHandle->Height, return ); 56 | 57 | for ( ; y <= y2; y++ ) { 58 | SSD1306_DrawPixel( DeviceHandle, x, y, Color ); 59 | } 60 | } 61 | 62 | void SSD1306_DrawLine( struct SSD1306_Device* DeviceHandle, int x0, int y0, int x1, int y1, bool Color ) { 63 | NullCheck( DeviceHandle, return ); 64 | NullCheck( DeviceHandle->Framebuffer, return ); 65 | 66 | if ( x0 == x1 ) { 67 | /* Vertical line */ 68 | SSD1306_DrawVLine( DeviceHandle, x0, y0, y1, Color ); 69 | } else if ( y0 == y1 ) { 70 | /* Horizontal line */ 71 | SSD1306_DrawHLine( DeviceHandle, x0, y0, x1, Color ); 72 | } else { 73 | /* Diagonal line */ 74 | /* TODO: This */ 75 | 76 | CheckBounds( ( x0 < 0 ) || ( x0 >= DeviceHandle->Width ), return ); 77 | CheckBounds( ( x1 < 0 ) || ( x1 >= DeviceHandle->Width ), return ); 78 | 79 | CheckBounds( ( y0 < 0 ) || ( y0 >= DeviceHandle->Height ), return ); 80 | CheckBounds( ( y1 < 0 ) || ( y1 >= DeviceHandle->Height ), return ); 81 | } 82 | } 83 | 84 | void SSD1306_DrawRect( struct SSD1306_Device* DeviceHandle, int x, int y, int x2, int y2, bool Color ) { 85 | NullCheck( DeviceHandle, return ); 86 | NullCheck( DeviceHandle->Framebuffer, return ); 87 | 88 | CheckBounds( x >= DeviceHandle->Width, return ); 89 | CheckBounds( ( x2 + x ) >= DeviceHandle->Width, return ); 90 | CheckBounds( y >= DeviceHandle->Height, return ); 91 | CheckBounds( ( y2 + y ) >= DeviceHandle->Height, return ); 92 | 93 | for ( ; y <= y2; y++ ) { 94 | SSD1306_DrawHLine( DeviceHandle, x, y, x2, Color ); 95 | } 96 | } 97 | 98 | void SSD1306_Clear( struct SSD1306_Device* DeviceHandle, bool Color ) { 99 | NullCheck( DeviceHandle, return ); 100 | NullCheck( DeviceHandle->Framebuffer, return ); 101 | 102 | memset( DeviceHandle->Framebuffer, Color, DeviceHandle->FramebufferSize ); 103 | } 104 | -------------------------------------------------------------------------------- /components/tarablessd1306/font.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | 12 | #include "ssd1306.h" 13 | #include "font.h" 14 | 15 | int FontGetCharHeight( struct FontDef* FontHandle, char c ) { 16 | NullCheck( FontHandle, return 0 ); 17 | NullCheck( FontHandle->Data, return 0 ); 18 | 19 | return FontHandle->Height * 8; 20 | } 21 | 22 | int FontMeasureString( struct FontDef* FontHandle, const char* Text ) { 23 | int StringWidthInPixels = 0; 24 | int Length = 0; 25 | int i = 0; 26 | 27 | NullCheck( FontHandle, return 0 ); 28 | NullCheck( FontHandle->Data, return 0 ); 29 | NullCheck( Text, return 0 ); 30 | 31 | for ( i = 0, Length = strlen( Text ); i < Length; i++ ) { 32 | StringWidthInPixels+= FontGetCharWidth( FontHandle, Text[ i ] ); 33 | } 34 | 35 | return StringWidthInPixels; 36 | } 37 | 38 | int FontGetCharWidth( struct FontDef* FontHandle, char c ) { 39 | const uint8_t* WidthOffset = FontHandle->Data; 40 | 41 | NullCheck( FontHandle, return 0 ); 42 | NullCheck( FontHandle->Data, return 0 ); 43 | 44 | if ( c < FontHandle->StartChar || c > FontHandle->EndChar ) 45 | return 0; 46 | 47 | WidthOffset+= ( c - FontHandle->StartChar ) * ( ( FontHandle->Width * FontHandle->Height ) + 1 ); 48 | return *WidthOffset; 49 | } 50 | 51 | void FontDrawChar( struct SSD1306_Device* DeviceHandle, char c, int x, int y, bool Color ) { 52 | const uint8_t* FontOffset = NULL; 53 | struct FontDef* Font = NULL; 54 | int GlyphSizeInBytes = 0; 55 | int CharHeight = 0; 56 | int CharWidth = 0; 57 | int x2 = 0; 58 | int y2 = 0; 59 | 60 | NullCheck( DeviceHandle, return ); 61 | NullCheck( DeviceHandle->Framebuffer, return ); 62 | NullCheck( DeviceHandle->Font, return ); 63 | NullCheck( DeviceHandle->Font->Data, return ); 64 | 65 | CharWidth = FontGetCharWidth( DeviceHandle->Font, c ); 66 | CharHeight = FontGetCharHeight( DeviceHandle->Font, c ); 67 | 68 | CheckBounds( x >= ( DeviceHandle->Width ) - CharWidth, return ); 69 | CheckBounds( y >= ( DeviceHandle->Height ) - CharHeight, return ); 70 | 71 | if ( c < DeviceHandle->Font->StartChar || c > DeviceHandle->Font->EndChar ) { 72 | return; 73 | } 74 | 75 | Font = DeviceHandle->Font; 76 | 77 | /* Divide y by 8 to get which page the Y coordinate is on */ 78 | y>>= 3; 79 | 80 | /* Height is size in bytes, so a 16px high font would be 2 bytes tall */ 81 | GlyphSizeInBytes = ( Font->Width * Font->Height ) + 1; 82 | FontOffset = &Font->Data[ ( ( c - Font->StartChar ) * GlyphSizeInBytes ) + 1 ]; 83 | 84 | for ( x2 = 0; x2 < FontGetCharWidth( Font, c ); x2++ ) { 85 | for ( y2 = 0; y2 < Font->Height; y2++ ) { 86 | DeviceHandle->Framebuffer[ ( ( y2 + y ) * DeviceHandle->Width ) + ( x + x2 ) ] = ( Color == true ) ? *FontOffset : ! *FontOffset; 87 | FontOffset++; 88 | } 89 | } 90 | } 91 | 92 | void FontDrawString( struct SSD1306_Device* DeviceHandle, const char* Text, int x, int y, bool Color ) { 93 | int Length = 0; 94 | int i = 0; 95 | int x2 = 0; 96 | int y2 = 0; 97 | 98 | NullCheck( DeviceHandle, return ); 99 | NullCheck( DeviceHandle->Framebuffer, return ); 100 | NullCheck( DeviceHandle->Font, return ); 101 | NullCheck( DeviceHandle->Font->Data, return ); 102 | NullCheck( Text, return ); 103 | 104 | CheckBounds( x >= DeviceHandle->Width, return ); 105 | CheckBounds( y >= DeviceHandle->Height, return ); 106 | 107 | for ( i = 0, x2 = x, y2 = y, Length = strlen( Text ); i < Length; i++ ) { 108 | FontDrawChar( DeviceHandle, Text[ i ], x2, y2, Color ); 109 | x2+= FontGetCharWidth( DeviceHandle->Font, Text[ i ] ); 110 | } 111 | } 112 | 113 | void FontDrawCharUnaligned( struct SSD1306_Device* DeviceHandle, char c, int x, int y, bool Color ) { 114 | const uint8_t* FontOffset = NULL; 115 | struct FontDef* Font = NULL; 116 | int CharSizeInBytes = 0; 117 | int CharHeight = 0; 118 | int CharWidth = 0; 119 | int x2 = 0; 120 | int y2 = 0; 121 | int i = 0; 122 | 123 | NullCheck( DeviceHandle, return ); 124 | NullCheck( DeviceHandle->Framebuffer, return ); 125 | NullCheck( DeviceHandle->Font, return ); 126 | NullCheck( DeviceHandle->Font->Data, return ); 127 | 128 | Font = DeviceHandle->Font; 129 | CharWidth = FontGetCharWidth( Font, c ); 130 | CharHeight = FontGetCharHeight( Font, c ); 131 | 132 | CheckBounds( x >= ( DeviceHandle->Width ) - CharWidth, return ); 133 | CheckBounds( y >= ( DeviceHandle->Height ) - CharHeight, return ); 134 | 135 | if ( c < Font->StartChar || c > Font->EndChar ) { 136 | return; 137 | } 138 | 139 | /* Height is size in bytes, so a 16px high font would be 2 bytes tall */ 140 | CharSizeInBytes = ( Font->Width * Font->Height ) + 1; 141 | FontOffset = &Font->Data[ ( ( c - Font->StartChar ) * CharSizeInBytes ) + 1 ]; 142 | 143 | for ( x2 = 0; x2 < CharWidth; x2++ ) { 144 | for ( y2 = 0; y2 < Font->Height; y2++ ) { 145 | for ( i = 7; i >= 0; i-- ) { 146 | if ( *FontOffset & BIT( i ) ) { 147 | SSD1306_DrawPixel( DeviceHandle, 148 | x + x2, 149 | y + ( i + ( y2 * 8 ) ), 150 | Color 151 | ); 152 | } 153 | } 154 | 155 | FontOffset++; 156 | } 157 | } 158 | } 159 | 160 | void FontDrawStringUnaligned( struct SSD1306_Device* DeviceHandle, const char* Text, int x, int y, bool Color ) { 161 | int Length = 0; 162 | int i = 0; 163 | 164 | NullCheck( DeviceHandle, return ); 165 | NullCheck( DeviceHandle->Framebuffer, return ); 166 | NullCheck( DeviceHandle->Font, return ); 167 | NullCheck( DeviceHandle->Font->Data, return ); 168 | NullCheck( Text, return ); 169 | 170 | CheckBounds( x >= DeviceHandle->Width, return ); 171 | CheckBounds( y >= DeviceHandle->Height, return ); 172 | 173 | for ( i = 0, Length = strlen( Text ); i < Length; i++ ) { 174 | FontDrawCharUnaligned( DeviceHandle, Text[ i ], x, y, Color ); 175 | x+= FontGetCharWidth( DeviceHandle->Font, Text[ i ] ); 176 | } 177 | } 178 | 179 | void FontDrawAnchoredString( struct SSD1306_Device* DeviceHandle, const char* Text, TextAnchor Anchor , bool Color ) { 180 | int StringLengthInPixels = 0; 181 | int CharHeight = 0; 182 | int MidpointX = 0; 183 | int MidpointY = 0; 184 | int x = 0; 185 | int y = 0; 186 | 187 | NullCheck( DeviceHandle, return ); 188 | NullCheck( DeviceHandle->Framebuffer, return ); 189 | NullCheck( DeviceHandle->Font, return ); 190 | NullCheck( DeviceHandle->Font->Data, return ); 191 | NullCheck( Text, return ); 192 | 193 | StringLengthInPixels = FontMeasureString( DeviceHandle->Font, Text ); 194 | CharHeight = FontGetCharHeight( DeviceHandle->Font, ' ' ); 195 | MidpointX = ( DeviceHandle->Width / 2 ) - 1; 196 | MidpointY = ( DeviceHandle->Height / 2 ) - 1; 197 | 198 | switch ( Anchor ) { 199 | case TextAnchor_North: { 200 | x = MidpointX - ( StringLengthInPixels / 2 ); 201 | y = 0; 202 | break; 203 | } 204 | case TextAnchor_NorthEast: { 205 | x = DeviceHandle->Width - 1 - StringLengthInPixels; 206 | y = 0; 207 | break; 208 | } 209 | case TextAnchor_NorthWest: { 210 | x = 0; 211 | y = 0; 212 | break; 213 | } 214 | case TextAnchor_East: { 215 | y = MidpointY - ( CharHeight / 2 ); 216 | x = DeviceHandle->Width - 1 - StringLengthInPixels; 217 | break; 218 | } 219 | case TextAnchor_West: { 220 | y = MidpointY - ( CharHeight / 2 ); 221 | x = 0; 222 | break; 223 | } 224 | case TextAnchor_SouthEast: { 225 | y = DeviceHandle->Height - 1 - CharHeight; 226 | x = DeviceHandle->Width - 1 - StringLengthInPixels; 227 | break; 228 | } 229 | case TextAnchor_SouthWest: { 230 | y = DeviceHandle->Height - 1 - CharHeight; 231 | x = 0; 232 | break; 233 | } 234 | case TextAnchor_South: { 235 | x = MidpointX - ( StringLengthInPixels / 2 ); 236 | y = DeviceHandle->Height - 1 - CharHeight; 237 | break; 238 | } 239 | case TextAnchor_Center: { 240 | x = MidpointX - ( StringLengthInPixels / 2 ); 241 | y = MidpointY - ( CharHeight / 2 ); 242 | break; 243 | } 244 | default: { 245 | return; 246 | } 247 | }; 248 | 249 | FontDrawStringUnaligned( DeviceHandle, Text, x, y, Color ); 250 | } 251 | -------------------------------------------------------------------------------- /components/tarablessd1306/fonts/font_Comic_Neue_25x28.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include "config.h" 10 | #include "font.h" 11 | 12 | #ifdef CONFIG_FONT_COMIC_NEUE_25x28 13 | 14 | //WARNING: This Font Require X-GLCD Lib. 15 | // You can not use it with MikroE GLCD Lib. 16 | 17 | //Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 18 | //MikroElektronika 2011 19 | //http://www.mikroe.com 20 | 21 | //GLCD FontName : Comic_Neue25x28 22 | //GLCD FontSize : 25 x 28 23 | 24 | static const uint8_t Comic_Neue25x28_Data[ ] = { 25 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 26 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x71, 0x00, 0xF8, 0xFF, 0x7B, 0x00, 0xF8, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! 27 | 0x09, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " 28 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x8E, 0x23, 0x00, 0x00, 0x8E, 0x7F, 0x00, 0x00, 0xCE, 0x7F, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0xF0, 0xBF, 0x03, 0x00, 0xF0, 0x8F, 0x7B, 0x00, 0x70, 0x8E, 0x7F, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0xF0, 0x8F, 0x03, 0x00, 0xF0, 0x8F, 0x03, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char # 29 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC0, 0x07, 0x3E, 0x00, 0xE0, 0x0F, 0x38, 0x00, 0xF0, 0x1F, 0x70, 0x00, 0x70, 0x3C, 0x70, 0x00, 0x7C, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0xFF, 0x01, 0xFC, 0xFF, 0xFF, 0x01, 0x70, 0x70, 0x78, 0x00, 0x70, 0x70, 0x70, 0x00, 0x70, 0xE0, 0x38, 0x00, 0xE0, 0xE1, 0x3F, 0x00, 0xE0, 0xC1, 0x1F, 0x00, 0xC0, 0x81, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $ 30 | 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x78, 0x0E, 0x70, 0x00, 0x78, 0x0E, 0x7C, 0x00, 0x78, 0x0E, 0x3E, 0x00, 0xF8, 0x8F, 0x0F, 0x00, 0xF0, 0xE7, 0x03, 0x00, 0xE0, 0xFB, 0x0D, 0x00, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x1F, 0x3F, 0x00, 0xC0, 0x87, 0x73, 0x00, 0xF0, 0x83, 0x73, 0x00, 0xF0, 0x80, 0x73, 0x00, 0x20, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char % 31 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0xE0, 0xF3, 0x78, 0x00, 0xF0, 0x77, 0x70, 0x00, 0xF8, 0x3F, 0x70, 0x00, 0x38, 0x3C, 0x70, 0x00, 0x38, 0x7E, 0x70, 0x00, 0xF8, 0xEF, 0x38, 0x00, 0xF0, 0xC7, 0x3F, 0x00, 0xE0, 0x83, 0x1F, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char & 32 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' 33 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0xF0, 0x03, 0xFE, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0x1E, 0x00, 0xC0, 0x03, 0x0E, 0x00, 0x80, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( 34 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x03, 0x1E, 0x00, 0xC0, 0x03, 0x7C, 0x00, 0xF0, 0x01, 0xF0, 0x03, 0xFE, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) 35 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * 36 | 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 37 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , 38 | 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - 39 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . 40 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / 41 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0xE0, 0x03, 0x3E, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0x1F, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0xC0, 0xFF, 0x07, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0 42 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0x00, 0xC0, 0x03, 0x70, 0x00, 0xE0, 0x01, 0x70, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 43 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x78, 0x00, 0xC0, 0x01, 0x7E, 0x00, 0xE0, 0x81, 0x7F, 0x00, 0xE0, 0x80, 0x77, 0x00, 0x70, 0xC0, 0x71, 0x00, 0x70, 0xE0, 0x70, 0x00, 0x70, 0xE0, 0x70, 0x00, 0x70, 0x70, 0x70, 0x00, 0xF0, 0x38, 0x70, 0x00, 0xE0, 0x1F, 0x70, 0x00, 0xC0, 0x0F, 0x70, 0x00, 0x80, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2 44 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0xC0, 0x00, 0x3E, 0x00, 0xE0, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x70, 0x10, 0x70, 0x00, 0x70, 0x38, 0x70, 0x00, 0x70, 0x38, 0x70, 0x00, 0x70, 0x38, 0x70, 0x00, 0xF0, 0x7C, 0x38, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0xC0, 0xEF, 0x1F, 0x00, 0x80, 0x87, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3 45 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x07, 0x00, 0xC0, 0x07, 0x07, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4 46 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x3F, 0x1C, 0x00, 0xF0, 0x3F, 0x3C, 0x00, 0xF0, 0x1F, 0x78, 0x00, 0x70, 0x1E, 0x70, 0x00, 0x70, 0x0E, 0x70, 0x00, 0x70, 0x0E, 0x70, 0x00, 0x70, 0x0E, 0x70, 0x00, 0x70, 0x1E, 0x38, 0x00, 0x70, 0x3C, 0x3C, 0x00, 0x70, 0xFC, 0x1F, 0x00, 0x70, 0xF8, 0x0F, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 47 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x80, 0x3F, 0x3C, 0x00, 0xC0, 0x1F, 0x70, 0x00, 0xE0, 0x1C, 0x70, 0x00, 0xF0, 0x1C, 0x70, 0x00, 0x70, 0x1C, 0x70, 0x00, 0x30, 0x3C, 0x3C, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6 48 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x70, 0x00, 0x78, 0x00, 0x70, 0x00, 0x7E, 0x00, 0x70, 0x80, 0x1F, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x70, 0xF8, 0x01, 0x00, 0x70, 0x7E, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7 49 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x80, 0xC7, 0x1F, 0x00, 0xC0, 0xEF, 0x3F, 0x00, 0xE0, 0xFF, 0x38, 0x00, 0x70, 0x7C, 0x70, 0x00, 0x70, 0x38, 0x70, 0x00, 0x30, 0x38, 0x70, 0x00, 0x70, 0x38, 0x70, 0x00, 0x70, 0x7C, 0x70, 0x00, 0xE0, 0x7F, 0x38, 0x00, 0xE0, 0xEF, 0x3F, 0x00, 0x80, 0xC7, 0x1F, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8 50 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xE0, 0xE1, 0x61, 0x00, 0x70, 0xC0, 0x71, 0x00, 0x70, 0xC0, 0x79, 0x00, 0x70, 0xC0, 0x39, 0x00, 0x70, 0xC0, 0x1F, 0x00, 0xE0, 0xE1, 0x0F, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9 51 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : 52 | 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x1C, 0xF0, 0x03, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; 53 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x38, 0x1C, 0x00, 0x00, 0x38, 0x3C, 0x00, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x1E, 0x70, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char < 54 | 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char = 55 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x1E, 0x70, 0x00, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x38, 0x3C, 0x00, 0x00, 0x78, 0x1C, 0x00, 0x00, 0x70, 0x0E, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > 56 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x78, 0x00, 0x77, 0x00, 0x38, 0x80, 0x07, 0x00, 0x38, 0xC0, 0x03, 0x00, 0x38, 0xE0, 0x01, 0x00, 0x78, 0xF0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ? 57 | 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x80, 0xC7, 0xF3, 0x00, 0xC0, 0xF3, 0xE7, 0x01, 0xC0, 0xF1, 0xCF, 0x01, 0xE0, 0x39, 0xCE, 0x03, 0xE0, 0x18, 0x8E, 0x03, 0xE0, 0x18, 0x8F, 0x03, 0xE0, 0x98, 0x87, 0x03, 0xE0, 0xF8, 0x87, 0x03, 0xE0, 0xF0, 0x8F, 0x03, 0xE0, 0x01, 0x9C, 0x03, 0xC0, 0x01, 0x9C, 0x03, 0xC0, 0x03, 0x9C, 0x01, 0x80, 0x0F, 0x1E, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char @ 58 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xFF, 0x01, 0x00, 0xC0, 0xDF, 0x01, 0x00, 0xF8, 0xC7, 0x01, 0x00, 0xF8, 0xC1, 0x01, 0x00, 0xF8, 0xEF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A 59 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x38, 0x00, 0x70, 0x3C, 0x38, 0x00, 0xF0, 0x7F, 0x38, 0x00, 0xE0, 0x7F, 0x1C, 0x00, 0xC0, 0xF7, 0x1F, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B 60 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0xC0, 0x07, 0x1E, 0x00, 0xE0, 0x01, 0x3C, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xF0, 0x01, 0x1E, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C 61 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x70, 0x00, 0xE0, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0xE0, 0x00, 0x70, 0x00, 0xE0, 0x01, 0x78, 0x00, 0xC0, 0x07, 0x3E, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D 62 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E 63 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F 64 | 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0xE0, 0x07, 0x1F, 0x00, 0xE0, 0x01, 0x3C, 0x00, 0x70, 0x00, 0x38, 0x00, 0x78, 0x00, 0x78, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x80, 0x70, 0x00, 0x38, 0xC0, 0x71, 0x00, 0x38, 0xC0, 0x79, 0x00, 0x70, 0xC0, 0x39, 0x00, 0xF0, 0xC0, 0x3C, 0x00, 0xE0, 0xC3, 0x1F, 0x00, 0xC0, 0xC3, 0x0F, 0x00, 0x80, 0xC3, 0x03, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G 65 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H 66 | 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I 67 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J 68 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xDE, 0x01, 0x00, 0x00, 0xCF, 0x03, 0x00, 0x80, 0x87, 0x07, 0x00, 0xC0, 0x03, 0x0F, 0x00, 0xE0, 0x01, 0x0E, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K 69 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L 70 | 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x80, 0xFF, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF0, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M 71 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N 72 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0xE0, 0x03, 0x3E, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x78, 0x00, 0x78, 0x00, 0x38, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0xF0, 0x83, 0x1F, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O 73 | 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0xC0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x78, 0xE0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P 74 | 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0xC0, 0x07, 0x1F, 0x00, 0xE0, 0x01, 0x3C, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x77, 0x00, 0x38, 0x00, 0x7F, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x70, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0xE0, 0x83, 0x3F, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x80, 0xFF, 0xE3, 0x00, 0x00, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q 75 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x38, 0xF0, 0x01, 0x00, 0x70, 0xF0, 0x03, 0x00, 0x70, 0xF8, 0x07, 0x00, 0xF0, 0xB8, 0x0F, 0x00, 0xE0, 0x3F, 0x3F, 0x00, 0xC0, 0x1F, 0x7C, 0x00, 0x80, 0x07, 0x78, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R 76 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0xC0, 0x03, 0x1F, 0x00, 0xE0, 0x0F, 0x3E, 0x00, 0xF0, 0x0F, 0x38, 0x00, 0x78, 0x1C, 0x78, 0x00, 0x38, 0x1C, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x38, 0x70, 0x00, 0x38, 0x70, 0x78, 0x00, 0x78, 0xF0, 0x38, 0x00, 0xF0, 0xE1, 0x3F, 0x00, 0xF0, 0xC1, 0x1F, 0x00, 0xC0, 0x81, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S 77 | 0x0F, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T 78 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3E, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U 79 | 0x0F, 0x10, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V 80 | 0x19, 0x10, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0xFE, 0x03, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF8, 0x03, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, // Code for char W 81 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x70, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0xE0, 0x01, 0x1F, 0x00, 0xC0, 0x87, 0x07, 0x00, 0x80, 0xCF, 0x03, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00, 0xCF, 0x03, 0x00, 0xC0, 0x87, 0x0F, 0x00, 0xE0, 0x03, 0x1F, 0x00, 0xF0, 0x01, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X 82 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xC0, 0x0F, 0x20, 0x00, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7E, 0x7C, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y 83 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x38, 0x00, 0x78, 0x00, 0x38, 0x00, 0x7C, 0x00, 0x38, 0x00, 0x7E, 0x00, 0x38, 0x00, 0x7F, 0x00, 0x38, 0xC0, 0x77, 0x00, 0x38, 0xE0, 0x71, 0x00, 0x38, 0xF0, 0x70, 0x00, 0x38, 0x78, 0x70, 0x00, 0x38, 0x3E, 0x70, 0x00, 0x38, 0x0F, 0x70, 0x00, 0xB8, 0x07, 0x70, 0x00, 0xF8, 0x03, 0x70, 0x00, 0xF8, 0x01, 0x70, 0x00, 0x78, 0x00, 0x70, 0x00, 0x38, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z 84 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x80, 0x03, 0x07, 0x00, 0x80, 0x03, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ 85 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash 86 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x80, 0x03, 0x07, 0x00, 0x80, 0x03, 0x07, 0x00, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] 87 | 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^ 88 | 0x0F, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _ 89 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` 90 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a 91 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x1C, 0x70, 0x00, 0x00, 0x1E, 0x70, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x1E, 0x7C, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b 92 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x0F, 0x70, 0x00, 0x00, 0x1E, 0x38, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c 93 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x1F, 0x70, 0x00, 0x00, 0x0F, 0x70, 0x00, 0x00, 0x0F, 0x70, 0x00, 0x00, 0x0F, 0x70, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d 94 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xBE, 0x3F, 0x00, 0x00, 0x8E, 0x3B, 0x00, 0x00, 0xC7, 0x71, 0x00, 0x00, 0xC7, 0x71, 0x00, 0x00, 0xE7, 0x70, 0x00, 0x00, 0x67, 0x70, 0x00, 0x00, 0x7F, 0x78, 0x00, 0x00, 0x3E, 0x38, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e 95 | 0x0B, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x78, 0x07, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f 96 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF8, 0x1F, 0x06, 0x00, 0xFC, 0x3F, 0x0E, 0x00, 0x3E, 0x3C, 0x0E, 0x00, 0x0E, 0x70, 0x0E, 0x00, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x70, 0x0E, 0x00, 0x06, 0x38, 0x07, 0x00, 0xFF, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g 97 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h 98 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFE, 0x7F, 0x00, 0x78, 0xFE, 0x7F, 0x00, 0x70, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i 99 | 0x08, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x38, 0xFF, 0xFF, 0x0F, 0x38, 0xFF, 0xFF, 0x07, 0x38, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j 100 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0x3C, 0x0F, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x0F, 0x7C, 0x00, 0x00, 0x07, 0x78, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k 101 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l 102 | 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char m 103 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n 104 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x1E, 0x3E, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o 105 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0x0E, 0x78, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x07, 0x78, 0x00, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0xFE, 0x3F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p 106 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x1C, 0x78, 0x00, 0x00, 0x1E, 0x70, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x00, 0x0E, 0x38, 0x04, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q 107 | 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r 108 | 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x7E, 0x3C, 0x00, 0x00, 0x7F, 0x78, 0x00, 0x00, 0xE7, 0x70, 0x00, 0x00, 0xC7, 0x70, 0x00, 0x00, 0xC7, 0x71, 0x00, 0x00, 0xC7, 0x79, 0x00, 0x00, 0x9F, 0x3F, 0x00, 0x00, 0x9E, 0x3F, 0x00, 0x00, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s 109 | 0x0B, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0xF0, 0xFF, 0x7F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t 110 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u 111 | 0x0D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x80, 0x7F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xFC, 0x03, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v 112 | 0x11, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w 113 | 0x0F, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, 0x07, 0x78, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0xFC, 0x0F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, 0x3C, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x 114 | 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xF8, 0x83, 0x0F, 0x00, 0xE0, 0xEF, 0x0F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y 115 | 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x07, 0x78, 0x00, 0x00, 0x07, 0x7C, 0x00, 0x00, 0x07, 0x7E, 0x00, 0x00, 0x87, 0x7F, 0x00, 0x00, 0xC7, 0x73, 0x00, 0x00, 0xE7, 0x71, 0x00, 0x00, 0xF7, 0x70, 0x00, 0x00, 0x7F, 0x70, 0x00, 0x00, 0x1F, 0x70, 0x00, 0x00, 0x0F, 0x70, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z 116 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0xFC, 0xFF, 0xFF, 0x01, 0xFE, 0xCF, 0xFF, 0x03, 0x0E, 0x00, 0x80, 0x03, 0x07, 0x00, 0x80, 0x03, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { 117 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | 118 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x03, 0x0E, 0x00, 0x80, 0x03, 0xFE, 0x8F, 0xFF, 0x03, 0xFC, 0xFF, 0xFF, 0x01, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } 119 | 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~ 120 | 0x09, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0x02, 0x00, 0xC0, 0x00, 0x02, 0x00, 0xC0, 0x00, 0x02, 0x00, 0xC0, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char  121 | }; 122 | 123 | struct FontDef Font_Comic_Neue_25x28 = { 124 | Comic_Neue25x28_Data, 125 | 25, 126 | 4, 127 | ' ', 128 | '\x7F' 129 | }; 130 | 131 | #endif 132 | -------------------------------------------------------------------------------- /components/tarablessd1306/fonts/font_Liberation_Sans_15x16.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include "config.h" 10 | #include "font.h" 11 | 12 | #ifdef CONFIG_FONT_LIBERATION_SANS_15x16 13 | //WARNING: This Font Require X-GLCD Lib. 14 | // You can not use it with MikroE GLCD Lib. 15 | 16 | //Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 17 | //MikroElektronika 2011 18 | //http://www.mikroe.com 19 | 20 | //GLCD FontName : Liberation_Sans15x16 21 | //GLCD FontSize : 15 x 16 22 | 23 | static const uint8_t Liberation_Sans15x16_Data[ ] = { 24 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 25 | 0x03, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! 26 | 0x05, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " 27 | 0x09, 0x10, 0x02, 0x10, 0x1E, 0xF0, 0x03, 0x1E, 0x02, 0x10, 0x02, 0x10, 0x1E, 0xF8, 0x03, 0x16, 0x02, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char # 28 | 0x09, 0x00, 0x08, 0x3C, 0x18, 0x66, 0x10, 0x42, 0x10, 0xFF, 0x3F, 0xC2, 0x10, 0x82, 0x10, 0x84, 0x0F, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $ 29 | 0x0D, 0x00, 0x00, 0x7E, 0x00, 0x42, 0x00, 0x42, 0x10, 0x7E, 0x0C, 0x00, 0x06, 0x80, 0x01, 0x60, 0x00, 0x38, 0x00, 0x8C, 0x1F, 0x82, 0x10, 0x80, 0x10, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, // Code for char % 30 | 0x0B, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x19, 0xF8, 0x10, 0xC4, 0x11, 0x44, 0x13, 0x64, 0x0E, 0x38, 0x0C, 0x00, 0x1B, 0x80, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char & 31 | 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' 32 | 0x05, 0x00, 0x00, 0xE0, 0x0F, 0x3C, 0x78, 0x06, 0xC0, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( 33 | 0x04, 0x02, 0x80, 0x06, 0xC0, 0x3C, 0x78, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) 34 | 0x06, 0x08, 0x00, 0x48, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x48, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * 35 | 0x08, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xF0, 0x07, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 36 | 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , 37 | 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - 38 | 0x03, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . 39 | 0x04, 0x00, 0x18, 0x80, 0x07, 0x78, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / 40 | 0x08, 0x00, 0x00, 0xF8, 0x07, 0x04, 0x0C, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x04, 0x0C, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0 41 | 0x08, 0x00, 0x00, 0x00, 0x10, 0x04, 0x10, 0x06, 0x10, 0xFE, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 42 | 0x08, 0x00, 0x00, 0x0C, 0x18, 0x06, 0x1C, 0x02, 0x12, 0x02, 0x11, 0x82, 0x10, 0xEE, 0x10, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2 43 | 0x08, 0x00, 0x00, 0x0C, 0x0C, 0x06, 0x18, 0x42, 0x10, 0x42, 0x10, 0x62, 0x10, 0xF6, 0x18, 0x9C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3 44 | 0x09, 0x00, 0x02, 0x80, 0x03, 0xC0, 0x02, 0x30, 0x02, 0x1C, 0x02, 0x06, 0x02, 0xFE, 0x1F, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4 45 | 0x08, 0x00, 0x00, 0x7E, 0x08, 0x4E, 0x18, 0x22, 0x10, 0x22, 0x10, 0x22, 0x10, 0x62, 0x08, 0xC2, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 46 | 0x08, 0x00, 0x00, 0xF8, 0x07, 0xCC, 0x0C, 0x22, 0x10, 0x22, 0x10, 0x22, 0x10, 0x66, 0x18, 0xC4, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6 47 | 0x08, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x1E, 0xC2, 0x07, 0x72, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7 48 | 0x08, 0x00, 0x00, 0xBC, 0x0F, 0xA6, 0x18, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0xA6, 0x18, 0xBC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8 49 | 0x08, 0x00, 0x00, 0xFC, 0x08, 0x86, 0x19, 0x02, 0x11, 0x02, 0x11, 0x02, 0x11, 0x8C, 0x0C, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9 50 | 0x03, 0x00, 0x00, 0x30, 0x18, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : 51 | 0x03, 0x00, 0x00, 0x30, 0x18, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; 52 | 0x08, 0x00, 0x00, 0xC0, 0x01, 0x40, 0x01, 0x40, 0x01, 0x60, 0x03, 0x20, 0x02, 0x20, 0x02, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char < 53 | 0x08, 0x00, 0x00, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char = 54 | 0x08, 0x00, 0x00, 0x10, 0x04, 0x20, 0x02, 0x20, 0x02, 0x60, 0x03, 0x40, 0x01, 0x40, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > 55 | 0x08, 0x00, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x02, 0x18, 0x02, 0x1B, 0x82, 0x00, 0xC6, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ? 56 | 0x0F, 0x00, 0x00, 0x80, 0x07, 0x70, 0x1C, 0x18, 0x30, 0x84, 0x27, 0xE4, 0x4C, 0x32, 0x48, 0x12, 0x48, 0x12, 0x44, 0x32, 0x42, 0xE2, 0x2F, 0x34, 0x28, 0x0C, 0x0C, 0x38, 0x07, 0xE0, 0x00, // Code for char @ 57 | 0x0B, 0x00, 0x10, 0x00, 0x1E, 0x80, 0x03, 0xF0, 0x01, 0x1E, 0x01, 0x02, 0x01, 0x1E, 0x01, 0xF0, 0x01, 0x80, 0x03, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A 58 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x66, 0x10, 0xBC, 0x0C, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B 59 | 0x0B, 0x00, 0x00, 0xF0, 0x03, 0x1C, 0x0F, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x04, 0x08, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C 60 | 0x0B, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x18, 0x04, 0x08, 0x1C, 0x0E, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D 61 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x42, 0x10, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E 62 | 0x09, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F 63 | 0x0B, 0x00, 0x00, 0xF0, 0x03, 0x1C, 0x0E, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x82, 0x10, 0x82, 0x10, 0x86, 0x18, 0x8C, 0x0F, 0x88, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G 64 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H 65 | 0x02, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I 66 | 0x07, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x10, 0x02, 0x10, 0x02, 0x10, 0xFE, 0x0F, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J 67 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0xC0, 0x00, 0x60, 0x00, 0xF0, 0x01, 0x18, 0x03, 0x0C, 0x06, 0x06, 0x0C, 0x02, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K 68 | 0x08, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L 69 | 0x0C, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x3C, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x18, 0x00, 0x0F, 0xE0, 0x01, 0x3C, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M 70 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x1C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x0C, 0xFE, 0x1F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N 71 | 0x0B, 0x00, 0x00, 0xF8, 0x03, 0x1C, 0x0E, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x04, 0x08, 0x1C, 0x0E, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O 72 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x6C, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P 73 | 0x0B, 0x00, 0x00, 0xF8, 0x03, 0x1C, 0x0E, 0x04, 0x08, 0x02, 0x10, 0x02, 0x10, 0x02, 0x70, 0x02, 0xD0, 0x04, 0x88, 0x1C, 0x8E, 0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q 74 | 0x0A, 0x00, 0x00, 0xFE, 0x1F, 0xFE, 0x1F, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x01, 0x82, 0x07, 0x7C, 0x1C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R 75 | 0x0A, 0x00, 0x00, 0x18, 0x0C, 0x3C, 0x08, 0x66, 0x10, 0x42, 0x10, 0x42, 0x10, 0xC2, 0x10, 0x82, 0x10, 0x8C, 0x09, 0x0C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S 76 | 0x09, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFE, 0x1F, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T 77 | 0x0A, 0x00, 0x00, 0xFE, 0x03, 0xFE, 0x0F, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0xFE, 0x0F, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U 78 | 0x0B, 0x02, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x10, 0x00, 0x0E, 0xC0, 0x03, 0x78, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V 79 | 0x0F, 0x06, 0x00, 0x3E, 0x00, 0xF0, 0x03, 0x00, 0x1F, 0x00, 0x1C, 0xC0, 0x07, 0x7C, 0x00, 0x06, 0x00, 0x7C, 0x00, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x1E, 0xE0, 0x03, 0x3E, 0x00, 0x06, 0x00, // Code for char W 80 | 0x0A, 0x00, 0x00, 0x02, 0x18, 0x0E, 0x0C, 0x18, 0x07, 0xB0, 0x01, 0xC0, 0x00, 0xF0, 0x01, 0x18, 0x07, 0x0E, 0x0C, 0x02, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X 81 | 0x08, 0x00, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x1F, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y 82 | 0x09, 0x00, 0x10, 0x02, 0x1C, 0x02, 0x16, 0x82, 0x13, 0xE2, 0x10, 0x32, 0x10, 0x1E, 0x10, 0x06, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z 83 | 0x04, 0x00, 0x00, 0xFE, 0xFF, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ 84 | 0x04, 0x06, 0x00, 0x78, 0x00, 0x80, 0x07, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash 85 | 0x03, 0x02, 0x80, 0x02, 0x80, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] 86 | 0x07, 0x40, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^ 87 | 0x09, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _ 88 | 0x04, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` 89 | 0x09, 0x00, 0x00, 0x20, 0x0E, 0x30, 0x13, 0x10, 0x11, 0x10, 0x11, 0x10, 0x09, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a 90 | 0x08, 0x00, 0x00, 0xFE, 0x1F, 0xEE, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b 91 | 0x07, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c 92 | 0x08, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFE, 0x0F, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d 93 | 0x08, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x19, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x30, 0x19, 0xE0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e 94 | 0x04, 0x10, 0x00, 0xFC, 0x1F, 0xFE, 0x1F, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f 95 | 0x08, 0x00, 0x00, 0xE0, 0x4F, 0x30, 0xD8, 0x10, 0x90, 0x10, 0x90, 0x30, 0x88, 0xC0, 0x7F, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g 96 | 0x07, 0x00, 0x00, 0xFE, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h 97 | 0x03, 0x00, 0x00, 0xF2, 0x1F, 0xF2, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i 98 | 0x02, 0x00, 0x80, 0xF2, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j 99 | 0x08, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x03, 0x60, 0x0E, 0x30, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k 100 | 0x02, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l 101 | 0x0C, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xE0, 0x1F, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char m 102 | 0x07, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x10, 0x00, 0x30, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n 103 | 0x08, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o 104 | 0x08, 0x00, 0x00, 0xF0, 0xFF, 0xE0, 0xEF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x18, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p 105 | 0x08, 0x00, 0x00, 0xE0, 0x0F, 0x30, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xE0, 0xEF, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q 106 | 0x05, 0x00, 0x00, 0xF0, 0x1F, 0x60, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r 107 | 0x07, 0x00, 0x00, 0xE0, 0x08, 0x90, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x13, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s 108 | 0x04, 0x10, 0x00, 0xFC, 0x1F, 0xFC, 0x1F, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t 109 | 0x07, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u 110 | 0x07, 0x30, 0x00, 0xF0, 0x01, 0x00, 0x1F, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v 111 | 0x0B, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1E, 0x00, 0x1E, 0xE0, 0x03, 0x10, 0x00, 0xE0, 0x03, 0x00, 0x1C, 0x00, 0x1E, 0xE0, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w 112 | 0x07, 0x00, 0x10, 0x30, 0x18, 0xE0, 0x06, 0x80, 0x01, 0xE0, 0x06, 0x30, 0x18, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x 113 | 0x07, 0x10, 0x80, 0xF0, 0x81, 0x80, 0xCF, 0x00, 0x78, 0x00, 0x0F, 0xF0, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y 114 | 0x06, 0x00, 0x00, 0x10, 0x1C, 0x10, 0x16, 0x90, 0x13, 0xF0, 0x10, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z 115 | 0x05, 0x00, 0x01, 0x80, 0x03, 0xFE, 0xFE, 0x02, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { 116 | 0x02, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | 117 | 0x05, 0x02, 0x80, 0x02, 0x80, 0xFE, 0xFE, 0x80, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } 118 | 0x08, 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~ 119 | 0x03, 0xFC, 0x0F, 0x04, 0x08, 0xFC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char  120 | }; 121 | 122 | struct FontDef Font_Liberation_Sans_15x16 = { 123 | Liberation_Sans15x16_Data, 124 | 15, 125 | 2, 126 | ' ', 127 | '\x7F' 128 | }; 129 | 130 | #endif 131 | -------------------------------------------------------------------------------- /components/tarablessd1306/fonts/font_Liberation_Serif_19x19.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include "config.h" 10 | #include "font.h" 11 | 12 | #ifdef CONFIG_FONT_LIBERATION_SERIF_19x19 13 | 14 | //WARNING: This Font Require X-GLCD Lib. 15 | // You can not use it with MikroE GLCD Lib. 16 | 17 | //Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 18 | //MikroElektronika 2011 19 | //http://www.mikroe.com 20 | 21 | //GLCD FontName : Liberation_Serif19x19 22 | //GLCD FontSize : 19 x 19 23 | 24 | static const uint8_t Liberation_Serif19x19_Data[ ] = { 25 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 26 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x60, 0x00, 0xFE, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! 27 | 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " 28 | 0x0B, 0x00, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x7C, 0x00, 0xF0, 0x07, 0x00, 0x2E, 0x04, 0x00, 0x20, 0x04, 0x00, 0x20, 0x74, 0x00, 0xE0, 0x0F, 0x00, 0x7E, 0x04, 0x00, 0x22, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char # 29 | 0x0A, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x7C, 0x60, 0x00, 0xC6, 0x40, 0x00, 0xC2, 0x40, 0x00, 0xFF, 0xFF, 0x00, 0x82, 0x41, 0x00, 0x82, 0x61, 0x00, 0x06, 0x37, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $ 30 | 0x11, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x86, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x41, 0x00, 0x86, 0x31, 0x00, 0xFC, 0x08, 0x00, 0x30, 0x06, 0x00, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x60, 0x0C, 0x00, 0x10, 0x3F, 0x00, 0x8C, 0x61, 0x00, 0x86, 0x40, 0x00, 0x80, 0x40, 0x00, 0x80, 0x61, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char % 31 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x00, 0x7C, 0x61, 0x00, 0xE6, 0x40, 0x00, 0xC2, 0x41, 0x00, 0xC2, 0x43, 0x00, 0x42, 0x47, 0x00, 0x3E, 0x26, 0x00, 0x1C, 0x2C, 0x00, 0x80, 0x18, 0x00, 0x80, 0x3C, 0x00, 0x80, 0x67, 0x00, 0x80, 0x41, 0x00, 0x80, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char & 32 | 0x03, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' 33 | 0x06, 0x00, 0x00, 0x00, 0xE0, 0x3F, 0x00, 0xF8, 0xFF, 0x00, 0x0C, 0x80, 0x01, 0x02, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( 34 | 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x02, 0x00, 0x02, 0x0C, 0x80, 0x01, 0xF8, 0xFF, 0x00, 0xE0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) 35 | 0x09, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x30, 0x00, 0x00, 0xB6, 0x01, 0x00, 0xFE, 0x01, 0x00, 0x30, 0x00, 0x00, 0x48, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * 36 | 0x0B, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xF8, 0x0F, 0x00, 0xF8, 0x0F, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 37 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , 38 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - 39 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . 40 | 0x06, 0x00, 0x40, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / 41 | 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xFC, 0x3F, 0x00, 0x06, 0x60, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x60, 0x00, 0xFC, 0x3F, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0 42 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x08, 0x40, 0x00, 0x04, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 43 | 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x70, 0x00, 0x02, 0x68, 0x00, 0x02, 0x64, 0x00, 0x02, 0x62, 0x00, 0x02, 0x63, 0x00, 0xCE, 0x61, 0x00, 0xFC, 0x60, 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2 44 | 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x70, 0x00, 0x06, 0x40, 0x00, 0x02, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x6E, 0x61, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3 45 | 0x0A, 0x00, 0x08, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0B, 0x00, 0x80, 0x08, 0x00, 0x60, 0x08, 0x00, 0x10, 0x08, 0x00, 0x0C, 0x08, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4 46 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFE, 0x40, 0x00, 0x86, 0x40, 0x00, 0x86, 0x40, 0x00, 0x86, 0x40, 0x00, 0x86, 0x40, 0x00, 0x86, 0x61, 0x00, 0x06, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 47 | 0x0A, 0x00, 0x00, 0x00, 0xE0, 0x0F, 0x00, 0xF8, 0x3F, 0x00, 0x8C, 0x30, 0x00, 0x86, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x86, 0x3F, 0x00, 0x0E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6 48 | 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x60, 0x00, 0x06, 0x38, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x03, 0x00, 0xC6, 0x00, 0x00, 0x36, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7 49 | 0x0A, 0x00, 0x00, 0x00, 0x38, 0x1E, 0x00, 0x7C, 0x3F, 0x00, 0xC6, 0x61, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0xC6, 0x61, 0x00, 0x7C, 0x3F, 0x00, 0x38, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8 50 | 0x0A, 0x00, 0x00, 0x00, 0xF8, 0x70, 0x00, 0xFC, 0x40, 0x00, 0x06, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x61, 0x00, 0x06, 0x31, 0x00, 0xFC, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9 51 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : 52 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x60, 0x02, 0x60, 0x60, 0x01, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; 53 | 0x0B, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x40, 0x01, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char < 54 | 0x0B, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char = 55 | 0x0B, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x10, 0x04, 0x00, 0x10, 0x04, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x40, 0x01, 0x00, 0xC0, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > 56 | 0x09, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x60, 0x00, 0x02, 0x67, 0x00, 0x02, 0x01, 0x00, 0x86, 0x01, 0x00, 0xFC, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ? 57 | 0x12, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0xC0, 0xF7, 0x00, 0x70, 0x80, 0x01, 0x18, 0x00, 0x03, 0x08, 0x10, 0x02, 0x04, 0x7E, 0x04, 0x04, 0x41, 0x04, 0x82, 0x40, 0x04, 0x42, 0x20, 0x04, 0x42, 0x70, 0x04, 0xC2, 0x7F, 0x04, 0xC2, 0x41, 0x02, 0x02, 0x40, 0x02, 0x04, 0x20, 0x00, 0x0C, 0x10, 0x00, 0x38, 0x0E, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, // Code for char @ 58 | 0x0E, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x78, 0x00, 0x00, 0x4F, 0x00, 0xE0, 0x42, 0x00, 0x1C, 0x02, 0x00, 0x06, 0x02, 0x00, 0x3E, 0x02, 0x00, 0xF8, 0x43, 0x00, 0xC0, 0x4F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x70, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A 59 | 0x0D, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0xC6, 0x40, 0x00, 0x7C, 0x61, 0x00, 0x38, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B 60 | 0x0D, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0x1C, 0x38, 0x00, 0x04, 0x20, 0x00, 0x02, 0x60, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x60, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C 61 | 0x0E, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x40, 0x00, 0x04, 0x20, 0x00, 0x1C, 0x38, 0x00, 0xF8, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D 62 | 0x0C, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0xE2, 0x43, 0x00, 0x02, 0x40, 0x00, 0x0E, 0x40, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E 63 | 0x0B, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0xC2, 0x07, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F 64 | 0x0E, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0x1C, 0x38, 0x00, 0x04, 0x20, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x06, 0x7E, 0x00, 0x1C, 0x3E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G 65 | 0x0E, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x82, 0x40, 0x00, 0x82, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H 66 | 0x06, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I 67 | 0x08, 0x00, 0x70, 0x00, 0x00, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J 68 | 0x0F, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x82, 0x40, 0x00, 0xC0, 0x00, 0x00, 0xE0, 0x03, 0x00, 0x30, 0x07, 0x00, 0x1A, 0x0E, 0x00, 0x0E, 0x3C, 0x00, 0x06, 0x70, 0x00, 0x02, 0x60, 0x00, 0x02, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K 69 | 0x0B, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L 70 | 0x11, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0x06, 0x40, 0x00, 0x3E, 0x40, 0x00, 0xF8, 0x00, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0xC0, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0E, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M 71 | 0x0F, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0x06, 0x40, 0x00, 0x0E, 0x40, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x0F, 0x00, 0x02, 0x1C, 0x00, 0x02, 0x78, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N 72 | 0x0E, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xF8, 0x1F, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x20, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x06, 0x20, 0x00, 0x0C, 0x38, 0x00, 0xF8, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O 73 | 0x0B, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x02, 0x42, 0x00, 0x02, 0x02, 0x00, 0x06, 0x03, 0x00, 0xFC, 0x01, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P 74 | 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xF8, 0x1F, 0x00, 0x1C, 0x38, 0x00, 0x06, 0x60, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0xC0, 0x00, 0x06, 0xE0, 0x01, 0x0C, 0x38, 0x03, 0xF8, 0x1F, 0x03, 0xF0, 0x0F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q 75 | 0x0E, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x41, 0x00, 0x02, 0x41, 0x00, 0x02, 0x01, 0x00, 0x02, 0x03, 0x00, 0x82, 0x0F, 0x00, 0xCE, 0x1C, 0x00, 0xFC, 0x78, 0x00, 0x30, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R 76 | 0x0A, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x7C, 0x60, 0x00, 0xE6, 0x40, 0x00, 0xC2, 0x40, 0x00, 0xC2, 0x41, 0x00, 0x82, 0x41, 0x00, 0x82, 0x63, 0x00, 0x0E, 0x3F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S 77 | 0x0C, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x02, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T 78 | 0x0F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0xFE, 0x3F, 0x00, 0x02, 0x30, 0x00, 0x02, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x02, 0x20, 0x00, 0x02, 0x30, 0x00, 0xFE, 0x0F, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U 79 | 0x0F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0xFA, 0x00, 0x00, 0xC2, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0xC2, 0x01, 0x00, 0x32, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V 80 | 0x13, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x00, 0xFA, 0x01, 0x00, 0xC2, 0x0F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x78, 0x00, 0x02, 0x0E, 0x00, 0xC2, 0x01, 0x00, 0x3E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, // Code for char W 81 | 0x0E, 0x00, 0x40, 0x00, 0x02, 0x40, 0x00, 0x02, 0x60, 0x00, 0x0E, 0x50, 0x00, 0x1E, 0x4C, 0x00, 0x7A, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xC0, 0x03, 0x00, 0x30, 0x4F, 0x00, 0x1A, 0x5C, 0x00, 0x06, 0x78, 0x00, 0x02, 0x60, 0x00, 0x02, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X 82 | 0x0F, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3A, 0x40, 0x00, 0xF2, 0x40, 0x00, 0xC0, 0x41, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0xC0, 0x40, 0x00, 0x32, 0x40, 0x00, 0x1A, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y 83 | 0x0B, 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x02, 0x78, 0x00, 0x02, 0x5C, 0x00, 0x02, 0x4F, 0x00, 0xC2, 0x43, 0x00, 0xE2, 0x40, 0x00, 0x7A, 0x40, 0x00, 0x1E, 0x40, 0x00, 0x06, 0x40, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z 84 | 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ 85 | 0x06, 0x02, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash 86 | 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] 87 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^ 88 | 0x0B, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _ 89 | 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` 90 | 0x09, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x60, 0x66, 0x00, 0x20, 0x42, 0x00, 0x20, 0x42, 0x00, 0x20, 0x22, 0x00, 0xE0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a 91 | 0x09, 0x01, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0xFF, 0x7F, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x60, 0x60, 0x00, 0xC0, 0x3F, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b 92 | 0x08, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0x60, 0x60, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c 93 | 0x0A, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0xC0, 0x7F, 0x00, 0x60, 0x60, 0x00, 0x20, 0x40, 0x00, 0x21, 0x40, 0x00, 0x21, 0x40, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d 94 | 0x08, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0x20, 0x62, 0x00, 0x20, 0x42, 0x00, 0x20, 0x42, 0x00, 0xE0, 0x42, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e 95 | 0x07, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0xF8, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0x21, 0x40, 0x00, 0x21, 0x40, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f 96 | 0x0A, 0x00, 0x00, 0x00, 0x80, 0xB3, 0x03, 0xC0, 0xBF, 0x06, 0x20, 0x64, 0x04, 0x20, 0x64, 0x04, 0x20, 0x64, 0x04, 0x60, 0x66, 0x04, 0xE0, 0x63, 0x06, 0x10, 0xE0, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g 97 | 0x0A, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x7F, 0x00, 0x40, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h 98 | 0x06, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0xE6, 0x7F, 0x00, 0xE6, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i 99 | 0x04, 0x00, 0x00, 0x04, 0x20, 0x00, 0x04, 0xE6, 0xFF, 0x07, 0xE6, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j 100 | 0x0A, 0x01, 0x00, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x44, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x00, 0xA0, 0x5C, 0x00, 0x60, 0x70, 0x00, 0x20, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k 101 | 0x05, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l 102 | 0x10, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x40, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0xC0, 0x7F, 0x00, 0x40, 0x40, 0x00, 0x20, 0x00, 0x00, 0x20, 0x40, 0x00, 0x60, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char m 103 | 0x0A, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x40, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x00, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x80, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n 104 | 0x0A, 0x00, 0x00, 0x00, 0x80, 0x1F, 0x00, 0xC0, 0x3F, 0x00, 0x60, 0x60, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x60, 0x60, 0x00, 0xC0, 0x3F, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o 105 | 0x09, 0x20, 0x00, 0x04, 0xE0, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0x20, 0x40, 0x04, 0x20, 0x40, 0x04, 0x20, 0x40, 0x00, 0x60, 0x60, 0x00, 0xC0, 0x3F, 0x00, 0x80, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p 106 | 0x0A, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0xC0, 0x7F, 0x00, 0x60, 0x60, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x04, 0xE0, 0xFF, 0x07, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q 107 | 0x07, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0xE0, 0x7F, 0x00, 0x40, 0x40, 0x00, 0x40, 0x40, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r 108 | 0x07, 0x00, 0x00, 0x00, 0xC0, 0x63, 0x00, 0x60, 0x43, 0x00, 0x20, 0x46, 0x00, 0x20, 0x46, 0x00, 0x20, 0x6C, 0x00, 0x60, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s 109 | 0x06, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t 110 | 0x0B, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x40, 0x00, 0x20, 0x20, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u 111 | 0x0A, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x03, 0x00, 0xA0, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x20, 0x0C, 0x00, 0xA0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v 112 | 0x0F, 0x20, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x03, 0x00, 0xA0, 0x0F, 0x00, 0x20, 0x7C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0xC0, 0x01, 0x00, 0xC0, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x70, 0x00, 0x20, 0x1C, 0x00, 0xA0, 0x03, 0x00, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w 113 | 0x0A, 0x20, 0x40, 0x00, 0x20, 0x40, 0x00, 0x60, 0x70, 0x00, 0xE0, 0x09, 0x00, 0x20, 0x07, 0x00, 0x00, 0x0F, 0x00, 0xA0, 0x78, 0x00, 0x60, 0x70, 0x00, 0x20, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x 114 | 0x09, 0x20, 0x00, 0x06, 0x60, 0x00, 0x04, 0xE0, 0x03, 0x04, 0x20, 0x1F, 0x02, 0x20, 0xF8, 0x01, 0x20, 0x38, 0x00, 0x20, 0x07, 0x00, 0xE0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y 115 | 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x78, 0x00, 0x20, 0x5E, 0x00, 0x20, 0x47, 0x00, 0xE0, 0x41, 0x00, 0xE0, 0x40, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z 116 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x03, 0x00, 0xFE, 0xFE, 0x01, 0x7F, 0xFC, 0x03, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { 117 | 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | 118 | 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x7F, 0xFC, 0x03, 0xFE, 0xFE, 0x01, 0x80, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } 119 | 0x0A, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~ 120 | 0x04, 0xFC, 0x3F, 0x00, 0x04, 0x20, 0x00, 0x04, 0x20, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char  121 | }; 122 | 123 | struct FontDef Font_Liberation_Serif_19x19 = { 124 | Liberation_Serif19x19_Data, 125 | 19, 126 | 3, 127 | ' ', 128 | '\x7F' 129 | }; 130 | 131 | #endif 132 | -------------------------------------------------------------------------------- /components/tarablessd1306/fonts/font_Ubuntu_Mono_6x10.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include "config.h" 10 | #include "font.h" 11 | 12 | #ifdef CONFIG_FONT_UBUNTU_MONO_6x10 13 | 14 | //WARNING: This Font Require X-GLCD Lib. 15 | // You can not use it with MikroE GLCD Lib. 16 | 17 | //Font Generated by MikroElektronika GLCD Font Creator 1.2.0.0 18 | //MikroElektronika 2011 19 | //http://www.mikroe.com 20 | 21 | //GLCD FontName : Ubuntu_Mono6x10 22 | //GLCD FontSize : 6 x 10 23 | 24 | static const uint8_t Ubuntu_Mono6x10_Data[ ] = { 25 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 26 | 0x03, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! 27 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, // Code for char " 28 | 0x05, 0xE8, 0x00, 0x38, 0x00, 0xEE, 0x00, 0x38, 0x00, 0x2E, 0x00, 0x00, 0x00, // Code for char # 29 | 0x05, 0x00, 0x00, 0x8C, 0x00, 0x92, 0x00, 0x93, 0x01, 0x62, 0x00, 0x00, 0x00, // Code for char $ 30 | 0x05, 0x9E, 0x00, 0x72, 0x00, 0xFE, 0x00, 0x9C, 0x00, 0xF2, 0x00, 0x00, 0x00, // Code for char % 31 | 0x05, 0x60, 0x00, 0x9C, 0x00, 0x92, 0x00, 0x6C, 0x00, 0xB0, 0x00, 0x00, 0x00, // Code for char & 32 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' 33 | 0x04, 0x00, 0x00, 0xF8, 0x00, 0x04, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, // Code for char ( 34 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x04, 0x01, 0xF8, 0x00, 0x00, 0x00, // Code for char ) 35 | 0x06, 0x00, 0x00, 0x04, 0x00, 0x14, 0x00, 0x0E, 0x00, 0x14, 0x00, 0x04, 0x00, // Code for char * 36 | 0x06, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, // Code for char + 37 | 0x03, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , 38 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, // Code for char - 39 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . 40 | 0x05, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char / 41 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x92, 0x00, 0x92, 0x00, 0x7C, 0x00, 0x00, 0x00, // Code for char 0 42 | 0x05, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0xFE, 0x00, 0x80, 0x00, 0x00, 0x00, // Code for char 1 43 | 0x05, 0x00, 0x00, 0xC4, 0x00, 0xA2, 0x00, 0x92, 0x00, 0x8C, 0x00, 0x00, 0x00, // Code for char 2 44 | 0x05, 0x00, 0x00, 0x82, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6C, 0x00, 0x00, 0x00, // Code for char 3 45 | 0x05, 0x30, 0x00, 0x28, 0x00, 0x26, 0x00, 0xFE, 0x00, 0x20, 0x00, 0x00, 0x00, // Code for char 4 46 | 0x05, 0x00, 0x00, 0x9E, 0x00, 0x92, 0x00, 0x92, 0x00, 0x62, 0x00, 0x00, 0x00, // Code for char 5 47 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x94, 0x00, 0x92, 0x00, 0x62, 0x00, 0x00, 0x00, // Code for char 6 48 | 0x05, 0x00, 0x00, 0x02, 0x00, 0xE2, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x00, 0x00, // Code for char 7 49 | 0x05, 0x00, 0x00, 0x6C, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6C, 0x00, 0x00, 0x00, // Code for char 8 50 | 0x05, 0x00, 0x00, 0x8C, 0x00, 0x92, 0x00, 0x52, 0x00, 0x3C, 0x00, 0x00, 0x00, // Code for char 9 51 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : 52 | 0x03, 0x00, 0x00, 0x00, 0x02, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; 53 | 0x05, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x44, 0x00, 0x00, 0x00, // Code for char < 54 | 0x05, 0x00, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, 0x00, // Code for char = 55 | 0x05, 0x00, 0x00, 0x44, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, // Code for char > 56 | 0x05, 0x00, 0x00, 0x02, 0x00, 0xA2, 0x00, 0x12, 0x00, 0x0C, 0x00, 0x00, 0x00, // Code for char ? 57 | 0x05, 0xF8, 0x00, 0x04, 0x01, 0x62, 0x02, 0x92, 0x02, 0xFC, 0x00, 0x00, 0x00, // Code for char @ 58 | 0x05, 0xC0, 0x00, 0x3C, 0x00, 0x22, 0x00, 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, // Code for char A 59 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6C, 0x00, 0x00, 0x00, // Code for char B 60 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x00, 0x00, // Code for char C 61 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, // Code for char D 62 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, 0x00, 0x00, // Code for char E 63 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x00, 0x00, // Code for char F 64 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x82, 0x00, 0xE2, 0x00, 0x00, 0x00, // Code for char G 65 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFE, 0x00, 0x00, 0x00, // Code for char H 66 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0xFE, 0x00, 0x82, 0x00, 0x00, 0x00, // Code for char I 67 | 0x05, 0x00, 0x00, 0x40, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7E, 0x00, 0x00, 0x00, // Code for char J 68 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x10, 0x00, 0x6C, 0x00, 0x82, 0x00, 0x00, 0x00, // Code for char K 69 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, // Code for char L 70 | 0x05, 0xFE, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x00, // Code for char M 71 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x0C, 0x00, 0x70, 0x00, 0xFE, 0x00, 0x00, 0x00, // Code for char N 72 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, // Code for char O 73 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1C, 0x00, 0x00, 0x00, // Code for char P 74 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x01, 0x82, 0x02, 0x7C, 0x02, 0x00, 0x00, // Code for char Q 75 | 0x05, 0x00, 0x00, 0xFE, 0x00, 0x12, 0x00, 0x32, 0x00, 0xCC, 0x00, 0x00, 0x00, // Code for char R 76 | 0x05, 0x00, 0x00, 0x8C, 0x00, 0x92, 0x00, 0x92, 0x00, 0x62, 0x00, 0x00, 0x00, // Code for char S 77 | 0x06, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFE, 0x00, 0x02, 0x00, 0x02, 0x00, // Code for char T 78 | 0x05, 0x00, 0x00, 0x7E, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7E, 0x00, 0x00, 0x00, // Code for char U 79 | 0x05, 0x06, 0x00, 0x78, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x06, 0x00, 0x00, 0x00, // Code for char V 80 | 0x06, 0x7E, 0x00, 0x80, 0x00, 0x70, 0x00, 0x70, 0x00, 0x80, 0x00, 0x7E, 0x00, // Code for char W 81 | 0x05, 0x82, 0x00, 0x6C, 0x00, 0x10, 0x00, 0x6C, 0x00, 0x82, 0x00, 0x00, 0x00, // Code for char X 82 | 0x06, 0x00, 0x00, 0x02, 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x0C, 0x00, 0x02, 0x00, // Code for char Y 83 | 0x05, 0x00, 0x00, 0xC2, 0x00, 0xB2, 0x00, 0x8A, 0x00, 0x86, 0x00, 0x00, 0x00, // Code for char Z 84 | 0x05, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, // Code for char [ 85 | 0x05, 0x00, 0x00, 0x03, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0x03, 0x00, 0x00, // Code for char BackSlash 86 | 0x04, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, // Code for char ] 87 | 0x06, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x0C, 0x00, 0x10, 0x00, // Code for char ^ 88 | 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, // Code for char _ 89 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` 90 | 0x05, 0x00, 0x00, 0x60, 0x00, 0x94, 0x00, 0x94, 0x00, 0xF8, 0x00, 0x00, 0x00, // Code for char a 91 | 0x05, 0x00, 0x00, 0xFF, 0x00, 0x84, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, // Code for char b 92 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, // Code for char c 93 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0xFF, 0x00, 0x00, 0x00, // Code for char d 94 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x94, 0x00, 0x94, 0x00, 0x98, 0x00, 0x00, 0x00, // Code for char e 95 | 0x06, 0x00, 0x00, 0x04, 0x00, 0xFE, 0x00, 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, // Code for char f 96 | 0x05, 0x78, 0x02, 0x84, 0x02, 0x84, 0x02, 0x84, 0x02, 0xFC, 0x01, 0x00, 0x00, // Code for char g 97 | 0x05, 0x00, 0x00, 0xFF, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x00, 0x00, 0x00, // Code for char h 98 | 0x05, 0x00, 0x00, 0x04, 0x00, 0x7D, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, // Code for char i 99 | 0x05, 0x00, 0x02, 0x04, 0x02, 0x04, 0x02, 0x05, 0x02, 0xFC, 0x01, 0x00, 0x00, // Code for char j 100 | 0x05, 0x00, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x00, 0x00, // Code for char k 101 | 0x05, 0x00, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, // Code for char l 102 | 0x05, 0xFC, 0x00, 0x04, 0x00, 0x3C, 0x00, 0x04, 0x00, 0xF8, 0x00, 0x00, 0x00, // Code for char m 103 | 0x05, 0x00, 0x00, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x00, 0x00, 0x00, // Code for char n 104 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, // Code for char o 105 | 0x05, 0x00, 0x00, 0xFC, 0x03, 0x84, 0x00, 0x84, 0x00, 0x78, 0x00, 0x00, 0x00, // Code for char p 106 | 0x05, 0x00, 0x00, 0x78, 0x00, 0x84, 0x00, 0x84, 0x00, 0xFC, 0x03, 0x00, 0x00, // Code for char q 107 | 0x05, 0x00, 0x00, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, // Code for char r 108 | 0x05, 0x00, 0x00, 0x88, 0x00, 0x94, 0x00, 0xA4, 0x00, 0x44, 0x00, 0x00, 0x00, // Code for char s 109 | 0x05, 0x00, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x84, 0x00, 0x84, 0x00, 0x00, 0x00, // Code for char t 110 | 0x05, 0x00, 0x00, 0x7C, 0x00, 0x80, 0x00, 0x80, 0x00, 0xFC, 0x00, 0x00, 0x00, // Code for char u 111 | 0x05, 0x0C, 0x00, 0x70, 0x00, 0x80, 0x00, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, // Code for char v 112 | 0x05, 0x3C, 0x00, 0xE0, 0x00, 0x38, 0x00, 0xC0, 0x00, 0x3C, 0x00, 0x00, 0x00, // Code for char w 113 | 0x05, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00, 0x48, 0x00, 0x84, 0x00, 0x00, 0x00, // Code for char x 114 | 0x05, 0x00, 0x00, 0x1C, 0x02, 0x60, 0x02, 0xC0, 0x01, 0x3C, 0x00, 0x00, 0x00, // Code for char y 115 | 0x05, 0x00, 0x00, 0xC4, 0x00, 0xA4, 0x00, 0x94, 0x00, 0x8C, 0x00, 0x00, 0x00, // Code for char z 116 | 0x05, 0x00, 0x00, 0x10, 0x00, 0xEE, 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, // Code for char { 117 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, // Code for char | 118 | 0x05, 0x00, 0x00, 0x01, 0x02, 0x01, 0x02, 0xEE, 0x01, 0x10, 0x00, 0x00, 0x00, // Code for char } 119 | 0x05, 0x20, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, // Code for char ~ 120 | 0x03, 0xFF, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char  121 | }; 122 | 123 | struct FontDef Font_Ubuntu_Mono_6x10 = { 124 | Ubuntu_Mono6x10_Data, 125 | 6, 126 | 2, 127 | ' ', 128 | '\x7F' 129 | }; 130 | 131 | #endif 132 | -------------------------------------------------------------------------------- /components/tarablessd1306/iface_esp32_i2c.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "ssd1306.h" 15 | #include "iface_esp32_i2c.h" 16 | 17 | int ESP32_WriteCommand_I2C( struct SSD1306_Device* DeviceHandle, SSDCmd SSDCommand ) { 18 | i2c_cmd_handle_t CommandHandle = NULL; 19 | esp_err_t Result = ESP_FAIL; 20 | 21 | NullCheck( DeviceHandle, return 0 ); 22 | 23 | if ( ( CommandHandle = i2c_cmd_link_create( ) ) ) { 24 | i2c_master_start( CommandHandle ); 25 | i2c_master_write_byte( CommandHandle, ( DeviceHandle->Address << 1 ) | I2C_MASTER_WRITE, 1 ); 26 | i2c_master_write_byte( CommandHandle, 0x80, true ); 27 | i2c_master_write_byte( CommandHandle, ( uint8_t ) SSDCommand, true ); 28 | i2c_master_stop( CommandHandle ); 29 | 30 | Result = i2c_master_cmd_begin( USE_THIS_I2C_PORT, CommandHandle, 1000 / portTICK_PERIOD_MS ); 31 | i2c_cmd_link_delete( CommandHandle ); 32 | } 33 | 34 | return ( Result == ESP_OK ) ? 1 : 0; 35 | } 36 | 37 | int ESP32_WriteData_I2C( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ) { 38 | i2c_cmd_handle_t CommandHandle = NULL; 39 | esp_err_t Result = ESP_FAIL; 40 | 41 | NullCheck( DeviceHandle, return 0 ); 42 | NullCheck( Data, return 0 ); 43 | 44 | if ( ( CommandHandle = i2c_cmd_link_create( ) ) ) { 45 | i2c_master_start( CommandHandle ); 46 | i2c_master_write_byte( CommandHandle, ( DeviceHandle->Address << 1 ) | I2C_MASTER_WRITE, true ); 47 | i2c_master_write_byte( CommandHandle, 0x40, true ); 48 | i2c_master_write( CommandHandle, Data, DataLength, true ); 49 | i2c_master_stop( CommandHandle ); 50 | 51 | Result = i2c_master_cmd_begin( USE_THIS_I2C_PORT, CommandHandle, 1000 / portTICK_PERIOD_MS ); 52 | i2c_cmd_link_delete( CommandHandle ); 53 | } 54 | 55 | return ( Result == ESP_OK ) ? 1 : 0; 56 | } 57 | 58 | int ESP32_InitI2CMaster( int SDA, int SCL ) { 59 | i2c_config_t Config; 60 | 61 | memset( &Config, 0, sizeof( i2c_config_t ) ); 62 | 63 | Config.mode = I2C_MODE_MASTER; 64 | Config.sda_io_num = SDA; 65 | Config.sda_pullup_en = GPIO_PULLUP_ENABLE; 66 | Config.scl_io_num = SCL; 67 | Config.scl_pullup_en = GPIO_PULLUP_ENABLE; 68 | Config.master.clk_speed = 1000000; // 1MHz 69 | 70 | if ( i2c_param_config( USE_THIS_I2C_PORT, &Config ) == ESP_OK ) { 71 | return i2c_driver_install( USE_THIS_I2C_PORT, Config.mode, 0, 0, 0 ) == ESP_OK ? 1 : 0; 72 | } 73 | 74 | return 0; 75 | } 76 | -------------------------------------------------------------------------------- /components/tarablessd1306/iface_esp32_spi.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | 19 | #include "ssd1306.h" 20 | #include "iface_esp32_spi.h" 21 | 22 | #define TraceHere( ) printf( "%s: line %d\n", __FUNCTION__, __LINE__ ) 23 | #define MHZ( n ) ( n * 1000000 ) 24 | 25 | static const int MOSIPin = 23; 26 | static const int SCKPin = 18; 27 | static int DCPin = -1; 28 | 29 | int ESP32_WriteCommand_SPI( struct SSD1306_Device* DeviceHandle, SSDCmd SSDCommand ) { 30 | static uint8_t TempCommandByte = 0; 31 | spi_device_handle_t SPIDevice = NULL; 32 | spi_transaction_t SPITransaction; 33 | esp_err_t Result = ESP_OK; 34 | 35 | NullCheck( DeviceHandle, return 0 ); 36 | SPIDevice = ( spi_device_handle_t ) DeviceHandle->User0; 37 | NullCheck( SPIDevice, return 0 ); 38 | 39 | memset( &SPITransaction, 0, sizeof( spi_transaction_t ) ); 40 | 41 | TempCommandByte = ( uint8_t ) SSDCommand; 42 | 43 | SPITransaction.length = sizeof( uint8_t ) * 8; 44 | SPITransaction.tx_buffer = ( const void* ) &TempCommandByte; 45 | 46 | gpio_set_level( DCPin, 0 ); /* Command mode is DC low */ 47 | Result = spi_device_transmit( SPIDevice, &SPITransaction ); 48 | 49 | return ( Result == ESP_OK ) ? 1 : 0; 50 | } 51 | 52 | int ESP32_WriteData_SPI( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ) { 53 | spi_device_handle_t SPIDevice = NULL; 54 | spi_transaction_t SPITransaction; 55 | esp_err_t Result = ESP_OK; 56 | 57 | NullCheck( DeviceHandle, return 0 ); 58 | NullCheck( Data, return 0 ); 59 | SPIDevice = ( spi_device_handle_t ) DeviceHandle->User0; 60 | NullCheck( SPIDevice, return 0 ); 61 | 62 | memset( &SPITransaction, 0, sizeof( spi_transaction_t ) ); 63 | 64 | SPITransaction.length = DataLength * 8; 65 | SPITransaction.tx_buffer = Data; 66 | 67 | gpio_set_level( DCPin, 1 ); /* Data mode is DC high */ 68 | Result = spi_device_transmit( SPIDevice, &SPITransaction ); 69 | gpio_set_level( DCPin, 0 ); 70 | 71 | return ( Result == ESP_OK ) ? 1 : 0; 72 | } 73 | 74 | int ESP32_Reset_SPI( struct SSD1306_Device* DeviceHandle ) { 75 | NullCheck( DeviceHandle, return 0 ); 76 | 77 | if ( DeviceHandle->RSTPin > -1 && GPIO_IS_VALID_OUTPUT_GPIO( DeviceHandle->RSTPin ) ) { 78 | gpio_set_level( DeviceHandle->RSTPin, 0 ); 79 | vTaskDelay( pdMS_TO_TICKS( 100 ) ); 80 | gpio_set_level( DeviceHandle->RSTPin, 1 ); 81 | 82 | printf( "Done resetted\n" ); 83 | 84 | return 1; 85 | } 86 | 87 | return 0; 88 | } 89 | 90 | int ESP32_InitSPIMaster( int DC ) { 91 | spi_bus_config_t BusConfig; 92 | 93 | if ( GPIO_IS_VALID_OUTPUT_GPIO( DC ) ) { 94 | DCPin = DC; 95 | 96 | gpio_set_direction( DCPin, GPIO_MODE_OUTPUT ); 97 | gpio_set_level( DCPin, 0 ); 98 | 99 | memset( &BusConfig, 0, sizeof( spi_bus_config_t ) ); 100 | 101 | BusConfig.mosi_io_num = MOSIPin; 102 | BusConfig.sclk_io_num = SCKPin; 103 | BusConfig.quadhd_io_num = -1; 104 | BusConfig.quadwp_io_num = -1; 105 | BusConfig.miso_io_num = -1; 106 | 107 | return spi_bus_initialize( HSPI_HOST, &BusConfig, 1 ) == ESP_OK ? 1 : 0; 108 | } 109 | 110 | printf( "%s: DC Pin %d is not a valid output pin.\n", __FUNCTION__, DC ); 111 | return 0; 112 | } 113 | 114 | int ESP32_AddDevice_SPI( struct SSD1306_Device* DeviceHandle, int Width, int Height, int CSPin, int RSTPin ) { 115 | spi_device_interface_config_t SPIDevice; 116 | spi_device_handle_t SPIHandle; 117 | 118 | NullCheck( DeviceHandle, return 0 ); 119 | 120 | if ( GPIO_IS_VALID_OUTPUT_GPIO( CSPin ) == 0 ) { 121 | printf( "%s: CS Pin %d is not a valid output pin.\n", __FUNCTION__, CSPin ); 122 | return 0; 123 | } 124 | 125 | if ( RSTPin > 0 && ( GPIO_IS_VALID_OUTPUT_GPIO( RSTPin ) == 0 ) ) { 126 | printf( "%s: RST Pin %d is not a valid output pin.\n", __FUNCTION__, RSTPin ); 127 | return 0; 128 | } 129 | 130 | memset( &SPIDevice, 0, sizeof( spi_device_interface_config_t ) ); 131 | 132 | SPIDevice.clock_speed_hz = MHZ( 1 ); 133 | SPIDevice.mode = 0; 134 | SPIDevice.spics_io_num = CSPin; 135 | SPIDevice.queue_size = 100; 136 | 137 | /* Reset pin is optional */ 138 | if ( RSTPin > 0 ) { 139 | gpio_set_direction( RSTPin, GPIO_MODE_OUTPUT ); 140 | gpio_set_level( RSTPin, 0 ); /* Reset happens later and this will remain high */ 141 | } 142 | 143 | if ( spi_bus_add_device( HSPI_HOST, &SPIDevice, &SPIHandle ) == ESP_OK ) { 144 | printf( "Here: Device handle = 0x%08X\n", ( uint32_t ) SPIHandle ); 145 | return SSD1306_Init_SPI( DeviceHandle, Width, Height, RSTPin, CSPin, ( uint32_t ) SPIHandle, ESP32_WriteCommand_SPI, ESP32_WriteData_SPI, ESP32_Reset_SPI ); 146 | } 147 | 148 | return 0; 149 | } 150 | -------------------------------------------------------------------------------- /components/tarablessd1306/iface_virtual.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "ssd1306.h" 15 | 16 | #ifndef CONFIG_SSD1306_DYNAMIC_ALLOC 17 | #error "Virtual interface requires CONFIG_SSD1306_DYNAMIC_ALLOC" 18 | #endif 19 | 20 | static int Virt_WriteCommandStub( struct SSD1306_Device* DeviceHandle, SSDCmd Command ) { 21 | return 1; 22 | } 23 | 24 | static int Virt_WritedataStub( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ) { 25 | return 1; 26 | } 27 | 28 | int Virt_DeviceInit( struct SSD1306_Device* DeviceHandle, int Width, int Height ) { 29 | NullCheck( DeviceHandle, return 0 ); 30 | memset( DeviceHandle, 0, sizeof( struct SSD1306_Device ) ); 31 | 32 | DeviceHandle->Width = Width; 33 | DeviceHandle->Height = Height; 34 | DeviceHandle->FramebufferSize = ( Width * Height ) / 8; 35 | 36 | if ( ( DeviceHandle->Framebuffer = ( uint8_t* ) malloc( DeviceHandle->FramebufferSize ) ) != NULL ) { 37 | memset( DeviceHandle->Framebuffer, 0, DeviceHandle->FramebufferSize ); 38 | 39 | DeviceHandle->WriteCommand = Virt_WriteCommandStub; 40 | DeviceHandle->WriteData = Virt_WritedataStub; 41 | 42 | /* No actual SSD1306 device, so no init needed */ 43 | return 1; 44 | } 45 | 46 | return 0; 47 | } 48 | 49 | void Virt_DeviceBlit( struct SSD1306_Device* SrcDevice, struct SSD1306_Device* DstDevice, struct Rect SrcRect, struct Rect DstRect ) { 50 | int CopyWidth = 0; 51 | int CopyHeight = 0; 52 | int y = 0; 53 | 54 | NullCheck( SrcDevice, return ); 55 | NullCheck( SrcDevice->Framebuffer, return ); 56 | 57 | NullCheck( DstDevice, return ); 58 | NullCheck( DstDevice->Framebuffer, return ); 59 | 60 | CopyWidth = ( DstRect.Right - DstRect.Left ); 61 | CopyHeight = ( DstRect.Bottom - DstRect.Top ); 62 | 63 | CheckBounds( CopyWidth >= DstDevice->Width, return ); 64 | CheckBounds( CopyHeight >= DstDevice->Height, return ); 65 | 66 | CheckBounds( ( DstRect.Left < 0 ) || ( DstRect.Left >= DstDevice->Width ), return ); 67 | CheckBounds( ( DstRect.Right < 0 ) || ( DstRect.Right >= DstDevice->Width ), return ); 68 | CheckBounds( ( DstRect.Top < 0 ) || ( DstRect.Top >= DstDevice->Height ), return ); 69 | CheckBounds( ( DstRect.Bottom < 0 ) || ( DstRect.Bottom >= DstDevice->Height ), return ); 70 | CheckBounds( DstRect.Left >= DstRect.Right, return ); 71 | CheckBounds( DstRect.Top >= DstRect.Bottom, return ); 72 | 73 | CheckBounds( ( SrcRect.Left < 0 ) || ( SrcRect.Left >= SrcDevice->Width ), return ); 74 | CheckBounds( ( SrcRect.Right < 0 ) || ( SrcRect.Right >= SrcDevice->Width ), return ); 75 | CheckBounds( ( SrcRect.Top < 0 ) || ( SrcRect.Top >= SrcDevice->Height ), return ); 76 | CheckBounds( ( SrcRect.Bottom < 0 ) || ( SrcRect.Bottom >= SrcDevice->Height ), return ); 77 | CheckBounds( SrcRect.Left >= SrcRect.Right, return ); 78 | CheckBounds( SrcRect.Top >= SrcRect.Bottom, return ); 79 | 80 | for ( y = DstRect.Top; y < DstRect.Bottom; y+= 8 ) { 81 | memcpy( DstDevice->Framebuffer + ( DstDevice->Width * ( y / 8 ) ) + DstRect.Left, 82 | SrcDevice->Framebuffer + ( SrcDevice->Width * ( y / 8 ) ) + SrcRect.Left, 83 | CopyWidth 84 | ); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/config.h: -------------------------------------------------------------------------------- 1 | #ifndef _CONFIG_H_ 2 | #define _CONFIG_H_ 3 | 4 | //#define CONFIG_FONT_COMIC_NEUE_25x28 5 | //#define CONFIG_FONT_LIBERATION_SANS_15x16 6 | #define CONFIG_FONT_LIBERATION_SERIF_19x19 7 | #define CONFIG_FONT_UBUNTU_MONO_6x10 8 | 9 | #define CONFIG_SSD1306_DYNAMIC_ALLOC 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/font.h: -------------------------------------------------------------------------------- 1 | #ifndef _FONT_H_ 2 | #define _FONT_H_ 3 | 4 | #include 5 | 6 | struct FontDef { 7 | const uint8_t* Data; 8 | int Width; /* Width in bytes */ 9 | int Height; /* Height in bytes */ 10 | int StartChar; /* Which ascii # the font starts with (usually a space or !) */ 11 | int EndChar; /* Ending ascii # the font ends with */ 12 | }; 13 | 14 | typedef enum { 15 | TextAnchor_East = 0, 16 | TextAnchor_West, 17 | TextAnchor_North, 18 | TextAnchor_South, 19 | TextAnchor_NorthEast, 20 | TextAnchor_NorthWest, 21 | TextAnchor_SouthEast, 22 | TextAnchor_SouthWest, 23 | TextAnchor_Center 24 | } TextAnchor; 25 | 26 | extern struct FontDef Font_Ubuntu_Mono_6x10; 27 | extern struct FontDef Font_Liberation_Sans_15x16; 28 | extern struct FontDef Font_Liberation_Serif_19x19; 29 | extern struct FontDef Font_Comic_Neue_25x28; 30 | 31 | struct SSD1306_Device; 32 | 33 | int FontGetCharHeight( struct FontDef* FontHandle, char c ); 34 | int FontMeasureString( struct FontDef* FontHandle, const char* Text ); 35 | int FontGetCharWidth( struct FontDef* FontHandle, char c ); 36 | 37 | void FontDrawChar( struct SSD1306_Device* DeviceHandle, char c, int x, int y, bool Color ); 38 | void FontDrawString( struct SSD1306_Device* DeviceHandle, const char* Text, int x, int y, bool Color ); 39 | 40 | void FontDrawCharUnaligned( struct SSD1306_Device* DeviceHandle, char c, int x, int y, bool Color ); 41 | void FontDrawStringUnaligned( struct SSD1306_Device* DeviceHandle, const char* Text, int x, int y, bool Color ); 42 | void FontDrawAnchoredString( struct SSD1306_Device* DeviceHandle, const char* Text, TextAnchor Anchor , bool Color ); 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/iface_esp32_i2c.h: -------------------------------------------------------------------------------- 1 | #ifndef _IFACE_ESP32_I2C_H_ 2 | #define _IFACE_ESP32_I2C_H_ 3 | 4 | #define USE_THIS_I2C_PORT I2C_NUM_1 5 | 6 | int ESP32_WriteCommand_I2C( struct SSD1306_Device* DeviceHandle, SSDCmd SSDCommand ); 7 | int ESP32_WriteData_I2C( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ); 8 | int ESP32_InitI2CMaster( int SDA, int SCL ); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/iface_esp32_spi.h: -------------------------------------------------------------------------------- 1 | #ifndef _IFACE_ESP32_SPI_H_ 2 | #define _IFACE_ESP32_SPI_H_ 3 | 4 | int ESP32_WriteCommand_SPI( struct SSD1306_Device* DeviceHandle, SSDCmd SSDCommand ); 5 | int ESP32_WriteData_SPI( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ); 6 | void ESP32_SPI_ResetDisplay( void); 7 | int ESP32_InitSPIMaster( int DC ); 8 | int ESP32_AddDevice_SPI( struct SSD1306_Device* DeviceHandle, int Width, int Height, int CSPin, int RSTPin ); 9 | 10 | #endif 11 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/iface_virtual.h: -------------------------------------------------------------------------------- 1 | #ifndef _IFACE_VIRTUAL_H_ 2 | #define _IFACE_VIRTUAL_H_ 3 | 4 | int Virt_DeviceInit( struct SSD1306_Device* DeviceHandle, int Width, int Height ); 5 | void Virt_DeviceBlit( struct SSD1306_Device* SrcDevice, struct SSD1306_Device* DstDevice, struct Rect SrcRect, struct Rect DstRect ); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /components/tarablessd1306/include/ssd1306.h: -------------------------------------------------------------------------------- 1 | #ifndef _SSD1306_H_ 2 | #define _SSD1306_H_ 3 | 4 | /* For uint(X)_t */ 5 | #include 6 | 7 | /* For booooool */ 8 | #include 9 | 10 | #include "config.h" 11 | 12 | #define SSD1306_Max_Framebuffer_Size ( ( 128 * 64 ) / 8 ) 13 | #define SSD1306_Max_Col 127 14 | #define SSD1306_Max_Row 7 15 | 16 | #ifndef BIT 17 | #define BIT( n ) ( 1 << n ) 18 | #endif 19 | 20 | #define CheckBounds( expr, retexpr ) { \ 21 | if ( expr ) { \ 22 | printf( "[%s:%d] %s\n", __FUNCTION__, __LINE__, #expr ); \ 23 | retexpr; \ 24 | } \ 25 | } 26 | 27 | #define NullCheck( ptr, retexpr ) { \ 28 | if ( ptr == NULL ) { \ 29 | printf( "%s: %s == NULL\n", __FUNCTION__, #ptr ); \ 30 | retexpr; \ 31 | }; \ 32 | } 33 | 34 | typedef enum { 35 | SSDCmd_Set_Contrast = 0x81, 36 | SSDCmd_Set_Display_Show_RAM = 0xA4, 37 | SSDCmd_Set_Display_Ignore_RAM = 0xA5, 38 | SSDCmd_Set_Normal_Display = 0xA6, 39 | SSDCmd_Set_Inverted_Display = 0xA7, 40 | SSDCmd_Set_Display_Off = 0xAE, 41 | SSDCmd_Set_Display_On = 0xAF, 42 | SSDCmd_Set_Memory_Addressing_Mode = 0x20, 43 | SSDCmd_Set_Mux_Ratio = 0xA8, 44 | SSDCmd_Nop = 0xE3, 45 | SSDCmd_Set_Display_Offset = 0xD3, 46 | SSDCmd_Set_Display_Start_Line = 0x40, 47 | SSDCmd_Set_Display_HFlip_Off = 0xA0, 48 | SSDCmd_Set_Display_HFlip_On = 0xA1, 49 | SSDCmd_Set_Display_VFlip_Off = 0xC0, 50 | SSDCmd_Set_Display_VFlip_On = 0xC8, 51 | SSDCmd_Set_COM_Pin_Config = 0xDA, 52 | SSDCmd_Set_Display_CLK = 0xD5, 53 | SSDCmd_Enable_Charge_Pump_Regulator = 0x8D, 54 | SSDCmd_Set_Column_Address = 0x21, 55 | SSDCmd_Set_Page_Address = 0x22 56 | } SSDCmd; 57 | 58 | typedef enum { 59 | AddressMode_Horizontal = 0, 60 | AddressMode_Vertical, 61 | AddressMode_Page, 62 | AddressMode_Invalid 63 | } SSD1306_AddressMode; 64 | 65 | struct SSD1306_Device; 66 | struct FontDef; 67 | 68 | typedef int ( *WriteCommandProc ) ( struct SSD1306_Device* DeviceHandle, SSDCmd Command ); 69 | typedef int ( *WriteDataProc ) ( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ); 70 | typedef int ( *ResetProc ) ( struct SSD1306_Device* DeviceHandle ); 71 | 72 | struct SSD1306_Device { 73 | /* I2C Specific */ 74 | int Address; 75 | 76 | /* SPI Specific */ 77 | int RSTPin; 78 | int CSPin; 79 | 80 | /* Everything else */ 81 | int Width; 82 | int Height; 83 | 84 | #ifdef CONFIG_SSD1306_DYNAMIC_ALLOC 85 | uint8_t* Framebuffer; 86 | #else 87 | uint8_t Framebuffer[ SSD1306_Max_Framebuffer_Size ]; 88 | #endif 89 | 90 | int FramebufferSize; 91 | 92 | struct FontDef* Font; 93 | 94 | WriteCommandProc WriteCommand; 95 | WriteDataProc WriteData; 96 | ResetProc Reset; 97 | 98 | /* Can be anything, a good use might be a device handle for I2C or SPI */ 99 | uint32_t User0; 100 | }; 101 | 102 | struct Rect { 103 | int Left; 104 | int Right; 105 | int Top; 106 | int Bottom; 107 | }; 108 | 109 | static inline struct Rect MakeRect( int Left, int Right, int Top, int Bottom ) { 110 | struct Rect Temp; 111 | 112 | Temp.Left = Left; 113 | Temp.Right = Right; 114 | Temp.Top = Top; 115 | Temp.Bottom = Bottom; 116 | 117 | return Temp; 118 | } 119 | 120 | void SSD1306_SetMuxRatio( struct SSD1306_Device* DeviceHandle, uint8_t Ratio ); 121 | void SSD1306_SetDisplayOffset( struct SSD1306_Device* DeviceHandle, uint8_t Offset ); 122 | void SSD1306_SetDisplayStartLines( struct SSD1306_Device* DeviceHandle ); 123 | void SSD1306_SetSegmentRemap( struct SSD1306_Device* DeviceHandle, bool Remap ); 124 | void SSD1306_SetContrast( struct SSD1306_Device* DeviceHandle, uint8_t Contrast ); 125 | void SSD1306_EnableDisplayRAM( struct SSD1306_Device* DeviceHandle ); 126 | void SSD1306_DisableDisplayRAM( struct SSD1306_Device* DeviceHandle ); 127 | void SSD1306_SetInverted( struct SSD1306_Device* DeviceHandle, bool Inverted ); 128 | void SSD1306_SetHFlip( struct SSD1306_Device* DeviceHandle, bool On ); 129 | void SSD1306_SetVFlip( struct SSD1306_Device* DeviceHandle, bool On ); 130 | void SSD1306_DisplayOn( struct SSD1306_Device* DeviceHandle ); 131 | void SSD1306_DisplayOff( struct SSD1306_Device* DeviceHandle ); 132 | void SSD1306_SetDisplayAddressMode( struct SSD1306_Device* DeviceHandle, SSD1306_AddressMode AddressMode ); 133 | void SSD1306_Update( struct SSD1306_Device* DeviceHandle ); 134 | void SSD1306_SetDisplayClocks( struct SSD1306_Device* DeviceHandle, uint32_t DisplayClockDivider, uint32_t OSCFrequency ); 135 | void SSD1306_WriteRawData( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ); 136 | 137 | void SSD1306_Clear( struct SSD1306_Device* DeviceHandle, bool Color ); 138 | void SSD1306_DrawPixel( struct SSD1306_Device* DeviceHandle, uint32_t X, uint32_t Y, bool Color ); 139 | void SSD1306_DrawHLine( struct SSD1306_Device* DeviceHandle, int x, int y, int x2, bool Color ); 140 | void SSD1306_DrawVLine( struct SSD1306_Device* DeviceHandle, int x, int y, int y2, bool Color ); 141 | void SSD1306_DrawLine( struct SSD1306_Device* DeviceHandle, int x0, int y0, int x1, int y1, bool Color ); 142 | void SSD1306_DrawRect( struct SSD1306_Device* DeviceHandle, int x, int y, int x2, int y2, bool Color ); 143 | void SSD1306_SetFont( struct SSD1306_Device* DeviceHandle, struct FontDef* FontHandle ); 144 | 145 | void SSD1306_SetColumnAddress( struct SSD1306_Device* DeviceHandle, uint8_t Start, uint8_t End ); 146 | void SSD1306_SetPageAddress( struct SSD1306_Device* DeviceHandle, uint8_t Start, uint8_t End ); 147 | 148 | int SSD1306_HWReset( struct SSD1306_Device* DeviceHandle ); 149 | 150 | int SSD1306_Init_I2C( struct SSD1306_Device* DeviceHandle, int Width, int Height, int I2CAddress, uint32_t UserParam, WriteCommandProc WriteCommand, WriteDataProc WriteData, ResetProc Reset ); 151 | int SSD1306_Init_SPI( struct SSD1306_Device* DeviceHandle, int Width, int Height, int ResetPin, int CSPin, uint32_t UserParam, WriteCommandProc WriteCommand, WriteDataProc WriteData, ResetProc Reset ); 152 | 153 | #endif 154 | -------------------------------------------------------------------------------- /components/tarablessd1306/ssd1306.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "ssd1306.h" 16 | #include "font.h" 17 | 18 | #define COM_Disable_LR_Remap 0 19 | #define COM_Enable_LR_Remap BIT( 5 ) 20 | 21 | #define COM_Pins_Sequential 0 22 | #define COM_Pins_Alternative BIT( 4 ) 23 | 24 | #define COM_ScanDir_LR 0 25 | #define COM_ScanDir_RL 1 26 | 27 | static int SSD1306_Init( struct SSD1306_Device* DeviceHandle, int Width, int Height ); 28 | 29 | int SSD1306_WriteCommand( struct SSD1306_Device* DeviceHandle, SSDCmd SSDCommand ) { 30 | NullCheck( DeviceHandle, return 0 ); 31 | NullCheck( DeviceHandle->WriteCommand, return 0 ); 32 | 33 | return ( DeviceHandle->WriteCommand ) ( DeviceHandle, SSDCommand ); 34 | } 35 | 36 | int SSD1306_WriteData( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ) { 37 | NullCheck( DeviceHandle, return 0 ); 38 | NullCheck( DeviceHandle->WriteData, return 0 ); 39 | 40 | return ( DeviceHandle->WriteData ) ( DeviceHandle, Data, DataLength ); 41 | } 42 | 43 | void SSD1306_SetMuxRatio( struct SSD1306_Device* DeviceHandle, uint8_t Ratio ) { 44 | NullCheck( DeviceHandle, return ); 45 | 46 | SSD1306_WriteCommand( DeviceHandle, 0xA8 ); 47 | SSD1306_WriteCommand( DeviceHandle, Ratio ); 48 | } 49 | 50 | void SSD1306_SetDisplayOffset( struct SSD1306_Device* DeviceHandle, uint8_t Offset ) { 51 | NullCheck( DeviceHandle, return ); 52 | 53 | SSD1306_WriteCommand( DeviceHandle, 0xD3 ); 54 | SSD1306_WriteCommand( DeviceHandle, Offset ); 55 | } 56 | 57 | void SSD1306_SetDisplayStartLine( struct SSD1306_Device* DeviceHandle, int Line ) { 58 | NullCheck( DeviceHandle, return ); 59 | 60 | SSD1306_WriteCommand( DeviceHandle, 61 | SSDCmd_Set_Display_Start_Line + ( uint32_t ) ( Line & 0x1F ) 62 | ); 63 | } 64 | 65 | /* 66 | * This is all a big giant mystery that I have yet to figure out. 67 | * Beware all ye who enter. 68 | */ 69 | static void SetCOMPinConfiguration( struct SSD1306_Device* DeviceHandle, uint32_t RemapCFG, uint32_t PinCFG, int ScanDir ) { 70 | NullCheck( DeviceHandle, return ); 71 | 72 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_COM_Pin_Config ); 73 | SSD1306_WriteCommand( DeviceHandle, ( uint8_t ) ( RemapCFG | PinCFG | BIT( 1 ) ) ); 74 | 75 | SSD1306_WriteCommand( DeviceHandle, 76 | ( ScanDir == COM_ScanDir_LR ) ? SSDCmd_Set_Display_VFlip_Off : SSDCmd_Set_Display_VFlip_On 77 | ); 78 | } 79 | 80 | void SSD1306_SetContrast( struct SSD1306_Device* DeviceHandle, uint8_t Contrast ) { 81 | NullCheck( DeviceHandle, return ); 82 | 83 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Contrast ); 84 | SSD1306_WriteCommand( DeviceHandle, Contrast ); 85 | } 86 | 87 | void SSD1306_EnableDisplayRAM( struct SSD1306_Device* DeviceHandle ) { 88 | NullCheck( DeviceHandle, return ); 89 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Display_Show_RAM ); 90 | } 91 | 92 | void SSD1306_DisableDisplayRAM( struct SSD1306_Device* DeviceHandle ) { 93 | NullCheck( DeviceHandle, return ); 94 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Display_Ignore_RAM ); 95 | } 96 | 97 | void SSD1306_SetInverted( struct SSD1306_Device* DeviceHandle, bool Inverted ) { 98 | NullCheck( DeviceHandle, return ); 99 | SSD1306_WriteCommand( DeviceHandle, ( Inverted == true ) ? SSDCmd_Set_Inverted_Display : SSDCmd_Set_Normal_Display ); 100 | } 101 | 102 | void SSD1306_SetDisplayClocks( struct SSD1306_Device* DeviceHandle, uint32_t DisplayClockDivider, uint32_t OSCFrequency ) { 103 | NullCheck( DeviceHandle, return ); 104 | 105 | DisplayClockDivider&= 0x0F; 106 | OSCFrequency&= 0x0F; 107 | 108 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Display_CLK ); 109 | SSD1306_WriteCommand( DeviceHandle, ( ( OSCFrequency << 4 ) | DisplayClockDivider ) ); 110 | } 111 | 112 | /* There is no documentation for this command, but it is required during init. */ 113 | static void EnableChargePumpRegulator( struct SSD1306_Device* DeviceHandle ) { 114 | NullCheck( DeviceHandle, return ); 115 | 116 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Enable_Charge_Pump_Regulator ); 117 | SSD1306_WriteCommand( DeviceHandle, 0x14 ); /* MAGIC NUMBER */ 118 | } 119 | 120 | void SSD1306_DisplayOn( struct SSD1306_Device* DeviceHandle ) { 121 | NullCheck( DeviceHandle, return ); 122 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Display_On ); 123 | } 124 | 125 | void SSD1306_DisplayOff( struct SSD1306_Device* DeviceHandle ) { 126 | NullCheck( DeviceHandle, return ); 127 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Display_Off ); 128 | } 129 | 130 | void SSD1306_SetDisplayAddressMode( struct SSD1306_Device* DeviceHandle, SSD1306_AddressMode AddressMode ) { 131 | NullCheck( DeviceHandle, return ); 132 | 133 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Memory_Addressing_Mode ); 134 | SSD1306_WriteCommand( DeviceHandle, AddressMode ); 135 | } 136 | 137 | void SSD1306_Update( struct SSD1306_Device* DeviceHandle ) { 138 | NullCheck( DeviceHandle, return ); 139 | SSD1306_WriteData( DeviceHandle, DeviceHandle->Framebuffer, DeviceHandle->FramebufferSize ); 140 | } 141 | 142 | void SSD1306_WriteRawData( struct SSD1306_Device* DeviceHandle, uint8_t* Data, size_t DataLength ) { 143 | NullCheck( DeviceHandle, return ); 144 | NullCheck( Data, return ); 145 | 146 | DataLength = DataLength > DeviceHandle->FramebufferSize ? DeviceHandle->FramebufferSize : DataLength; 147 | 148 | if ( DataLength > 0 ) { 149 | SSD1306_WriteData( DeviceHandle, Data, DataLength ); 150 | } 151 | } 152 | 153 | void SSD1306_SetHFlip( struct SSD1306_Device* DeviceHandle, bool On ) { 154 | NullCheck( DeviceHandle, return ); 155 | SSD1306_WriteCommand( DeviceHandle, ( On == true ) ? SSDCmd_Set_Display_HFlip_On : SSDCmd_Set_Display_HFlip_Off ); 156 | } 157 | 158 | void SSD1306_SetVFlip( struct SSD1306_Device* DeviceHandle, bool On ) { 159 | NullCheck( DeviceHandle, return ); 160 | SSD1306_WriteCommand( DeviceHandle, ( On == true ) ? SSDCmd_Set_Display_VFlip_On : SSDCmd_Set_Display_VFlip_Off ); 161 | } 162 | 163 | void SSD1306_SetFont( struct SSD1306_Device* DeviceHandle, struct FontDef* FontHandle ) { 164 | NullCheck( DeviceHandle, return ); 165 | NullCheck( FontHandle, return ); 166 | NullCheck( FontHandle->Data, return ); 167 | 168 | DeviceHandle->Font = FontHandle; 169 | } 170 | 171 | void SSD1306_SetColumnAddress( struct SSD1306_Device* DeviceHandle, uint8_t Start, uint8_t End ) { 172 | NullCheck( DeviceHandle, return ); 173 | 174 | CheckBounds( Start > SSD1306_Max_Col, return ); 175 | CheckBounds( End > SSD1306_Max_Col, return ); 176 | 177 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Column_Address ); 178 | SSD1306_WriteCommand( DeviceHandle, Start ); 179 | SSD1306_WriteCommand( DeviceHandle, End ); 180 | } 181 | 182 | void SSD1306_SetPageAddress( struct SSD1306_Device* DeviceHandle, uint8_t Start, uint8_t End ) { 183 | NullCheck( DeviceHandle, return ); 184 | 185 | CheckBounds( Start > SSD1306_Max_Row, return ); 186 | CheckBounds( End > SSD1306_Max_Row, return ); 187 | 188 | SSD1306_WriteCommand( DeviceHandle, SSDCmd_Set_Page_Address ); 189 | SSD1306_WriteCommand( DeviceHandle, Start ); 190 | SSD1306_WriteCommand( DeviceHandle, End ); 191 | } 192 | 193 | int SSD1306_HWReset( struct SSD1306_Device* DeviceHandle ) { 194 | NullCheck( DeviceHandle, return 0 ); 195 | 196 | if ( DeviceHandle->Reset != NULL ) { 197 | return ( DeviceHandle->Reset ) ( DeviceHandle ); 198 | } 199 | 200 | /* This should always return true if there is no reset callback as 201 | * no error would have occurred during the non existant reset. 202 | */ 203 | return 1; 204 | } 205 | 206 | static int SSD1306_Init( struct SSD1306_Device* DeviceHandle, int Width, int Height ) { 207 | DeviceHandle->Width = Width; 208 | DeviceHandle->Height = Height; 209 | DeviceHandle->FramebufferSize = ( DeviceHandle->Width * Height ) / 8; 210 | 211 | #ifdef CONFIG_SSD1306_DYNAMIC_ALLOC 212 | DeviceHandle->Framebuffer = ( uint8_t* ) malloc( DeviceHandle->FramebufferSize ); 213 | NullCheck( DeviceHandle->Framebuffer, return 0 ); 214 | #endif 215 | 216 | memset( DeviceHandle->Framebuffer, 0, DeviceHandle->FramebufferSize ); 217 | 218 | /* For those who have a hardware reset pin on their display */ 219 | SSD1306_HWReset( DeviceHandle ); 220 | 221 | /* Init sequence according to SSD1306.pdf */ 222 | SSD1306_SetMuxRatio( DeviceHandle, 0x3F ); 223 | SSD1306_SetDisplayOffset( DeviceHandle, 0x00 ); 224 | SSD1306_SetDisplayStartLine( DeviceHandle, 0 ); 225 | SSD1306_SetHFlip( DeviceHandle, false ); 226 | SSD1306_SetVFlip( DeviceHandle, false ); 227 | 228 | if ( Height == 64 ) { 229 | SetCOMPinConfiguration( DeviceHandle, COM_Disable_LR_Remap, COM_Pins_Alternative, COM_ScanDir_LR ); 230 | } else { 231 | SetCOMPinConfiguration( DeviceHandle, COM_Disable_LR_Remap, COM_Pins_Sequential, COM_ScanDir_LR ); 232 | } 233 | 234 | SSD1306_SetContrast( DeviceHandle, 0x7F ); 235 | SSD1306_DisableDisplayRAM( DeviceHandle ); 236 | SSD1306_SetInverted( DeviceHandle, false ); 237 | SSD1306_SetDisplayClocks( DeviceHandle, 0, 8 ); 238 | EnableChargePumpRegulator( DeviceHandle ); 239 | SSD1306_SetDisplayAddressMode( DeviceHandle, AddressMode_Horizontal ); 240 | SSD1306_SetColumnAddress( DeviceHandle, 0, DeviceHandle->Width - 1 ); 241 | SSD1306_SetPageAddress( DeviceHandle, 0, ( DeviceHandle->Height / 8 ) - 1 ); 242 | SSD1306_EnableDisplayRAM( DeviceHandle ); 243 | SSD1306_DisplayOn( DeviceHandle ); 244 | SSD1306_Update( DeviceHandle ); 245 | 246 | return 1; 247 | } 248 | 249 | int SSD1306_Init_I2C( struct SSD1306_Device* DeviceHandle, int Width, int Height, int I2CAddress, uint32_t UserParam, WriteCommandProc WriteCommand, WriteDataProc WriteData, ResetProc Reset ) { 250 | NullCheck( DeviceHandle, return 0 ); 251 | NullCheck( WriteCommand, return 0 ); 252 | NullCheck( WriteData, return 0 ); 253 | 254 | memset( DeviceHandle, 0, sizeof( struct SSD1306_Device ) ); 255 | 256 | DeviceHandle->WriteCommand = WriteCommand; 257 | DeviceHandle->WriteData = WriteData; 258 | DeviceHandle->Reset = Reset; 259 | DeviceHandle->Address = I2CAddress; 260 | DeviceHandle->User0 = UserParam; 261 | 262 | return SSD1306_Init( DeviceHandle, Width, Height ); 263 | } 264 | 265 | int SSD1306_Init_SPI( struct SSD1306_Device* DeviceHandle, int Width, int Height, int ResetPin, int CSPin, uint32_t UserParam, WriteCommandProc WriteCommand, WriteDataProc WriteData, ResetProc Reset ) { 266 | NullCheck( DeviceHandle, return 0 ); 267 | NullCheck( WriteCommand, return 0 ); 268 | NullCheck( WriteData, return 0 ); 269 | 270 | memset( DeviceHandle, 0, sizeof( struct SSD1306_Device ) ); 271 | 272 | DeviceHandle->WriteCommand = WriteCommand; 273 | DeviceHandle->WriteData = WriteData; 274 | DeviceHandle->Reset = Reset; 275 | DeviceHandle->User0 = UserParam; 276 | DeviceHandle->RSTPin = ResetPin; 277 | DeviceHandle->CSPin = CSPin; 278 | 279 | return SSD1306_Init( DeviceHandle, Width, Height ); 280 | } 281 | -------------------------------------------------------------------------------- /main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # "main" pseudo-component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | 7 | -------------------------------------------------------------------------------- /main/main.c: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017 Tara Keeling 3 | * 4 | * This software is released under the MIT License. 5 | * https://opensource.org/licenses/MIT 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "ssd1306.h" 15 | #include "font.h" 16 | 17 | #include "iface_esp32_i2c.h" 18 | #include "iface_esp32_spi.h" 19 | #include "iface_virtual.h" 20 | 21 | int64_t GetMillis( void ) { 22 | return esp_timer_get_time( ) / 1000; 23 | } 24 | 25 | void FBShiftLeft( struct SSD1306_Device* DeviceHandle, uint8_t* ShiftIn, uint8_t* ShiftOut ) { 26 | uint8_t* Framebuffer = NULL; 27 | int Width = 0; 28 | int Height = 0; 29 | int y = 0; 30 | int x = 0; 31 | 32 | NullCheck( DeviceHandle, return ); 33 | 34 | Framebuffer = DeviceHandle->Framebuffer; 35 | Width = DeviceHandle->Width; 36 | Height = DeviceHandle->Height; 37 | 38 | /* Clear out the first and last rows */ 39 | for ( y = 0; y < ( Width / 8 ); y++ ) { 40 | /* Copy the column to be destroyed out if a buffer was passed in to hold it */ 41 | if ( ShiftOut != NULL ) { 42 | ShiftOut[ y ] = Framebuffer[ y * Width ]; 43 | } 44 | 45 | Framebuffer[ y * Width ] = 0; 46 | 47 | /* If the caller passes a buffer of pixels it wants shifted in, use that instead of clearing it */ 48 | Framebuffer[ ( y * Width ) + ( Width - 1 ) ] = ( ShiftIn != NULL ) ? ShiftIn[ y ] : 0; 49 | } 50 | 51 | /* Shift every column of pixels one column to the left */ 52 | for ( x = 0; x < ( Width - 1 ); x++ ) { 53 | for ( y = 0; y < ( Height / 8 ); y++ ) { 54 | Framebuffer[ x + ( y * Width ) ] = Framebuffer[ 1 + x + ( y * Width ) ]; 55 | } 56 | } 57 | } 58 | 59 | void DrawPixelInColumn( uint8_t* Column, int y, bool Color ) { 60 | uint32_t Pixel = ( y & 0x07 ); 61 | uint32_t Page = ( y >> 3 ); 62 | 63 | NullCheck( Column, return ); 64 | 65 | Column[ Page ] = ( Color == true ) ? Column[ Page ] | BIT( Pixel ) : Column[ Page ] & ~BIT( Pixel ); 66 | } 67 | 68 | const int RSTPin = 5; 69 | const int DCPin = 16; 70 | const int CSPin = 4; 71 | const int SCLPin = 22; 72 | const int SDAPin = 21; 73 | 74 | struct SSD1306_Device Dev_SPI; 75 | struct SSD1306_Device Dev_I2C; 76 | struct SSD1306_Device Dev_Span; 77 | 78 | void ShiftTask( void* Param ) { 79 | static uint8_t In[ 8 ]; 80 | static uint8_t Out[ 8 ]; 81 | int64_t Start = 0; 82 | int64_t End = 0; 83 | int Delay = 0; 84 | 85 | while ( true ) { 86 | Start = GetMillis( ); 87 | FBShiftLeft( &Dev_Span, In, Out ); 88 | memcpy( In, Out, sizeof( Out ) ); 89 | 90 | Virt_DeviceBlit( &Dev_Span, &Dev_I2C, MakeRect( 0, 127, 0, 63 ), MakeRect( 0, 127, 0, 63 ) ); 91 | Virt_DeviceBlit( &Dev_Span, &Dev_SPI, MakeRect( 128, 255, 0, 63 ), MakeRect( 0, 127, 0, 63 ) ); 92 | 93 | SSD1306_Update( &Dev_I2C ); 94 | SSD1306_Update( &Dev_SPI ); 95 | End = GetMillis( ); 96 | 97 | /* Sync to 30FPS */ 98 | Delay = 33 - ( int ) ( End - Start ); 99 | 100 | if ( Delay <= 0 ) { 101 | /* More dogs for the watch dog god */ 102 | Delay= 3; 103 | } 104 | 105 | vTaskDelay( pdMS_TO_TICKS( Delay ) ); 106 | } 107 | } 108 | 109 | void app_main( void ) { 110 | bool Screen0 = false; 111 | bool Screen1 = false; 112 | 113 | printf( "Ready...\n" ); 114 | 115 | if ( ESP32_InitI2CMaster( SDAPin, SCLPin ) ) { 116 | printf( "i2c master initialized.\n" ); 117 | 118 | if ( SSD1306_Init_I2C( &Dev_I2C, 128, 64, 0x3C, 0, ESP32_WriteCommand_I2C, ESP32_WriteData_I2C, NULL ) == 1 ) { 119 | printf( "i2c display initialized.\n" ); 120 | Screen0 = true; 121 | 122 | //SSD1306_SetFont( &Dev_I2C, &Font_Comic_Neue_25x28 ); 123 | //FontDrawAnchoredString( &Dev_I2C, "Smile!", TextAnchor_Center, true ); 124 | 125 | //SSD1306_Update( &Dev_I2C ); 126 | } 127 | } 128 | 129 | if ( ESP32_InitSPIMaster( DCPin ) ) { 130 | printf( "SPI Master Init OK.\n" ); 131 | 132 | if ( ESP32_AddDevice_SPI( &Dev_SPI, 128, 64, CSPin, RSTPin ) == 1 ) { 133 | printf( "SSD1306 Init OK.\n" ); 134 | Screen1 = true; 135 | 136 | //SSD1306_SetFont( &Dev_SPI, &Font_Comic_Neue_25x28 ); 137 | //FontDrawAnchoredString( &Dev_SPI, "Okay.", TextAnchor_Center, true ); 138 | 139 | //SSD1306_Update( &Dev_SPI ); 140 | } 141 | } 142 | 143 | if ( Screen0 == true && Screen1 == true ) { 144 | if ( Virt_DeviceInit( &Dev_Span, 256, 64 ) == 1 ) { 145 | printf( "Span created!\n" ); 146 | 147 | SSD1306_SetFont( &Dev_Span, &Font_Liberation_Sans_15x16 ); 148 | FontDrawAnchoredString( &Dev_Span, "Okay.", TextAnchor_Center, true ); 149 | 150 | Virt_DeviceBlit( &Dev_Span, &Dev_I2C, MakeRect( 0, 127, 0, 63 ), MakeRect( 0, 127, 0, 63 ) ); 151 | Virt_DeviceBlit( &Dev_Span, &Dev_SPI, MakeRect( 128, 255, 0, 63 ), MakeRect( 0, 127, 0, 63 ) ); 152 | 153 | SSD1306_Update( &Dev_I2C ); 154 | SSD1306_Update( &Dev_SPI ); 155 | 156 | xTaskCreate( ShiftTask, "ShiftTask", 4096, NULL, 3, NULL ); 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file; DO NOT EDIT. 3 | # Espressif IoT Development Framework Configuration 4 | # 5 | 6 | # 7 | # SDK tool configuration 8 | # 9 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 10 | CONFIG_PYTHON="python" 11 | CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y 12 | 13 | # 14 | # Bootloader config 15 | # 16 | CONFIG_LOG_BOOTLOADER_LEVEL_NONE= 17 | CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= 18 | CONFIG_LOG_BOOTLOADER_LEVEL_WARN= 19 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 20 | CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= 21 | CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= 22 | CONFIG_LOG_BOOTLOADER_LEVEL=3 23 | CONFIG_BOOTLOADER_VDDSDIO_BOOST=y 24 | 25 | # 26 | # Security features 27 | # 28 | CONFIG_SECURE_BOOT_ENABLED= 29 | CONFIG_FLASH_ENCRYPTION_ENABLED= 30 | 31 | # 32 | # Serial flasher config 33 | # 34 | CONFIG_ESPTOOLPY_PORT="/dev/tty.usbserial-DN02BJ7H" 35 | CONFIG_ESPTOOLPY_BAUD_115200B= 36 | CONFIG_ESPTOOLPY_BAUD_230400B= 37 | CONFIG_ESPTOOLPY_BAUD_921600B=y 38 | CONFIG_ESPTOOLPY_BAUD_2MB= 39 | CONFIG_ESPTOOLPY_BAUD_OTHER= 40 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 41 | CONFIG_ESPTOOLPY_BAUD=921600 42 | CONFIG_ESPTOOLPY_COMPRESSED=y 43 | CONFIG_FLASHMODE_QIO= 44 | CONFIG_FLASHMODE_QOUT= 45 | CONFIG_FLASHMODE_DIO=y 46 | CONFIG_FLASHMODE_DOUT= 47 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 48 | CONFIG_ESPTOOLPY_FLASHFREQ_80M= 49 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 50 | CONFIG_ESPTOOLPY_FLASHFREQ_26M= 51 | CONFIG_ESPTOOLPY_FLASHFREQ_20M= 52 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 53 | CONFIG_ESPTOOLPY_FLASHSIZE_1MB= 54 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB= 55 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 56 | CONFIG_ESPTOOLPY_FLASHSIZE_8MB= 57 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB= 58 | CONFIG_ESPTOOLPY_FLASHSIZE="4MB" 59 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 60 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 61 | CONFIG_ESPTOOLPY_BEFORE_NORESET= 62 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 63 | CONFIG_ESPTOOLPY_AFTER_RESET=y 64 | CONFIG_ESPTOOLPY_AFTER_NORESET= 65 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 66 | CONFIG_MONITOR_BAUD_9600B= 67 | CONFIG_MONITOR_BAUD_57600B= 68 | CONFIG_MONITOR_BAUD_115200B=y 69 | CONFIG_MONITOR_BAUD_230400B= 70 | CONFIG_MONITOR_BAUD_921600B= 71 | CONFIG_MONITOR_BAUD_2MB= 72 | CONFIG_MONITOR_BAUD_OTHER= 73 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 74 | CONFIG_MONITOR_BAUD=115200 75 | 76 | # 77 | # Partition Table 78 | # 79 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 80 | CONFIG_PARTITION_TABLE_TWO_OTA= 81 | CONFIG_PARTITION_TABLE_CUSTOM= 82 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 83 | CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000 84 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 85 | CONFIG_APP_OFFSET=0x10000 86 | 87 | # 88 | # Compiler options 89 | # 90 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 91 | CONFIG_OPTIMIZATION_LEVEL_RELEASE= 92 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 93 | CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= 94 | CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= 95 | CONFIG_CXX_EXCEPTIONS= 96 | 97 | # 98 | # Component config 99 | # 100 | 101 | # 102 | # Application Level Tracing 103 | # 104 | CONFIG_ESP32_APPTRACE_DEST_TRAX= 105 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 106 | CONFIG_ESP32_APPTRACE_ENABLE= 107 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 108 | 109 | # 110 | # FreeRTOS SystemView Tracing 111 | # 112 | CONFIG_AWS_IOT_SDK= 113 | 114 | # 115 | # Bluetooth 116 | # 117 | CONFIG_BT_ENABLED= 118 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 119 | CONFIG_BT_RESERVE_DRAM=0 120 | 121 | # 122 | # ESP32-specific 123 | # 124 | CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 125 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 126 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240= 127 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 128 | CONFIG_MEMMAP_SMP=y 129 | CONFIG_SPIRAM_SUPPORT= 130 | CONFIG_MEMMAP_TRACEMEM= 131 | CONFIG_MEMMAP_TRACEMEM_TWOBANKS= 132 | CONFIG_ESP32_TRAX= 133 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 134 | CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= 135 | CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= 136 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 137 | CONFIG_ESP32_ENABLE_COREDUMP= 138 | CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= 139 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 140 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 141 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 142 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=4096 143 | CONFIG_MAIN_TASK_STACK_SIZE=4096 144 | CONFIG_IPC_TASK_STACK_SIZE=1024 145 | CONFIG_TIMER_TASK_STACK_SIZE=4096 146 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 147 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= 148 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= 149 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= 150 | CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= 151 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 152 | CONFIG_NEWLIB_NANO_FORMAT= 153 | CONFIG_CONSOLE_UART_DEFAULT=y 154 | CONFIG_CONSOLE_UART_CUSTOM= 155 | CONFIG_CONSOLE_UART_NONE= 156 | CONFIG_CONSOLE_UART_NUM=0 157 | CONFIG_CONSOLE_UART_BAUDRATE=115200 158 | CONFIG_ULP_COPROC_ENABLED= 159 | CONFIG_ULP_COPROC_RESERVE_MEM=0 160 | CONFIG_ESP32_PANIC_PRINT_HALT= 161 | CONFIG_ESP32_PANIC_PRINT_REBOOT=y 162 | CONFIG_ESP32_PANIC_SILENT_REBOOT= 163 | CONFIG_ESP32_PANIC_GDBSTUB= 164 | CONFIG_ESP32_DEBUG_OCDAWARE=y 165 | CONFIG_INT_WDT=y 166 | CONFIG_INT_WDT_TIMEOUT_MS=300 167 | CONFIG_INT_WDT_CHECK_CPU1=y 168 | CONFIG_TASK_WDT=y 169 | CONFIG_TASK_WDT_PANIC= 170 | CONFIG_TASK_WDT_TIMEOUT_S=5 171 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 172 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 173 | CONFIG_BROWNOUT_DET=y 174 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 175 | CONFIG_BROWNOUT_DET_LVL_SEL_1= 176 | CONFIG_BROWNOUT_DET_LVL_SEL_2= 177 | CONFIG_BROWNOUT_DET_LVL_SEL_3= 178 | CONFIG_BROWNOUT_DET_LVL_SEL_4= 179 | CONFIG_BROWNOUT_DET_LVL_SEL_5= 180 | CONFIG_BROWNOUT_DET_LVL_SEL_6= 181 | CONFIG_BROWNOUT_DET_LVL_SEL_7= 182 | CONFIG_BROWNOUT_DET_LVL=0 183 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC= 184 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 185 | CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= 186 | CONFIG_ESP32_TIME_SYSCALL_USE_NONE= 187 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 188 | CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= 189 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 190 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 191 | CONFIG_ESP32_XTAL_FREQ_40= 192 | CONFIG_ESP32_XTAL_FREQ_26=y 193 | CONFIG_ESP32_XTAL_FREQ_AUTO= 194 | CONFIG_ESP32_XTAL_FREQ=26 195 | CONFIG_DISABLE_BASIC_ROM_CONSOLE= 196 | CONFIG_NO_BLOBS= 197 | 198 | # 199 | # Wi-Fi 200 | # 201 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 202 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 203 | CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= 204 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 205 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 206 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 207 | CONFIG_ESP32_WIFI_AMPDU_ENABLED=y 208 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 209 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 210 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 211 | 212 | # 213 | # PHY 214 | # 215 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 216 | CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= 217 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 218 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 219 | 220 | # 221 | # Power Management 222 | # 223 | CONFIG_PM_ENABLE= 224 | 225 | # 226 | # Ethernet 227 | # 228 | CONFIG_DMA_RX_BUF_NUM=10 229 | CONFIG_DMA_TX_BUF_NUM=10 230 | CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE= 231 | CONFIG_EMAC_TASK_PRIORITY=20 232 | 233 | # 234 | # FAT Filesystem support 235 | # 236 | CONFIG_FATFS_CODEPAGE_ASCII=y 237 | CONFIG_FATFS_CODEPAGE_437= 238 | CONFIG_FATFS_CODEPAGE_720= 239 | CONFIG_FATFS_CODEPAGE_737= 240 | CONFIG_FATFS_CODEPAGE_771= 241 | CONFIG_FATFS_CODEPAGE_775= 242 | CONFIG_FATFS_CODEPAGE_850= 243 | CONFIG_FATFS_CODEPAGE_852= 244 | CONFIG_FATFS_CODEPAGE_855= 245 | CONFIG_FATFS_CODEPAGE_857= 246 | CONFIG_FATFS_CODEPAGE_860= 247 | CONFIG_FATFS_CODEPAGE_861= 248 | CONFIG_FATFS_CODEPAGE_862= 249 | CONFIG_FATFS_CODEPAGE_863= 250 | CONFIG_FATFS_CODEPAGE_864= 251 | CONFIG_FATFS_CODEPAGE_865= 252 | CONFIG_FATFS_CODEPAGE_866= 253 | CONFIG_FATFS_CODEPAGE_869= 254 | CONFIG_FATFS_CODEPAGE_932= 255 | CONFIG_FATFS_CODEPAGE_936= 256 | CONFIG_FATFS_CODEPAGE_949= 257 | CONFIG_FATFS_CODEPAGE_950= 258 | CONFIG_FATFS_CODEPAGE=1 259 | CONFIG_FATFS_MAX_LFN=255 260 | 261 | # 262 | # FreeRTOS 263 | # 264 | CONFIG_FREERTOS_UNICORE= 265 | CONFIG_FREERTOS_CORETIMER_0=y 266 | CONFIG_FREERTOS_CORETIMER_1= 267 | CONFIG_FREERTOS_HZ=100 268 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 269 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= 270 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= 271 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 272 | CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= 273 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 274 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 275 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 276 | CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= 277 | CONFIG_FREERTOS_ASSERT_DISABLE= 278 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024 279 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 280 | CONFIG_FREERTOS_LEGACY_HOOKS= 281 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 282 | CONFIG_SUPPORT_STATIC_ALLOCATION= 283 | CONFIG_TIMER_TASK_PRIORITY=1 284 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 285 | CONFIG_TIMER_QUEUE_LENGTH=10 286 | CONFIG_FREERTOS_USE_TRACE_FACILITY= 287 | CONFIG_FREERTOS_DEBUG_INTERNALS= 288 | 289 | # 290 | # Heap memory debugging 291 | # 292 | CONFIG_HEAP_POISONING_DISABLED=y 293 | CONFIG_HEAP_POISONING_LIGHT= 294 | CONFIG_HEAP_POISONING_COMPREHENSIVE= 295 | CONFIG_HEAP_TRACING= 296 | 297 | # 298 | # libsodium 299 | # 300 | CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y 301 | 302 | # 303 | # Log output 304 | # 305 | CONFIG_LOG_DEFAULT_LEVEL_NONE= 306 | CONFIG_LOG_DEFAULT_LEVEL_ERROR= 307 | CONFIG_LOG_DEFAULT_LEVEL_WARN= 308 | CONFIG_LOG_DEFAULT_LEVEL_INFO= 309 | CONFIG_LOG_DEFAULT_LEVEL_DEBUG= 310 | CONFIG_LOG_DEFAULT_LEVEL_VERBOSE=y 311 | CONFIG_LOG_DEFAULT_LEVEL=5 312 | CONFIG_LOG_COLORS=y 313 | 314 | # 315 | # LWIP 316 | # 317 | CONFIG_L2_TO_L3_COPY= 318 | CONFIG_LWIP_MAX_SOCKETS=10 319 | CONFIG_LWIP_SO_REUSE=y 320 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 321 | CONFIG_LWIP_SO_RCVBUF= 322 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 323 | CONFIG_LWIP_IP_FRAG= 324 | CONFIG_LWIP_IP_REASSEMBLY= 325 | CONFIG_LWIP_STATS= 326 | CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y 327 | CONFIG_TCPIP_RECVMBOX_SIZE=32 328 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 329 | CONFIG_LWIP_AUTOIP= 330 | CONFIG_LWIP_NETIF_LOOPBACK=y 331 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 332 | 333 | # 334 | # TCP 335 | # 336 | CONFIG_TCP_MAXRTX=12 337 | CONFIG_TCP_SYNMAXRTX=6 338 | CONFIG_TCP_MSS=1436 339 | CONFIG_TCP_MSL=60000 340 | CONFIG_TCP_SND_BUF_DEFAULT=5744 341 | CONFIG_TCP_WND_DEFAULT=5744 342 | CONFIG_TCP_RECVMBOX_SIZE=6 343 | CONFIG_TCP_QUEUE_OOSEQ=y 344 | CONFIG_TCP_OVERSIZE_MSS=y 345 | CONFIG_TCP_OVERSIZE_QUARTER_MSS= 346 | CONFIG_TCP_OVERSIZE_DISABLE= 347 | 348 | # 349 | # UDP 350 | # 351 | CONFIG_UDP_RECVMBOX_SIZE=6 352 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 353 | CONFIG_PPP_SUPPORT= 354 | 355 | # 356 | # ICMP 357 | # 358 | CONFIG_LWIP_MULTICAST_PING= 359 | CONFIG_LWIP_BROADCAST_PING= 360 | 361 | # 362 | # mbedTLS 363 | # 364 | CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 365 | CONFIG_MBEDTLS_DEBUG= 366 | CONFIG_MBEDTLS_HARDWARE_AES=y 367 | CONFIG_MBEDTLS_HARDWARE_MPI= 368 | CONFIG_MBEDTLS_HARDWARE_SHA= 369 | CONFIG_MBEDTLS_HAVE_TIME=y 370 | CONFIG_MBEDTLS_HAVE_TIME_DATE= 371 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 372 | CONFIG_MBEDTLS_TLS_SERVER_ONLY= 373 | CONFIG_MBEDTLS_TLS_CLIENT_ONLY= 374 | CONFIG_MBEDTLS_TLS_DISABLED= 375 | CONFIG_MBEDTLS_TLS_SERVER=y 376 | CONFIG_MBEDTLS_TLS_CLIENT=y 377 | CONFIG_MBEDTLS_TLS_ENABLED=y 378 | 379 | # 380 | # TLS Key Exchange Methods 381 | # 382 | CONFIG_MBEDTLS_PSK_MODES= 383 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 384 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 385 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 386 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 387 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 388 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 389 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 390 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 391 | CONFIG_MBEDTLS_SSL_PROTO_SSL3= 392 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 393 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 394 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 395 | CONFIG_MBEDTLS_SSL_PROTO_DTLS= 396 | CONFIG_MBEDTLS_SSL_ALPN=y 397 | CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y 398 | 399 | # 400 | # Symmetric Ciphers 401 | # 402 | CONFIG_MBEDTLS_AES_C=y 403 | CONFIG_MBEDTLS_CAMELLIA_C= 404 | CONFIG_MBEDTLS_DES_C= 405 | CONFIG_MBEDTLS_RC4_DISABLED=y 406 | CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= 407 | CONFIG_MBEDTLS_RC4_ENABLED= 408 | CONFIG_MBEDTLS_BLOWFISH_C= 409 | CONFIG_MBEDTLS_XTEA_C= 410 | CONFIG_MBEDTLS_CCM_C=y 411 | CONFIG_MBEDTLS_GCM_C=y 412 | CONFIG_MBEDTLS_RIPEMD160_C= 413 | 414 | # 415 | # Certificates 416 | # 417 | CONFIG_MBEDTLS_PEM_PARSE_C=y 418 | CONFIG_MBEDTLS_PEM_WRITE_C=y 419 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 420 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 421 | CONFIG_MBEDTLS_ECP_C=y 422 | CONFIG_MBEDTLS_ECDH_C=y 423 | CONFIG_MBEDTLS_ECDSA_C=y 424 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 425 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 426 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 427 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 428 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 429 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 430 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 431 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 432 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 433 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 434 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 435 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 436 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 437 | 438 | # 439 | # OpenSSL 440 | # 441 | CONFIG_OPENSSL_DEBUG= 442 | CONFIG_OPENSSL_ASSERT_DO_NOTHING=y 443 | CONFIG_OPENSSL_ASSERT_EXIT= 444 | 445 | # 446 | # PThreads 447 | # 448 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 449 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 450 | 451 | # 452 | # SPI Flash driver 453 | # 454 | CONFIG_SPI_FLASH_ENABLE_COUNTERS= 455 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 456 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 457 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= 458 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= 459 | 460 | # 461 | # SPIFFS Configuration 462 | # 463 | CONFIG_SPIFFS_MAX_PARTITIONS=3 464 | 465 | # 466 | # SPIFFS Cache Configuration 467 | # 468 | CONFIG_SPIFFS_CACHE=y 469 | CONFIG_SPIFFS_CACHE_WR=y 470 | CONFIG_SPIFFS_CACHE_STATS= 471 | CONFIG_SPIFFS_PAGE_CHECK=y 472 | CONFIG_SPIFFS_GC_MAX_RUNS=10 473 | CONFIG_SPIFFS_GC_STATS= 474 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 475 | CONFIG_SPIFFS_USE_MAGIC=y 476 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 477 | 478 | # 479 | # Debug Configuration 480 | # 481 | CONFIG_SPIFFS_DBG= 482 | CONFIG_SPIFFS_API_DBG= 483 | CONFIG_SPIFFS_GC_DBG= 484 | CONFIG_SPIFFS_CACHE_DBG= 485 | CONFIG_SPIFFS_CHECK_DBG= 486 | CONFIG_SPIFFS_TEST_VISUALISATION= 487 | 488 | # 489 | # tcpip adapter 490 | # 491 | CONFIG_IP_LOST_TIMER_INTERVAL=120 492 | 493 | # 494 | # Wear Levelling 495 | # 496 | CONFIG_WL_SECTOR_SIZE_512= 497 | CONFIG_WL_SECTOR_SIZE_4096=y 498 | CONFIG_WL_SECTOR_SIZE=4096 499 | -------------------------------------------------------------------------------- /sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_PARTITION_TABLE_CUSTOM=y 2 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 3 | CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000 4 | CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" 5 | CONFIG_APP_OFFSET=0x10000 6 | -------------------------------------------------------------------------------- /sdkconfig.old: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file; DO NOT EDIT. 3 | # Espressif IoT Development Framework Configuration 4 | # 5 | 6 | # 7 | # SDK tool configuration 8 | # 9 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 10 | CONFIG_PYTHON="python" 11 | CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y 12 | 13 | # 14 | # Bootloader config 15 | # 16 | CONFIG_LOG_BOOTLOADER_LEVEL_NONE= 17 | CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= 18 | CONFIG_LOG_BOOTLOADER_LEVEL_WARN= 19 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 20 | CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= 21 | CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= 22 | CONFIG_LOG_BOOTLOADER_LEVEL=3 23 | CONFIG_BOOTLOADER_VDDSDIO_BOOST=y 24 | 25 | # 26 | # Security features 27 | # 28 | CONFIG_SECURE_BOOT_ENABLED= 29 | CONFIG_FLASH_ENCRYPTION_ENABLED= 30 | 31 | # 32 | # Serial flasher config 33 | # 34 | CONFIG_ESPTOOLPY_PORT="/dev/tty.usbserial-DN02BJ7H" 35 | CONFIG_ESPTOOLPY_BAUD_115200B= 36 | CONFIG_ESPTOOLPY_BAUD_230400B= 37 | CONFIG_ESPTOOLPY_BAUD_921600B=y 38 | CONFIG_ESPTOOLPY_BAUD_2MB= 39 | CONFIG_ESPTOOLPY_BAUD_OTHER= 40 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 41 | CONFIG_ESPTOOLPY_BAUD=921600 42 | CONFIG_ESPTOOLPY_COMPRESSED=y 43 | CONFIG_FLASHMODE_QIO= 44 | CONFIG_FLASHMODE_QOUT= 45 | CONFIG_FLASHMODE_DIO=y 46 | CONFIG_FLASHMODE_DOUT= 47 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 48 | CONFIG_ESPTOOLPY_FLASHFREQ_80M= 49 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 50 | CONFIG_ESPTOOLPY_FLASHFREQ_26M= 51 | CONFIG_ESPTOOLPY_FLASHFREQ_20M= 52 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 53 | CONFIG_ESPTOOLPY_FLASHSIZE_1MB= 54 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB= 55 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 56 | CONFIG_ESPTOOLPY_FLASHSIZE_8MB= 57 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB= 58 | CONFIG_ESPTOOLPY_FLASHSIZE="4MB" 59 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 60 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 61 | CONFIG_ESPTOOLPY_BEFORE_NORESET= 62 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 63 | CONFIG_ESPTOOLPY_AFTER_RESET=y 64 | CONFIG_ESPTOOLPY_AFTER_NORESET= 65 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 66 | CONFIG_MONITOR_BAUD_9600B= 67 | CONFIG_MONITOR_BAUD_57600B= 68 | CONFIG_MONITOR_BAUD_115200B=y 69 | CONFIG_MONITOR_BAUD_230400B= 70 | CONFIG_MONITOR_BAUD_921600B= 71 | CONFIG_MONITOR_BAUD_2MB= 72 | CONFIG_MONITOR_BAUD_OTHER= 73 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 74 | CONFIG_MONITOR_BAUD=115200 75 | 76 | # 77 | # Partition Table 78 | # 79 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 80 | CONFIG_PARTITION_TABLE_TWO_OTA= 81 | CONFIG_PARTITION_TABLE_CUSTOM= 82 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 83 | CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000 84 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 85 | CONFIG_APP_OFFSET=0x10000 86 | 87 | # 88 | # Compiler options 89 | # 90 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 91 | CONFIG_OPTIMIZATION_LEVEL_RELEASE= 92 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 93 | CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= 94 | CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= 95 | CONFIG_CXX_EXCEPTIONS= 96 | 97 | # 98 | # Component config 99 | # 100 | 101 | # 102 | # Application Level Tracing 103 | # 104 | CONFIG_ESP32_APPTRACE_DEST_TRAX= 105 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 106 | CONFIG_ESP32_APPTRACE_ENABLE= 107 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 108 | 109 | # 110 | # FreeRTOS SystemView Tracing 111 | # 112 | CONFIG_AWS_IOT_SDK= 113 | 114 | # 115 | # Bluetooth 116 | # 117 | CONFIG_BT_ENABLED= 118 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 119 | CONFIG_BT_RESERVE_DRAM=0 120 | 121 | # 122 | # ESP32-specific 123 | # 124 | CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 125 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 126 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240= 127 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 128 | CONFIG_MEMMAP_SMP=y 129 | CONFIG_SPIRAM_SUPPORT= 130 | CONFIG_MEMMAP_TRACEMEM= 131 | CONFIG_MEMMAP_TRACEMEM_TWOBANKS= 132 | CONFIG_ESP32_TRAX= 133 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 134 | CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= 135 | CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= 136 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 137 | CONFIG_ESP32_ENABLE_COREDUMP= 138 | CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= 139 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 140 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 141 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 142 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=4096 143 | CONFIG_MAIN_TASK_STACK_SIZE=4096 144 | CONFIG_IPC_TASK_STACK_SIZE=1024 145 | CONFIG_TIMER_TASK_STACK_SIZE=4096 146 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 147 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= 148 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= 149 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= 150 | CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= 151 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 152 | CONFIG_NEWLIB_NANO_FORMAT= 153 | CONFIG_CONSOLE_UART_DEFAULT=y 154 | CONFIG_CONSOLE_UART_CUSTOM= 155 | CONFIG_CONSOLE_UART_NONE= 156 | CONFIG_CONSOLE_UART_NUM=0 157 | CONFIG_CONSOLE_UART_BAUDRATE=115200 158 | CONFIG_ULP_COPROC_ENABLED= 159 | CONFIG_ULP_COPROC_RESERVE_MEM=0 160 | CONFIG_ESP32_PANIC_PRINT_HALT= 161 | CONFIG_ESP32_PANIC_PRINT_REBOOT=y 162 | CONFIG_ESP32_PANIC_SILENT_REBOOT= 163 | CONFIG_ESP32_PANIC_GDBSTUB= 164 | CONFIG_ESP32_DEBUG_OCDAWARE=y 165 | CONFIG_INT_WDT=y 166 | CONFIG_INT_WDT_TIMEOUT_MS=300 167 | CONFIG_INT_WDT_CHECK_CPU1=y 168 | CONFIG_TASK_WDT=y 169 | CONFIG_TASK_WDT_PANIC= 170 | CONFIG_TASK_WDT_TIMEOUT_S=5 171 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 172 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 173 | CONFIG_BROWNOUT_DET=y 174 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 175 | CONFIG_BROWNOUT_DET_LVL_SEL_1= 176 | CONFIG_BROWNOUT_DET_LVL_SEL_2= 177 | CONFIG_BROWNOUT_DET_LVL_SEL_3= 178 | CONFIG_BROWNOUT_DET_LVL_SEL_4= 179 | CONFIG_BROWNOUT_DET_LVL_SEL_5= 180 | CONFIG_BROWNOUT_DET_LVL_SEL_6= 181 | CONFIG_BROWNOUT_DET_LVL_SEL_7= 182 | CONFIG_BROWNOUT_DET_LVL=0 183 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC= 184 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 185 | CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= 186 | CONFIG_ESP32_TIME_SYSCALL_USE_NONE= 187 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 188 | CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= 189 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 190 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 191 | CONFIG_ESP32_XTAL_FREQ_40= 192 | CONFIG_ESP32_XTAL_FREQ_26=y 193 | CONFIG_ESP32_XTAL_FREQ_AUTO= 194 | CONFIG_ESP32_XTAL_FREQ=26 195 | CONFIG_DISABLE_BASIC_ROM_CONSOLE= 196 | CONFIG_NO_BLOBS= 197 | 198 | # 199 | # Wi-Fi 200 | # 201 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 202 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 203 | CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= 204 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 205 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 206 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 207 | CONFIG_ESP32_WIFI_AMPDU_ENABLED=y 208 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 209 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 210 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 211 | 212 | # 213 | # PHY 214 | # 215 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 216 | CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= 217 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 218 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 219 | 220 | # 221 | # Power Management 222 | # 223 | CONFIG_PM_ENABLE= 224 | 225 | # 226 | # Ethernet 227 | # 228 | CONFIG_DMA_RX_BUF_NUM=10 229 | CONFIG_DMA_TX_BUF_NUM=10 230 | CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE= 231 | CONFIG_EMAC_TASK_PRIORITY=20 232 | 233 | # 234 | # FAT Filesystem support 235 | # 236 | CONFIG_FATFS_CODEPAGE_ASCII=y 237 | CONFIG_FATFS_CODEPAGE_437= 238 | CONFIG_FATFS_CODEPAGE_720= 239 | CONFIG_FATFS_CODEPAGE_737= 240 | CONFIG_FATFS_CODEPAGE_771= 241 | CONFIG_FATFS_CODEPAGE_775= 242 | CONFIG_FATFS_CODEPAGE_850= 243 | CONFIG_FATFS_CODEPAGE_852= 244 | CONFIG_FATFS_CODEPAGE_855= 245 | CONFIG_FATFS_CODEPAGE_857= 246 | CONFIG_FATFS_CODEPAGE_860= 247 | CONFIG_FATFS_CODEPAGE_861= 248 | CONFIG_FATFS_CODEPAGE_862= 249 | CONFIG_FATFS_CODEPAGE_863= 250 | CONFIG_FATFS_CODEPAGE_864= 251 | CONFIG_FATFS_CODEPAGE_865= 252 | CONFIG_FATFS_CODEPAGE_866= 253 | CONFIG_FATFS_CODEPAGE_869= 254 | CONFIG_FATFS_CODEPAGE_932= 255 | CONFIG_FATFS_CODEPAGE_936= 256 | CONFIG_FATFS_CODEPAGE_949= 257 | CONFIG_FATFS_CODEPAGE_950= 258 | CONFIG_FATFS_CODEPAGE=1 259 | CONFIG_FATFS_MAX_LFN=255 260 | 261 | # 262 | # FreeRTOS 263 | # 264 | CONFIG_FREERTOS_UNICORE= 265 | CONFIG_FREERTOS_CORETIMER_0=y 266 | CONFIG_FREERTOS_CORETIMER_1= 267 | CONFIG_FREERTOS_HZ=100 268 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 269 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= 270 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= 271 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 272 | CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= 273 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 274 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 275 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 276 | CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= 277 | CONFIG_FREERTOS_ASSERT_DISABLE= 278 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024 279 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 280 | CONFIG_FREERTOS_LEGACY_HOOKS= 281 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 282 | CONFIG_SUPPORT_STATIC_ALLOCATION= 283 | CONFIG_TIMER_TASK_PRIORITY=1 284 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 285 | CONFIG_TIMER_QUEUE_LENGTH=10 286 | CONFIG_FREERTOS_USE_TRACE_FACILITY= 287 | CONFIG_FREERTOS_DEBUG_INTERNALS= 288 | 289 | # 290 | # Heap memory debugging 291 | # 292 | CONFIG_HEAP_POISONING_DISABLED=y 293 | CONFIG_HEAP_POISONING_LIGHT= 294 | CONFIG_HEAP_POISONING_COMPREHENSIVE= 295 | CONFIG_HEAP_TRACING= 296 | 297 | # 298 | # libsodium 299 | # 300 | CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y 301 | 302 | # 303 | # Log output 304 | # 305 | CONFIG_LOG_DEFAULT_LEVEL_NONE= 306 | CONFIG_LOG_DEFAULT_LEVEL_ERROR= 307 | CONFIG_LOG_DEFAULT_LEVEL_WARN= 308 | CONFIG_LOG_DEFAULT_LEVEL_INFO= 309 | CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y 310 | CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= 311 | CONFIG_LOG_DEFAULT_LEVEL=4 312 | CONFIG_LOG_COLORS=y 313 | 314 | # 315 | # LWIP 316 | # 317 | CONFIG_L2_TO_L3_COPY= 318 | CONFIG_LWIP_MAX_SOCKETS=10 319 | CONFIG_LWIP_SO_REUSE=y 320 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 321 | CONFIG_LWIP_SO_RCVBUF= 322 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 323 | CONFIG_LWIP_IP_FRAG= 324 | CONFIG_LWIP_IP_REASSEMBLY= 325 | CONFIG_LWIP_STATS= 326 | CONFIG_LWIP_ETHARP_TRUST_IP_MAC=y 327 | CONFIG_TCPIP_RECVMBOX_SIZE=32 328 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 329 | CONFIG_LWIP_AUTOIP= 330 | CONFIG_LWIP_NETIF_LOOPBACK=y 331 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 332 | 333 | # 334 | # TCP 335 | # 336 | CONFIG_TCP_MAXRTX=12 337 | CONFIG_TCP_SYNMAXRTX=6 338 | CONFIG_TCP_MSS=1436 339 | CONFIG_TCP_MSL=60000 340 | CONFIG_TCP_SND_BUF_DEFAULT=5744 341 | CONFIG_TCP_WND_DEFAULT=5744 342 | CONFIG_TCP_RECVMBOX_SIZE=6 343 | CONFIG_TCP_QUEUE_OOSEQ=y 344 | CONFIG_TCP_OVERSIZE_MSS=y 345 | CONFIG_TCP_OVERSIZE_QUARTER_MSS= 346 | CONFIG_TCP_OVERSIZE_DISABLE= 347 | 348 | # 349 | # UDP 350 | # 351 | CONFIG_UDP_RECVMBOX_SIZE=6 352 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 353 | CONFIG_PPP_SUPPORT= 354 | 355 | # 356 | # ICMP 357 | # 358 | CONFIG_LWIP_MULTICAST_PING= 359 | CONFIG_LWIP_BROADCAST_PING= 360 | 361 | # 362 | # mbedTLS 363 | # 364 | CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 365 | CONFIG_MBEDTLS_DEBUG= 366 | CONFIG_MBEDTLS_HARDWARE_AES=y 367 | CONFIG_MBEDTLS_HARDWARE_MPI= 368 | CONFIG_MBEDTLS_HARDWARE_SHA= 369 | CONFIG_MBEDTLS_HAVE_TIME=y 370 | CONFIG_MBEDTLS_HAVE_TIME_DATE= 371 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 372 | CONFIG_MBEDTLS_TLS_SERVER_ONLY= 373 | CONFIG_MBEDTLS_TLS_CLIENT_ONLY= 374 | CONFIG_MBEDTLS_TLS_DISABLED= 375 | CONFIG_MBEDTLS_TLS_SERVER=y 376 | CONFIG_MBEDTLS_TLS_CLIENT=y 377 | CONFIG_MBEDTLS_TLS_ENABLED=y 378 | 379 | # 380 | # TLS Key Exchange Methods 381 | # 382 | CONFIG_MBEDTLS_PSK_MODES= 383 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 384 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 385 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 386 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 387 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 388 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 389 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 390 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 391 | CONFIG_MBEDTLS_SSL_PROTO_SSL3= 392 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 393 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 394 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 395 | CONFIG_MBEDTLS_SSL_PROTO_DTLS= 396 | CONFIG_MBEDTLS_SSL_ALPN=y 397 | CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y 398 | 399 | # 400 | # Symmetric Ciphers 401 | # 402 | CONFIG_MBEDTLS_AES_C=y 403 | CONFIG_MBEDTLS_CAMELLIA_C= 404 | CONFIG_MBEDTLS_DES_C= 405 | CONFIG_MBEDTLS_RC4_DISABLED=y 406 | CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= 407 | CONFIG_MBEDTLS_RC4_ENABLED= 408 | CONFIG_MBEDTLS_BLOWFISH_C= 409 | CONFIG_MBEDTLS_XTEA_C= 410 | CONFIG_MBEDTLS_CCM_C=y 411 | CONFIG_MBEDTLS_GCM_C=y 412 | CONFIG_MBEDTLS_RIPEMD160_C= 413 | 414 | # 415 | # Certificates 416 | # 417 | CONFIG_MBEDTLS_PEM_PARSE_C=y 418 | CONFIG_MBEDTLS_PEM_WRITE_C=y 419 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 420 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 421 | CONFIG_MBEDTLS_ECP_C=y 422 | CONFIG_MBEDTLS_ECDH_C=y 423 | CONFIG_MBEDTLS_ECDSA_C=y 424 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 425 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 426 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 427 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 428 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 429 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 430 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 431 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 432 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 433 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 434 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 435 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 436 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 437 | 438 | # 439 | # OpenSSL 440 | # 441 | CONFIG_OPENSSL_DEBUG= 442 | CONFIG_OPENSSL_ASSERT_DO_NOTHING=y 443 | CONFIG_OPENSSL_ASSERT_EXIT= 444 | 445 | # 446 | # PThreads 447 | # 448 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 449 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=2048 450 | 451 | # 452 | # SPI Flash driver 453 | # 454 | CONFIG_SPI_FLASH_ENABLE_COUNTERS= 455 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 456 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 457 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= 458 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= 459 | 460 | # 461 | # SPIFFS Configuration 462 | # 463 | CONFIG_SPIFFS_MAX_PARTITIONS=3 464 | 465 | # 466 | # SPIFFS Cache Configuration 467 | # 468 | CONFIG_SPIFFS_CACHE=y 469 | CONFIG_SPIFFS_CACHE_WR=y 470 | CONFIG_SPIFFS_CACHE_STATS= 471 | CONFIG_SPIFFS_PAGE_CHECK=y 472 | CONFIG_SPIFFS_GC_MAX_RUNS=10 473 | CONFIG_SPIFFS_GC_STATS= 474 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 475 | CONFIG_SPIFFS_USE_MAGIC=y 476 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 477 | 478 | # 479 | # Debug Configuration 480 | # 481 | CONFIG_SPIFFS_DBG= 482 | CONFIG_SPIFFS_API_DBG= 483 | CONFIG_SPIFFS_GC_DBG= 484 | CONFIG_SPIFFS_CACHE_DBG= 485 | CONFIG_SPIFFS_CHECK_DBG= 486 | CONFIG_SPIFFS_TEST_VISUALISATION= 487 | 488 | # 489 | # tcpip adapter 490 | # 491 | CONFIG_IP_LOST_TIMER_INTERVAL=120 492 | 493 | # 494 | # Wear Levelling 495 | # 496 | CONFIG_WL_SECTOR_SIZE_512= 497 | CONFIG_WL_SECTOR_SIZE_4096=y 498 | CONFIG_WL_SECTOR_SIZE=4096 499 | --------------------------------------------------------------------------------