From 1448b9cf669b92d1d1ea1bf0aea4f5034e2d129f Mon Sep 17 00:00:00 2001 From: SG Date: Fri, 24 Sep 2021 21:56:27 +1000 Subject: [PATCH] [FL-1819][FL-1848] About: hw, fw, boot version screens. Misc corrections of the About screens. (#719) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * About: hw, fw, boot version screens * About: fix comment * FuriHal: proper ARR in OS tick timer * GpioTester: all pins on/off option * Irda: fix release build * Format sources Co-authored-by: あく --- applications/about/about.c | 234 ++++++++++++++++-- applications/gpio-tester/gpio-tester.c | 19 +- applications/gui/modules/empty_screen.c | 34 +++ applications/gui/modules/empty_screen.h | 29 +++ assets/compiled/assets_icons.c | 10 +- assets/compiled/assets_icons.h | 3 +- assets/icons/About/Certification1_103x23.png | Bin 0 -> 2105 bytes assets/icons/About/Certification2_119x30.png | Bin 0 -> 2437 bytes assets/icons/About/Certification_128x64.png | Bin 1896 -> 0 bytes .../targets/f6/furi-hal/furi-hal-os-timer.h | 2 + .../targets/f7/furi-hal/furi-hal-os-timer.h | 2 + .../encoder_decoder/sirc/irda_encoder_sirc.c | 3 +- 12 files changed, 300 insertions(+), 36 deletions(-) create mode 100644 applications/gui/modules/empty_screen.c create mode 100644 applications/gui/modules/empty_screen.h create mode 100644 assets/icons/About/Certification1_103x23.png create mode 100644 assets/icons/About/Certification2_119x30.png delete mode 100644 assets/icons/About/Certification_128x64.png diff --git a/applications/about/about.c b/applications/about/about.c index 96be75a1..08734592 100644 --- a/applications/about/about.c +++ b/applications/about/about.c @@ -1,45 +1,225 @@ #include #include +#include +#include +#include +#include +#include + +typedef DialogMessageButton (*AboutDialogScreen)(DialogsApp* dialogs, DialogMessage* message); + +static DialogMessageButton product_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + + const char* screen_header = "Product: Flipper Zero\n" + "Model: FZ.1\n"; + const char* screen_text = "FCC ID: 2A2V6-FZ\n" + "IC ID: 27624-FZ"; + + dialog_message_set_header(message, screen_header, 0, 0, AlignLeft, AlignTop); + dialog_message_set_text(message, screen_text, 0, 26, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + + return result; +} + +static DialogMessageButton address_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + + const char* screen_text = "Flipper Devices Inc\n" + "Suite B #551, 2803\n" + "Philadelphia Pike, Claymont\n" + "DE, USA 19703\n"; + + dialog_message_set_text(message, screen_text, 0, 0, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + + return result; +} + +static DialogMessageButton compliance_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + + const char* screen_text = "For all compliance\n" + "certificates please visit\n" + "www.flipp.dev/compliance"; + + dialog_message_set_text(message, screen_text, 0, 0, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + + return result; +} + +static DialogMessageButton icon1_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + + dialog_message_set_icon(message, &I_Certification1_103x23, 12, 12); + result = dialog_message_show(dialogs, message); + dialog_message_set_icon(message, NULL, 0, 0); + + return result; +} + +static DialogMessageButton icon2_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + + dialog_message_set_icon(message, &I_Certification2_119x30, 4, 9); + result = dialog_message_show(dialogs, message); + dialog_message_set_icon(message, NULL, 0, 0); + + return result; +} + +static DialogMessageButton hw_version_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + string_t buffer; + string_init(buffer); + const char* my_name = furi_hal_version_get_name_ptr(); + + string_cat_printf( + buffer, + "%d.F%dB%dC%d %s\n", + furi_hal_version_get_hw_version(), + furi_hal_version_get_hw_target(), + furi_hal_version_get_hw_body(), + furi_hal_version_get_hw_connect(), + my_name ? my_name : "Unknown"); + + dialog_message_set_header(message, "HW Version info:", 0, 0, AlignLeft, AlignTop); + dialog_message_set_text(message, string_get_cstr(buffer), 0, 13, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop); + string_clear(buffer); + + return result; +} + +static DialogMessageButton fw_version_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + string_t buffer; + string_init(buffer); + const Version* ver = furi_hal_version_get_firmware_version(); + + if(!ver) { + string_cat_printf(buffer, "No info\n"); + } else { + string_cat_printf( + buffer, + "%s [%s]\n%s [%s]\n[%s] %s", + version_get_version(ver), + version_get_builddate(ver), + version_get_githash(ver), + version_get_gitbranchnum(ver), + version_get_target(ver), + version_get_gitbranch(ver)); + } + + dialog_message_set_header(message, "FW Version info:", 0, 0, AlignLeft, AlignTop); + dialog_message_set_text(message, string_get_cstr(buffer), 0, 13, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop); + string_clear(buffer); + + return result; +} + +static DialogMessageButton boot_version_screen(DialogsApp* dialogs, DialogMessage* message) { + DialogMessageButton result; + string_t buffer; + string_init(buffer); + const Version* ver = furi_hal_version_get_boot_version(); + + if(!ver) { + string_cat_printf(buffer, "No info\n"); + } else { + string_cat_printf( + buffer, + "%s [%s]\n%s [%s]\n[%s] %s", + version_get_version(ver), + version_get_builddate(ver), + version_get_githash(ver), + version_get_gitbranchnum(ver), + version_get_target(ver), + version_get_gitbranch(ver)); + } + + dialog_message_set_header(message, "Boot Version info:", 0, 0, AlignLeft, AlignTop); + dialog_message_set_text(message, string_get_cstr(buffer), 0, 13, AlignLeft, AlignTop); + result = dialog_message_show(dialogs, message); + dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + dialog_message_set_header(message, NULL, 0, 0, AlignLeft, AlignTop); + string_clear(buffer); + + return result; +} + +const AboutDialogScreen about_screens[] = { + product_screen, + compliance_screen, + address_screen, + icon1_screen, + icon2_screen, + hw_version_screen, + fw_version_screen, + boot_version_screen}; + +const size_t about_screens_count = sizeof(about_screens) / sizeof(AboutDialogScreen); int32_t about_settings_app(void* p) { - const char* first_screen_text = "Product: Flipper Zero\n" - "Model: FZ.1\n" - "FCC ID: 2A2V6-FZIC\n" - "ID: 27624-FZ"; - - const char* second_screen_text = "Flipper Devices Inc\n" - "Suite B #551, 2803\n" - "Philadelphia Pike, Claymont\n" - "DE, USA 19703\n"; - - const char* third_screen_text = "For all compliance\n" - "certificates please visit\n" - "www.flipp.dev/compliance"; - DialogsApp* dialogs = furi_record_open("dialogs"); DialogMessage* message = dialog_message_alloc(); - do { - dialog_message_set_buttons(message, NULL, NULL, "Next"); + Gui* gui = furi_record_open("gui"); + ViewDispatcher* view_dispatcher = view_dispatcher_alloc(); + EmptyScreen* empty_screen = empty_screen_alloc(); + const uint32_t empty_screen_index = 0; - dialog_message_set_text(message, first_screen_text, 0, 0, AlignLeft, AlignTop); - if(dialog_message_show(dialogs, message) != DialogMessageButtonRight) break; + size_t screen_index = 0; + DialogMessageButton screen_result; - dialog_message_set_text(message, second_screen_text, 0, 0, AlignLeft, AlignTop); - if(dialog_message_show(dialogs, message) != DialogMessageButtonRight) break; + // draw empty screen to prevent menu flickering + view_dispatcher_add_view( + view_dispatcher, empty_screen_index, empty_screen_get_view(empty_screen)); + view_dispatcher_attach_to_gui(view_dispatcher, gui, ViewDispatcherTypeFullscreen); + view_dispatcher_switch_to_view(view_dispatcher, empty_screen_index); - dialog_message_set_text(message, third_screen_text, 0, 0, AlignLeft, AlignTop); - if(dialog_message_show(dialogs, message) != DialogMessageButtonRight) break; + while(1) { + if(screen_index >= about_screens_count - 1) { + dialog_message_set_buttons(message, "Back", NULL, NULL); + } else { + dialog_message_set_buttons(message, "Back", NULL, "Next"); + } - dialog_message_set_text(message, NULL, 0, 0, AlignLeft, AlignTop); + screen_result = about_screens[screen_index](dialogs, message); - dialog_message_set_icon(message, &I_Certification_128x64, 0, 0); - dialog_message_set_buttons(message, NULL, NULL, NULL); - dialog_message_show(dialogs, message); - } while(false); + if(screen_result == DialogMessageButtonLeft) { + if(screen_index <= 0) { + break; + } else { + screen_index--; + } + } else if(screen_result == DialogMessageButtonRight) { + if(screen_index < about_screens_count) { + screen_index++; + } + } else if(screen_result == DialogMessageButtonBack) { + break; + } + } dialog_message_free(message); furi_record_close("dialogs"); + view_dispatcher_remove_view(view_dispatcher, empty_screen_index); + view_dispatcher_free(view_dispatcher); + empty_screen_free(empty_screen); + furi_record_close("gui"); + return 0; } \ No newline at end of file diff --git a/applications/gpio-tester/gpio-tester.c b/applications/gpio-tester/gpio-tester.c index c088a195..e994ad73 100644 --- a/applications/gpio-tester/gpio-tester.c +++ b/applications/gpio-tester/gpio-tester.c @@ -18,6 +18,7 @@ static const GpioItem GPIO_PINS[] = { {"1.7: PC3", &gpio_ext_pc3}, {"2.7: PC1", &gpio_ext_pc1}, {"2.8: PC0", &gpio_ext_pc0}, + {"*.*: ALL", NULL}, }; static const size_t GPIO_PINS_COUNT = sizeof(GPIO_PINS) / sizeof(GPIO_PINS[0]); @@ -49,8 +50,20 @@ static void gpio_test_input_callback(InputEvent* input_event, void* ctx) { static void gpio_test_configure_pins(GpioMode mode) { for(size_t i = 0; i < GPIO_PINS_COUNT; i++) { + if(!GPIO_PINS[i].pin) continue; hal_gpio_write(GPIO_PINS[i].pin, false); - hal_gpio_init(GPIO_PINS[i].pin, mode, GpioPullNo, GpioSpeedLow); + hal_gpio_init(GPIO_PINS[i].pin, mode, GpioPullNo, GpioSpeedVeryHigh); + } +} + +static void gpio_test_set_pin(uint8_t index, bool level) { + if(GPIO_PINS[index].pin) { + hal_gpio_write(GPIO_PINS[index].pin, level); + } else { + for(size_t i = 0; i < GPIO_PINS_COUNT; i++) { + if(!GPIO_PINS[i].pin) continue; + hal_gpio_write(GPIO_PINS[i].pin, level); + } } } @@ -117,10 +130,10 @@ int32_t gpio_test_app(void* p) { } else { if(event.key == InputKeyOk) { if(event.type == InputTypePress) { - hal_gpio_write(GPIO_PINS[gpio_test->gpio_index].pin, true); + gpio_test_set_pin(gpio_test->gpio_index, true); notification_message(gpio_test->notification, &sequence_set_green_255); } else if(event.type == InputTypeRelease) { - hal_gpio_write(GPIO_PINS[gpio_test->gpio_index].pin, false); + gpio_test_set_pin(gpio_test->gpio_index, false); notification_message(gpio_test->notification, &sequence_reset_green); } } diff --git a/applications/gui/modules/empty_screen.c b/applications/gui/modules/empty_screen.c new file mode 100644 index 00000000..a887786d --- /dev/null +++ b/applications/gui/modules/empty_screen.c @@ -0,0 +1,34 @@ +#include "empty_screen.h" +#include + +struct EmptyScreen { + View* view; +}; + +static void empty_screen_view_draw_callback(Canvas* canvas, void* _model) { + canvas_clear(canvas); +} + +static bool empty_screen_view_input_callback(InputEvent* event, void* context) { + return false; +} + +EmptyScreen* empty_screen_alloc() { + EmptyScreen* empty_screen = furi_alloc(sizeof(EmptyScreen)); + empty_screen->view = view_alloc(); + view_set_context(empty_screen->view, empty_screen); + view_set_draw_callback(empty_screen->view, empty_screen_view_draw_callback); + view_set_input_callback(empty_screen->view, empty_screen_view_input_callback); + return empty_screen; +} + +void empty_screen_free(EmptyScreen* empty_screen) { + furi_assert(empty_screen); + view_free(empty_screen->view); + free(empty_screen); +} + +View* empty_screen_get_view(EmptyScreen* empty_screen) { + furi_assert(empty_screen); + return empty_screen->view; +} \ No newline at end of file diff --git a/applications/gui/modules/empty_screen.h b/applications/gui/modules/empty_screen.h new file mode 100644 index 00000000..a0b56219 --- /dev/null +++ b/applications/gui/modules/empty_screen.h @@ -0,0 +1,29 @@ +#pragma once +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Empty screen anonymous structure */ +typedef struct EmptyScreen EmptyScreen; + +/* Allocate and initialize empty screen + * This empty screen used to ask simple questions like Yes/ + */ +EmptyScreen* empty_screen_alloc(); + +/* Deinitialize and free empty screen + * @param empty_screen - Empty screen instance + */ +void empty_screen_free(EmptyScreen* empty_screen); + +/* Get empty screen view + * @param empty_screen - Empty screen instance + * @return View instance that can be used for embedding + */ +View* empty_screen_get_view(EmptyScreen* empty_screen); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/assets/compiled/assets_icons.c b/assets/compiled/assets_icons.c index b759a421..60397cad 100644 --- a/assets/compiled/assets_icons.c +++ b/assets/compiled/assets_icons.c @@ -2,8 +2,11 @@ #include -const uint8_t _I_Certification_128x64_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF1,0x8F,0x1F,0x00,0xE0,0x01,0x00,0x0F,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0xF8,0xF1,0x8F,0x1F,0x00,0xF8,0x01,0xC0,0x0F,0xC0,0x7F,0xF8,0x3F,0x00,0x00,0x00,0xF8,0x71,0x8E,0x1F,0x00,0xFE,0x01,0xF0,0x0F,0xC0,0x3F,0x1E,0xF0,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0x00,0x3F,0x00,0xF8,0x01,0xC0,0x00,0x07,0xC0,0x01,0x00,0x00,0x38,0x70,0x8E,0x03,0x80,0x0F,0x00,0x7C,0x00,0xC0,0x80,0x03,0x80,0x03,0x00,0x00,0x38,0x70,0x8E,0x03,0xC0,0x03,0x00,0x1E,0x00,0xC0,0x80,0xC1,0x07,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xC0,0x01,0x00,0x0E,0x00,0xC0,0xC0,0xF0,0x1F,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x01,0x00,0x0F,0x00,0xC0,0xC0,0x38,0x38,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x00,0x00,0x07,0x00,0xC0,0x60,0x18,0x10,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x00,0x00,0x07,0x00,0xC0,0x60,0x0C,0x00,0x00,0x00,0x00,0xF8,0xF1,0x8F,0x03,0xE0,0x00,0x00,0xFF,0x03,0xC0,0x7F,0x0C,0x00,0x00,0x00,0x00,0xF8,0xF1,0x8F,0x03,0xE0,0x00,0x00,0xFF,0x03,0xC0,0x7F,0x0C,0x00,0x00,0x00,0x00,0xF8,0xF1,0x8F,0x03,0xE0,0x00,0x00,0xFF,0x03,0xC0,0x60,0x0C,0x00,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x00,0x00,0x07,0x00,0xC0,0x60,0x0C,0x00,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x00,0x00,0x07,0x00,0xC0,0x60,0x18,0x10,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xE0,0x01,0x00,0x0F,0x00,0xC0,0xC0,0x38,0x38,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xC0,0x01,0x00,0x0E,0x00,0xC0,0xC0,0xF0,0x1F,0x00,0x00,0x00,0x38,0x70,0x8E,0x03,0xC0,0x03,0x00,0x1E,0x00,0xC0,0x80,0xC1,0x07,0x03,0x00,0x00,0x38,0x70,0x8E,0x03,0x80,0x0F,0x00,0x7C,0x00,0xC0,0x80,0x03,0x80,0x03,0x00,0x00,0x38,0x70,0x8E,0x03,0x00,0x3F,0x00,0xF8,0x01,0xC0,0x00,0x07,0xC0,0x01,0x00,0x00,0xF8,0x71,0x8E,0x1F,0x00,0xFE,0x01,0xF0,0x0F,0xC0,0x00,0x1E,0xF0,0x00,0x00,0x00,0xF8,0x71,0x8E,0x1F,0x00,0xF8,0x01,0xC0,0x0F,0x40,0x00,0xF8,0x3F,0x00,0x00,0x00,0xF8,0x71,0x8E,0x1F,0x00,0xE0,0x01,0x00,0x0F,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xFC,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x03,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x07,0x00,0xC0,0x00,0x60,0x00,0x18,0x98,0xC1,0x01,0x00,0xF0,0x01,0x00,0x00,0x0C,0x18,0x00,0x80,0xFF,0x3F,0x00,0x18,0x98,0xE1,0x00,0x00,0xF8,0x03,0x00,0x00,0x03,0x60,0x00,0x00,0x01,0x10,0x00,0x18,0x98,0x79,0x00,0x00,0x1C,0x07,0x00,0x80,0x00,0x80,0x00,0x00,0x03,0x18,0x00,0x18,0x98,0x1D,0x00,0x00,0x0C,0x06,0x00,0x40,0x00,0x00,0x01,0x00,0x05,0x14,0x00,0x18,0x98,0x0F,0x00,0x00,0x0E,0x0E,0x00,0x40,0x00,0x00,0x01,0x00,0xE9,0x13,0x00,0x18,0x98,0x0F,0x00,0x00,0x07,0x1C,0x00,0x20,0xC0,0x00,0x02,0x00,0x11,0x11,0x00,0x18,0x98,0x1D,0x00,0x80,0xF3,0x39,0x00,0x20,0xB8,0x00,0x02,0x00,0xA2,0x08,0x00,0x18,0x98,0x79,0x00,0x80,0x09,0x32,0x00,0x10,0x87,0xC0,0x07,0x00,0x42,0x08,0x00,0xF8,0x9F,0xE1,0x00,0xC0,0x05,0x70,0x00,0xF0,0x80,0x38,0x00,0x00,0xA2,0x08,0x00,0xF0,0x8F,0xC1,0x01,0xE0,0x02,0xE8,0x00,0x10,0x80,0x07,0x00,0x00,0x12,0x09,0x00,0x00,0x00,0x00,0x00,0x70,0x01,0xD4,0x01,0x10,0x00,0x00,0x00,0x00,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x30,0x11,0x92,0x01,0x10,0xFE,0x3F,0x00,0x00,0x04,0x04,0x00,0xF0,0x1F,0xFF,0x00,0x38,0x11,0x91,0x03,0x10,0xFE,0x3F,0x00,0x00,0x06,0x0C,0x00,0xF8,0x9F,0xFF,0x01,0x1C,0xA1,0x10,0x07,0x10,0x00,0x00,0x00,0x00,0x05,0x1E,0x00,0x18,0x80,0x81,0x01,0x0E,0x61,0x10,0x0E,0x20,0xFE,0x3F,0x02,0x80,0x04,0x31,0x00,0x18,0x80,0x81,0x01,0x06,0x02,0x08,0x0C,0x20,0xFE,0x3F,0x02,0x40,0x04,0x55,0x00,0x18,0x80,0x81,0x01,0x07,0x04,0x04,0x1C,0x40,0xC0,0x01,0x01,0x20,0xF8,0x91,0x00,0x18,0x80,0xFF,0x81,0x03,0x08,0x02,0x38,0x40,0xC0,0x01,0x01,0x10,0x00,0x0E,0x01,0x18,0x80,0xFF,0x81,0x01,0xF0,0x01,0x30,0x80,0xC0,0x81,0x00,0x08,0x00,0x00,0x02,0x18,0x80,0x81,0x81,0x03,0x00,0x00,0x38,0x00,0x03,0x60,0x00,0x00,0x00,0x00,0x00,0xF8,0x9F,0x81,0x01,0xFF,0xFF,0xFF,0x1F,0x00,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0xF0,0x9F,0x81,0x01,0xFE,0xFF,0xFF,0x0F,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_Certification_128x64[] = {_I_Certification_128x64_0}; +const uint8_t _I_Certification1_103x23_0[] = {0x3F,0xFE,0xF1,0x03,0x00,0x3C,0x00,0xE0,0x01,0x00,0x00,0xFC,0x01,0x3F,0xFE,0xF1,0x03,0x00,0x3F,0x00,0xF8,0x01,0xF8,0x0F,0xFF,0x07,0x3F,0xCE,0xF1,0x03,0xC0,0x3F,0x00,0xFE,0x01,0xF8,0xC7,0x03,0x1E,0x07,0xCE,0x71,0x00,0xE0,0x07,0x00,0x3F,0x00,0x18,0xE0,0x00,0x38,0x07,0xCE,0x71,0x00,0xF0,0x01,0x80,0x0F,0x00,0x18,0x70,0x00,0x70,0x07,0xCE,0x71,0x00,0x78,0x00,0xC0,0x03,0x00,0x18,0x30,0xF8,0x00,0x07,0xCE,0x71,0x00,0x38,0x00,0xC0,0x01,0x00,0x18,0x18,0xFE,0x03,0x07,0xCE,0x71,0x00,0x3C,0x00,0xE0,0x01,0x00,0x18,0x18,0x07,0x07,0x07,0xCE,0x71,0x00,0x1C,0x00,0xE0,0x00,0x00,0x18,0x0C,0x03,0x02,0x07,0xCE,0x71,0x00,0x1C,0x00,0xE0,0x00,0x00,0x18,0x8C,0x01,0x00,0x3F,0xFE,0x71,0x00,0x1C,0x00,0xE0,0x7F,0x00,0xF8,0x8F,0x01,0x00,0x3F,0xFE,0x71,0x00,0x1C,0x00,0xE0,0x7F,0x00,0xF8,0x8F,0x01,0x00,0x3F,0xFE,0x71,0x00,0x1C,0x00,0xE0,0x7F,0x00,0x18,0x8C,0x01,0x00,0x07,0xCE,0x71,0x00,0x1C,0x00,0xE0,0x00,0x00,0x18,0x8C,0x01,0x00,0x07,0xCE,0x71,0x00,0x1C,0x00,0xE0,0x00,0x00,0x18,0x0C,0x03,0x02,0x07,0xCE,0x71,0x00,0x3C,0x00,0xE0,0x01,0x00,0x18,0x18,0x07,0x07,0x07,0xCE,0x71,0x00,0x38,0x00,0xC0,0x01,0x00,0x18,0x18,0xFE,0x03,0x07,0xCE,0x71,0x00,0x78,0x00,0xC0,0x03,0x00,0x18,0x30,0xF8,0x60,0x07,0xCE,0x71,0x00,0xF0,0x01,0x80,0x0F,0x00,0x18,0x70,0x00,0x70,0x07,0xCE,0x71,0x00,0xE0,0x07,0x00,0x3F,0x00,0x18,0xE0,0x00,0x38,0x3F,0xCE,0xF1,0x03,0xC0,0x3F,0x00,0xFE,0x01,0x18,0xC0,0x03,0x1E,0x3F,0xCE,0xF1,0x03,0x00,0x3F,0x00,0xF8,0x01,0x08,0x00,0xFF,0x07,0x3F,0xCE,0xF1,0x03,0x00,0x3C,0x00,0xE0,0x01,0x00,0x00,0xFC,0x01,}; +const uint8_t *_I_Certification1_103x23[] = {_I_Certification1_103x23_0}; + +const uint8_t _I_Certification2_119x30_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xFF,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0xFE,0x00,0x00,0x18,0x00,0x0C,0x03,0x33,0x38,0x00,0x00,0x3E,0x00,0x00,0x80,0x01,0x03,0x00,0xF0,0xFF,0x07,0x03,0x33,0x1C,0x00,0x00,0x7F,0x00,0x00,0x60,0x00,0x0C,0x00,0x20,0x00,0x02,0x03,0x33,0x0F,0x00,0x80,0xE3,0x00,0x00,0x10,0x00,0x10,0x00,0x60,0x00,0x03,0x03,0xB3,0x03,0x00,0x80,0xC1,0x00,0x00,0x08,0x00,0x20,0x00,0xA0,0x80,0x02,0x03,0xF3,0x01,0x00,0xC0,0xC1,0x01,0x00,0x08,0x00,0x20,0x00,0x20,0x7D,0x02,0x03,0xF3,0x01,0x00,0xE0,0x80,0x03,0x00,0x04,0x18,0x40,0x00,0x20,0x22,0x02,0x03,0xB3,0x03,0x00,0x70,0x3E,0x07,0x00,0x04,0x17,0x40,0x00,0x40,0x14,0x01,0x03,0x33,0x0F,0x00,0x30,0x41,0x06,0x00,0xE2,0x10,0xF8,0x00,0x40,0x08,0x01,0xFF,0x33,0x1C,0x00,0xB8,0x00,0x0E,0x00,0x1E,0x10,0x07,0x00,0x40,0x14,0x01,0xFE,0x31,0x38,0x00,0x5C,0x00,0x1D,0x00,0x02,0xF0,0x00,0x00,0x40,0x22,0x01,0x00,0x00,0x00,0x00,0x2E,0x80,0x3A,0x00,0x02,0x00,0x00,0x00,0x40,0x41,0x01,0x00,0x00,0x00,0x00,0x26,0x42,0x32,0x00,0xC2,0xFF,0x07,0x00,0x80,0x80,0x00,0xFE,0xE3,0x1F,0x00,0x27,0x22,0x72,0x00,0xC2,0xFF,0x07,0x00,0xC0,0x80,0x01,0xFF,0xF3,0x3F,0x80,0x23,0x14,0xE2,0x00,0x02,0x00,0x00,0x00,0xA0,0xC0,0x03,0x03,0x30,0x30,0xC0,0x21,0x0C,0xC2,0x01,0xC4,0xFF,0x47,0x00,0x90,0x20,0x06,0x03,0x30,0x30,0xC0,0x40,0x00,0x81,0x01,0xC4,0xFF,0x47,0x00,0x88,0xA0,0x0A,0x03,0x30,0x30,0xE0,0x80,0x80,0x80,0x03,0x08,0x38,0x20,0x00,0x04,0x3F,0x12,0x03,0xF0,0x3F,0x70,0x00,0x41,0x00,0x07,0x08,0x38,0x20,0x00,0x02,0xC0,0x21,0x03,0xF0,0x3F,0x30,0x00,0x3E,0x00,0x06,0x10,0x38,0x10,0x00,0x01,0x00,0x40,0x03,0x30,0x30,0x70,0x00,0x00,0x00,0x07,0x60,0x00,0x0C,0x00,0x00,0x00,0x00,0xFF,0x33,0x30,0xE0,0xFF,0xFF,0xFF,0x03,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0xFE,0x33,0x30,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,}; +const uint8_t *_I_Certification2_119x30[] = {_I_Certification2_119x30_0}; const uint8_t _A_WatchingTV_128x64_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x11,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x11,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x09,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x20,0x06,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x10,0x00,0x20,0x06,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x10,0x00,0x20,0x0A,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x00,0x00,0x00,0x40,0x00,0xA0,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x00,0x50,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x30,0x80,0x7F,0xE0,0x00,0x00,0x80,0x03,0x80,0x0F,0x20,0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x80,0x9F,0x00,0x00,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x18,0x00,0x00,0x80,0x00,0x00,0x80,0x03,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x14,0x00,0x00,0x40,0x00,0x00,0x80,0x03,0xE0,0x3F,0x60,0x00,0x00,0x00,0x00,0x08,0x24,0x00,0x00,0x40,0x00,0x00,0xC0,0x01,0x20,0x67,0x40,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x00,0x30,0x00,0x00,0x60,0x00,0x60,0xA7,0xA0,0x00,0x00,0x00,0x00,0xF8,0x47,0x00,0x00,0x0C,0x00,0x00,0x18,0x00,0xC0,0x53,0xC1,0x00,0x00,0x00,0x00,0x06,0x58,0x00,0x00,0x03,0x00,0x00,0x0C,0x00,0x80,0xAF,0xA0,0x00,0x00,0x00,0x00,0x01,0x60,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0x00,0x50,0xD0,0x00,0x00,0x00,0x80,0x00,0x40,0xF8,0x0F,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x40,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD0,0x00,0x00,0xFF,0xFF,0x0F,0x80,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x03,0xA8,0x00,0x00,0x55,0x55,0xF5,0xFF,0xFF,0xFF,0x0F,0x00,0xAE,0x00,0x00,0x60,0x04,0xD4,0x0F,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0xD5,0x00,0x00,0x1C,0x00,0x78,0x35,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x0F,0xC0,0xAA,0xFF,0xE1,0x03,0x00,0x0C,0x6A,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xEA,0x0A,0x60,0x81,0x01,0x1E,0x60,0x00,0x06,0xD4,0x00,0x55,0x55,0x55,0x55,0x55,0x75,0x0D,0x20,0x00,0x03,0x00,0x10,0x00,0x03,0xA8,0x01,0xAA,0xAA,0xAA,0xAA,0xAA,0xAE,0x0A,0x20,0x00,0x0F,0x00,0x2E,0x80,0x01,0x50,0x03,0x55,0x55,0x55,0x55,0x55,0x57,0x3D,0x3E,0x80,0xF5,0xFF,0x05,0x40,0x01,0xA8,0x02,0xAA,0xAA,0xAA,0xAA,0xEA,0xAA,0xCA,0x21,0x80,0xAA,0xAA,0x02,0xA0,0x00,0x50,0x03,0xFF,0xFF,0xFF,0xFF,0x7F,0x55,0x0D,0x20,0x80,0x55,0x55,0x01,0xD0,0x00,0xE8,0x07,0x88,0x88,0x88,0x88,0xB8,0xAA,0x0A,0x20,0x40,0xAA,0x02,0x00,0xAA,0x00,0x18,0x18,0x55,0x55,0x55,0x55,0x57,0x55,0x0D,0x20,0x40,0x00,0x00,0x00,0x55,0x00,0x04,0x20,0x22,0x22,0x22,0xA2,0xB3,0xAA,0x0A,0x40,0x40,0x00,0x00,0x80,0x6A,0x00,0x02,0x20,0x55,0x55,0x55,0x75,0x55,0x55,0x0D,0x80,0x40,0x00,0x00,0x40,0x7D,0x00,0x01,0x40,0x88,0x88,0x88,0x98,0xB8,0xAA,0x0A,0x00,0x21,0x00,0x00,0xA0,0x47,0x80,0x00,0x40,0x55,0x55,0x55,0x57,0x55,0x55,0x0D,0x00,0x3E,0x00,0x00,0xD0,0x40,0x80,0x00,0x40,0xFF,0xFF,0xFF,0x23,0xB2,0xAA,0x0A,0x00,0x00,0x00,0x00,0x6A,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x40,0x35,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x88,0xB8,0xAA,0x0A,0x00,0x00,0x00,0xA0,0x1A,0x40,0x20,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x54,0x15,0x40,0x20,0x00,0x80,0x31,0xFC,0x8F,0x22,0xB2,0xAA,0x0A,0x00,0x00,0x80,0xAA,0x0A,0x40,0x10,0x00,0x80,0x49,0x02,0x90,0x55,0x55,0x55,0x0D,0x00,0x00,0x50,0x55,0x0D,0x80,0x10,0x00,0x80,0x49,0x02,0x90,0x88,0xB8,0xAA,0x2A,0x00,0x80,0xAA,0xAA,0x0E,0x80,0x08,0x00,0x80,0x31,0x02,0x90,0x55,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x01,0x00,0x07,0x00,0x80,0x01,0x02,0x90,0x22,0xB2,0xAA,0xF6,0xAA,0xEA,0xFF,0xFF,0x01,0x00,0x04,0x00,0x40,0x11,0xFC,0x8F,0x55,0x55,0x55,0x85,0xD7,0x1F,0x00,0x00,0x1E,0x00,0x04,0x00,0x40,0x29,0x00,0x80,0x88,0xB8,0xAA,0x06,0x6C,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x29,0x00,0x80,0x55,0x55,0x55,0x05,0x38,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x20,0x15,0x00,0x80,0x22,0xB2,0xAA,0x06,0x10,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x20,0x0B,0x00,0x80,0x55,0x55,0x55,0x05,0x10,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x10,}; const uint8_t _A_WatchingTV_128x64_1[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xA0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x02,0x00,0xE0,0x10,0x00,0x00,0x00,0x00,0x00,0xC0,0x55,0x75,0x00,0x00,0x00,0x00,0x02,0x00,0xA0,0x10,0x00,0x00,0x00,0x00,0x00,0xA0,0xAA,0xAA,0x00,0x00,0x00,0x00,0x04,0x00,0x50,0x09,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x50,0x01,0x00,0x00,0x00,0x08,0x00,0xB0,0x05,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xA0,0x02,0x00,0x00,0x00,0x10,0x00,0x50,0x02,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x05,0x00,0x00,0x00,0x10,0x00,0xB0,0x07,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x80,0x0A,0x00,0x00,0x00,0x20,0x00,0x50,0x09,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x15,0x00,0x00,0x00,0x40,0x00,0xB0,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x1A,0x00,0x00,0x00,0x80,0x00,0x58,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x34,0x00,0x00,0x00,0x80,0x00,0x28,0xC0,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x01,0x38,0x00,0x00,0x83,0x03,0x00,0x80,0x03,0x80,0x0F,0x30,0x00,0x00,0x00,0x00,0x02,0x18,0x00,0x00,0xFC,0x02,0x00,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x18,0x00,0x00,0x00,0x02,0x00,0x80,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x04,0x14,0x00,0x00,0x00,0x01,0x00,0x80,0x03,0xE0,0xBF,0x60,0x00,0x00,0x00,0x00,0x08,0x24,0x00,0x00,0x80,0x00,0x00,0xC0,0x01,0xE0,0x67,0x51,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x00,0x40,0x00,0x00,0x60,0x00,0x60,0xA7,0xA0,0x00,0x00,0x00,0x00,0xF8,0x47,0x00,0x00,0x30,0x00,0x00,0x18,0x00,0xC0,0x53,0xD1,0x00,0x00,0x00,0x00,0x06,0x58,0x00,0x00,0x0C,0x00,0x00,0x0C,0x00,0x80,0xAF,0xA0,0x00,0x00,0x00,0x00,0x01,0x60,0xF0,0xFF,0x03,0x00,0x00,0x06,0x00,0x00,0x50,0xD0,0x00,0x00,0x00,0x80,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xA8,0x00,0x00,0x00,0x40,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD4,0x00,0x00,0xFF,0xFF,0x0F,0x80,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x03,0xAA,0x00,0x00,0x55,0x55,0xF5,0xFF,0xFF,0xFF,0x0F,0x00,0xAE,0x00,0x00,0x60,0x04,0xD4,0x0F,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0xD5,0x00,0x00,0x1C,0x00,0x7A,0x35,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x0F,0xC0,0xAA,0xFF,0xE1,0x03,0x00,0xAD,0x6A,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xEA,0x0A,0x60,0xD5,0x01,0x1E,0x60,0x80,0x56,0xD5,0x00,0x55,0x55,0x55,0x55,0x55,0x75,0x0D,0xA0,0xAA,0x03,0x00,0x50,0x40,0x83,0xAA,0x01,0xAA,0xAA,0xAA,0xAA,0xAA,0xAE,0x0A,0x60,0x40,0x0F,0x00,0x2E,0xA0,0x01,0x55,0x03,0x55,0x55,0x55,0x55,0x55,0x57,0x3D,0x3E,0x80,0xF5,0xFF,0x15,0x50,0x01,0xAA,0x02,0xAA,0xAA,0xAA,0xAA,0xEA,0xAA,0xCA,0x21,0x80,0xAA,0xAA,0x0A,0xA8,0x00,0x55,0x03,0xFF,0xFF,0xFF,0xFF,0x7F,0x55,0x0D,0x20,0x80,0x55,0x55,0x05,0xD5,0x00,0xEA,0x07,0x88,0x88,0x88,0x88,0xB8,0xAA,0x0A,0x20,0xC0,0xAA,0xAA,0x82,0xAA,0x00,0x1D,0x18,0x55,0x55,0x55,0x55,0x57,0x55,0x0D,0x20,0x40,0x55,0x05,0x40,0x55,0x00,0x06,0x20,0x22,0x22,0x22,0xA2,0xB3,0xAA,0x0A,0x40,0x40,0x00,0x00,0xA0,0x6A,0x00,0x03,0x20,0x55,0x55,0x55,0x75,0x55,0x55,0x0D,0x80,0x40,0x00,0x00,0x50,0x7D,0x00,0x01,0x40,0x88,0x88,0x88,0x98,0xB8,0xAA,0x0A,0x00,0x21,0x00,0x00,0xA8,0x47,0x80,0x00,0x40,0x55,0x55,0x55,0x57,0x55,0x55,0x0D,0x00,0x3E,0x00,0x00,0xD5,0x40,0x80,0x00,0x40,0xFF,0xFF,0xFF,0x23,0xB2,0xAA,0x0A,0x00,0x00,0x00,0xA0,0x6A,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x50,0x35,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x88,0xB8,0xAA,0x0A,0x00,0x00,0x00,0xAA,0x1A,0x40,0x20,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x40,0x55,0x15,0x40,0x20,0x00,0x80,0x31,0xFC,0x8F,0x22,0xB2,0xAA,0x0A,0x00,0x00,0xA8,0xAA,0x0A,0x40,0x10,0x00,0x80,0x49,0x02,0x90,0x55,0x55,0x55,0x1D,0x00,0x40,0x55,0x55,0x0D,0x80,0x10,0x00,0x80,0x49,0x02,0x90,0x88,0xB8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0x08,0x00,0x80,0x31,0x02,0x90,0x55,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x01,0x00,0x07,0x00,0x80,0x01,0x02,0x90,0x22,0xB2,0xAA,0xF6,0xAA,0xEA,0xFF,0xFF,0x01,0x00,0x04,0x00,0x40,0x11,0xFC,0x8F,0x55,0x55,0x55,0x85,0xD7,0x1F,0x00,0x00,0x1E,0x00,0x04,0x00,0x40,0x29,0x00,0x80,0x88,0xB8,0xAA,0x06,0x6C,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x29,0x00,0x80,0x55,0x55,0x55,0x05,0x38,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x20,0x15,0x00,0x80,0x22,0xB2,0xAA,0x06,0x10,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x20,0x0B,0x00,0x80,0x55,0x55,0x55,0x05,0x10,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x10,}; @@ -453,7 +456,8 @@ const uint8_t *_I_iButtonDolphinVerySuccess_108x52[] = {_I_iButtonDolphinVerySuc const uint8_t _I_iButtonKey_49x44_0[] = {0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x60,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x0C,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x00,0x30,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0xC0,0x00,0x00,0x00,0xF0,0x0F,0x00,0x20,0x00,0x00,0x00,0x0C,0x30,0x00,0x10,0x00,0x00,0x00,0x03,0x40,0x00,0x0C,0x00,0x00,0x80,0x00,0x80,0x00,0x02,0x00,0x00,0x40,0x00,0x80,0x01,0x01,0x00,0x00,0x20,0x00,0x80,0x83,0x00,0x00,0x00,0x10,0x00,0x80,0x47,0x00,0x00,0x00,0x08,0x00,0x80,0x4F,0x00,0x00,0x00,0x04,0x00,0xC0,0x4F,0x00,0x00,0x00,0x04,0x00,0x40,0x4F,0x00,0x00,0x00,0x02,0x00,0xC0,0x4E,0x00,0x00,0x00,0x02,0x00,0x60,0x45,0x00,0x00,0x00,0x01,0x00,0xA0,0x46,0x00,0x00,0x00,0x01,0x00,0x30,0x45,0x00,0x00,0x00,0x01,0x00,0x98,0x42,0x00,0x00,0x00,0x01,0x00,0x0C,0x22,0x00,0x00,0x00,0x01,0x00,0x02,0x21,0x00,0x00,0x00,0x01,0x00,0x81,0x11,0x00,0x00,0x00,0x03,0xC0,0xC0,0x10,0x00,0x00,0x00,0x06,0x78,0x40,0x08,0x00,0x00,0x00,0xFC,0x0F,0x20,0x04,0x00,0x00,0x00,0x78,0x55,0x11,0x02,0x00,0x00,0x00,0xF0,0x0A,0x0E,0x01,0x00,0x00,0x00,0xE0,0xD5,0x83,0x00,0x00,0x00,0x00,0xC0,0x7F,0x40,0x00,0x00,0x00,0x00,0x80,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,}; const uint8_t *_I_iButtonKey_49x44[] = {_I_iButtonKey_49x44_0}; -const Icon I_Certification_128x64 = {.width=128,.height=64,.frame_count=1,.frame_rate=0,.frames=_I_Certification_128x64}; +const Icon I_Certification1_103x23 = {.width=103,.height=23,.frame_count=1,.frame_rate=0,.frames=_I_Certification1_103x23}; +const Icon I_Certification2_119x30 = {.width=119,.height=30,.frame_count=1,.frame_rate=0,.frames=_I_Certification2_119x30}; const Icon A_WatchingTV_128x64 = {.width=128,.height=64,.frame_count=5,.frame_rate=10,.frames=_A_WatchingTV_128x64}; const Icon A_Wink_128x64 = {.width=128,.height=64,.frame_count=9,.frame_rate=10,.frames=_A_Wink_128x64}; const Icon I_125_10px = {.width=10,.height=10,.frame_count=1,.frame_rate=0,.frames=_I_125_10px}; diff --git a/assets/compiled/assets_icons.h b/assets/compiled/assets_icons.h index ef7c619e..84a05900 100644 --- a/assets/compiled/assets_icons.h +++ b/assets/compiled/assets_icons.h @@ -1,7 +1,8 @@ #pragma once #include -extern const Icon I_Certification_128x64; +extern const Icon I_Certification1_103x23; +extern const Icon I_Certification2_119x30; extern const Icon A_WatchingTV_128x64; extern const Icon A_Wink_128x64; extern const Icon I_125_10px; diff --git a/assets/icons/About/Certification1_103x23.png b/assets/icons/About/Certification1_103x23.png new file mode 100644 index 0000000000000000000000000000000000000000..4713dc355ae3ee55e4d68a21d8817f3dc259ef3f GIT binary patch literal 2105 zcmcIlTWl0n7@mR(v@S*^+CYfIV2B20=en~y6SlD3-O^RIEM<{G0&y;9cPG1ZVP@Lh zqWDmt#b^_`G(o@%XiSWS_yB^aA<;$+h?J;2h&56{LMjkZ0*R!0W^bT@+7~yOopa9o z=lj0%|KB<1#YD>@Pwn(t1VKEp=141ir{VMH%Pzj_}J&0ZT=qQG&N)TJ&i<5CP z3^Ho-ItwgY*OHXiWo2H$7Bryq3jzetfFq&>EvMT;A&3=m1=x0n2@EZUIN2Z;atYD4 zcmfR@7C<>KiOVEOqki5?aV*P`^H7?kNrLnd6pd4yK(YemN6SA9vRO(>XpJLQAg(e4B> zsI;^M&8))eb~#NjVMIYR3Cc^lOR5CM<70toM$ zN>mt8n)1@<6Dw3*G4l44uA=e;5D^^^#9-AZoaAwuNs^4<^9d|Fmm&p{EQQ9Q4;0Z6 z#}{lUYN~TQq4Bs7(``r8We|%5F(}Hbs)_&r0|J~sfXe}y#c7VEabAX9UJ@mS^E1HD z`HQ;X{D>j9yP0t3mu#yTGQ_B6Q&3o+%ux)$Ng%R#N@7#E2&4c`rdU>_Imt%>se-n| zQsK@KbGM_qsuYMA5J{P4QvsY-QY=m}EQ#|zKZ^&X04MXn@AvZ*hTh^08#%*@8w$)W zbNhHK98Oq9O3lF!cI%=>G!_kW6wh%u?S%k}ETjxe6QR*mO-uvA)YGo*p$xd(X4Qr@ z?ksPlWngW&l~d88I|Wg8H$@PWT{i#)D-Wx8Nb~p>RD#WC00bSwC8aRiNI7}Y0--c4 z$$z?#xSM!e>=;}6_#E;-N-w8X&WL&%z!R3h+{F;?SyUS}6?NWrhE^uS zgV}9XZv@z>-YGzb%e3H)apM#7CW6#Ru}CP{w&~K!(9{8R@_}6qZ;t-8<$3XeIUASn zncaRWeBs-~!q>3I;Qo=Pj-q?7zGAlo>uYb;Zv2B(M!12Y>7yrC{@mO6=i}daJnLgU zd!AVn1Dg*@KdnjUAKKEr+Q~2W=U(bMclm&)DQ(tWf9HiA9u{^XY}XRg}! z!-;GCk?zEtNnm)m?F{}~wxO38I9b;+@%pg~t*3vvq5qisuC+e9Yd7-c!lA*r7hm4= z#txqPz{6_Wv3Jj%>c2FlcVNPM$9z+_zpqJ1|Mxv#4He`Q8^FxvMvwQ^ x9v_{?cb(reYxt3mmA2C}Hm>bSFFB!&oUPlPtUF9}_Q~$$9*ed__BTG;^*1Y=%1!_P literal 0 HcmV?d00001 diff --git a/assets/icons/About/Certification2_119x30.png b/assets/icons/About/Certification2_119x30.png new file mode 100644 index 0000000000000000000000000000000000000000..8b01b0d1fe6c29d152501f7e5751cd6d55255fde GIT binary patch literal 2437 zcmcgud2ka|91a47LaQ)>P^feXSAlN!%%<6CD5WVhLIBeW0kOj#FYVG~H|%bkw2YN{ zz-W#0KDk}Pinc3{y_kQ2^yT12! z-yS=9M0|%H9SjCTyd&H0g7*NtdbNKF{#Px3ZVbG|`m-l!21CbZLsu)q;w9Y;hM1F5 zu3L9IN3nw9GjXEA15?oFht>u|T6)mW357sMc#tp2Hsj5mdyI%A+Kl7PPTc9w1O-xd zsS0vRN9PKqg@RQyrVl~Vf-EHP0i8pFKCi5?L7Oqm%ffMJ8Z#nc6TQ%8%m_I|+|IE` zrlJCbG2y6y<0N9Snh1ub89W6caT3RHGe(do!LT^Z5*DQCXN2BV(Zjmz!<&4;C!4WA z*ZnMp1p)z6fHEm+K1NurRtzUGl0=~es+Gt(7er;PPcwrZXo4#FbxDzt5F^JcMY_!h zBaNis^E;hUVp(e{6f7AQ!6{ML;=$<0#G} zGJs;5c^<__bR;SQzN0_#y!9|r{``M7+5`Q>~g(o(rh#jB{$F^mpYsAb-fnK@QfJdzhK zXs!{%5Jy%fLs%IGB~3(V&qP{m2dY#I#Nn#qL&BnGrN@=`iJBe3!`A*cv0%}lvLy|+ zsHEv=$N^KEMqUZV2=^At388Hc6XRg)#-_=~1#V$PGhqe-N_#{L%8N9QT6w52K9wV= z)KrnQ0HGNlC;*T$+TuU=E#g~KJbHjrK}J5@5s#4&VIm)uPy{3taB@C?$1Y|Jr5QS( z{(Uk}Ch~~G|1lXXlue{bSVUAU{R^)>ax%l*!&C6M4-KR58Tb%=Qvn&)NrmsBh5J4^ zVlX`AcGxp=3(CKn__DkYiR)XFh+KF$H?jAxL${{%syj1uhl@%&C0}Y6cYyKExwpHn zVhBHLV6~&;!TMXB%*TlXOZ{k-t8~ID#GYT4p%=C~{)U=?_j^~6wf7PkZ#~R<=+o`^0P}ikr=I`3rb3S|M z1YdEvWP0_WO*2n$!O#ns;yMnUktQ=h zSDtAzBX0`oI#GUwv*$?(zcx0EIKA`Z)~)$jLQKL36-Apoab>ZG7*@JZruU!H^ e$L>l=FHe%zE}qh^O3ey=C^@o5+t&}9{Q7Uwhg>cI literal 0 HcmV?d00001 diff --git a/assets/icons/About/Certification_128x64.png b/assets/icons/About/Certification_128x64.png deleted file mode 100644 index 1dbb183c710ea2657e56cd7b6b69796e807b466f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1896 zcmbVNdsNeA6iSdw(E8vvwTd;(&-dZO`9-^0HSbGNq}-4mO~^H z7;Y&zPJ{!1JFQ7gr_&V)sEX8aF_#Y4tTQlZ005B~X`Ll#yM>Fa&m~ z(D@SRHK}w(5*STV1SsP2IVv8H2a3d898+Q{r7{>4@C1CACxrPz4v&W-VpJ#uyB~;g zN8xHTSsK&rjM+(`T$(nZFl;iJxF&>4QaLbREEdB&0W1)37!8imqNg!4M{gX_V?jz7 zRg}g+Ye+rlvWO|k>9ho5sJ@OtXHY2K7}guRGsWZ#He&{u&*i~7ohz^|Z6lpb{6pid z+Qw9ifq;_Vvx!O>6* z$Hl@>5l5&J5*!gC6mpc9NX5Za7=~bKJd{8}d+fXo9}iF;U*qxrn>?5y1-m-sU!Bu)#I&PJ zd@~5l=FKP(dS-qoW>7XQllU<6w?Hn9N;O}&mzDA54bWQ=J7ii*=RCV_UW|W8ncIq6 z>;#iz*oI`b{o$gtR)9Sg=aYjf_C zz*U)qJ~^&m>xtC?-(ITFVpmy)3eIK0j%~36<_y`mx0K_3yuIpLal@w*w>XQ+kxXl5 z(Ck+c3SO8gX?5948>(0<=q8X0s8D$a`J!wSn)VZzBCUk$$1thq}9a!Zz zwG^$L{Iaw3d|mUE!8bb_UU*1H+D{`3-T3tZ=^NksvtjeN;Ngk3m}RpZR!z3CH(*P; z@5pGA1f}{!*Q?_y2LqWzb6(~CY&$>ht}LO>vmo|CWPZF`<(OPY^lAG8$*h^hjk_ON z<1^F&>4*IbvJNgb~tCneZ*M)^H0`?Qf4H#yjVV+c&OH@NSN_dRsv73+3LF=%;276vY_zB1@sM@WGGH8vw;fWAEQ>Mrkr-kuNQ zpW}l&h>5nFg;1fp#RGa0R<~>L=p^X|?$ErEhng1s*q(FO{$xVOU$Q5rpNVHHXY_dn zPfau?;iW5QI_EZSpI985qFz8W`9CgNvtePsFx874`O6$p&lhLPJVzBID0MzB)3|Y2 zm$fN#5ve=ZGv!R)k?e|wcq(e^>>q3d3rn0d@ZeR}@HF-z0=D&@M3g;xwd6M)zh-R6E1B$8vchfDD9bWwCG|sT(;=*@{^PM z`&B>wHD?9;dRbits_to_encode * 2 - 1; - furi_assert(encoder->timings_encoded == timings_in_message); + furi_assert(encoder->timings_encoded == (1 + 2 + encoder->bits_to_encode * 2 - 1)); furi_assert(encoder->timings_sum < IRDA_SIRC_REPEAT_PERIOD); *duration = IRDA_SIRC_REPEAT_PERIOD - encoder->timings_sum;