From 055083ffbaef0c5b8f04d279f0bb424b6fc5d794 Mon Sep 17 00:00:00 2001 From: "jacob.eva" Date: Mon, 20 May 2024 20:14:16 +0100 Subject: [PATCH] Added RAK4631 e-ink display support --- Bluetooth.h | 17 +- Boards.h | 24 +- Display.h | 691 ++++++++++++++--- Graphics.h | 1674 ++++++++++++++++++++++++++++++++++++----- Power.h | 95 +++ RNode_Firmware_CE.ino | 10 + 6 files changed, 2183 insertions(+), 328 deletions(-) diff --git a/Bluetooth.h b/Bluetooth.h index 38951f7..d1d339a 100644 --- a/Bluetooth.h +++ b/Bluetooth.h @@ -13,12 +13,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#if MCU_VARIANT == MCU_ESP32 - - -#elif MCU_VARIANT == MCU_NRF52 -#endif - #if MCU_VARIANT == MCU_ESP32 #if HAS_BLUETOOTH == true #include "BluetoothSerial.h" @@ -265,6 +259,8 @@ void bt_disable_pairing() { void bt_pairing_complete(uint16_t conn_handle, uint8_t auth_status) { if (auth_status == BLE_GAP_SEC_STATUS_SUCCESS) { + bt_state = BT_STATE_CONNECTED; + cable_state = CABLE_STATE_DISCONNECTED; bt_disable_pairing(); } else { bt_ssp_pin = 0; @@ -285,11 +281,6 @@ bool bt_passkey_callback(uint16_t conn_handle, uint8_t const passkey[6], bool ma return false; } -void bt_connect_callback(uint16_t conn_handle) { - bt_state = BT_STATE_CONNECTED; - cable_state = CABLE_STATE_DISCONNECTED; -} - void bt_disconnect_callback(uint16_t conn_handle, uint8_t reason) { bt_state = BT_STATE_ON; } @@ -308,10 +299,9 @@ bool bt_setup_hw() { Bluefruit.configPrphBandwidth(BANDWIDTH_MAX); Bluefruit.autoConnLed(false); if (Bluefruit.begin()) { - Bluefruit.setTxPower(4); // Check bluefruit.h for supported values + Bluefruit.setTxPower(8); // Check bluefruit.h for supported values Bluefruit.Security.setIOCaps(true, true, false); Bluefruit.Security.setPairPasskeyCallback(bt_passkey_callback); - Bluefruit.Periph.setConnectCallback(bt_connect_callback); Bluefruit.Periph.setDisconnectCallback(bt_disconnect_callback); Bluefruit.Security.setPairCompleteCallback(bt_pairing_complete); const ble_gap_addr_t gap_addr = Bluefruit.getAddr(); @@ -348,7 +338,6 @@ void bt_start() { blebas.begin(); - // non-connectable advertising Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); Bluefruit.Advertising.addTxPower(); diff --git a/Boards.h b/Boards.h index 0eb5c2b..3105439 100644 --- a/Boards.h +++ b/Boards.h @@ -43,6 +43,10 @@ #define BOARD_GENERIC_NRF52 0x50 #define BOARD_RAK4631 0x51 + #define OLED 0x01 + #define EINK_BW 0x02 + #define EINK_3C 0x03 + #if defined(__AVR_ATmega1284P__) #define PLATFORM PLATFORM_AVR #define MCU_VARIANT MCU_1284P @@ -147,6 +151,7 @@ #elif BOARD_MODEL == BOARD_TBEAM #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_PMU true #define HAS_BLUETOOTH true #define HAS_BLE true @@ -184,6 +189,7 @@ #elif BOARD_MODEL == BOARD_LORA32_V1_0 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_BLE true #define HAS_CONSOLE true @@ -201,6 +207,7 @@ #elif BOARD_MODEL == BOARD_LORA32_V2_0 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_BLE true #define HAS_CONSOLE true @@ -218,6 +225,7 @@ #elif BOARD_MODEL == BOARD_LORA32_V2_1 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_BLE true #define HAS_PMU true @@ -239,6 +247,7 @@ #elif BOARD_MODEL == BOARD_HELTEC32_V2 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_CONSOLE true #define HAS_EEPROM true @@ -292,6 +301,7 @@ #elif BOARD_MODEL == BOARD_RNODE_NG_20 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_NP true #define HAS_CONSOLE true @@ -312,6 +322,7 @@ #elif BOARD_MODEL == BOARD_RNODE_NG_21 #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_BLUETOOTH true #define HAS_CONSOLE true #define HAS_PMU true @@ -346,6 +357,7 @@ #define HAS_TCXO true #define HAS_DISPLAY true + #define DISPLAY OLED #define HAS_CONSOLE false #define HAS_BLUETOOTH false #define HAS_BLE true @@ -397,11 +409,12 @@ #elif MCU_VARIANT == MCU_NRF52 #if BOARD_MODEL == BOARD_RAK4631 #define HAS_EEPROM false - #define HAS_DISPLAY false + #define HAS_DISPLAY true + #define DISPLAY EINK_3C #define HAS_BLUETOOTH false #define HAS_BLE true #define HAS_CONSOLE false - #define HAS_PMU false + #define HAS_PMU true #define HAS_NP false #define HAS_SD false #define HAS_TCXO true @@ -425,6 +438,13 @@ const int pin_miso = 45; const int pin_busy = 46; const int pin_dio = 47; + + const int pin_disp_cs = SS; + const int pin_disp_dc = WB_IO1; + const int pin_disp_reset = -1; + const int pin_disp_busy = WB_IO4; + const int pin_disp_en = WB_IO2; + const int pin_led_rx = LED_BLUE; const int pin_led_tx = LED_GREEN; const int pin_tcxo_enable = -1; diff --git a/Display.h b/Display.h index dd24475..d566a53 100644 --- a/Display.h +++ b/Display.h @@ -13,47 +13,112 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "Graphics.h" -#include + #include + +#if DISPLAY == OLED +#include #include -#include "Fonts/Org_01.h" #define DISP_W 128 #define DISP_H 64 +#elif DISPLAY == EINK_BW || DISPLAY == EINK_3C +void (*display_callback)(); +void display_add_callback(void (*callback)()) { + display_callback = callback; +} +void busyCallback(const void* p) { + display_callback(); +} +#endif +#if DISPLAY == EINK_BW +// use GxEPD2 because adafruit EPD support for partial refresh is bad +#include +#include +#elif DISPLAY == EINK_3C +#include +#include +#endif + +#include "Fonts/Org_01.h" #if BOARD_MODEL == BOARD_RNODE_NG_20 || BOARD_MODEL == BOARD_LORA32_V2_0 + #if BOARD_TYPE == OLED #define DISP_RST -1 #define DISP_ADDR 0x3C + #endif #elif BOARD_MODEL == BOARD_TBEAM + #if BOARD_TYPE == OLED #define DISP_RST 13 #define DISP_ADDR 0x3C #define DISP_CUSTOM_ADDR true + #endif #elif BOARD_MODEL == BOARD_HELTEC32_V2 || BOARD_MODEL == BOARD_LORA32_V1_0 + #if BOARD_TYPE == OLED #define DISP_RST 16 #define DISP_ADDR 0x3C #define SCL_OLED 15 #define SDA_OLED 4 + #endif #elif BOARD_MODEL == BOARD_HELTEC32_V3 #define DISP_RST 21 #define DISP_ADDR 0x3C #define SCL_OLED 18 #define SDA_OLED 17 #elif BOARD_MODEL == BOARD_RNODE_NG_21 + #if BOARD_TYPE == OLED #define DISP_RST -1 #define DISP_ADDR 0x3C + #endif #elif BOARD_MODEL == BOARD_RNODE_NG_22 + #if BOARD_TYPE == OLED #define DISP_RST 21 #define DISP_ADDR 0x3C #define SCL_OLED 17 #define SDA_OLED 18 + #endif +#elif BOARD_MODEL == BOARD_RAK4631 + #if DISPLAY == OLED + // todo: add support for OLED board + #elif DISPLAY == EINK_BW + #define DISP_W 250 + #define DISP_H 122 + #define DISP_ADDR -1 + #define DISPLAY_MODEL GxEPD2_213_BN + #elif DISPLAY == EINK_3C + #define DISP_W 250 + #define DISP_H 122 + #define DISP_ADDR -1 + #define DISPLAY_MODEL GxEPD2_213_Z98c + #endif #else #define DISP_RST -1 #define DISP_ADDR 0x3C #define DISP_CUSTOM_ADDR true #endif +#define UNSCALED_MAX 64 + #define SMALL_FONT &Org_01 +#include "Graphics.h" + +#if BOARD_MODEL != BOARD_RAK4631 +// support for BOARD_RAK4631 OLED not implemented yet +#if DISPLAY == OLED Adafruit_SSD1306 display(DISP_W, DISP_H, &Wire, DISP_RST); +float disp_target_fps = 7; +#endif +#endif +#if BOARD_MODEL == BOARD_RAK4631 +#if DISPLAY == EINK_BW +GxEPD2_BW display(DISPLAY_MODEL(pin_disp_cs, pin_disp_dc, pin_disp_reset, pin_disp_busy)); +float disp_target_fps = 0.2; +#elif DISPLAY == EINK_3C +GxEPD2_3C display(DISPLAY_MODEL(pin_disp_cs, pin_disp_dc, pin_disp_reset, pin_disp_busy)); +float disp_target_fps = 0.05; // refresh usually takes longer on 3C, hence 4x the refresh period +#endif +#else +// add more eink compatible boards here +#endif #define DISP_MODE_UNKNOWN 0x00 #define DISP_MODE_LANDSCAPE 0x01 @@ -63,14 +128,20 @@ uint8_t disp_mode = DISP_MODE_UNKNOWN; uint8_t disp_ext_fb = false; unsigned char fb[512]; uint32_t last_disp_update = 0; -uint8_t disp_target_fps = 7; int disp_update_interval = 1000/disp_target_fps; uint32_t last_page_flip = 0; int page_interval = 4000; bool device_signatures_ok(); bool device_firmware_ok(); +#if DISPLAY == OLED #define WATERFALL_SIZE 46 +#elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) +#define WATERFALL_SIZE 92 +#else +// add more eink compatible boards here +#endif + int waterfall[WATERFALL_SIZE]; int waterfall_head = 0; @@ -79,28 +150,35 @@ int p_ad_y = 0; int p_as_x = 0; int p_as_y = 0; +#if DISPLAY == OLED GFXcanvas1 stat_area(64, 64); GFXcanvas1 disp_area(64, 64); +#elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) +GFXcanvas1 stat_area(DISP_H, DISP_W/2); +GFXcanvas1 disp_area(DISP_H, DISP_W/2); +#endif void update_area_positions() { if (disp_mode == DISP_MODE_PORTRAIT) { p_ad_x = 0; p_ad_y = 0; p_as_x = 0; - p_as_y = 64; + p_as_y = DISP_H; } else if (disp_mode == DISP_MODE_LANDSCAPE) { p_ad_x = 0; p_ad_y = 0; - p_as_x = 64; + p_as_x = DISP_H; p_as_y = 0; } } uint8_t display_contrast = 0x00; +#if DISPLAY == OLED void set_contrast(Adafruit_SSD1306 *display, uint8_t contrast) { - display->ssd1306_command(SSD1306_SETCONTRAST); - display->ssd1306_command(contrast); + display.ssd1306_command(SSD1306_SETCONTRAST); + display.ssd1306_command(contrast); } +#endif bool display_init() { #if HAS_DISPLAY @@ -131,6 +209,20 @@ bool display_init() { delay(50); digitalWrite(pin_display_en, HIGH); Wire.begin(SDA_OLED, SCL_OLED); + #elif BOARD_MODEL == BOARD_RAK4631 + #if DISPLAY == OLED + #elif DISPLAY == EINK_BW || DISPLAY == EINK_3C + pinMode(pin_disp_en, INPUT_PULLUP); + digitalWrite(pin_disp_en, HIGH); + display.init(0, true, 10, false, SPI, SPISettings(4000000, MSBFIRST, SPI_MODE0)); + display.setPartialWindow(0, 0, DISP_W, DISP_H); + + // Because refreshing this display can take some time, sometimes serial + // commands will be missed. Therefore, during periods where the device is + // waiting for the display to update, it will poll the serial buffer to + // check for any commands from the host. + display.epd2.setBusyCallback(busyCallback); + #endif #endif #if DISP_CUSTOM_ADDR == true @@ -144,11 +236,18 @@ bool display_init() { uint8_t display_address = DISP_ADDR; #endif - + + #if DISPLAY == OLED if(!display.begin(SSD1306_SWITCHCAPVCC, display_address)) { + #elif DISPLAY == EINK_BW || DISPLAY == EINK_3C + // don't check if display is actually connected + if(false) { + #endif return false; } else { - set_contrast(&display, display_contrast); + #if DISPLAY == OLED + set_contrast(&display, display_contrast); + #endif #if BOARD_MODEL == BOARD_RNODE_NG_20 disp_mode = DISP_MODE_PORTRAIT; display.setRotation(3); @@ -170,6 +269,11 @@ bool display_init() { #elif BOARD_MODEL == BOARD_HELTEC32_V2 disp_mode = DISP_MODE_PORTRAIT; display.setRotation(1); + #elif BOARD_MODEL == BOARD_RAK4631 + #if DISPLAY == OLED + #elif DISPLAY == EINK_BW || DISPLAY == EINK_3C + disp_mode = DISP_MODE_PORTRAIT; + #endif #elif BOARD_MODEL == BOARD_HELTEC32_V3 disp_mode = DISP_MODE_PORTRAIT; // Antenna conx up @@ -193,9 +297,9 @@ bool display_init() { display.cp437(true); #if HAS_EEPROM - uint8_t display_intensity = EEPROM.read(eeprom_addr(ADDR_CONF_DINT)); + display_intensity = EEPROM.read(eeprom_addr(ADDR_CONF_DINT)); #elif MCU_VARIANT == MCU_NRF52 - uint8_t display_intensity = eeprom_read(eeprom_addr(ADDR_CONF_DINT)); + display_intensity = eeprom_read(eeprom_addr(ADDR_CONF_DINT)); #endif return true; @@ -207,39 +311,83 @@ bool display_init() { void draw_cable_icon(int px, int py) { if (cable_state == CABLE_STATE_DISCONNECTED) { - stat_area.drawBitmap(px, py, bm_cable+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_cable+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_cable+0*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else if (cable_state == CABLE_STATE_CONNECTED) { - stat_area.drawBitmap(px, py, bm_cable+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_cable+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_cable+1*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } } void draw_bt_icon(int px, int py) { if (bt_state == BT_STATE_OFF) { - stat_area.drawBitmap(px, py, bm_bt+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_bt+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_bt+0*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else if (bt_state == BT_STATE_ON) { - stat_area.drawBitmap(px, py, bm_bt+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_bt+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_bt+1*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else if (bt_state == BT_STATE_PAIRING) { - stat_area.drawBitmap(px, py, bm_bt+2*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_bt+2*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_bt+2*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else if (bt_state == BT_STATE_CONNECTED) { - stat_area.drawBitmap(px, py, bm_bt+3*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_bt+3*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_bt+3*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - stat_area.drawBitmap(px, py, bm_bt+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_bt+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_bt+0*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } } void draw_lora_icon(int px, int py) { if (radio_online) { - stat_area.drawBitmap(px, py, bm_rf+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_rf+1*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_rf+1*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - stat_area.drawBitmap(px, py, bm_rf+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_rf+0*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_rf+0*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } } void draw_mw_icon(int px, int py) { if (mw_radio_online) { - stat_area.drawBitmap(px, py, bm_rf+3*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_rf+3*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_rf+3*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - stat_area.drawBitmap(px, py, bm_rf+2*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.drawBitmap(px, py, bm_rf+2*32, 16, 16, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(px, py, bm_rf+2*128, 30, 32, GxEPD_WHITE, GxEPD_BLACK); + #endif } } @@ -257,34 +405,71 @@ void draw_battery_bars(int px, int py) { } if (battery_indeterminate && battery_state == BATTERY_STATE_CHARGING) { - stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); - stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); + stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px-2, py-2, 24, 9, GxEPD_BLACK); + stat_area.drawBitmap(px-2, py-5, bm_plug, 34, 13, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { if (battery_state == BATTERY_STATE_CHARGED) { - stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); - stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); + stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px-2, py-2, 24, 9, GxEPD_BLACK); + stat_area.drawBitmap(px-2, py-5, bm_plug, 34, 13, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - // stat_area.fillRect(px, py, 14, 3, SSD1306_BLACK); - stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); - stat_area.drawRect(px-2, py-2, 17, 7, SSD1306_WHITE); - stat_area.drawLine(px+15, py, px+15, py+3, SSD1306_WHITE); - if (battery_value > 7) stat_area.drawLine(px, py, px, py+2, SSD1306_WHITE); - if (battery_value > 20) stat_area.drawLine(px+1*2, py, px+1*2, py+2, SSD1306_WHITE); - if (battery_value > 33) stat_area.drawLine(px+2*2, py, px+2*2, py+2, SSD1306_WHITE); - if (battery_value > 46) stat_area.drawLine(px+3*2, py, px+3*2, py+2, SSD1306_WHITE); - if (battery_value > 59) stat_area.drawLine(px+4*2, py, px+4*2, py+2, SSD1306_WHITE); - if (battery_value > 72) stat_area.drawLine(px+5*2, py, px+5*2, py+2, SSD1306_WHITE); - if (battery_value > 85) stat_area.drawLine(px+6*2, py, px+6*2, py+2, SSD1306_WHITE); + #if DISPLAY == OLED + stat_area.fillRect(px, py, 14, 3, SSD1306_BLACK); + stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); + stat_area.drawRect(px-2, py-2, 17, 7, SSD1306_WHITE); + stat_area.drawLine(px+15, py, px+15, py+3, SSD1306_WHITE); + if (battery_value > 7) stat_area.drawLine(px, py, px, py+2, SSD1306_WHITE); + if (battery_value > 20) stat_area.drawLine(px+1*2, py, px+1*2, py+2, SSD1306_WHITE); + if (battery_value > 33) stat_area.drawLine(px+2*2, py, px+2*2, py+2, SSD1306_WHITE); + if (battery_value > 46) stat_area.drawLine(px+3*2, py, px+3*2, py+2, SSD1306_WHITE); + if (battery_value > 59) stat_area.drawLine(px+4*2, py, px+4*2, py+2, SSD1306_WHITE); + if (battery_value > 72) stat_area.drawLine(px+5*2, py, px+5*2, py+2, SSD1306_WHITE); + if (battery_value > 85) stat_area.drawLine(px+6*2, py, px+6*2, py+2, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px, py, 20, 5, GxEPD_BLACK); + stat_area.fillRect(px-2, py-4, 34, 19, GxEPD_BLACK); + stat_area.drawRect(px-2, py-2, 23, 9, GxEPD_WHITE); + stat_area.drawLine(px+21, py, px+21, py+5, GxEPD_WHITE); + if (battery_value > 0) stat_area.drawLine(px, py, px, py+4, GxEPD_WHITE); + if (battery_value >= 10) stat_area.drawLine(px+1*2, py, px+1*2, py+4, GxEPD_WHITE); + if (battery_value >= 20) stat_area.drawLine(px+2*2, py, px+2*2, py+4, GxEPD_WHITE); + if (battery_value >= 30) stat_area.drawLine(px+3*2, py, px+3*2, py+4, GxEPD_WHITE); + if (battery_value >= 40) stat_area.drawLine(px+4*2, py, px+4*2, py+4, GxEPD_WHITE); + if (battery_value >= 50) stat_area.drawLine(px+5*2, py, px+5*2, py+4, GxEPD_WHITE); + if (battery_value >= 60) stat_area.drawLine(px+6*2, py, px+6*2, py+4, GxEPD_WHITE); + if (battery_value >= 70) stat_area.drawLine(px+7*2, py, px+7*2, py+4, GxEPD_WHITE); + if (battery_value >= 80) stat_area.drawLine(px+8*2, py, px+8*2, py+4, GxEPD_WHITE); + if (battery_value >= 90) stat_area.drawLine(px+9*2, py, px+9*2, py+4, GxEPD_WHITE); + #endif } } } else { + #if DISPLAY == OLED stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px-2, py-2, 24, 9, GxEPD_BLACK); + stat_area.drawBitmap(px-2, py-5, bm_plug, 34, 13, GxEPD_WHITE, GxEPD_BLACK); + #endif } } } else { + #if DISPLAY == OLED stat_area.fillRect(px-2, py-2, 18, 7, SSD1306_BLACK); stat_area.drawBitmap(px-2, py-2, bm_plug, 17, 7, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px-2, py-2, 24, 9, GxEPD_BLACK); + stat_area.drawBitmap(px-2, py-5, bm_plug, 34, 13, GxEPD_WHITE, GxEPD_BLACK); + #endif } } @@ -301,8 +486,8 @@ void draw_quality_bars(int px, int py) { if (quality > 100.0) quality = 100.0; if (quality < 0.0) quality = 0.0; + #if DISPLAY == OLED stat_area.fillRect(px, py, 13, 7, SSD1306_BLACK); - // Serial.printf("Last SNR: %.2f\n, quality: %.2f\n", snr, quality); if (quality > 0) stat_area.drawLine(px+0*2, py+7, px+0*2, py+6, SSD1306_WHITE); if (quality > 15) stat_area.drawLine(px+1*2, py+7, px+1*2, py+5, SSD1306_WHITE); if (quality > 30) stat_area.drawLine(px+2*2, py+7, px+2*2, py+4, SSD1306_WHITE); @@ -310,6 +495,38 @@ void draw_quality_bars(int px, int py) { if (quality > 60) stat_area.drawLine(px+4*2, py+7, px+4*2, py+2, SSD1306_WHITE); if (quality > 75) stat_area.drawLine(px+5*2, py+7, px+5*2, py+1, SSD1306_WHITE); if (quality > 90) stat_area.drawLine(px+6*2, py+7, px+6*2, py+0, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px, py, 26, 14, GxEPD_BLACK); + if (quality > 0) { + stat_area.drawLine(px+0*4, py+14, px+0*4, py+6, GxEPD_WHITE); + stat_area.drawLine(px+0*4+1, py+14, px+0*4+1, py+6, GxEPD_WHITE); + } + if (quality > 15) { + stat_area.drawLine(px+1*4, py+14, px+1*4, py+5, GxEPD_WHITE); + stat_area.drawLine(px+1*4+1, py+14, px+1*4+1, py+5, GxEPD_WHITE); + } + if (quality > 30) { + stat_area.drawLine(px+2*4, py+14, px+2*4, py+4, GxEPD_WHITE); + stat_area.drawLine(px+2*4+1, py+14, px+2*4+1, py+4, GxEPD_WHITE); + } + if (quality > 45) { + stat_area.drawLine(px+3*4, py+14, px+3*4, py+3, GxEPD_WHITE); + stat_area.drawLine(px+3*4+1, py+14, px+3*4+1, py+3, GxEPD_WHITE); + } + if (quality > 60) { + stat_area.drawLine(px+4*4, py+14, px+4*4, py+2, GxEPD_WHITE); + stat_area.drawLine(px+4*4+1, py+14, px+4*4+1, py+2, GxEPD_WHITE); + } + if (quality > 75) { + stat_area.drawLine(px+5*4, py+14, px+5*4, py+1, GxEPD_WHITE); + stat_area.drawLine(px+5*4+1, py+14, px+5*4+1, py+1, GxEPD_WHITE); + } + if (quality > 90) { + stat_area.drawLine(px+6*4, py+14, px+6*4, py+0, GxEPD_WHITE); + stat_area.drawLine(px+6*4+1, py+14, px+6*4+1, py+0, GxEPD_WHITE); + } + #endif + // Serial.printf("Last SNR: %.2f\n, quality: %.2f\n", snr, quality); } #define S_RSSI_MIN -135.0 @@ -324,8 +541,8 @@ void draw_signal_bars(int px, int py) { if (signal > 100.0) signal = 100.0; if (signal < 0.0) signal = 0.0; + #if DISPLAY == OLED stat_area.fillRect(px, py, 13, 7, SSD1306_BLACK); - // Serial.printf("Last SNR: %.2f\n, quality: %.2f\n", snr, quality); if (signal > 85) stat_area.drawLine(px+0*2, py+7, px+0*2, py+0, SSD1306_WHITE); if (signal > 72) stat_area.drawLine(px+1*2, py+7, px+1*2, py+1, SSD1306_WHITE); if (signal > 59) stat_area.drawLine(px+2*2, py+7, px+2*2, py+2, SSD1306_WHITE); @@ -333,12 +550,48 @@ void draw_signal_bars(int px, int py) { if (signal > 33) stat_area.drawLine(px+4*2, py+7, px+4*2, py+4, SSD1306_WHITE); if (signal > 20) stat_area.drawLine(px+5*2, py+7, px+5*2, py+5, SSD1306_WHITE); if (signal > 7) stat_area.drawLine(px+6*2, py+7, px+6*2, py+6, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px, py, 26, 14, GxEPD_BLACK); + if (signal > 85) { + stat_area.drawLine(px+0*4, py+14, px+0*4, py+0, GxEPD_WHITE); + stat_area.drawLine(px+0*4+1, py+14, px+0*4+1, py+0, GxEPD_WHITE); + } + if (signal > 72) { + stat_area.drawLine(px+1*4, py+14, px+1*4, py+1, GxEPD_WHITE); + stat_area.drawLine(px+1*4+1, py+14, px+1*4+1, py+1, GxEPD_WHITE); + } + if (signal > 59) { + stat_area.drawLine(px+2*4, py+14, px+2*4, py+2, GxEPD_WHITE); + stat_area.drawLine(px+2*4+1, py+14, px+2*4+1, py+2, GxEPD_WHITE); + } + if (signal > 46) { + stat_area.drawLine(px+3*4, py+14, px+3*4, py+3, GxEPD_WHITE); + stat_area.drawLine(px+3*4+1, py+14, px+3*4+1, py+3, GxEPD_WHITE); + } + if (signal > 33) { + stat_area.drawLine(px+4*4, py+14, px+4*4, py+4, GxEPD_WHITE); + stat_area.drawLine(px+4*4+1, py+14, px+4*4+1, py+4, GxEPD_WHITE); + } + if (signal > 20) { + stat_area.drawLine(px+5*4, py+14, px+5*4, py+5, GxEPD_WHITE); + stat_area.drawLine(px+5*4+1, py+14, px+5*4+1, py+5, GxEPD_WHITE); + } + if (signal > 7) { + stat_area.drawLine(px+6*4, py+14, px+6*4, py+6, GxEPD_WHITE); + stat_area.drawLine(px+6*4+1, py+14, px+6*4+1, py+6, GxEPD_WHITE); + } + #endif + // Serial.printf("Last SNR: %.2f\n, quality: %.2f\n", snr, quality); } #define WF_RSSI_MAX -60 #define WF_RSSI_MIN -135 #define WF_RSSI_SPAN (WF_RSSI_MAX-WF_RSSI_MIN) +#if DISPLAY == OLED #define WF_PIXEL_WIDTH 10 +#elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) +#define WF_PIXEL_WIDTH 22 +#endif void draw_waterfall(int px, int py) { int rssi_val = current_rssi; if (rssi_val < WF_RSSI_MIN) rssi_val = WF_RSSI_MIN; @@ -348,55 +601,101 @@ void draw_waterfall(int px, int py) { waterfall[waterfall_head++] = rssi_normalised; if (waterfall_head >= WATERFALL_SIZE) waterfall_head = 0; + #if DISPLAY == OLED stat_area.fillRect(px,py,WF_PIXEL_WIDTH, WATERFALL_SIZE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.fillRect(px,py,WF_PIXEL_WIDTH, WATERFALL_SIZE, GxEPD_BLACK); + #endif for (int i = 0; i < WATERFALL_SIZE; i++){ int wi = (waterfall_head+i)%WATERFALL_SIZE; int ws = waterfall[wi]; if (ws > 0) { - stat_area.drawLine(px, py+i, px+ws-1, py+i, SSD1306_WHITE); + #if DISPLAY == OLED + stat_area.drawLine(px, py+i, px+ws-1, py+i, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawLine(px, py+i, px+ws-1, py+i, GxEPD_WHITE); + #endif } } } -bool stat_area_intialised = false; +bool stat_area_initialised = false; void draw_stat_area() { if (device_init_done) { - if (!stat_area_intialised) { - stat_area.drawBitmap(0, 0, bm_frame, 64, 64, SSD1306_WHITE, SSD1306_BLACK); - stat_area_intialised = true; + if (!stat_area_initialised) { + #if DISPLAY == OLED + stat_area.drawBitmap(0, 0, bm_frame, 64, 64, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + stat_area.drawBitmap(0, 0, bm_frame, stat_area.width(), stat_area.height(), GxEPD_WHITE, GxEPD_BLACK); + #endif + stat_area_initialised = true; } + #if DISPLAY == OLED draw_cable_icon(3, 8); draw_bt_icon(3, 30); draw_lora_icon(45, 8); draw_mw_icon(45, 30); draw_battery_bars(4, 58); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + draw_cable_icon(6, 18); + draw_bt_icon(6, 60); + draw_lora_icon(86, 18); + draw_mw_icon(86, 60); + draw_battery_bars(8, 113); + #endif if (radio_online) { + #if DISPLAY == OLED draw_quality_bars(28, 56); draw_signal_bars(44, 56); draw_waterfall(27, 4); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + draw_quality_bars(53, 109); + draw_signal_bars(83, 109); + draw_waterfall(50, 8); + #endif } } } void update_stat_area() { if (eeprom_ok && !firmware_update_mode && !console_active) { - draw_stat_area(); if (disp_mode == DISP_MODE_PORTRAIT) { + #if DISPLAY == OLED display.drawBitmap(p_as_x, p_as_y, stat_area.getBuffer(), stat_area.width(), stat_area.height(), SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawBitmap(p_as_x, p_as_y, stat_area.getBuffer(), stat_area.width(), stat_area.height(), GxEPD_WHITE, GxEPD_BLACK); + #endif } else if (disp_mode == DISP_MODE_LANDSCAPE) { + #if DISPLAY == OLED display.drawBitmap(p_as_x+2, p_as_y, stat_area.getBuffer(), stat_area.width(), stat_area.height(), SSD1306_WHITE, SSD1306_BLACK); if (device_init_done && !disp_ext_fb) display.drawLine(p_as_x, 0, p_as_x, 64, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawBitmap(p_as_x+2, p_as_y, stat_area.getBuffer(), stat_area.width(), stat_area.height(), GxEPD_WHITE, GxEPD_BLACK); + if (device_init_done && !disp_ext_fb) display.drawLine(p_as_x, 0, p_as_x, DISP_W/2, GxEPD_WHITE); + #endif } } else { if (firmware_update_mode) { + #if DISPLAY == OLED display.drawBitmap(p_as_x, p_as_y, bm_updating, stat_area.width(), stat_area.height(), SSD1306_BLACK, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawBitmap(p_as_x, p_as_y, bm_updating, stat_area.width(), stat_area.height(), GxEPD_BLACK, GxEPD_WHITE); + #endif } else if (console_active && device_init_done) { + #if DISPLAY == OLED display.drawBitmap(p_as_x, p_as_y, bm_console, stat_area.width(), stat_area.height(), SSD1306_BLACK, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawBitmap(p_as_x, p_as_y, bm_console, stat_area.width(), stat_area.height(), GxEPD_BLACK, GxEPD_WHITE); + #endif if (disp_mode == DISP_MODE_LANDSCAPE) { + #if DISPLAY == OLED display.drawLine(p_as_x, 0, p_as_x, 64, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawLine(p_as_x, 0, p_as_x, DISP_W/2, GxEPD_WHITE); + #endif } } } @@ -410,101 +709,189 @@ void draw_disp_area() { uint8_t p_by = 37; if (disp_mode == DISP_MODE_LANDSCAPE || firmware_update_mode) { p_by = 18; - disp_area.fillRect(0, 0, disp_area.width(), disp_area.height(), SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.fillRect(0, 0, disp_area.width(), disp_area.height(), SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.fillRect(0, 0, disp_area.width(), disp_area.height(), GxEPD_BLACK); + #endif } - if (!device_init_done) disp_area.drawBitmap(0, p_by, bm_boot, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); - if (firmware_update_mode) disp_area.drawBitmap(0, p_by, bm_fw_update, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + if (!device_init_done) disp_area.drawBitmap(0, p_by, bm_boot, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + if (firmware_update_mode) disp_area.drawBitmap(0, p_by, bm_fw_update, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + if (!device_init_done) disp_area.drawBitmap(0, p_by, bm_boot, disp_area.width(), 54, GxEPD_WHITE); + if (firmware_update_mode) disp_area.drawBitmap(0, p_by, bm_fw_update, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { if (!disp_ext_fb or bt_ssp_pin != 0) { if (radio_online && display_diagnostics) { - disp_area.fillRect(0,8,disp_area.width(),37, SSD1306_BLACK); disp_area.fillRect(0,37,disp_area.width(),27, SSD1306_WHITE); - disp_area.setFont(SMALL_FONT); disp_area.setTextWrap(false); disp_area.setTextColor(SSD1306_WHITE); + #if DISPLAY == OLED + disp_area.fillRect(0,8,disp_area.width(),37, SSD1306_BLACK); disp_area.fillRect(0,37,disp_area.width(),27, SSD1306_WHITE); + disp_area.setFont(SMALL_FONT); disp_area.setTextWrap(false); disp_area.setTextColor(SSD1306_WHITE); - disp_area.setCursor(2, 13); - disp_area.print("On"); - disp_area.setCursor(14, 13); - disp_area.print("@"); - disp_area.setCursor(21, 13); - disp_area.printf("%.1fKbps", (float)lora_bitrate/1000.0); + disp_area.setCursor(2, 13); + disp_area.print("On"); + disp_area.setCursor(14, 13); + disp_area.print("@"); + disp_area.setCursor(21, 13); + disp_area.printf("%.1fKbps", (float)lora_bitrate/1000.0); - //disp_area.setCursor(31, 23-1); - disp_area.setCursor(2, 23-1); - disp_area.print("Airtime:"); + disp_area.setCursor(2, 23-1); + disp_area.print("Airtime:"); + + disp_area.setCursor(11, 33-1); + if (total_channel_util < 0.099) { + disp_area.printf("%.1f%%", airtime*100.0); + } else { + disp_area.printf("%.0f%%", airtime*100.0); + } + + disp_area.drawBitmap(2, 26-1, bm_hg_low, 5, 9, SSD1306_WHITE, SSD1306_BLACK); + + disp_area.setCursor(32+11, 33-1); + + if (longterm_channel_util < 0.099) { + disp_area.printf("%.1f%%", longterm_airtime*100.0); + } else { + disp_area.printf("%.0f%%", longterm_airtime*100.0); + } + disp_area.drawBitmap(32+2, 26-1, bm_hg_high, 5, 9, SSD1306_WHITE, SSD1306_BLACK); + + disp_area.setTextColor(SSD1306_BLACK); + + disp_area.setCursor(2, 46); + disp_area.print("Channel"); + disp_area.setCursor(38, 46); + disp_area.print("Load:"); + + disp_area.setCursor(11, 57); + if (total_channel_util < 0.099) { + disp_area.printf("%.1f%%", total_channel_util*100.0); + } else { + disp_area.printf("%.0f%%", total_channel_util*100.0); + } + disp_area.drawBitmap(2, 50, bm_hg_low, 5, 9, SSD1306_BLACK, SSD1306_WHITE); - disp_area.setCursor(11, 33-1); - if (total_channel_util < 0.099) { - //disp_area.printf("%.1f%%", total_channel_util*100.0); - disp_area.printf("%.1f%%", airtime*100.0); - } else { - //disp_area.printf("%.0f%%", total_channel_util*100.0); - disp_area.printf("%.0f%%", airtime*100.0); - } - disp_area.drawBitmap(2, 26-1, bm_hg_low, 5, 9, SSD1306_WHITE, SSD1306_BLACK); + disp_area.setCursor(32+11, 57); + if (longterm_channel_util < 0.099) { + disp_area.printf("%.1f%%", longterm_channel_util*100.0); + } else { + disp_area.printf("%.0f%%", longterm_channel_util*100.0); + } + disp_area.drawBitmap(32+2, 50, bm_hg_high, 5, 9, SSD1306_BLACK, SSD1306_WHITE); - disp_area.setCursor(32+11, 33-1); - if (longterm_channel_util < 0.099) { - //disp_area.printf("%.1f%%", longterm_channel_util*100.0); - disp_area.printf("%.1f%%", longterm_airtime*100.0); - } else { - //disp_area.printf("%.0f%%", longterm_channel_util*100.0); - disp_area.printf("%.0f%%", longterm_airtime*100.0); - } - disp_area.drawBitmap(32+2, 26-1, bm_hg_high, 5, 9, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.fillRect(0,12,disp_area.width(),57, GxEPD_BLACK); disp_area.fillRect(0,69,disp_area.width(),56, GxEPD_WHITE); + disp_area.setFont(SMALL_FONT); disp_area.setTextWrap(false); disp_area.setTextColor(GxEPD_WHITE); + disp_area.setTextSize(2); // scale text 2x + disp_area.setCursor(2, 22); + disp_area.print("On"); + disp_area.setCursor(14*2, 22); + disp_area.print("@"); + disp_area.setCursor(21*2, 22); + disp_area.printf("%.1fKbps", (float)lora_bitrate/1000.0); - disp_area.setTextColor(SSD1306_BLACK); - disp_area.setCursor(2, 46); - disp_area.print("Channel"); - disp_area.setCursor(38, 46); - disp_area.print("Load:"); + disp_area.setCursor(2, 36); + disp_area.print("Airtime:"); + + disp_area.setCursor(7+12, 53); + if (total_channel_util < 0.099) { + disp_area.printf("%.1f%%", airtime*100.0); + } else { + disp_area.printf("%.0f%%", airtime*100.0); + } + + disp_area.drawBitmap(2, 41, bm_hg_low, 10, 18, GxEPD_WHITE, GxEPD_BLACK); + + disp_area.setCursor(64+17, 53); + if (longterm_channel_util < 0.099) { + disp_area.printf("%.1f%%", longterm_airtime*100.0); + } else { + disp_area.printf("%.0f%%", longterm_airtime*100.0); + } + disp_area.drawBitmap(64, 41, bm_hg_high, 10, 18, GxEPD_WHITE, GxEPD_BLACK); + + disp_area.setTextColor(GxEPD_BLACK); + + disp_area.setCursor(2, 88); + disp_area.print("Channel"); + disp_area.setCursor(38*2, 88); + disp_area.print("Load:"); - disp_area.setCursor(11, 57); - if (total_channel_util < 0.099) { - //disp_area.printf("%.1f%%", airtime*100.0); - disp_area.printf("%.1f%%", total_channel_util*100.0); - } else { - //disp_area.printf("%.0f%%", airtime*100.0); - disp_area.printf("%.0f%%", total_channel_util*100.0); - } - disp_area.drawBitmap(2, 50, bm_hg_low, 5, 9, SSD1306_BLACK, SSD1306_WHITE); + disp_area.setCursor(7+12, 110); + if (total_channel_util < 0.099) { + disp_area.printf("%.1f%%", total_channel_util*100.0); + } else { + disp_area.printf("%.0f%%", total_channel_util*100.0); + } + disp_area.drawBitmap(2, 98, bm_hg_low, 10, 18, GxEPD_BLACK, GxEPD_WHITE); - disp_area.setCursor(32+11, 57); - if (longterm_channel_util < 0.099) { - //disp_area.printf("%.1f%%", longterm_airtime*100.0); - disp_area.printf("%.1f%%", longterm_channel_util*100.0); - } else { - //disp_area.printf("%.0f%%", longterm_airtime*100.0); - disp_area.printf("%.0f%%", longterm_channel_util*100.0); - } - disp_area.drawBitmap(32+2, 50, bm_hg_high, 5, 9, SSD1306_BLACK, SSD1306_WHITE); + disp_area.setCursor(64+17, 110); + if (longterm_channel_util < 0.099) { + disp_area.printf("%.1f%%", longterm_channel_util*100.0); + } else { + disp_area.printf("%.0f%%", longterm_channel_util*100.0); + } + disp_area.drawBitmap(64, 98, bm_hg_high, 10, 18, GxEPD_BLACK, GxEPD_WHITE); + #endif } else { if (device_signatures_ok()) { - disp_area.drawBitmap(0, 0, bm_def_lc, disp_area.width(), 37, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 0, bm_def_lc, disp_area.width(), 37, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 0, bm_def_lc, disp_area.width(), 71, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - disp_area.drawBitmap(0, 0, bm_def, disp_area.width(), 37, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 0, bm_def, disp_area.width(), 37, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 0, bm_def, disp_area.width(), 71, GxEPD_WHITE, GxEPD_BLACK); + #endif } } if (!hw_ready || radio_error || !device_firmware_ok()) { if (!device_firmware_ok()) { - disp_area.drawBitmap(0, 37, bm_fw_corrupt, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_fw_corrupt, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_fw_corrupt, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { if (!modem_installed) { - disp_area.drawBitmap(0, 37, bm_no_radio, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_no_radio, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_no_radio, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - disp_area.drawBitmap(0, 37, bm_hwfail, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_hwfail, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_hwfail, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } } } else if (bt_state == BT_STATE_PAIRING and bt_ssp_pin != 0) { char *pin_str = (char*)malloc(DISP_PIN_SIZE+1); sprintf(pin_str, "%06d", bt_ssp_pin); - disp_area.drawBitmap(0, 37, bm_pairing, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_pairing, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_pairing, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif for (int i = 0; i < DISP_PIN_SIZE; i++) { uint8_t numeric = pin_str[i]-48; - uint8_t offset = numeric*5; - disp_area.drawBitmap(7+9*i, 37+16, bm_n_uh+offset, 8, 5, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + uint8_t offset = numeric*5; + disp_area.drawBitmap(7+9*i, 37+16, bm_n_uh+offset, 8, 5, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + uint8_t offset = numeric*20; + disp_area.drawBitmap(14+17*i, 71+32, bm_n_uh+offset, 10, 10, GxEPD_WHITE, GxEPD_BLACK); + #endif } free(pin_str); } else { @@ -516,64 +903,119 @@ void draw_disp_area() { if (radio_online) { if (!display_diagnostics) { - disp_area.drawBitmap(0, 37, bm_online, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_online, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_online, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } } else { if (disp_page == 0) { if (true || device_signatures_ok()) { - disp_area.drawBitmap(0, 37, bm_checks, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_checks, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_checks, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - disp_area.drawBitmap(0, 37, bm_nfr, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_nfr, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_nfr, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } } else if (disp_page == 1) { if (!console_active) { - disp_area.drawBitmap(0, 37, bm_hwok, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_hwok, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_hwok, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } else { - disp_area.drawBitmap(0, 37, bm_console_active, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_console_active, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_console_active, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif } } else if (disp_page == 2) { - disp_area.drawBitmap(0, 37, bm_version, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 37, bm_version, disp_area.width(), 27, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 71, bm_version, disp_area.width(), 54, GxEPD_WHITE, GxEPD_BLACK); + #endif char *v_str = (char*)malloc(3+1); sprintf(v_str, "%01d%02d", MAJ_VERS, MIN_VERS); for (int i = 0; i < 3; i++) { - uint8_t numeric = v_str[i]-48; uint8_t bm_offset = numeric*5; + #if DISPLAY == OLED uint8_t dxp = 20; - if (i == 1) dxp += 9*1+4; + uint8_t numeric = v_str[i]-48; uint8_t bm_offset = numeric*5; if (i == 2) dxp += 9*2+4; - disp_area.drawBitmap(dxp, 37+16, bm_n_uh+bm_offset, 8, 5, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + uint8_t dxp = 43; + uint8_t numeric = v_str[i]-48; uint8_t bm_offset = numeric*20; + if (i == 2) dxp += 9*2+6; + #endif + if (i == 1) dxp += 9*1+4; + #if DISPLAY == OLED + disp_area.drawBitmap(dxp, 37+16, bm_n_uh+bm_offset, 8, 5, SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + // add gap manually rather than oversizing bitmap, as the gfx lib fills in the extra space with black + disp_area.drawBitmap(dxp, 71+32, bm_n_uh+bm_offset, 10, 10, GxEPD_WHITE, GxEPD_BLACK); + #endif } free(v_str); + #if DISPLAY == OLED disp_area.drawLine(27, 37+19, 28, 37+19, SSD1306_BLACK); - disp_area.drawLine(27, 37+20, 28, 37+20, SSD1306_BLACK); + disp_area.drawLine(27, 37+19, 28, 37+19, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawLine(27, 37+20, 28, 37+20, GxEPD_BLACK); + disp_area.drawLine(27, 37+20, 28, 37+20, GxEPD_BLACK); + #endif } } } } else { - disp_area.drawBitmap(0, 0, fb, disp_area.width(), disp_area.height(), SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + disp_area.drawBitmap(0, 0, fb, disp_area.width(), disp_area.height(), SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + disp_area.drawBitmap(0, 0, fb, disp_area.width(), disp_area.height(), GxEPD_WHITE, GxEPD_BLACK); + #endif } } } void update_disp_area() { draw_disp_area(); - display.drawBitmap(p_ad_x, p_ad_y, disp_area.getBuffer(), disp_area.width(), disp_area.height(), SSD1306_WHITE, SSD1306_BLACK); + #if DISPLAY == OLED + display.drawBitmap(p_ad_x, p_ad_y, disp_area.getBuffer(), disp_area.width(), disp_area.height(), SSD1306_WHITE, SSD1306_BLACK); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawBitmap(p_ad_x, p_ad_y, disp_area.getBuffer(), disp_area.width(), disp_area.height(), GxEPD_WHITE, GxEPD_BLACK); + #endif if (disp_mode == DISP_MODE_LANDSCAPE) { if (device_init_done && !firmware_update_mode && !disp_ext_fb) { + #if DISPLAY == OLED display.drawLine(0, 0, 0, 63, SSD1306_WHITE); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.drawLine(0, 0, 0, 63, GxEPD_WHITE); + #endif } } } void update_display(bool blank = false) { if (blank) { + #if DISPLAY == OLED if (display_contrast != display_intensity) { display_contrast = display_intensity; set_contrast(&display, display_contrast); } display.clearDisplay(); + #endif display.display(); } else { if (millis()-last_disp_update >= disp_update_interval) { + #if DISPLAY == OLED if (display_contrast != display_intensity) { display_contrast = display_intensity; set_contrast(&display, display_contrast); @@ -582,6 +1024,13 @@ void update_display(bool blank = false) { update_stat_area(); update_disp_area(); display.display(); + #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) + display.setFullWindow(); + display.fillScreen(GxEPD_WHITE); + update_stat_area(); + update_disp_area(); + display.display(true); + #endif last_disp_update = millis(); } } diff --git a/Graphics.h b/Graphics.h index 3f1daf5..7e92bd6 100644 --- a/Graphics.h +++ b/Graphics.h @@ -13,6 +13,9 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +#if DISP_H == UNSCALED_MAX +// use 64px wide graphics + const unsigned char bm_cable [] PROGMEM = { 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x07, 0xfc, 0x08, 0x38, 0x10, 0x1c, 0x10, 0x00, 0x08, 0x00, 0x07, 0xc0, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x07, 0xc0, 0x08, 0x00, 0x10, 0x00, @@ -20,17 +23,6 @@ const unsigned char bm_cable [] PROGMEM = { 0xf1, 0x8f, 0x02, 0x16, 0x02, 0x23, 0x01, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -const unsigned char bm_rf [] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xc4, - 0x4a, 0xaa, 0x4a, 0xce, 0x6e, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xe0, 0x08, 0x10, 0x13, 0xc8, 0x04, 0x20, 0x01, 0x80, 0x00, 0x00, 0x4e, 0xc4, - 0x4a, 0xaa, 0x4a, 0xce, 0x6e, 0xaa, 0x00, 0x00, 0x01, 0x80, 0x04, 0x20, 0x03, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4e, - 0x31, 0x48, 0x61, 0xca, 0x74, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xe0, 0x08, 0x10, 0x13, 0xc8, 0x04, 0x20, 0x01, 0x80, 0x00, 0x00, 0x71, 0x4e, - 0x31, 0x48, 0x61, 0xca, 0x74, 0x4e, 0x00, 0x00, 0x01, 0x80, 0x04, 0x20, 0x03, 0xc0, 0x00, 0x00 -}; - const unsigned char bm_bt [] PROGMEM = { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x40, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x11, 0x40, 0x00, 0x00, 0x01, 0x00, @@ -42,6 +34,17 @@ const unsigned char bm_bt [] PROGMEM = { 0x29, 0x94, 0x11, 0x48, 0x03, 0x20, 0x05, 0x10, 0x09, 0x20, 0x01, 0x40, 0x01, 0x80, 0x01, 0x00 }; +const unsigned char bm_rf [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xc4, + 0x4a, 0xaa, 0x4a, 0xce, 0x6e, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xe0, 0x08, 0x10, 0x13, 0xc8, 0x04, 0x20, 0x01, 0x80, 0x00, 0x00, 0x4e, 0xc4, + 0x4a, 0xaa, 0x4a, 0xce, 0x6e, 0xaa, 0x00, 0x00, 0x01, 0x80, 0x04, 0x20, 0x03, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x4e, + 0x31, 0x48, 0x61, 0xca, 0x74, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xe0, 0x08, 0x10, 0x13, 0xc8, 0x04, 0x20, 0x01, 0x80, 0x00, 0x00, 0x71, 0x4e, + 0x31, 0x48, 0x61, 0xca, 0x74, 0x4e, 0x00, 0x00, 0x01, 0x80, 0x04, 0x20, 0x03, 0xc0, 0x00, 0x00 +}; + const unsigned char bm_boot [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -59,6 +62,92 @@ const unsigned char bm_boot [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +const unsigned char bm_no_radio [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc7, 0x0e, 0x71, 0xfc, 0xce, 0x38, 0x7f, + 0xc9, 0x93, 0x26, 0x64, 0xfc, 0x4c, 0x9c, 0xff, 0xc3, 0x83, 0x26, 0x64, 0xfc, 0x0c, 0x9c, 0xff, + 0xc3, 0x93, 0x26, 0x64, 0xfc, 0x8c, 0x9c, 0xff, 0xc9, 0x93, 0x0e, 0x71, 0xfc, 0xce, 0x3c, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x8e, 0x4c, 0xcc, 0x3f, 0xff, 0xfc, 0xff, + 0xcf, 0x26, 0x4c, 0x4c, 0x9f, 0xff, 0xfb, 0x7f, 0xc3, 0x26, 0x4c, 0x0c, 0x9f, 0xff, 0xfb, 0x7f, + 0xcf, 0x26, 0x4c, 0x8c, 0x9f, 0xff, 0xf7, 0xbf, 0xcf, 0x8f, 0x1c, 0xcc, 0x3f, 0xff, 0xf4, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xf7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +const unsigned char bm_hwfail [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0xe3, 0x87, 0x0e, 0x73, 0x8e, 0x1c, 0x3f, + 0xe4, 0xc9, 0x93, 0x26, 0x53, 0x26, 0x4c, 0xff, 0xe0, 0xc1, 0x87, 0x26, 0x53, 0x06, 0x1c, 0x3f, + 0xe4, 0xc9, 0x87, 0x26, 0x03, 0x26, 0x1c, 0xff, 0xe4, 0xc9, 0x93, 0x0f, 0x27, 0x26, 0x4c, 0x3f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe1, 0xc7, 0x33, 0xc9, 0x87, 0x0f, 0xf9, 0xff, 0xe7, 0x93, 0x33, 0xc9, 0x93, 0x3f, 0xf6, 0xff, + 0xe1, 0x83, 0x33, 0xc9, 0x87, 0x0f, 0xf6, 0xff, 0xe7, 0x93, 0x33, 0xc9, 0x87, 0x3f, 0xef, 0x7f, + 0xe7, 0x93, 0x30, 0xe3, 0x93, 0x0f, 0xe9, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0xdf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xef, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xf7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +const unsigned char bm_console [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, + 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0x1f, 0xcf, 0xff, 0xff, 0xf3, 0xf8, 0xff, + 0xfe, 0x3f, 0x9f, 0xff, 0xff, 0xf9, 0xfc, 0x7f, 0xfc, 0x7f, 0x99, 0xe6, 0x61, 0x99, 0xfe, 0x3f, + 0xf8, 0xe7, 0x99, 0x26, 0x67, 0x99, 0xe7, 0x1f, 0xf9, 0xc7, 0x99, 0x26, 0x61, 0x99, 0xe3, 0x9f, + 0xf1, 0x8f, 0x98, 0x06, 0x67, 0x99, 0xf1, 0x8f, 0xf3, 0x9f, 0x9c, 0xce, 0x67, 0x99, 0xf9, 0xcf, + 0xf3, 0x99, 0x9f, 0xff, 0xff, 0xf9, 0x99, 0xcf, 0xf3, 0x99, 0x9f, 0xff, 0xff, 0xf9, 0x99, 0xcf, + 0xf3, 0x9f, 0x9f, 0xe3, 0x83, 0xf9, 0xf9, 0xcf, 0xf1, 0x8f, 0x9f, 0xc9, 0x93, 0xf9, 0xf1, 0x8f, + 0xf9, 0xc7, 0x9f, 0xc1, 0x83, 0xf9, 0xe3, 0x9f, 0xf8, 0xe7, 0x9f, 0xc9, 0x9f, 0xf9, 0xe7, 0x1f, + 0xfc, 0x7f, 0x9f, 0xc9, 0x9f, 0xf9, 0xfe, 0x3f, 0xfe, 0x3f, 0x9f, 0xff, 0xff, 0xf9, 0xfc, 0x7f, + 0xff, 0x1f, 0xcf, 0xff, 0xff, 0xf3, 0xf8, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, + 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, + 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x78, 0x1e, 0x07, 0x81, 0xe0, 0x78, 0x1f, + 0xef, 0xbb, 0xee, 0xfb, 0xbe, 0xef, 0xbb, 0xef, 0xe8, 0xda, 0xb6, 0x9d, 0xb3, 0x6d, 0xda, 0x37, + 0xef, 0xda, 0xf6, 0xb5, 0xad, 0x6c, 0xdb, 0xf7, 0xe8, 0x5a, 0x36, 0x95, 0xad, 0x6c, 0xda, 0x97, + 0xef, 0xdb, 0xf6, 0x85, 0xb3, 0x6c, 0xda, 0x97, 0xea, 0x5a, 0x36, 0xb5, 0xb3, 0x6c, 0xdb, 0xf7, + 0xef, 0xda, 0xf6, 0xa5, 0xad, 0x6f, 0xda, 0x57, 0xe8, 0x5a, 0xb6, 0x85, 0xad, 0x6c, 0xda, 0x57, + 0xef, 0xdb, 0xf6, 0xfd, 0xbf, 0x6f, 0xdb, 0xf7, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x07, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0x42, 0x7c, 0x60, 0xf0, 0x78, 0x3c, 0x7f, 0xfe, 0x4a, 0x7c, 0x64, 0xf2, 0x79, 0x3c, 0x7f, + 0xfe, 0x43, 0xfe, 0x64, 0xf2, 0x79, 0x3e, 0x7f, 0xfe, 0x4e, 0x7e, 0x64, 0x92, 0x49, 0x26, 0x7f, + 0xfe, 0x4e, 0x7e, 0x60, 0x90, 0x48, 0x26, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +const unsigned char bm_pairing [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf0, 0xe3, 0x98, 0x73, 0x33, 0x87, 0xff, 0xff, 0xf2, 0xc9, 0x99, 0x33, 0x13, 0x3f, 0xff, + 0xff, 0xf0, 0xc1, 0x98, 0x73, 0x03, 0x27, 0xff, 0xff, 0xf3, 0xc9, 0x98, 0x73, 0x23, 0x27, 0xff, + 0xff, 0xf3, 0xc9, 0x99, 0x33, 0x33, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + const unsigned char bm_fw_update [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -76,20 +165,20 @@ const unsigned char bm_fw_update [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -const unsigned char bm_console_active [] PROGMEM = { +const unsigned char bm_version [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x8e, 0x67, 0x0e, 0x39, 0xe1, 0xff, - 0xff, 0x93, 0x26, 0x26, 0x7c, 0x99, 0xe7, 0xff, 0xff, 0x9f, 0x26, 0x07, 0x1c, 0x99, 0xe1, 0xff, - 0xff, 0x93, 0x26, 0x47, 0xcc, 0x99, 0xe7, 0xff, 0xff, 0xc7, 0x8e, 0x66, 0x1e, 0x38, 0x61, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3c, 0x70, 0xcc, 0xcc, 0x3f, 0xff, - 0xff, 0xfc, 0x99, 0x39, 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xfc, 0x19, 0xf9, 0xce, 0x1c, 0x3f, 0xff, - 0xff, 0xfc, 0x99, 0x39, 0xce, 0x1c, 0xff, 0xff, 0xff, 0xfc, 0x9c, 0x79, 0xcf, 0x3c, 0x3f, 0xff, + 0xff, 0x99, 0x86, 0x1e, 0x19, 0xc7, 0x33, 0xff, 0xff, 0x99, 0x9e, 0x4c, 0xf9, 0x93, 0x13, 0xff, + 0xff, 0xc3, 0x86, 0x1e, 0x39, 0x93, 0x03, 0xff, 0xff, 0xc3, 0x9e, 0x1f, 0x99, 0x93, 0x23, 0xff, + 0xff, 0xe7, 0x86, 0x4c, 0x39, 0xc7, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; @@ -128,40 +217,6 @@ const unsigned char bm_updating [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -const unsigned char bm_version [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x99, 0x86, 0x1e, 0x19, 0xc7, 0x33, 0xff, 0xff, 0x99, 0x9e, 0x4c, 0xf9, 0x93, 0x13, 0xff, - 0xff, 0xc3, 0x86, 0x1e, 0x39, 0x93, 0x03, 0xff, 0xff, 0xc3, 0x9e, 0x1f, 0x99, 0x93, 0x23, 0xff, - 0xff, 0xe7, 0x86, 0x4c, 0x39, 0xc7, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -const unsigned char bm_fw_corrupt [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x30, 0xe7, 0x33, 0x9c, 0x70, 0xe1, 0xff, - 0xcf, 0x32, 0x62, 0x32, 0x99, 0x32, 0x67, 0xff, 0xc3, 0x30, 0xe0, 0x32, 0x98, 0x30, 0xe1, 0xff, - 0xcf, 0x30, 0xe5, 0x30, 0x19, 0x30, 0xe7, 0xff, 0xcf, 0x32, 0x67, 0x39, 0x39, 0x32, 0x61, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xc7, 0x0e, 0x1c, 0x98, 0x70, 0xfc, 0xff, - 0xc9, 0x93, 0x26, 0x4c, 0x99, 0x39, 0xfb, 0x7f, 0xcf, 0x93, 0x0e, 0x1c, 0x98, 0x79, 0xfb, 0x7f, - 0xc9, 0x93, 0x0e, 0x1c, 0x99, 0xf9, 0xf7, 0xbf, 0xe3, 0xc7, 0x26, 0x4e, 0x39, 0xf9, 0xf4, 0xbf, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xf7, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - static unsigned char bm_def[] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, 0x61, 0x10, 0x8c, 0x23, 0xc4, 0x3f, 0xff, 0xb5, 0xa7, 0xb7, 0xb5, 0xed, 0xed, 0xbf, 0xff, 0xb5, 0xb9, 0xb4, 0xb4, 0x6d, 0xed, 0xbf, 0xff, @@ -206,6 +261,57 @@ const unsigned char bm_def_lc [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +const unsigned char bm_hwok [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf2, 0x71, 0xc3, 0x87, 0x39, 0xc7, 0x0e, 0x1f, 0xf2, 0x64, 0xc9, 0x93, 0x29, 0x93, 0x26, 0x7f, + 0xf0, 0x60, 0xc3, 0x93, 0x29, 0x83, 0x0e, 0x1f, 0xf2, 0x64, 0xc3, 0x93, 0x01, 0x93, 0x0e, 0x7f, + 0xf2, 0x64, 0xc9, 0x87, 0x93, 0x93, 0x26, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x33, 0x30, 0xff, 0x8e, 0x4f, 0xff, + 0xff, 0xf3, 0x13, 0x39, 0xff, 0x26, 0x1f, 0xff, 0xff, 0xf3, 0x03, 0x39, 0xff, 0x26, 0x3f, 0xff, + 0xff, 0xf3, 0x23, 0x39, 0xff, 0x26, 0x1f, 0xff, 0xff, 0xf3, 0x33, 0x39, 0xff, 0x8e, 0x4f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0x0e, 0x67, 0xf8, 0x70, 0xe3, 0x87, 0x33, 0xe7, 0x27, 0x0f, 0xf9, 0x33, 0xc9, 0x93, 0x87, + 0xe7, 0x0f, 0x9f, 0xf8, 0x70, 0xc1, 0x93, 0xcf, 0xe7, 0x0f, 0x0f, 0xf8, 0x73, 0xc9, 0x93, 0xcf, + 0xe7, 0x26, 0x67, 0xf9, 0x30, 0xc9, 0x87, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +const unsigned char bm_console_active [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x8e, 0x67, 0x0e, 0x39, 0xe1, 0xff, + 0xff, 0x93, 0x26, 0x26, 0x7c, 0x99, 0xe7, 0xff, 0xff, 0x9f, 0x26, 0x07, 0x1c, 0x99, 0xe1, 0xff, + 0xff, 0x93, 0x26, 0x47, 0xcc, 0x99, 0xe7, 0xff, 0xff, 0xc7, 0x8e, 0x66, 0x1e, 0x38, 0x61, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3c, 0x70, 0xcc, 0xcc, 0x3f, 0xff, + 0xff, 0xfc, 0x99, 0x39, 0xcc, 0xcc, 0xff, 0xff, 0xff, 0xfc, 0x19, 0xf9, 0xce, 0x1c, 0x3f, 0xff, + 0xff, 0xfc, 0x99, 0x39, 0xce, 0x1c, 0xff, 0xff, 0xff, 0xfc, 0x9c, 0x79, 0xcf, 0x3c, 0x3f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +const unsigned char bm_checks [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x0c, 0x99, 0xc7, 0x0f, + 0xe6, 0x00, 0x7f, 0x93, 0x3c, 0x99, 0x93, 0x3f, 0xe6, 0x00, 0x7f, 0x93, 0x0e, 0x39, 0x9f, 0x0f, + 0xff, 0xff, 0xff, 0x93, 0x3e, 0x39, 0x93, 0x3f, 0xff, 0xff, 0xff, 0x87, 0x0f, 0x79, 0xc7, 0x0f, + 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x39, 0x30, 0xe3, 0x93, 0x87, + 0xe6, 0x00, 0x7c, 0x99, 0x33, 0xc9, 0x87, 0x3f, 0xe6, 0x00, 0x7c, 0xf8, 0x30, 0xcf, 0x8f, 0x8f, + 0xff, 0xff, 0xfc, 0x99, 0x33, 0xc9, 0x87, 0xe7, 0xff, 0xff, 0xfe, 0x39, 0x30, 0xe3, 0x93, 0x0f, + 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x9c, 0x3c, 0x78, 0x70, 0xc3, 0x0f, + 0xe6, 0x0d, 0x3c, 0x99, 0x33, 0xe7, 0xcf, 0x27, 0xe6, 0x04, 0x7c, 0x38, 0x38, 0xf1, 0xc3, 0x27, + 0xff, 0xfe, 0xfc, 0xf9, 0x3e, 0x7c, 0xcf, 0x27, 0xff, 0xff, 0xfc, 0xf9, 0x30, 0xe1, 0xc3, 0x0f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + const unsigned char bm_frame [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, @@ -241,85 +347,32 @@ const unsigned char bm_frame [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xaa, 0x8a, 0xaa, 0x80 }; -const unsigned char bm_console [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, - 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0x1f, 0xcf, 0xff, 0xff, 0xf3, 0xf8, 0xff, - 0xfe, 0x3f, 0x9f, 0xff, 0xff, 0xf9, 0xfc, 0x7f, 0xfc, 0x7f, 0x99, 0xe6, 0x61, 0x99, 0xfe, 0x3f, - 0xf8, 0xe7, 0x99, 0x26, 0x67, 0x99, 0xe7, 0x1f, 0xf9, 0xc7, 0x99, 0x26, 0x61, 0x99, 0xe3, 0x9f, - 0xf1, 0x8f, 0x98, 0x06, 0x67, 0x99, 0xf1, 0x8f, 0xf3, 0x9f, 0x9c, 0xce, 0x67, 0x99, 0xf9, 0xcf, - 0xf3, 0x99, 0x9f, 0xff, 0xff, 0xf9, 0x99, 0xcf, 0xf3, 0x99, 0x9f, 0xff, 0xff, 0xf9, 0x99, 0xcf, - 0xf3, 0x9f, 0x9f, 0xe3, 0x83, 0xf9, 0xf9, 0xcf, 0xf1, 0x8f, 0x9f, 0xc9, 0x93, 0xf9, 0xf1, 0x8f, - 0xf9, 0xc7, 0x9f, 0xc1, 0x83, 0xf9, 0xe3, 0x9f, 0xf8, 0xe7, 0x9f, 0xc9, 0x9f, 0xf9, 0xe7, 0x1f, - 0xfc, 0x7f, 0x9f, 0xc9, 0x9f, 0xf9, 0xfe, 0x3f, 0xfe, 0x3f, 0x9f, 0xff, 0xff, 0xf9, 0xfc, 0x7f, - 0xff, 0x1f, 0xcf, 0xff, 0xff, 0xf3, 0xf8, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x07, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, - 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, 0xfd, 0xff, 0x7f, 0xdf, 0xf7, 0xfd, 0xff, 0x7f, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x78, 0x1e, 0x07, 0x81, 0xe0, 0x78, 0x1f, - 0xef, 0xbb, 0xee, 0xfb, 0xbe, 0xef, 0xbb, 0xef, 0xe8, 0xda, 0xb6, 0x9d, 0xb3, 0x6d, 0xda, 0x37, - 0xef, 0xda, 0xf6, 0xb5, 0xad, 0x6c, 0xdb, 0xf7, 0xe8, 0x5a, 0x36, 0x95, 0xad, 0x6c, 0xda, 0x97, - 0xef, 0xdb, 0xf6, 0x85, 0xb3, 0x6c, 0xda, 0x97, 0xea, 0x5a, 0x36, 0xb5, 0xb3, 0x6c, 0xdb, 0xf7, - 0xef, 0xda, 0xf6, 0xa5, 0xad, 0x6f, 0xda, 0x57, 0xe8, 0x5a, 0xb6, 0x85, 0xad, 0x6c, 0xda, 0x57, - 0xef, 0xdb, 0xf6, 0xfd, 0xbf, 0x6f, 0xdb, 0xf7, 0xe0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x07, +const unsigned char bm_online [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0x42, 0x7c, 0x60, 0xf0, 0x78, 0x3c, 0x7f, 0xfe, 0x4a, 0x7c, 0x64, 0xf2, 0x79, 0x3c, 0x7f, - 0xfe, 0x43, 0xfe, 0x64, 0xf2, 0x79, 0x3e, 0x7f, 0xfe, 0x4e, 0x7e, 0x64, 0x92, 0x49, 0x26, 0x7f, - 0xfe, 0x4e, 0x7e, 0x60, 0x90, 0x48, 0x26, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - - -const unsigned char bm_checks [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x1c, 0x66, 0x61, 0x8c, 0x24, 0x90, 0x87, + 0xe6, 0x49, 0x22, 0x4f, 0x24, 0xe4, 0x93, 0x93, 0xe6, 0x18, 0x20, 0x63, 0x3c, 0x26, 0x30, 0x87, + 0xe6, 0x19, 0x24, 0x79, 0x24, 0xe6, 0x33, 0x87, 0xe6, 0x49, 0x26, 0x43, 0x8c, 0x27, 0x70, 0x93, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xe6, 0x73, 0xe7, 0x33, 0x87, 0xff, + 0xff, 0xe4, 0xe2, 0x73, 0xe7, 0x13, 0x9f, 0xff, 0xff, 0xe4, 0xe0, 0x73, 0xe7, 0x03, 0x87, 0xff, + 0xff, 0xe4, 0xe4, 0x73, 0xe7, 0x23, 0x9f, 0xff, 0xff, 0xf1, 0xe6, 0x70, 0xe7, 0x33, 0x87, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x0c, 0x99, 0xc7, 0x0f, - 0xe6, 0x00, 0x7f, 0x93, 0x3c, 0x99, 0x93, 0x3f, 0xe6, 0x00, 0x7f, 0x93, 0x0e, 0x39, 0x9f, 0x0f, - 0xff, 0xff, 0xff, 0x93, 0x3e, 0x39, 0x93, 0x3f, 0xff, 0xff, 0xff, 0x87, 0x0f, 0x79, 0xc7, 0x0f, - 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x39, 0x30, 0xe3, 0x93, 0x87, - 0xe6, 0x00, 0x7c, 0x99, 0x33, 0xc9, 0x87, 0x3f, 0xe6, 0x00, 0x7c, 0xf8, 0x30, 0xcf, 0x8f, 0x8f, - 0xff, 0xff, 0xfc, 0x99, 0x33, 0xc9, 0x87, 0xe7, 0xff, 0xff, 0xfe, 0x39, 0x30, 0xe3, 0x93, 0x0f, - 0xe6, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x9c, 0x3c, 0x78, 0x70, 0xc3, 0x0f, - 0xe6, 0x0d, 0x3c, 0x99, 0x33, 0xe7, 0xcf, 0x27, 0xe6, 0x04, 0x7c, 0x38, 0x38, 0xf1, 0xc3, 0x27, - 0xff, 0xfe, 0xfc, 0xf9, 0x3e, 0x7c, 0xcf, 0x27, 0xff, 0xff, 0xfc, 0xf9, 0x30, 0xe1, 0xc3, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -const unsigned char bm_hwfail [] PROGMEM = { +const unsigned char bm_fw_corrupt [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0xe3, 0x87, 0x0e, 0x73, 0x8e, 0x1c, 0x3f, - 0xe4, 0xc9, 0x93, 0x26, 0x53, 0x26, 0x4c, 0xff, 0xe0, 0xc1, 0x87, 0x26, 0x53, 0x06, 0x1c, 0x3f, - 0xe4, 0xc9, 0x87, 0x26, 0x03, 0x26, 0x1c, 0xff, 0xe4, 0xc9, 0x93, 0x0f, 0x27, 0x26, 0x4c, 0x3f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x30, 0xe7, 0x33, 0x9c, 0x70, 0xe1, 0xff, + 0xcf, 0x32, 0x62, 0x32, 0x99, 0x32, 0x67, 0xff, 0xc3, 0x30, 0xe0, 0x32, 0x98, 0x30, 0xe1, 0xff, + 0xcf, 0x30, 0xe5, 0x30, 0x19, 0x30, 0xe7, 0xff, 0xcf, 0x32, 0x67, 0x39, 0x39, 0x32, 0x61, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe1, 0xc7, 0x33, 0xc9, 0x87, 0x0f, 0xf9, 0xff, 0xe7, 0x93, 0x33, 0xc9, 0x93, 0x3f, 0xf6, 0xff, - 0xe1, 0x83, 0x33, 0xc9, 0x87, 0x0f, 0xf6, 0xff, 0xe7, 0x93, 0x33, 0xc9, 0x87, 0x3f, 0xef, 0x7f, - 0xe7, 0x93, 0x30, 0xe3, 0x93, 0x0f, 0xe9, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xbf, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0xdf, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xef, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xf7, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -const unsigned char bm_no_radio [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc7, 0x0e, 0x71, 0xfc, 0xce, 0x38, 0x7f, - 0xc9, 0x93, 0x26, 0x64, 0xfc, 0x4c, 0x9c, 0xff, 0xc3, 0x83, 0x26, 0x64, 0xfc, 0x0c, 0x9c, 0xff, - 0xc3, 0x93, 0x26, 0x64, 0xfc, 0x8c, 0x9c, 0xff, 0xc9, 0x93, 0x0e, 0x71, 0xfc, 0xce, 0x3c, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x8e, 0x4c, 0xcc, 0x3f, 0xff, 0xfc, 0xff, - 0xcf, 0x26, 0x4c, 0x4c, 0x9f, 0xff, 0xfb, 0x7f, 0xc3, 0x26, 0x4c, 0x0c, 0x9f, 0xff, 0xfb, 0x7f, - 0xcf, 0x26, 0x4c, 0x8c, 0x9f, 0xff, 0xf7, 0xbf, 0xcf, 0x8f, 0x1c, 0xcc, 0x3f, 0xff, 0xf4, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xc7, 0x0e, 0x1c, 0x98, 0x70, 0xfc, 0xff, + 0xc9, 0x93, 0x26, 0x4c, 0x99, 0x39, 0xfb, 0x7f, 0xcf, 0x93, 0x0e, 0x1c, 0x98, 0x79, 0xfb, 0x7f, + 0xc9, 0x93, 0x0e, 0x1c, 0x99, 0xf9, 0xf7, 0xbf, 0xe3, 0xc7, 0x26, 0x4e, 0x39, 0xf9, 0xf4, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xf7, @@ -328,23 +381,1316 @@ const unsigned char bm_no_radio [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -const unsigned char bm_hwok [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf2, 0x71, 0xc3, 0x87, 0x39, 0xc7, 0x0e, 0x1f, 0xf2, 0x64, 0xc9, 0x93, 0x29, 0x93, 0x26, 0x7f, - 0xf0, 0x60, 0xc3, 0x93, 0x29, 0x83, 0x0e, 0x1f, 0xf2, 0x64, 0xc3, 0x93, 0x01, 0x93, 0x0e, 0x7f, - 0xf2, 0x64, 0xc9, 0x87, 0x93, 0x93, 0x26, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x33, 0x30, 0xff, 0x8e, 0x4f, 0xff, - 0xff, 0xf3, 0x13, 0x39, 0xff, 0x26, 0x1f, 0xff, 0xff, 0xf3, 0x03, 0x39, 0xff, 0x26, 0x3f, 0xff, - 0xff, 0xf3, 0x23, 0x39, 0xff, 0x26, 0x1f, 0xff, 0xff, 0xf3, 0x33, 0x39, 0xff, 0x8e, 0x4f, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xc3, 0x0e, 0x67, 0xf8, 0x70, 0xe3, 0x87, 0x33, 0xe7, 0x27, 0x0f, 0xf9, 0x33, 0xc9, 0x93, 0x87, - 0xe7, 0x0f, 0x9f, 0xf8, 0x70, 0xc1, 0x93, 0xcf, 0xe7, 0x0f, 0x0f, 0xf8, 0x73, 0xc9, 0x93, 0xcf, - 0xe7, 0x26, 0x67, 0xf9, 0x30, 0xc9, 0x87, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +const unsigned char bm_plug [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x7f, 0x80, 0x55, 0xfc, 0x00, 0xaa, 0xfc, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x1c, 0x00 }; +const unsigned char bm_hg_low [] PROGMEM = { + 0xf8, 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0xf8, 0xf8 +}; + +const unsigned char bm_hg_high [] PROGMEM = { + 0xf8, 0x88, 0xf8, 0x70, 0x20, 0x70, 0xf8, 0xf8, 0xf8 +}; + +const unsigned char bm_n_uh [] PROGMEM = { + 0x07, 0x27, 0x27, 0x27, 0x07, 0x8f, 0x8f, 0xcf, 0xcf, 0xcf, 0x07, 0xe7, 0x07, 0x3f, 0x07, 0x07, + 0xe7, 0xc7, 0xe7, 0x07, 0x27, 0x27, 0x07, 0xe7, 0xe7, 0x07, 0x3f, 0x07, 0xe7, 0x07, 0x07, 0x3f, + 0x07, 0x27, 0x07, 0x07, 0xc7, 0xcf, 0x9f, 0x1f, 0x07, 0x27, 0x07, 0x27, 0x07, 0x07, 0x27, 0x07, + 0xe7, 0xe7 +}; + +#elif DISP_H == 122 +// use 122px wide graphics + +const unsigned char bm_bt [] PROGMEM = { + // 30 x 128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x60, 0x00, 0x02, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x60, 0x00, 0x02, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x0d, 0x87, 0x84, 0xc0, + 0x0d, 0x87, 0x84, 0xc0, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x02, 0x06, 0x63, 0x00, 0x02, 0x06, 0x63, 0x00, 0x0d, 0x87, 0x84, 0xc0, + 0x0d, 0x87, 0x84, 0xc0, 0x02, 0x06, 0x63, 0x00, 0x02, 0x06, 0x63, 0x00, 0x00, 0x1e, 0x18, 0x00, + 0x00, 0x1e, 0x18, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x01, 0x86, 0x18, 0x00, + 0x01, 0x86, 0x18, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const unsigned char bm_rf [] PROGMEM = { + // 30 x 128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf9, 0xe0, 0xc0, 0x30, 0xf9, 0xe0, 0xc0, + 0x30, 0x99, 0x99, 0x30, 0x30, 0x99, 0x99, 0x30, 0x30, 0x99, 0xe1, 0xf0, 0x30, 0x99, 0xe1, 0xf0, + 0x3c, 0xf9, 0x99, 0x30, 0x3c, 0xf9, 0x99, 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, 0x7f, 0xf8, 0x00, 0x00, 0x7f, 0xf8, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 0x06, 0x00, 0x03, 0x1f, 0xe1, 0x00, 0x03, 0x1f, 0xe1, 0x00, + 0x00, 0x60, 0x18, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xf9, 0xe0, 0xc0, 0x30, 0xf9, 0xe0, 0xc0, + 0x30, 0x99, 0x99, 0x30, 0x30, 0x99, 0x99, 0x30, 0x30, 0x99, 0xe1, 0xf0, 0x30, 0x99, 0xe1, 0xf0, + 0x3c, 0xf9, 0x99, 0x30, 0x3c, 0xf9, 0x99, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x60, 0x18, 0x00, + 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 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, 0x00, 0x00, 0x3f, 0x06, 0x61, 0xf0, 0x3f, 0x06, 0x61, 0xf0, + 0x0f, 0x06, 0x61, 0x00, 0x0f, 0x06, 0x61, 0x00, 0x3c, 0x07, 0xe1, 0x30, 0x3c, 0x07, 0xe1, 0x30, + 0x3f, 0x60, 0x61, 0xf0, 0x3f, 0x60, 0x61, 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, 0x7f, 0xf8, 0x00, 0x00, 0x7f, 0xf8, 0x00, + 0x00, 0x80, 0x06, 0x00, 0x00, 0x80, 0x06, 0x00, 0x03, 0x1f, 0xe1, 0x00, 0x03, 0x1f, 0xe1, 0x00, + 0x00, 0x60, 0x18, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x06, 0x61, 0xf0, 0x3f, 0x06, 0x61, 0xf0, + 0x0f, 0x06, 0x61, 0x00, 0x0f, 0x06, 0x61, 0x00, 0x3c, 0x07, 0xe1, 0x30, 0x3c, 0x07, 0xe1, 0x30, + 0x3f, 0x60, 0x61, 0xf0, 0x3f, 0x60, 0x61, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 0x60, 0x18, 0x00, + 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +const unsigned char bm_cable [] PROGMEM = { + // 30 x 64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x07, 0xc0, + 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x7f, 0xff, 0xc0, + 0x01, 0x80, 0x1f, 0x00, 0x01, 0x80, 0x1f, 0x00, 0x02, 0x00, 0x07, 0xc0, 0x02, 0x00, 0x07, 0xc0, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x7f, 0xe0, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x02, 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, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x61, 0x80, 0x00, 0x00, 0x61, 0x80, 0x00, + 0x00, 0x60, 0x60, 0x3c, 0x00, 0x60, 0x60, 0x3c, 0x01, 0x80, 0x60, 0xf0, 0x01, 0x80, 0x60, 0xf0, + 0xfe, 0x07, 0x83, 0xfc, 0xfe, 0x07, 0x83, 0xfc, 0x00, 0x18, 0x04, 0xf0, 0x00, 0x18, 0x04, 0xf0, + 0x00, 0x18, 0x18, 0x3c, 0x00, 0x18, 0x18, 0x3c, 0x00, 0x06, 0x18, 0x00, 0x00, 0x06, 0x18, 0x00, + 0x00, 0x01, 0xe0, 0x00, 0x00, 0x01, 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 +}; + +const unsigned char bm_boot [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe0, 0x3f, 0x00, 0xf1, 0xe1, 0xe3, 0xf0, 0x3f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x07, 0xe1, 0xe1, 0xe1, 0xe0, 0x1f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0f, 0xf0, 0xe1, 0xe1, 0xc3, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x00, 0xf8, 0x07, 0xe1, 0xc3, 0xff, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x07, 0xf8, 0x07, 0xe1, 0xc3, 0x9f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0f, 0xfc, 0x07, 0xe1, 0xe1, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe0, 0x3f, 0x00, 0xfe, 0x1f, 0xe1, 0xf0, 0x3f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xfe, 0x01, 0xe0, 0x3f, 0x03, 0xe0, 0x1f, 0x80, 0x70, 0xf0, 0xf1, 0xf8, 0x07, 0xff, 0xc0, + 0xff, 0xfc, 0x3f, 0xf0, 0x7e, 0x21, 0xe0, 0x87, 0xc1, 0xf0, 0xf0, 0x71, 0xf1, 0xff, 0xff, 0xc0, + 0xff, 0xfc, 0x3f, 0xf8, 0x7c, 0x00, 0xe0, 0x87, 0xe1, 0xf0, 0xf0, 0x21, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xfe, 0x07, 0xf8, 0x7c, 0x00, 0xe0, 0x1f, 0xe1, 0xf0, 0xf0, 0x01, 0xe1, 0x87, 0xff, 0xc0, + 0xff, 0xff, 0xe1, 0xf8, 0x7c, 0x20, 0xe0, 0x1f, 0xe1, 0xf0, 0xf0, 0x81, 0xe1, 0x87, 0xff, 0xc0, + 0xff, 0xff, 0xe3, 0xf8, 0x7c, 0x30, 0xe0, 0x0f, 0xe1, 0xf0, 0xf0, 0xc1, 0xf0, 0x0f, 0xff, 0xc0, + 0xff, 0xf8, 0x07, 0xf8, 0xfc, 0x30, 0xf1, 0x87, 0xe1, 0xf0, 0xf0, 0xf1, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_fw_update [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xf1, 0xc7, 0x80, 0xfc, 0x03, 0xfc, 0x1f, 0x80, 0xf8, 0xf1, 0xf1, 0xf8, 0x0f, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x80, 0x7c, 0x03, 0xf8, 0x1f, 0x80, 0xf0, 0xf0, 0xf1, 0xf8, 0x0f, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x84, 0x3c, 0x31, 0xf0, 0x87, 0xc1, 0xf0, 0xf0, 0x71, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x84, 0x3c, 0x30, 0xe0, 0x87, 0xe1, 0xf0, 0xf0, 0x21, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x80, 0x7c, 0x30, 0xe0, 0x07, 0xe1, 0xf0, 0xf0, 0x01, 0xe1, 0x8f, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x80, 0xfc, 0x30, 0xe0, 0x07, 0xe1, 0xf0, 0xf0, 0x01, 0xe1, 0x87, 0xff, 0xc0, + 0xff, 0xe1, 0x87, 0x87, 0xfc, 0x30, 0xe0, 0x87, 0xe1, 0xf0, 0xf0, 0x81, 0xe1, 0x87, 0xff, 0xc0, + 0xff, 0xf0, 0x87, 0x87, 0xfc, 0x31, 0xe1, 0x87, 0xe1, 0xf0, 0xf0, 0xc1, 0xe1, 0x8f, 0xff, 0xc0, + 0xff, 0xf8, 0x1f, 0x87, 0xfc, 0x03, 0xe1, 0x87, 0xe1, 0xf0, 0xf0, 0xe1, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xfc, 0x1f, 0x8f, 0xfc, 0x03, 0xf1, 0xc7, 0xe3, 0xf8, 0xf1, 0xf1, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xc0, 0x78, 0x78, 0x0f, 0xc3, 0xf1, 0xe1, 0xf8, 0xfe, 0x0f, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xff, 0xc0, 0x78, 0x78, 0x07, 0xc3, 0xe1, 0xe1, 0xf8, 0x7c, 0x0f, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xff, 0xc3, 0xf8, 0x78, 0x43, 0xc1, 0xc1, 0xe1, 0xb8, 0x78, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xff, 0xc3, 0xf8, 0x78, 0x43, 0xc0, 0x81, 0xe1, 0x98, 0x70, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xff, 0xc0, 0x78, 0x78, 0x07, 0xc0, 0x01, 0xe1, 0x98, 0x70, 0x03, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xff, 0xc0, 0x78, 0x78, 0x0f, 0xc0, 0x01, 0xe1, 0x90, 0x70, 0x03, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xff, 0xc3, 0xf8, 0x78, 0x0f, 0xc2, 0x21, 0xe0, 0x00, 0x70, 0xc3, 0xc0, 0x7e, 0x1f, 0xff, 0xc0, + 0xff, 0xc7, 0xf8, 0x78, 0x07, 0xc3, 0x61, 0xe0, 0x00, 0xf0, 0xc3, 0xc0, 0x3e, 0x1f, 0xff, 0xc0, + 0xff, 0xc7, 0xf8, 0x78, 0x43, 0xc3, 0xe1, 0xf8, 0x41, 0xf0, 0xc3, 0xc2, 0x1e, 0x03, 0xff, 0xc0, + 0xff, 0xc7, 0xf8, 0x78, 0xe3, 0xc3, 0xf1, 0xf8, 0x63, 0xf8, 0xc3, 0xc7, 0x1e, 0x03, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_version [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xc7, 0x8f, 0x80, 0xf0, 0x1f, 0xe0, 0x3e, 0x3f, 0x03, 0xf1, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0x87, 0x87, 0x00, 0xf0, 0x0f, 0xe0, 0x3e, 0x3f, 0x03, 0xf0, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0x87, 0x87, 0x07, 0xf0, 0x87, 0xc7, 0xfe, 0x3e, 0x31, 0xf0, 0x61, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xc7, 0x8f, 0x07, 0xf0, 0x87, 0xc7, 0xfe, 0x3c, 0x30, 0xf0, 0x21, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x1f, 0x00, 0xf0, 0x0f, 0xe0, 0x7e, 0x3c, 0x30, 0xf0, 0x01, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x1f, 0x00, 0xf0, 0x0f, 0xe0, 0x7e, 0x3c, 0x30, 0xf0, 0x01, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x1f, 0x07, 0xf0, 0x0f, 0xfe, 0x3e, 0x3c, 0x30, 0xf0, 0x81, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x3f, 0x07, 0xf0, 0x0f, 0xfe, 0x3e, 0x3e, 0x31, 0xf1, 0xc1, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x7f, 0x00, 0xf0, 0x87, 0xc0, 0x7e, 0x3f, 0x03, 0xf1, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x7f, 0x80, 0xf1, 0xc7, 0xc0, 0x7e, 0x3f, 0x03, 0xf1, 0xe1, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_def [] PROGMEM = { +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, +0xcf, 0x70, 0x78, 0x0e, 0x0c, 0x03, 0x07, 0x80, 0x60, 0xff, 0x03, 0x01, 0xff, 0xff, 0xff, 0xc0, +0xcf, 0x20, 0x78, 0x0e, 0x0c, 0x07, 0x07, 0x80, 0xe0, 0xff, 0x87, 0x01, 0xff, 0xff, 0xff, 0xc0, +0xcf, 0x23, 0x98, 0x7f, 0x1c, 0xff, 0x39, 0x9f, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, +0xcf, 0x27, 0x98, 0x7f, 0x3c, 0xff, 0x39, 0x8f, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, +0xcf, 0x27, 0x9f, 0x8f, 0x3c, 0xc3, 0x39, 0x81, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, +0xce, 0x27, 0x9f, 0x07, 0x1c, 0x03, 0x39, 0x80, 0xe7, 0x3f, 0x87, 0x39, 0xff, 0xff, 0xff, 0xc0, +0xc0, 0x27, 0x98, 0x06, 0x0c, 0x03, 0x39, 0x80, 0x60, 0x33, 0x03, 0x01, 0xff, 0xff, 0xff, 0xc0, +0xe0, 0x77, 0xfc, 0x0e, 0x1e, 0x07, 0x7d, 0xc0, 0xe0, 0x3f, 0x87, 0x01, 0xff, 0xff, 0xff, 0xc0, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf0, 0x7c, 0x07, 0x83, 0xff, 0xc0, 0xff, 0xfc, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf8, 0x7e, 0x0f, 0xc3, 0xff, 0xe1, 0xff, 0xfc, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xff, 0xfc, 0x7f, 0x0f, 0xcf, 0xff, 0xf1, 0xff, 0xfc, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xff, 0xfe, 0x7f, 0x8f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xf0, 0x7e, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xf0, 0x7e, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf8, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf8, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf8, 0x7e, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, +0x03, 0xff, 0xf8, 0x7e, 0x7f, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, +0x03, 0xf0, 0x7e, 0x7e, 0x3f, 0xcf, 0xc1, 0xf9, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xe0, 0x7e, 0x7e, 0x1f, 0xcf, 0xc1, 0xf9, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xcf, 0xff, 0xf1, 0xff, 0xfc, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xc3, 0xff, 0xe1, 0xff, 0xf0, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, +0x03, 0xe0, 0x3c, 0x3c, 0x07, 0x83, 0xff, 0xc0, 0xff, 0xf0, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x33, 0x26, 0x66, 0x66, 0xcc, 0xcc, 0xd9, 0x99, 0x99, 0x33, 0x33, 0x26, 0x66, 0x66, 0xcc, 0x00, +0x0c, 0x89, 0x99, 0x99, 0x33, 0x33, 0x26, 0x66, 0x64, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x32, 0x00, +0x0c, 0x89, 0x99, 0x99, 0x33, 0x33, 0x26, 0x66, 0x64, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x33, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x07, 0x00, 0x70, 0x20, 0x20, 0x81, 0x04, 0x10, 0x40, 0x82, 0x0f, 0x04, 0x04, 0x00, +0x00, 0x00, 0x07, 0x80, 0xf0, 0x30, 0x61, 0x81, 0x86, 0x30, 0xc0, 0xc6, 0x1f, 0x86, 0x0c, 0x00, +0x00, 0x00, 0x18, 0x41, 0x0c, 0x38, 0xe1, 0xe7, 0x86, 0x30, 0xf0, 0xc6, 0x06, 0x01, 0x10, 0x00, +0x00, 0x00, 0x18, 0x41, 0x0c, 0x3c, 0xe1, 0xe7, 0x86, 0x30, 0xf0, 0xc6, 0x06, 0x01, 0x30, 0x00, +0x00, 0x00, 0x18, 0x01, 0x0c, 0x33, 0x61, 0x99, 0x86, 0x30, 0xc8, 0xc6, 0x06, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x18, 0x01, 0x0c, 0x32, 0x21, 0x89, 0x86, 0x30, 0xcd, 0xc6, 0x06, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x18, 0x41, 0x0c, 0x30, 0x21, 0x81, 0x86, 0x30, 0xc3, 0xc6, 0x06, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x08, 0x41, 0x0c, 0x30, 0x21, 0x81, 0x86, 0x30, 0xc3, 0xc6, 0x06, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x07, 0x80, 0xf0, 0x30, 0x21, 0x81, 0x81, 0xc0, 0xc0, 0xc6, 0x06, 0x00, 0xc0, 0x00, +0x00, 0x00, 0x03, 0x00, 0x70, 0x00, 0x20, 0x80, 0x01, 0xc0, 0x00, 0x82, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0x1f, 0x81, 0x81, 0x0c, 0x0c, 0x0e, 0x07, 0xe0, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x1c, 0x01, 0xc3, 0x0c, 0x0c, 0x00, 0x07, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x18, 0x61, 0xe7, 0x0c, 0xcc, 0x31, 0x86, 0x18, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0f, 0x83, 0x1f, 0x81, 0xdb, 0x0c, 0xcc, 0x3f, 0x87, 0xe0, 0xf8, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0x1f, 0x81, 0x99, 0x0c, 0xcc, 0x3f, 0x87, 0xe0, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x1d, 0x81, 0x81, 0x0c, 0xcc, 0x31, 0x87, 0xe0, 0xe0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x19, 0x81, 0x81, 0x0c, 0xcc, 0x21, 0x86, 0x60, 0xc0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x18, 0x61, 0x81, 0x03, 0x30, 0x21, 0x86, 0x10, 0xfc, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x08, 0x61, 0x81, 0x03, 0x30, 0x20, 0x86, 0x10, 0x7c, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const unsigned char bm_def_lc [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xcf, 0x70, 0x78, 0x0e, 0x0c, 0x03, 0x07, 0xc0, 0x60, 0xff, 0x03, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xcf, 0x20, 0x78, 0x0e, 0x0c, 0x07, 0x07, 0x80, 0xe0, 0x7f, 0x87, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xcf, 0x23, 0x98, 0x7f, 0x1c, 0xff, 0x39, 0x9f, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, + 0xcf, 0x27, 0x98, 0x7f, 0x3c, 0xff, 0x39, 0x8f, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, + 0xcf, 0x27, 0x9f, 0x8f, 0x3c, 0xc3, 0x39, 0x81, 0xe7, 0x3f, 0xcf, 0x39, 0xff, 0xff, 0xff, 0xc0, + 0xce, 0x27, 0x9f, 0x07, 0x1c, 0x03, 0x39, 0x80, 0xe7, 0x3f, 0x8f, 0x39, 0xff, 0xff, 0xff, 0xc0, + 0xc0, 0x27, 0x98, 0x06, 0x0c, 0x03, 0x39, 0x80, 0x60, 0x33, 0x03, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xe0, 0x77, 0xfc, 0x0e, 0x0e, 0x07, 0x7d, 0xc0, 0xf0, 0x3f, 0x87, 0x81, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xff, 0xf0, 0x3c, 0x07, 0x81, 0xff, 0xc0, 0xff, 0xf8, 0x07, 0xff, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x7e, 0x0f, 0xc3, 0xff, 0xe1, 0xff, 0xfc, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xfc, 0x7f, 0x0f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xfe, 0x7f, 0x8f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x7e, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x7e, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x7f, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x7e, 0xff, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x7e, 0x7f, 0xcf, 0xc1, 0xf9, 0xf8, 0x3f, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x7e, 0x7e, 0x3f, 0xcf, 0xc1, 0xf9, 0xf8, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x7e, 0x7e, 0x1f, 0xcf, 0xc1, 0xf9, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xcf, 0xff, 0xf9, 0xff, 0xfc, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x7e, 0x7e, 0x0f, 0xc3, 0xff, 0xe1, 0xff, 0xf0, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x3c, 0x7c, 0x07, 0x83, 0xff, 0xe0, 0xff, 0xf0, 0x0f, 0xff, 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, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x26, 0x66, 0x66, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x33, 0x33, 0x32, 0x66, 0x66, 0x4c, 0x00, + 0x0c, 0xc9, 0x99, 0x99, 0x33, 0x33, 0x26, 0x66, 0x66, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x32, 0x00, + 0x0c, 0xc9, 0x99, 0x99, 0x33, 0x33, 0x26, 0x66, 0x66, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x81, 0xf0, 0x1f, 0x08, 0x08, 0x01, 0xc0, 0x1c, 0x08, 0x08, 0x20, 0x40, 0x7c, 0x00, + 0x00, 0x07, 0x81, 0xf8, 0x3f, 0x0c, 0x08, 0x01, 0xe0, 0x3c, 0x0c, 0x18, 0x60, 0x60, 0x7c, 0x00, + 0x00, 0x08, 0x61, 0x84, 0x38, 0x0e, 0x08, 0x06, 0x10, 0x43, 0x0e, 0x38, 0x79, 0xe1, 0x00, 0x00, + 0x00, 0x08, 0x61, 0x84, 0x38, 0x0f, 0x08, 0x06, 0x10, 0x43, 0x0f, 0x38, 0x79, 0xe1, 0x00, 0x00, + 0x00, 0x08, 0x61, 0xf8, 0x3f, 0x0c, 0x88, 0x06, 0x00, 0x43, 0x0c, 0xd8, 0x66, 0x60, 0x70, 0x00, + 0x00, 0x08, 0x61, 0xf0, 0x3f, 0x0c, 0xd8, 0x06, 0x00, 0x43, 0x0c, 0x88, 0x66, 0x60, 0x70, 0x00, + 0x00, 0x08, 0x61, 0x80, 0x30, 0x0c, 0x38, 0x06, 0x18, 0x43, 0x0c, 0x08, 0x60, 0x60, 0x0c, 0x00, + 0x00, 0x08, 0x61, 0x80, 0x38, 0x0c, 0x38, 0x06, 0x10, 0x43, 0x0c, 0x08, 0x60, 0x60, 0x0c, 0x00, + 0x00, 0x07, 0x81, 0x80, 0x3f, 0x0c, 0x18, 0x01, 0xe0, 0x3c, 0x0c, 0x08, 0x60, 0x61, 0xf0, 0x00, + 0x00, 0x03, 0x81, 0x00, 0x1f, 0x08, 0x08, 0x00, 0xc0, 0x1c, 0x08, 0x08, 0x20, 0x41, 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, 0x0f, 0xc6, 0x06, 0x07, 0xc3, 0xf0, 0xf8, 0x60, 0x60, 0x7c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xe0, 0x70, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x98, 0x18, 0x00, 0xc0, 0xc0, 0x79, 0xe1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x70, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x60, 0x07, 0x00, 0xc0, 0xf8, 0x66, 0x60, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x40, 0xc0, 0xc0, 0x60, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x40, 0xc0, 0xc0, 0x60, 0x60, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x60, 0x1f, 0x00, 0xc0, 0xf8, 0x60, 0x61, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x60, 0x1f, 0x00, 0xc0, 0xf8, 0x60, 0x61, 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 +}; + +const unsigned char bm_hwok [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0x1c, 0x7e, 0x0f, 0xe0, 0x3f, 0x01, 0xf8, 0x7e, 0x3f, 0x03, 0xf0, 0x1f, 0x80, 0xff, 0xc0, + 0xff, 0x08, 0x7e, 0x07, 0xc0, 0x3f, 0x00, 0xf8, 0x7e, 0x3f, 0x03, 0xf0, 0x1f, 0x80, 0xff, 0xc0, + 0xff, 0x08, 0x78, 0x43, 0xc3, 0x0f, 0x08, 0x78, 0x6e, 0x3e, 0x31, 0xf0, 0x87, 0x87, 0xff, 0xc0, + 0xff, 0x08, 0x78, 0x41, 0xc3, 0x0f, 0x08, 0x78, 0x66, 0x3c, 0x30, 0xf0, 0x87, 0x87, 0xff, 0xc0, + 0xff, 0x00, 0x78, 0x01, 0xc0, 0x3f, 0x08, 0x78, 0x66, 0x3c, 0x00, 0xf0, 0x1f, 0x80, 0xff, 0xc0, + 0xff, 0x00, 0x78, 0x01, 0xc0, 0x3f, 0x08, 0x78, 0x44, 0x3c, 0x00, 0xf0, 0x1f, 0x80, 0xff, 0xc0, + 0xff, 0x08, 0x78, 0x41, 0xc0, 0x3f, 0x08, 0x78, 0x00, 0x3c, 0x30, 0xf0, 0x1f, 0x87, 0xff, 0xc0, + 0xff, 0x08, 0x78, 0x61, 0xc0, 0x3f, 0x08, 0x78, 0x00, 0x3c, 0x30, 0xf0, 0x1f, 0x87, 0xff, 0xc0, + 0xff, 0x08, 0x78, 0x61, 0xc3, 0x0f, 0x00, 0xfe, 0x10, 0x7c, 0x30, 0xf0, 0x87, 0x80, 0xff, 0xc0, + 0xff, 0x1c, 0x78, 0x63, 0xe3, 0x0f, 0x01, 0xfe, 0x38, 0xfe, 0x31, 0xf1, 0xc7, 0x80, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x3e, 0x3c, 0x3c, 0x7c, 0x07, 0xff, 0xfe, 0x0f, 0xc7, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x1c, 0x3c, 0x3c, 0x07, 0xff, 0xfc, 0x0f, 0xc2, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x0c, 0x3c, 0x3e, 0x1f, 0xff, 0xf8, 0xc3, 0xc0, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x04, 0x3c, 0x3e, 0x1f, 0xff, 0xf0, 0xc3, 0xc0, 0x7f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x00, 0x3c, 0x3e, 0x1f, 0xff, 0xf0, 0xc3, 0xc0, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x00, 0x3c, 0x3e, 0x1f, 0xff, 0xf0, 0xc3, 0xc0, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x10, 0x3c, 0x3e, 0x1f, 0xff, 0xf0, 0xc3, 0xc0, 0x7f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x38, 0x3c, 0x3e, 0x1f, 0xff, 0xf8, 0xc3, 0xc0, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1e, 0x3c, 0x3c, 0x3e, 0x1f, 0xff, 0xfc, 0x0f, 0xc2, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x3e, 0x3c, 0x3c, 0x7f, 0x1f, 0xff, 0xfe, 0x0f, 0xc7, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xf0, 0x1f, 0x01, 0xf8, 0xf8, 0xff, 0xff, 0x01, 0xf8, 0x0f, 0xc1, 0xfc, 0x07, 0xe3, 0xe3, 0xc0, + 0xf0, 0x1e, 0x01, 0xf8, 0x70, 0xff, 0xfe, 0x01, 0xf8, 0x0f, 0xc0, 0xf8, 0x07, 0xe1, 0xc3, 0xc0, + 0xf8, 0x3e, 0x18, 0x7c, 0x03, 0xff, 0xfe, 0x18, 0x78, 0x7f, 0x0c, 0x78, 0x21, 0xf0, 0x07, 0xc0, + 0xfc, 0x3e, 0x18, 0x7e, 0x03, 0xff, 0xfe, 0x18, 0x78, 0x7f, 0x0c, 0x38, 0x61, 0xf8, 0x0f, 0xc0, + 0xfc, 0x3e, 0x01, 0xff, 0x07, 0xff, 0xfe, 0x01, 0xf8, 0x0f, 0x00, 0x38, 0x61, 0xfc, 0x1f, 0xc0, + 0xfc, 0x3e, 0x01, 0xff, 0x07, 0xff, 0xfe, 0x01, 0xf8, 0x0f, 0x00, 0x38, 0x61, 0xfe, 0x3f, 0xc0, + 0xfc, 0x3e, 0x01, 0xfe, 0x03, 0xff, 0xfe, 0x01, 0xf8, 0x7f, 0x0c, 0x38, 0x61, 0xfe, 0x3f, 0xc0, + 0xfc, 0x3e, 0x01, 0xfc, 0x03, 0xff, 0xfe, 0x01, 0xf8, 0x7f, 0x0c, 0x38, 0x21, 0xfe, 0x3f, 0xc0, + 0xfc, 0x3e, 0x18, 0x78, 0x70, 0xff, 0xfe, 0x18, 0x78, 0x0f, 0x0c, 0x38, 0x07, 0xfe, 0x3f, 0xc0, + 0xfc, 0x7f, 0x18, 0x78, 0xf8, 0xff, 0xff, 0x18, 0x78, 0x0f, 0x0c, 0x7c, 0x07, 0xfe, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_console_active [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x7f, 0x83, 0xf1, 0xf1, 0xf8, 0x0f, 0xe0, 0xfc, 0x7f, 0xc0, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x7f, 0x03, 0xf0, 0xe1, 0xf8, 0x0f, 0xc0, 0xfc, 0x3f, 0x80, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0xc6, 0x3e, 0x10, 0xf0, 0x61, 0xe1, 0xff, 0x84, 0x3c, 0x3f, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0x86, 0x3e, 0x30, 0xf0, 0x21, 0xe1, 0xff, 0x0c, 0x3c, 0x3f, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0x87, 0xfe, 0x30, 0xf0, 0x01, 0xf8, 0x3f, 0x0c, 0x3c, 0x3f, 0x80, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0x87, 0xfe, 0x30, 0xf0, 0x01, 0xf8, 0x1f, 0x0c, 0x3c, 0x3f, 0x80, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0x86, 0x3e, 0x30, 0xf0, 0x81, 0xff, 0x8f, 0x0c, 0x3c, 0x3f, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xc6, 0x3e, 0x10, 0xf0, 0xc1, 0xff, 0x8f, 0x84, 0x3c, 0x3f, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x7f, 0x03, 0xf0, 0xe1, 0xe0, 0x1f, 0xc0, 0xfc, 0x07, 0x80, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0xe0, 0x7f, 0x83, 0xf1, 0xf1, 0xe0, 0x3f, 0xe0, 0xfc, 0x07, 0xc0, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xc1, 0xfc, 0x07, 0x8f, 0x8f, 0x0f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xf0, 0x1f, 0xc0, 0xfc, 0x07, 0x87, 0x0f, 0x0f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0c, 0x7e, 0x1f, 0x87, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0c, 0x7e, 0x1f, 0x87, 0x87, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe0, 0x0f, 0x0f, 0xfe, 0x1f, 0x87, 0xc0, 0x3f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe0, 0x0f, 0x0f, 0xfe, 0x1f, 0x87, 0xc0, 0x3f, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0c, 0x7e, 0x1f, 0x87, 0xc0, 0x3f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0x0c, 0x7e, 0x1f, 0x87, 0xe0, 0x3f, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe1, 0x0f, 0xc0, 0xfe, 0x1f, 0x87, 0xf0, 0xff, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe3, 0x8f, 0xc1, 0xff, 0x1f, 0x8f, 0xf8, 0xff, 0x01, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_checks [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0x0f, 0x8e, 0x3c, 0x7f, 0x07, 0xe0, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x0f, 0x0c, 0x3c, 0x3e, 0x07, 0xe0, 0x3f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xff, 0x08, 0x78, 0x7f, 0x0c, 0x3c, 0x3c, 0x21, 0xe1, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xff, 0x08, 0x78, 0x7f, 0x84, 0x3c, 0x38, 0x61, 0xe1, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xff, 0x08, 0x78, 0x0f, 0xc0, 0xfc, 0x38, 0x7f, 0xe0, 0x3f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xff, 0x08, 0x78, 0x0f, 0xc0, 0xfc, 0x38, 0x7f, 0xe0, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x08, 0x78, 0x7f, 0xc0, 0xfc, 0x38, 0x61, 0xe1, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x08, 0x78, 0x7f, 0xe0, 0xfc, 0x3c, 0x21, 0xe1, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x0f, 0xf1, 0xfc, 0x3e, 0x07, 0xe0, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf8, 0x0f, 0xfb, 0xfc, 0x7f, 0x07, 0xe0, 0x3f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0x18, 0x78, 0x0f, 0xc1, 0xfc, 0x61, 0xf8, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x18, 0x78, 0x0f, 0xc0, 0xf8, 0x21, 0xf0, 0x0f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xc2, 0x1e, 0x18, 0x78, 0x7f, 0x0c, 0x78, 0x07, 0xe1, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xc3, 0x1e, 0x18, 0x78, 0x7f, 0x0c, 0x78, 0x07, 0xe1, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xc3, 0xfe, 0x00, 0x78, 0x0f, 0x0f, 0xf8, 0x1f, 0xf0, 0x3f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xc3, 0xfe, 0x00, 0x78, 0x0f, 0x0f, 0xf8, 0x1f, 0xf8, 0x1f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x1e, 0x18, 0x78, 0x7f, 0x0c, 0x78, 0x07, 0xff, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x1e, 0x18, 0x78, 0x7f, 0x0c, 0x78, 0x07, 0xff, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x18, 0x78, 0x0f, 0xc0, 0xf8, 0x21, 0xe0, 0x1f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0x18, 0x78, 0x0f, 0xc1, 0xfc, 0x61, 0xe0, 0x3f, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x38, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x7c, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0x8f, 0x87, 0xc0, 0x7f, 0xc1, 0xfe, 0x03, 0xf0, 0x1f, 0x01, 0xe0, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0x87, 0x0f, 0xc0, 0x3f, 0x81, 0xfc, 0x03, 0xf0, 0x1e, 0x01, 0xe0, 0x1f, 0xc0, + 0xfc, 0x7c, 0x01, 0xc6, 0x1f, 0xc2, 0x1f, 0x18, 0x78, 0x7f, 0xc3, 0xfe, 0x1f, 0xe1, 0x0f, 0xc0, + 0xfc, 0x38, 0x01, 0xe4, 0x3f, 0xc2, 0x1e, 0x18, 0x78, 0x7f, 0xc3, 0xfe, 0x1f, 0xe1, 0x0f, 0xc0, + 0xfc, 0x38, 0x00, 0x60, 0x7f, 0xc0, 0x3e, 0x00, 0x7c, 0x0f, 0xf0, 0x7e, 0x01, 0xe1, 0x0f, 0xc0, + 0xfc, 0x7c, 0x00, 0x60, 0xff, 0xc0, 0x7e, 0x00, 0x7e, 0x07, 0xf0, 0x3e, 0x01, 0xe1, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xf1, 0xff, 0xc3, 0xfe, 0x18, 0x7f, 0xc3, 0xfe, 0x1e, 0x1f, 0xe1, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xfb, 0xff, 0xc3, 0xfe, 0x18, 0x7f, 0xc3, 0xfe, 0x1e, 0x1f, 0xe1, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xfe, 0x18, 0x78, 0x07, 0xc0, 0x3e, 0x01, 0xe0, 0x1f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0x18, 0x78, 0x0f, 0xc0, 0x7f, 0x01, 0xe0, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_frame [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0xc0, 0x00, 0x00, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0xc0, 0x00, 0x00, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xc3, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0xc0, 0x00, 0x00, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0xc0, 0x00, 0x00, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 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, 0x06, 0x66, 0x66, 0x66, 0x19, 0x99, 0x99, 0x98, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x66, 0x66, 0x66, 0x19, 0x99, 0x99, 0x98, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const unsigned char bm_updating [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xf3, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x1f, 0xff, 0xf3, 0xf0, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x9f, 0xff, 0xf3, 0xf3, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x9f, 0xff, 0xf3, 0xf2, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xf8, 0x1f, 0xff, 0xf3, 0xf0, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xfb, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xff, 0xd9, 0x81, 0xff, 0xf3, 0x03, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xff, 0xc9, 0x81, 0xff, 0xf3, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xff, 0xc9, 0x99, 0xff, 0xf3, 0x33, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xff, 0xc9, 0x81, 0xff, 0xf3, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xff, 0xc9, 0x81, 0xff, 0xf3, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x87, 0x87, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe1, 0xff, 0xe3, 0xc3, 0xfc, 0x3f, 0xf8, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xfc, 0xc1, 0x81, 0xf8, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xfc, 0xc9, 0x81, 0xf9, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xfc, 0xc9, 0x99, 0xf9, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xfc, 0xc1, 0x81, 0xf8, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xc0, 0xfc, 0xc1, 0x81, 0xf8, 0x33, 0x30, 0x37, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xe1, 0xdc, 0x1f, 0xb8, 0x3b, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xc0, 0xc8, 0x19, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x44, 0xc8, 0xc8, 0x99, 0x99, 0x33, 0x32, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xc8, 0x99, 0x99, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xc0, 0xc8, 0x19, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xc0, 0xdc, 0x19, 0x98, 0x33, 0x30, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0e, 0xc1, 0xdd, 0xc1, 0x83, 0xbb, 0x87, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc0, 0xc9, 0x81, 0x81, 0x33, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xc9, 0x99, 0x91, 0x33, 0x33, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xc9, 0x99, 0x91, 0x33, 0x33, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc0, 0xc9, 0x81, 0x81, 0x33, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc1, 0xdd, 0xc1, 0x83, 0xbb, 0x03, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x44, 0xcc, 0xc9, 0x89, 0x99, 0x33, 0x32, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xfd, 0xc1, 0xc3, 0xb8, 0x3b, 0xf0, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf7, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x87, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x77, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xf3, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xec, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xf3, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xc7, 0x80, 0x00, 0x00, 0x1f, 0xb0, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xc3, 0xc0, 0x00, 0x00, 0x3f, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x44, 0xcd, 0xe0, 0x00, 0x00, 0x7b, 0x32, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x44, 0xcc, 0xf0, 0x00, 0x00, 0xf3, 0x32, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xc0, 0xf8, 0x00, 0x01, 0xf3, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xc1, 0xfc, 0x00, 0x03, 0xfb, 0x30, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc1, 0xdf, 0x80, 0x1f, 0xbb, 0x03, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc0, 0xcf, 0xc0, 0x3f, 0x33, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xcd, 0xe0, 0x7b, 0x33, 0x33, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xc8, 0xc9, 0xf0, 0xf1, 0x33, 0x33, 0x23, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0c, 0xc0, 0xc9, 0xff, 0xe1, 0x33, 0x03, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x0e, 0xc1, 0xdd, 0xff, 0xe3, 0xbb, 0x87, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe0, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x4c, 0xcc, 0xc9, 0x99, 0x99, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xcc, 0xc9, 0x81, 0x99, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x40, 0xcc, 0xc1, 0x81, 0x98, 0x33, 0x30, 0x33, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0xe1, 0xff, 0xc1, 0xc3, 0xf8, 0x3f, 0xf8, 0x77, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_fw_corrupt [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xf0, 0x1f, 0x1e, 0x03, 0xf8, 0xfc, 0x7c, 0x7e, 0x3f, 0x83, 0xf0, 0x1f, 0xc0, 0x7f, 0xff, 0xc0, + 0xf0, 0x1e, 0x1e, 0x01, 0xf0, 0xfc, 0x38, 0x7e, 0x1f, 0x01, 0xf0, 0x0f, 0x80, 0x7f, 0xff, 0xc0, + 0xf0, 0xfe, 0x1e, 0x10, 0xf0, 0x30, 0x38, 0x66, 0x1e, 0x10, 0xf0, 0x87, 0x87, 0xff, 0xff, 0xc0, + 0xf0, 0xfe, 0x1e, 0x10, 0xf0, 0x30, 0x38, 0x66, 0x1e, 0x10, 0xf0, 0x87, 0x87, 0xff, 0xff, 0xc0, + 0xf0, 0x1e, 0x1e, 0x01, 0xf0, 0x00, 0x38, 0x66, 0x1e, 0x00, 0xf0, 0x0f, 0x80, 0x7f, 0xff, 0xc0, + 0xf0, 0x1e, 0x1e, 0x01, 0xf0, 0x00, 0x38, 0x26, 0x1e, 0x00, 0xf0, 0x0f, 0x80, 0x7f, 0xff, 0xc0, + 0xf0, 0xfe, 0x1e, 0x01, 0xf0, 0xcc, 0x38, 0x00, 0x1e, 0x10, 0xf0, 0x0f, 0x87, 0xff, 0xff, 0xc0, + 0xf0, 0xfe, 0x1e, 0x01, 0xf0, 0xcc, 0x3c, 0x00, 0x3e, 0x30, 0xf0, 0x0f, 0x87, 0xff, 0xff, 0xc0, + 0xf0, 0xfe, 0x1e, 0x10, 0xf0, 0xfc, 0x3e, 0x18, 0x7e, 0x30, 0xf0, 0x87, 0x80, 0x7f, 0xff, 0xc0, + 0xf1, 0xff, 0x1e, 0x38, 0xf8, 0xfc, 0x7f, 0x18, 0x7e, 0x38, 0xf1, 0xc7, 0xc0, 0x7f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x1f, 0xe0, 0x7e, 0x03, 0xf0, 0x1f, 0xc6, 0x3e, 0x03, 0xf0, 0x1f, 0xfe, 0x1f, 0xff, 0xc0, + 0xf8, 0x0f, 0xe0, 0x7e, 0x03, 0xf0, 0x0f, 0x86, 0x1e, 0x01, 0xf0, 0x1f, 0xfe, 0x1f, 0xff, 0xc0, + 0xf0, 0x87, 0xc6, 0x3e, 0x10, 0xf0, 0x87, 0x86, 0x1e, 0x10, 0xfc, 0x3f, 0xf9, 0xef, 0xff, 0xc0, + 0xf0, 0xc7, 0x86, 0x1e, 0x10, 0xf0, 0x87, 0x86, 0x1e, 0x10, 0xfc, 0x3f, 0xf9, 0xe7, 0xff, 0xc0, + 0xf0, 0xff, 0x86, 0x1e, 0x03, 0xf0, 0x0f, 0x86, 0x1e, 0x01, 0xfc, 0x3f, 0xf9, 0xe7, 0xff, 0xc0, + 0xf0, 0xff, 0x86, 0x1e, 0x03, 0xf0, 0x0f, 0x86, 0x1e, 0x03, 0xfc, 0x3f, 0xf9, 0xe7, 0xff, 0xc0, + 0xf0, 0xc7, 0x86, 0x1e, 0x03, 0xf0, 0x0f, 0x86, 0x1e, 0x1f, 0xfc, 0x3f, 0xe7, 0xfb, 0xff, 0xc0, + 0xf0, 0x87, 0xc6, 0x3e, 0x03, 0xf0, 0x0f, 0xc6, 0x3e, 0x3f, 0xfc, 0x3f, 0xe7, 0xf9, 0xff, 0xc0, + 0xf8, 0x0f, 0xe0, 0x7e, 0x10, 0xf0, 0x87, 0xe0, 0x7e, 0x3f, 0xfc, 0x3f, 0xe6, 0x19, 0xff, 0xc0, + 0xfc, 0x1f, 0xe0, 0x7e, 0x38, 0xf1, 0xc7, 0xe0, 0x7e, 0x3f, 0xfc, 0x7f, 0xe6, 0x19, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0x1e, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x1e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x1e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x1e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x1f, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7e, 0x1f, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7e, 0x1f, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7e, 0x1f, 0xbf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0xef, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xfe, 0x1f, 0xf3, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xfe, 0x1f, 0xf3, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_pairing [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x03, 0xf8, 0x3f, 0x1f, 0x01, 0xf8, 0xf8, 0xf1, 0xfc, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x01, 0xf0, 0x3f, 0x0e, 0x01, 0xf8, 0x70, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x11, 0xe3, 0x0f, 0x0e, 0x18, 0x78, 0x70, 0x30, 0xf0, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x11, 0xc3, 0x0f, 0x0e, 0x18, 0x78, 0x70, 0x30, 0xf1, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x01, 0xc0, 0x0f, 0x0e, 0x01, 0xf8, 0x70, 0x00, 0xf1, 0xc7, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x03, 0xc0, 0x0f, 0x0e, 0x01, 0xf8, 0x70, 0x00, 0xf1, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1f, 0xc3, 0x0f, 0x0e, 0x01, 0xf8, 0x70, 0xc0, 0xf1, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1f, 0xc3, 0x0f, 0x0e, 0x01, 0xf8, 0x70, 0xc0, 0xf0, 0x87, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x1f, 0xc3, 0x0f, 0x0e, 0x18, 0x78, 0x70, 0xf0, 0xf8, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x3f, 0xe3, 0x0f, 0x1f, 0x18, 0x78, 0xf8, 0xf1, 0xfc, 0x1f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_online [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xf0, 0x1c, 0x07, 0xe0, 0xf8, 0xf1, 0xf0, 0x1e, 0x0f, 0x80, 0xc3, 0x1c, 0x60, 0x18, 0x0f, 0xc0, + 0xf0, 0x18, 0x07, 0xc0, 0x70, 0xf0, 0xe0, 0x1e, 0x07, 0x00, 0xc3, 0x08, 0x60, 0x18, 0x07, 0xc0, + 0xf8, 0x38, 0x21, 0x84, 0x30, 0x30, 0xc3, 0xf8, 0x43, 0x07, 0xc3, 0x08, 0x61, 0xf8, 0x43, 0xc0, + 0xfc, 0x38, 0x21, 0x84, 0x30, 0x30, 0xc3, 0xf8, 0x63, 0x07, 0xc3, 0x08, 0x61, 0xf8, 0x43, 0xc0, + 0xfc, 0x38, 0x07, 0x80, 0x30, 0x00, 0xe0, 0x78, 0x7f, 0x00, 0xc3, 0x80, 0xe0, 0x18, 0x07, 0xc0, + 0xfc, 0x38, 0x07, 0x80, 0x30, 0x00, 0xf0, 0x38, 0x7f, 0x00, 0xc3, 0xc1, 0xe0, 0x18, 0x0f, 0xc0, + 0xfc, 0x38, 0x07, 0x84, 0x30, 0xc0, 0xfe, 0x18, 0x63, 0x07, 0xc3, 0xc1, 0xe1, 0xf8, 0x0f, 0xc0, + 0xfc, 0x38, 0x07, 0x86, 0x30, 0xc0, 0xfe, 0x18, 0x43, 0x07, 0xc3, 0xc1, 0xe1, 0xf8, 0x07, 0xc0, + 0xfc, 0x38, 0x21, 0x86, 0x30, 0xf0, 0xc0, 0x3e, 0x07, 0x00, 0xc3, 0xe3, 0xe0, 0x18, 0x43, 0xc0, + 0xfc, 0x7c, 0x61, 0x8e, 0x38, 0xf1, 0xc0, 0x7e, 0x0f, 0x80, 0xc3, 0xf7, 0xe0, 0x18, 0xe3, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x0f, 0xf8, 0xf1, 0xfc, 0x7f, 0xe3, 0xf8, 0xf1, 0xfc, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x07, 0xf0, 0xf0, 0xf8, 0x7f, 0xe1, 0xf0, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x43, 0xf0, 0x30, 0xf8, 0x7f, 0xe1, 0xf0, 0x30, 0xf8, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x61, 0xf0, 0x30, 0xf8, 0x7f, 0xe1, 0xf0, 0x30, 0xf8, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x61, 0xf0, 0x00, 0xf8, 0x7f, 0xe1, 0xf0, 0x00, 0xf8, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x61, 0xf0, 0x00, 0xf8, 0x7f, 0xe1, 0xf0, 0x00, 0xf8, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x61, 0xf0, 0xc0, 0xf8, 0x7f, 0xe1, 0xf0, 0xc0, 0xf8, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xf8, 0x43, 0xf0, 0xc0, 0xf8, 0x3f, 0xe1, 0xf0, 0xc0, 0xf8, 0x3f, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x07, 0xf0, 0xf0, 0xf8, 0x07, 0xe1, 0xf0, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xfe, 0x0f, 0xf8, 0xf1, 0xfc, 0x07, 0xe3, 0xf8, 0xf1, 0xfc, 0x07, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_console [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xfe, 0x07, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xfe, 0x0f, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xfc, 0x1f, 0xff, 0xc0, + 0xff, 0xf8, 0x1f, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xfe, 0x07, 0xff, 0xc0, + 0xff, 0xf8, 0x3f, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0x07, 0xff, 0xc0, + 0xff, 0xf0, 0x7f, 0xff, 0x0f, 0x0f, 0xf1, 0xe1, 0xe0, 0x3c, 0x3c, 0x3f, 0xff, 0x81, 0xff, 0xc0, + 0xff, 0xe0, 0xff, 0xff, 0x0f, 0x0f, 0xe1, 0xe1, 0xe0, 0x3c, 0x3c, 0x3f, 0xff, 0xc1, 0xff, 0xc0, + 0xff, 0xc1, 0xf8, 0x7f, 0x0f, 0x0c, 0x21, 0xe1, 0xe1, 0xfc, 0x3c, 0x3f, 0x87, 0xe0, 0xff, 0xc0, + 0xff, 0xc3, 0xf0, 0x7f, 0x0f, 0x0c, 0x21, 0xe1, 0xe0, 0x3c, 0x3c, 0x3f, 0x83, 0xf0, 0x7f, 0xc0, + 0xff, 0xc7, 0xe0, 0x7f, 0x0f, 0x0c, 0x21, 0xe1, 0xe0, 0x3c, 0x3c, 0x3f, 0x81, 0xf8, 0x7f, 0xc0, + 0xff, 0x87, 0xc0, 0xff, 0x0f, 0x00, 0x01, 0xe1, 0xe0, 0x3c, 0x3c, 0x3f, 0xc0, 0xf8, 0x3f, 0xc0, + 0xff, 0x07, 0x81, 0xff, 0x0f, 0x00, 0x01, 0xe1, 0xe1, 0xfc, 0x3c, 0x3f, 0xe0, 0x78, 0x3f, 0xc0, + 0xff, 0x07, 0x83, 0xff, 0x0f, 0x80, 0x03, 0xe1, 0xe1, 0xfc, 0x3c, 0x3f, 0xf0, 0x7c, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0xff, 0x0f, 0xc3, 0xc7, 0xe1, 0xe1, 0xfc, 0x3c, 0x3f, 0xf8, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0xcf, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3c, 0x78, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0x87, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x38, 0x78, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0x87, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x38, 0x78, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0x87, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3c, 0x78, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0xff, 0x0f, 0xff, 0xf0, 0x7f, 0x00, 0xff, 0xfc, 0x3f, 0xf8, 0x7e, 0x3f, 0xc0, + 0xff, 0x0f, 0x87, 0xff, 0x0f, 0xff, 0xe0, 0x7e, 0x00, 0x7f, 0xfc, 0x3f, 0xf8, 0x7c, 0x3f, 0xc0, + 0xff, 0x07, 0x83, 0xff, 0x0f, 0xff, 0xc2, 0x1e, 0x10, 0x7f, 0xfc, 0x3f, 0xf0, 0x78, 0x3f, 0xc0, + 0xff, 0x07, 0x81, 0xff, 0x0f, 0xff, 0xc2, 0x1e, 0x18, 0x7f, 0xfc, 0x3f, 0xe0, 0x78, 0x3f, 0xc0, + 0xff, 0x87, 0xe0, 0xff, 0x0f, 0xff, 0xc0, 0x1e, 0x00, 0x7f, 0xfc, 0x3f, 0xc0, 0xf8, 0x7f, 0xc0, + 0xff, 0xc3, 0xe0, 0x7f, 0x0f, 0xff, 0xc0, 0x1e, 0x00, 0xff, 0xfc, 0x3f, 0x81, 0xf8, 0x7f, 0xc0, + 0xff, 0xc1, 0xf8, 0x7f, 0x0f, 0xff, 0xc2, 0x1e, 0x1f, 0xff, 0xfc, 0x3f, 0x83, 0xe0, 0x7f, 0xc0, + 0xff, 0xc1, 0xf8, 0x7f, 0x0f, 0xff, 0xc6, 0x1e, 0x1f, 0xff, 0xfc, 0x3f, 0x87, 0xe0, 0xff, 0xc0, + 0xff, 0xe0, 0x7f, 0xff, 0x0f, 0xff, 0xc6, 0x1e, 0x1f, 0xff, 0xfc, 0x3f, 0xff, 0x81, 0xff, 0xc0, + 0xff, 0xf0, 0x7f, 0xff, 0x0f, 0xff, 0xc7, 0x1e, 0x1f, 0xff, 0xfc, 0x3f, 0xff, 0x83, 0xff, 0xc0, + 0xff, 0xf8, 0x1f, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xfe, 0x07, 0xff, 0xc0, + 0xff, 0xfc, 0x1f, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xfe, 0x0f, 0xff, 0xc0, + 0xff, 0xfe, 0x07, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xff, 0x07, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf8, 0x1f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, + 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, + 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, + 0xff, 0xe7, 0xff, 0xfe, 0x7f, 0xff, 0xcf, 0xff, 0xf9, 0xff, 0xff, 0x3f, 0xff, 0xe7, 0xff, 0xc0, + 0xff, 0xe7, 0xff, 0xfe, 0x7f, 0xff, 0xcf, 0xff, 0xf9, 0xff, 0xff, 0x3f, 0xff, 0xe7, 0xff, 0xc0, + 0xff, 0xe7, 0xff, 0xfe, 0x7f, 0xff, 0xcf, 0xff, 0xf9, 0xff, 0xff, 0x3f, 0xff, 0xe7, 0xff, 0xc0, + 0xff, 0xe7, 0xff, 0xfe, 0x7f, 0xff, 0xcf, 0xff, 0xf9, 0xff, 0xff, 0x3f, 0xff, 0xe7, 0xff, 0xc0, + 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xdf, 0xff, 0xf9, 0xff, 0xff, 0x3f, 0xff, 0xe7, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfe, 0x00, 0xff, 0xc0, 0x0f, 0xf8, 0x01, 0xff, 0x00, 0x3f, 0xe0, 0x07, 0xfc, 0x00, 0xff, 0xc0, + 0xfc, 0x00, 0x7f, 0x80, 0x0f, 0xf0, 0x01, 0xfe, 0x00, 0x3f, 0xc0, 0x03, 0xf8, 0x00, 0x7f, 0xc0, + 0xfc, 0xff, 0x9f, 0x9f, 0xf3, 0xf3, 0xfe, 0x7e, 0x7f, 0xcf, 0xcf, 0xf9, 0xf8, 0xff, 0x3f, 0xc0, + 0xfc, 0xff, 0x9f, 0x9f, 0xf3, 0xf3, 0xff, 0x7e, 0x7f, 0xef, 0xcf, 0xfd, 0xf9, 0xff, 0xbf, 0xc0, + 0xfc, 0xc1, 0xef, 0x9b, 0xbc, 0xf3, 0x1f, 0x9e, 0x78, 0xf3, 0xcf, 0x7e, 0x79, 0x83, 0xcf, 0xc0, + 0xfc, 0xc1, 0xe7, 0x99, 0xbc, 0xf3, 0x1f, 0x9e, 0x78, 0x73, 0xcf, 0x3e, 0x79, 0x83, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x99, 0xfc, 0xf3, 0x3d, 0x9e, 0x67, 0x33, 0xcf, 0x1e, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x99, 0xfc, 0xf3, 0x39, 0x9e, 0x67, 0x33, 0xcf, 0x0e, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0xc0, 0x67, 0x98, 0x3c, 0xf3, 0x19, 0x9e, 0x67, 0x33, 0xcf, 0x0e, 0x79, 0xb8, 0xcf, 0xc0, + 0xfc, 0xc0, 0x67, 0x98, 0x3c, 0xf3, 0x09, 0x9e, 0x67, 0x33, 0xcf, 0x0e, 0x79, 0x98, 0x4f, 0xc0, + 0xfc, 0xff, 0xe7, 0x9f, 0xfc, 0xf3, 0x01, 0x9e, 0x78, 0x73, 0xcf, 0x0e, 0x79, 0x98, 0x4f, 0xc0, + 0xfc, 0xff, 0xe7, 0x9f, 0xfc, 0xf3, 0x01, 0x9e, 0x78, 0x73, 0xcf, 0x0e, 0x79, 0x98, 0xcf, 0xc0, + 0xfc, 0xdc, 0x67, 0x98, 0x3c, 0xf3, 0x39, 0x9e, 0x78, 0x73, 0xcf, 0x0e, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0xdc, 0x67, 0x98, 0x3c, 0xf3, 0x39, 0x9e, 0x78, 0x73, 0xcf, 0x1e, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x99, 0xfc, 0xf3, 0x31, 0x9e, 0x67, 0x33, 0xcf, 0xfe, 0x79, 0x8e, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x99, 0xfc, 0xf3, 0x21, 0x9e, 0x67, 0x33, 0xcf, 0xfe, 0x79, 0x86, 0x4f, 0xc0, + 0xfc, 0xc0, 0x67, 0x99, 0xbc, 0xf3, 0x01, 0x9e, 0x67, 0x33, 0xcf, 0x1e, 0x79, 0x86, 0x4f, 0xc0, + 0xfc, 0xc0, 0x67, 0x9b, 0xbc, 0xf3, 0x01, 0x9e, 0x6f, 0xb3, 0xcf, 0x1e, 0x79, 0x8e, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x9f, 0xfc, 0xf3, 0xff, 0x9e, 0x7f, 0xf3, 0xcf, 0xfe, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0xff, 0xe7, 0x9f, 0xfc, 0xf3, 0xff, 0x9e, 0x7f, 0xf3, 0xcf, 0xfe, 0x79, 0xff, 0xcf, 0xc0, + 0xfc, 0x00, 0x07, 0x80, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x03, 0xc0, 0x00, 0x78, 0x00, 0x0f, 0xc0, + 0xfc, 0x00, 0x07, 0x80, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x03, 0xc0, 0x00, 0x7c, 0x00, 0x0f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xfc, 0xf0, 0x3c, 0xff, 0xe1, 0xf0, 0x0f, 0xfc, 0x07, 0xfe, 0x03, 0xff, 0x0f, 0xff, 0xc0, + 0xff, 0xf8, 0x60, 0x18, 0x7f, 0xc0, 0xe0, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xfe, 0x07, 0xff, 0xc0, + 0xff, 0xf8, 0x60, 0x18, 0x7f, 0xc0, 0xe0, 0x07, 0xf8, 0x03, 0xfc, 0x01, 0xfe, 0x07, 0xff, 0xc0, + 0xff, 0xf8, 0x61, 0x98, 0x7f, 0xc0, 0xe1, 0x87, 0xf8, 0x43, 0xfc, 0x31, 0xfe, 0x07, 0xff, 0xc0, + 0xff, 0xf8, 0x60, 0x1f, 0xff, 0xe0, 0xe1, 0x87, 0xf8, 0x43, 0xfc, 0x31, 0xff, 0x07, 0xff, 0xc0, + 0xff, 0xf8, 0x60, 0x1f, 0xff, 0xf0, 0xe1, 0x87, 0xf8, 0x43, 0xfc, 0x31, 0xff, 0x87, 0xff, 0xc0, + 0xff, 0xf8, 0x60, 0xf8, 0xff, 0xf0, 0xe1, 0x87, 0x38, 0x43, 0x9c, 0x31, 0xcf, 0x87, 0xff, 0xc0, + 0xff, 0xf8, 0x61, 0xf8, 0x7f, 0xf0, 0xe1, 0x86, 0x18, 0x43, 0x0c, 0x31, 0x87, 0x87, 0xff, 0xc0, + 0xff, 0xf8, 0x61, 0xf8, 0x7f, 0xf0, 0xe0, 0x06, 0x18, 0x03, 0x0c, 0x01, 0x87, 0x87, 0xff, 0xc0, + 0xff, 0xf8, 0x61, 0xf8, 0xff, 0xf0, 0xf0, 0x06, 0x18, 0x03, 0x0c, 0x01, 0x87, 0x87, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_hwfail [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x71, 0xf8, 0x3f, 0x80, 0xfc, 0x07, 0xe1, 0xf8, 0xfe, 0x0f, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xf8, 0x1f, 0x00, 0xfc, 0x03, 0xe1, 0xf8, 0x7c, 0x0f, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x8f, 0x04, 0x3c, 0x21, 0xe1, 0xb8, 0x78, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x04, 0x3c, 0x21, 0xe1, 0x98, 0x70, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xfc, 0x01, 0xe0, 0x07, 0x00, 0xfc, 0x21, 0xe1, 0x98, 0x70, 0x03, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xfc, 0x01, 0xe0, 0x07, 0x00, 0xfc, 0x21, 0xe1, 0x90, 0x70, 0x03, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x00, 0xfc, 0x21, 0xe0, 0x00, 0x70, 0xc3, 0xc0, 0x7e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x00, 0xfc, 0x21, 0xe0, 0x00, 0xf0, 0xc3, 0xc0, 0x3e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x04, 0x3c, 0x03, 0xf8, 0x41, 0xf0, 0xc3, 0xc2, 0x1e, 0x03, 0xff, 0xc0, + 0xfc, 0x71, 0xe1, 0x8f, 0x8c, 0x3c, 0x07, 0xf8, 0x63, 0xf8, 0xc3, 0xc7, 0x1e, 0x03, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x07, 0xe0, 0x7e, 0x3c, 0x3f, 0xc7, 0x1e, 0x03, 0xf8, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xc0, + 0xfc, 0x07, 0xe0, 0x7e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xc0, + 0xfc, 0x3f, 0xc6, 0x3e, 0x3c, 0x3f, 0xc6, 0x1e, 0x10, 0xf0, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x10, 0xf0, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x07, 0x80, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x07, 0x80, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0xff, 0xff, 0xdf, 0xef, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc2, 0x1e, 0x01, 0xf0, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x03, 0xe0, 0x3e, 0x10, 0xf0, 0x0f, 0xff, 0x98, 0x67, 0xff, 0xc0, + 0xfc, 0x7f, 0xc6, 0x3e, 0x3c, 0x03, 0xf0, 0x7e, 0x38, 0xf8, 0x0f, 0xff, 0x98, 0x67, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x7b, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf8, 0x7e, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf8, 0x7f, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf8, 0x7f, 0xbf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf8, 0x7f, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf8, 0x7f, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_no_radio [] PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x71, 0xf8, 0x3f, 0x80, 0xfc, 0x07, 0xe1, 0xf8, 0xfe, 0x0f, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xf8, 0x1f, 0x00, 0xfc, 0x03, 0xe1, 0xf8, 0x7c, 0x0f, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x8f, 0x04, 0x3c, 0x21, 0xe1, 0xb8, 0x78, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x04, 0x3c, 0x21, 0xe1, 0x98, 0x70, 0xc3, 0xc2, 0x1e, 0x1f, 0xff, 0xc0, + 0xfc, 0x01, 0xe0, 0x07, 0x00, 0xfc, 0x21, 0xe1, 0x98, 0x70, 0x03, 0xc0, 0x3e, 0x03, 0xff, 0xc0, + 0xfc, 0x01, 0xe0, 0x07, 0x00, 0xfc, 0x21, 0xe1, 0x90, 0x70, 0x03, 0xc0, 0x7e, 0x03, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x00, 0xfc, 0x21, 0xe0, 0x00, 0x70, 0xc3, 0xc0, 0x7e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x00, 0xfc, 0x21, 0xe0, 0x00, 0xf0, 0xc3, 0xc0, 0x3e, 0x1f, 0xff, 0xc0, + 0xfc, 0x21, 0xe1, 0x87, 0x04, 0x3c, 0x03, 0xf8, 0x41, 0xf0, 0xc3, 0xc2, 0x1e, 0x03, 0xff, 0xc0, + 0xfc, 0x71, 0xe1, 0x8f, 0x8c, 0x3c, 0x07, 0xf8, 0x63, 0xf8, 0xc3, 0xc7, 0x1e, 0x03, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xfc, 0x07, 0xe0, 0x7e, 0x3c, 0x3f, 0xc7, 0x1e, 0x03, 0xf8, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xc0, + 0xfc, 0x07, 0xe0, 0x7e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xf8, 0x7f, 0xff, 0xc0, + 0xfc, 0x3f, 0xc6, 0x3e, 0x3c, 0x3f, 0xc6, 0x1e, 0x10, 0xf0, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x10, 0xf0, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x07, 0x80, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x07, 0x80, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0x0f, 0xff, 0xe7, 0x9f, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc6, 0x1e, 0x01, 0xf0, 0xff, 0xff, 0xdf, 0xef, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x3f, 0xc2, 0x1e, 0x01, 0xf0, 0xff, 0xff, 0x9f, 0xe7, 0xff, 0xc0, + 0xfc, 0x3f, 0x86, 0x1e, 0x3c, 0x03, 0xe0, 0x3e, 0x10, 0xf0, 0x0f, 0xff, 0x98, 0x67, 0xff, 0xc0, + 0xfc, 0x7f, 0xc6, 0x3e, 0x3c, 0x03, 0xf0, 0x7e, 0x38, 0xf8, 0x0f, 0xff, 0x98, 0x67, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x7b, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x78, 0x79, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf8, 0x7e, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf8, 0x7e, 0x7f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf8, 0x7f, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf8, 0x7f, 0xbf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf8, 0x7f, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf8, 0x7f, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xcf, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0 +}; + +const unsigned char bm_plug [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, + 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x33, 0x33, + 0xff, 0xf0, 0x00, 0x33, 0x33, 0xff, 0xf0, 0x00, 0xcc, 0xcc, 0xff, 0xf0, 0x00, 0xcc, 0xcc, 0xff, + 0xf0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x03, 0xf0, + 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00 +}; + +const unsigned char bm_hg_low [] PROGMEM = { + 0xff, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x33, 0x00, 0x33, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x33, 0x00, 0x33, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0 +}; + +const unsigned char bm_hg_high [] PROGMEM = { + 0xff, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0x3f, 0x00, 0x3f, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0 +}; + +const unsigned char bm_n_uh [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, // 0 + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf0, 0xc0, 0xf0, 0xc0, 0xf0, 0xc0, 0xf0, 0xc0, + 0xf0, 0xc0, 0xf0, 0xc0, // 1 + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, + 0x00, 0x00, 0x00, 0x00, // 2 + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, // 3 + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0xfc, 0x00, 0xfc, 0x00, // 4 + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x00, // 5 + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, // 6 + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0xc0, 0xf0, 0xc0, 0xc3, 0xc0, 0xc3, 0xc0, + 0x03, 0xc0, 0x03, 0xc0, // 7 + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, // 8 + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0xfc, 0x00, 0xfc, 0x00 // 9 +}; + +#endif + + const unsigned char bm_nfr [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -361,57 +1707,3 @@ const unsigned char bm_nfr [] PROGMEM = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; - -const unsigned char bm_online [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0x1c, 0x66, 0x61, 0x8c, 0x24, 0x90, 0x87, - 0xe6, 0x49, 0x22, 0x4f, 0x24, 0xe4, 0x93, 0x93, 0xe6, 0x18, 0x20, 0x63, 0x3c, 0x26, 0x30, 0x87, - 0xe6, 0x19, 0x24, 0x79, 0x24, 0xe6, 0x33, 0x87, 0xe6, 0x49, 0x26, 0x43, 0x8c, 0x27, 0x70, 0x93, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xe6, 0x73, 0xe7, 0x33, 0x87, 0xff, - 0xff, 0xe4, 0xe2, 0x73, 0xe7, 0x13, 0x9f, 0xff, 0xff, 0xe4, 0xe0, 0x73, 0xe7, 0x03, 0x87, 0xff, - 0xff, 0xe4, 0xe4, 0x73, 0xe7, 0x23, 0x9f, 0xff, 0xff, 0xf1, 0xe6, 0x70, 0xe7, 0x33, 0x87, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -const unsigned char bm_pairing [] PROGMEM = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xf0, 0xe3, 0x98, 0x73, 0x33, 0x87, 0xff, 0xff, 0xf2, 0xc9, 0x99, 0x33, 0x13, 0x3f, 0xff, - 0xff, 0xf0, 0xc1, 0x98, 0x73, 0x03, 0x27, 0xff, 0xff, 0xf3, 0xc9, 0x98, 0x73, 0x23, 0x27, 0xff, - 0xff, 0xf3, 0xc9, 0x99, 0x33, 0x33, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -const unsigned char bm_n_uh [] PROGMEM = { - 0x07, 0x27, 0x27, 0x27, 0x07, 0x8f, 0x8f, 0xcf, 0xcf, 0xcf, 0x07, 0xe7, 0x07, 0x3f, 0x07, 0x07, - 0xe7, 0xc7, 0xe7, 0x07, 0x27, 0x27, 0x07, 0xe7, 0xe7, 0x07, 0x3f, 0x07, 0xe7, 0x07, 0x07, 0x3f, - 0x07, 0x27, 0x07, 0x07, 0xc7, 0xcf, 0x9f, 0x1f, 0x07, 0x27, 0x07, 0x27, 0x07, 0x07, 0x27, 0x07, - 0xe7, 0xe7 -}; - -const unsigned char bm_plug [] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x7f, 0x80, 0x55, 0xfc, 0x00, 0xaa, 0xfc, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x1c, 0x00 -}; - -const unsigned char bm_hg_low [] PROGMEM = { - 0xf8, 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0xf8, 0xf8 -}; - -const unsigned char bm_hg_high [] PROGMEM = { - 0xf8, 0x88, 0xf8, 0x70, 0x20, 0x70, 0xf8, 0xf8, 0xf8 -}; \ No newline at end of file diff --git a/Power.h b/Power.h index 07eef08..395f629 100644 --- a/Power.h +++ b/Power.h @@ -44,6 +44,26 @@ int bat_charged_samples = 0; bool bat_voltage_dropping = false; float bat_delay_v = 0; +#elif BOARD_MODEL == BOARD_RAK4631 +#include "nrfx_power.h" +#define BAT_C_SAMPLES 7 +#define BAT_D_SAMPLES 2 +#define BAT_V_MIN 2.75 +#define BAT_V_MAX 4.2 +#define BAT_V_FLOAT 4.22 +#define BAT_SAMPLES 5 +#define VBAT_MV_PER_LSB (0.73242188F) // 3.0V ADC range and 12 - bit ADC resolution = 3000mV / 4096 +#define VBAT_DIVIDER_COMP (1.73) // Compensation factor for the VBAT divider +#define VBAT_MV_PER_LSB_FIN (VBAT_DIVIDER_COMP * VBAT_MV_PER_LSB) +#define PIN_VBAT WB_A0 +float bat_p_samples[BAT_SAMPLES]; +float bat_v_samples[BAT_SAMPLES]; +uint8_t bat_samples_count = 0; +int bat_discharging_samples = 0; +int bat_charging_samples = 0; +int bat_charged_samples = 0; +bool bat_voltage_dropping = false; +float bat_delay_v = 0; #endif uint32_t last_pmu_update = 0; @@ -193,6 +213,66 @@ void measure_battery() { else { battery_ready = false; } + + #elif BOARD_MODEL == BOARD_RAK4631 + battery_installed = true; + battery_indeterminate = false; + + bat_v_samples[bat_samples_count%BAT_SAMPLES] = (float)(analogRead(PIN_VBAT)) * VBAT_MV_PER_LSB_FIN; + + if (bat_v_samples[bat_samples_count%BAT_SAMPLES] < 3300) { + bat_p_samples[bat_samples_count%BAT_SAMPLES] = 0; + } + else if (bat_v_samples[bat_samples_count%BAT_SAMPLES] < 3600) + { + bat_v_samples[bat_samples_count%BAT_SAMPLES] -= 3300; + bat_p_samples[bat_samples_count%BAT_SAMPLES] = bat_v_samples[bat_samples_count%BAT_SAMPLES] / 30; + } else { + bat_v_samples[bat_samples_count%BAT_SAMPLES] -= 3600; + } + bat_p_samples[bat_samples_count%BAT_SAMPLES] = 10 + (bat_v_samples[bat_samples_count%BAT_SAMPLES] * 0.15F); + + bat_samples_count++; + if (!battery_ready && bat_samples_count >= BAT_SAMPLES) { + battery_ready = true; + } + + battery_percent = 0; + for (uint8_t bi = 0; bi < BAT_SAMPLES; bi++) { + battery_percent += bat_p_samples[bi]; + } + battery_percent = battery_percent/BAT_SAMPLES; + + battery_voltage = 0; + for (uint8_t bi = 0; bi < BAT_SAMPLES; bi++) { + battery_voltage += bat_v_samples[bi]; + } + battery_voltage = battery_voltage/BAT_SAMPLES; + + if (bat_delay_v == 0) bat_delay_v = battery_voltage; + if (battery_percent > 100.0) battery_percent = 100.0; + if (battery_percent < 0.0) battery_percent = 0.0; + + if (bat_samples_count%BAT_SAMPLES == 0) { + if (battery_voltage < bat_delay_v && battery_voltage < BAT_V_FLOAT) { + bat_voltage_dropping = true; + } else { + bat_voltage_dropping = false; + } + bat_samples_count = 0; + } + + nrfx_power_usb_state_t usbstate = nrfx_power_usbstatus_get(); + if (usbstate == NRFX_POWER_USB_STATE_CONNECTED || usbstate == NRFX_POWER_USB_STATE_READY) { + // charging + battery_state = BATTERY_STATE_CHARGING; + } else { + battery_state = BATTERY_STATE_DISCHARGING; + } + + if (battery_percent >= 98) { + battery_state = BATTERY_STATE_CHARGED; + } #endif if (battery_ready) { @@ -341,6 +421,21 @@ bool init_pmu() { PMU->setPowerKeyPressOffTime(XPOWERS_POWEROFF_4S); return true; + #elif BOARD_MODEL == BOARD_RAK4631 + // board doesn't have PMU but we can measure batt voltage + + // prep ADC for reading battery level + analogReference(AR_INTERNAL_3_0); + + // Set the resolution to 12-bit (0..4095) + analogReadResolution(12); + + // Let the ADC settle + delay(1); + + // Get a single ADC sample and throw it away + float raw = analogRead(PIN_VBAT); + return true; #else return false; #endif diff --git a/RNode_Firmware_CE.ino b/RNode_Firmware_CE.ino index 4410a91..1745a21 100644 --- a/RNode_Firmware_CE.ino +++ b/RNode_Firmware_CE.ino @@ -166,6 +166,11 @@ void setup() { eeprom_update(eeprom_addr(ADDR_CONF_DSET), CONF_OK_BYTE); eeprom_update(eeprom_addr(ADDR_CONF_DINT), 0xFF); } + #if DISPLAY == EINK_BW || DISPLAY == EINK_3C + // Poll and process incoming serial commands whilst e-ink display is + // refreshing to make device still seem responsive + display_add_callback(process_serial); + #endif disp_ready = display_init(); update_display(); #endif @@ -1310,6 +1315,11 @@ void loop() { #endif } +void process_serial() { + buffer_serial(); + if (!fifo_isempty(&serialFIFO)) serial_poll(); +} + void sleep_now() { #if HAS_SLEEP == true #if BOARD_MODEL == BOARD_RNODE_NG_22