diff --git a/code/hello_world_01/.vscode/settings.json b/code/hello_world_01/.vscode/settings.json index 007b479..b630d6f 100644 --- a/code/hello_world_01/.vscode/settings.json +++ b/code/hello_world_01/.vscode/settings.json @@ -3,7 +3,7 @@ "idf.openOcdConfigs": [ "board/esp32s3-builtin.cfg" ], - "idf.portWin": "COM9", + "idf.portWin": "COM10", "idf.currentSetup": "C:\\esp\\v5.5.3\\esp-idf", "idf.customExtraVars": { "OPENOCD_SCRIPTS": "C:\\Espressif\\tools\\openocd-esp32\\v0.11.0-esp32-20220411/openocd-esp32/share/openocd/scripts", diff --git a/code/hello_world_01/dependencies.lock b/code/hello_world_01/dependencies.lock new file mode 100644 index 0000000..7bfea34 --- /dev/null +++ b/code/hello_world_01/dependencies.lock @@ -0,0 +1,35 @@ +dependencies: + espressif/button: + component_hash: d0afa32f0e50d60bc0c6fc23f7eea98adc6b02cfe70b590bc52c23c506745287 + dependencies: + - name: espressif/cmake_utilities + registry_url: https://components.espressif.com + require: private + version: '*' + - name: idf + require: private + version: '>=4.0' + source: + registry_url: https://components.espressif.com/ + type: service + version: 4.1.6 + espressif/cmake_utilities: + component_hash: 05165f30922b422b4b90c08845e6d449329b97370fbd06309803d8cb539d79e3 + dependencies: + - name: idf + require: private + version: '>=4.1' + source: + registry_url: https://components.espressif.com + type: service + version: 1.1.1 + idf: + source: + type: idf + version: 5.5.3 +direct_dependencies: +- espressif/button +- idf +manifest_hash: cd5d587773467581aa0d8a2da30c23979f275d9a6c30c1b3b2ed2008bef56871 +target: esp32s3 +version: 2.0.0 diff --git a/code/hello_world_01/main/CMakeLists.txt b/code/hello_world_01/main/CMakeLists.txt index cfbd19c..d8fe52d 100644 --- a/code/hello_world_01/main/CMakeLists.txt +++ b/code/hello_world_01/main/CMakeLists.txt @@ -4,7 +4,7 @@ file(GLOB_RECURSE SRC_LIST "*.c") idf_component_register( SRCS ${SRC_LIST} - PRIV_REQUIRES spi_flash esp_driver_spi esp_driver_gpio esp_timer + PRIV_REQUIRES spi_flash esp_driver_spi esp_driver_gpio esp_timer esp_driver_i2c INCLUDE_DIRS "." REQUIRES spiffs esp_psram diff --git a/code/hello_world_01/main/button_func.c b/code/hello_world_01/main/button_func.c new file mode 100644 index 0000000..c89114f --- /dev/null +++ b/code/hello_world_01/main/button_func.c @@ -0,0 +1,50 @@ +#include "button_func.h" + + +static const char *TAG = "BUTTON_FUNC"; + +// 按钮句柄 +static button_handle_t g_button = NULL; + +// 按钮回调函数 +static void button_single_click_cb() +{ + ESP_LOGI(TAG, "Button clicked"); +} + +static void button_long_press_start_cb() +{ + ESP_LOGI(TAG, "Button long press started"); + ESP_LOGI(TAG, "Power off"); + power_sys_off(); +} + + + + +void button_func_init() +{ + ESP_LOGI(TAG, "init_GPIO"); + + button_config_t btn_cfg = { + .long_press_time=2000, + .short_press_time=50, + }; + + button_gpio_config_t gpio_cfg={ + .gpio_num=BUTTON_PIN, + .active_level=BUTTON_ACTIVE_LEVEL, + + }; + + esp_err_t ret = iot_button_new_gpio_device(&btn_cfg, &gpio_cfg, &g_button); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to create GPIO button: 0x%x", ret); + + } + + iot_button_register_cb(g_button,BUTTON_PRESS_DOWN,NULL,button_single_click_cb,NULL); + iot_button_register_cb(g_button,BUTTON_LONG_PRESS_START,NULL,button_long_press_start_cb,NULL); + + +} \ No newline at end of file diff --git a/code/hello_world_01/main/button_func.h b/code/hello_world_01/main/button_func.h new file mode 100644 index 0000000..069d6c4 --- /dev/null +++ b/code/hello_world_01/main/button_func.h @@ -0,0 +1,18 @@ +#ifndef BUTTON_FUNC_H +#define BUTTON_FUNC_H +#include +#include +#include "driver/gpio.h" +#include "esp_log.h" +#include "esp_system.h" + +#include "button_gpio.h" +#include "iot_button.h" +#include "power.h" + +#define BUTTON_PIN 0 +#define BUTTON_ACTIVE_LEVEL 0 // 0=低电平按下,1=高电平按下 + +void button_func_init(); + +#endif \ No newline at end of file diff --git a/code/hello_world_01/main/epaper.c b/code/hello_world_01/main/epaper.c index eebef45..6220159 100644 --- a/code/hello_world_01/main/epaper.c +++ b/code/hello_world_01/main/epaper.c @@ -6,612 +6,10 @@ static const char *TAG = "E-PAPER"; uint8_t epd_buffer[EPD_BUFFER_SIZE] = {0}; // 显存缓冲区 uint8_t epd_buffer_old[EPD_BUFFER_SIZE] = {0}; // 显存缓冲区 -const unsigned char gImage_1[9600] = { /* 0X00,0X01,0XF0,0X00,0X40,0X01, */ -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -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,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,0XFF,0XFF,0XC1,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0X00,0X03,0XFF,0XFF,0X9C,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00, -0XE7,0XFF,0XFF,0X8F,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XCF,0XFF, -0XFF,0XCF,0XFF,0XFF,0X80,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X07,0XFF,0XFF,0XCF,0XFF,0XFF,0XE7, -0XFF,0XFF,0XFF,0XE0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XF3,0XFF,0XFF, -0XFF,0XFF,0XF8,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFC,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X01, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0X80,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X07,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XE0,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFC,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8, -0X00,0X01,0XFF,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9, -0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00, -0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF, -0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X07, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF, -0X9F,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,0X9F,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,0XFF,0XFF,0XFF,0XFF,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,0XCF,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,0X9F,0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F, -0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF, -0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,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,0X9F,0XFF,0X00,0XFF,0XF8,0X0F,0XFF, -0X80,0XFF,0X80,0X0F,0XF8,0XFF,0X01,0XFE,0X00,0X7F,0X1F,0XFF,0XE1,0XFE,0X1F,0XC3, -0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFC,0X00,0X3F,0XE0,0X03,0XFE,0X00,0X3F, -0X80,0X07,0XF8,0XFC,0X00,0XFE,0X00,0X1F,0X1F,0XFF,0XE1,0XFE,0X1F,0XC3,0XCF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XF8,0X00,0X1F,0XC0,0X01,0XFC,0X00,0X1F,0X80,0X03, -0XF8,0XFC,0X00,0X7E,0X00,0X1F,0X1F,0XFF,0XC0,0XFF,0X0F,0X87,0X9F,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XE7,0XF0,0X3C,0X1F,0X83,0XE0,0XF8,0X3E,0X0F,0X8F,0XC1,0XF8,0XF8, -0X78,0X3E,0X3F,0X0F,0X1F,0XFF,0XC0,0XFF,0X87,0X0F,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XF3,0XF0,0XFF,0X0F,0X87,0XF0,0XF8,0X7F,0X0F,0X8F,0XE1,0XF8,0XF8,0XFE,0X3E, -0X3F,0X8F,0X1F,0XFF,0X80,0X7F,0X87,0X0E,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9, -0XE1,0XFF,0X8F,0X0F,0XF8,0X70,0XFF,0X87,0X8F,0XF0,0XF8,0XF8,0XFE,0X3E,0X3F,0X8F, -0X1F,0XFF,0X80,0X7F,0XC2,0X1E,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XE1,0XFF, -0XFF,0X1F,0XF8,0X71,0XFF,0X87,0X8F,0XF8,0XF8,0XF8,0X3F,0XFE,0X3F,0X8F,0X1F,0XFF, -0X8C,0X7F,0XC2,0X1C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XE3,0XFF,0XFF,0X1F, -0XFC,0X71,0XFF,0XC7,0X8F,0XF8,0XF8,0XFC,0X03,0XFE,0X3F,0X0F,0X1F,0XFF,0X0C,0X3F, -0XE0,0X38,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X63,0XF0,0X0F,0X1F,0XFC,0X71, -0XFF,0XC7,0X8F,0XF8,0XF8,0XFC,0X00,0XFE,0X00,0X1F,0X1F,0XFF,0X1E,0X3F,0XF0,0X79, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X63,0XF0,0X0F,0X1F,0XFC,0X71,0XFF,0XC7, -0X8F,0XF8,0XF8,0XFF,0X00,0X7E,0X00,0X1F,0X1F,0XFF,0X1E,0X3F,0XF0,0X73,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X63,0XF0,0X0F,0X1F,0XFC,0X71,0XFF,0XC7,0X8F,0XF8, -0XF8,0XFF,0XF0,0X3E,0X00,0X7F,0X1F,0XFE,0X00,0X1F,0XF8,0XF9,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFC,0XE1,0XFF,0X8F,0X1F,0XF8,0X71,0XFF,0X87,0X8F,0XF8,0XF8,0XF1, -0XFE,0X3E,0X3F,0XFF,0X1F,0XFE,0X00,0X1F,0XF8,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XF8,0XE1,0XFF,0X8F,0X0F,0XF8,0X70,0XFF,0X87,0X8F,0XF0,0XF8,0XF1,0XFE,0X3E, -0X3F,0XFF,0X1F,0XFC,0X00,0X0F,0XF8,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9, -0XF0,0XFF,0X8F,0X87,0XF0,0XF8,0X7F,0X0F,0X8F,0XF1,0XF8,0XF0,0XFE,0X3E,0X3F,0XFF, -0X1F,0XFC,0X3F,0X0F,0XF8,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0XF0,0X3E, -0X0F,0X83,0XE0,0XF8,0X3E,0X0F,0X8F,0XC1,0XF8,0XF8,0X78,0X3E,0X3F,0XFF,0X1F,0XFC, -0X7F,0X8F,0XF8,0XFE,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,0XF8,0X00,0X0F,0XC0, -0X01,0XFC,0X00,0X1F,0X80,0X03,0XF8,0XF8,0X00,0X7E,0X3F,0XFF,0X00,0X18,0X7F,0X87, -0XF8,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XFC,0X00,0X3F,0XE0,0X03,0XFE, -0X00,0X3F,0X80,0X07,0XF8,0XFC,0X00,0XFE,0X3F,0XFF,0X00,0X18,0XFF,0XC7,0XF8,0XFF, -0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0XFF,0X80,0XFF,0XF8,0X0F,0XFF,0X80,0XFF, -0X80,0X0F,0XF8,0XFF,0X01,0XFE,0X3F,0XFF,0X00,0X18,0XFF,0XC7,0XF8,0XFF,0XCF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0X1F,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,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F, -0XFF,0XFF,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,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,0X9F,0XFF,0XFF,0XFF,0XFF, -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,0XCF,0XFF,0XFF,0XFF,0XFF,0X9F,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,0XFF,0XFF,0XFF,0XFF,0X9F,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,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XF1,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0, -0X00,0X07,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF9, -0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFF, -0XFF,0XFF,0XFF,0XC0,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF, -0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XF1, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFC,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XF3,0XFF,0XFF, -0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XE7,0XFF,0XFF,0XFF,0XE0, -0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0X80,0X00,0X1F,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XCF,0XFF,0XFF,0X80,0X00,0X1F,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0, -0X00,0X07,0XFF,0XFF,0XCF,0XFF,0XFF,0X8F,0XFE,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00, -0X01,0XFF,0XCF,0XFF,0XFF,0X98,0X00,0X01,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00, -0X67,0XFF,0XFF,0X00,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X03,0XFF, -0XFE,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,0XFF,0XFF,0XC1,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X00,0X00,0XFF,0XF0,0X00, -0X07,0XFF,0X80,0X00,0X1F,0XFE,0X00,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XC0,0X00,0X1F, -0XFE,0X00,0X00,0X7F,0XF8,0X00,0X00,0XFF,0XFC,0X00,0X00,0XFF,0XE0,0X00,0X07,0XFF, -0X80,0X00,0X1F,0XFC,0X00,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XC0,0X00,0X0F,0XFE,0X00, -0X00,0X7F,0XF8,0X00,0X00,0XFF,0XFC,0X7F,0XF8,0XFF,0XE3,0XFF,0XE3,0XFF,0X1F,0XFF, -0X1F,0XFC,0X7F,0XFC,0X7F,0XF1,0XFF,0XE1,0XFF,0X8F,0XFF,0X8F,0XFE,0X3F,0XFE,0X3F, -0XF1,0XFF,0XF8,0XFF,0XFC,0X7F,0XFC,0X7F,0XC7,0XFF,0XF3,0XFF,0X1F,0XFF,0X8F,0XF8, -0XFF,0XFE,0X3F,0XE3,0XFF,0XF1,0XFF,0X9F,0XFF,0XC7,0XFC,0X7F,0XFE,0X3F,0XF1,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFE,0X3F,0X8F,0XFF,0XF1,0XFE,0X3F,0XFF,0XC7,0XF0,0XFF,0XFE, -0X1F,0XC7,0XFF,0XF8,0XFF,0X1F,0XFF,0XE3,0XF8,0XFF,0XFF,0X1F,0XE3,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFE,0X04,0X0F,0XFF,0XF8,0X10,0X7F,0XFF,0XE0,0X81,0XFF,0XFF,0X02,0X0F, -0XFF,0XFC,0X10,0X3F,0XFF,0XE0,0X40,0XFF,0XFF,0X81,0X07,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0X80,0X3F,0XFF,0XFE,0X00,0XFF,0XFF,0XF0,0X07,0XFF,0XFF,0XC0,0X1F,0XFF,0XFE, -0X00,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XC0,0X0F,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF9, -0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XE7,0XFF, -0XFF,0XFF,0X3F,0XFF,0XFF,0XFC,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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, -0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF, -0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF, -0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFC,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,0X80,0XFF,0XFF,0XC3,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0XF1,0XFF,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,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC, -0X7F,0XFF,0XFF,0XF8,0XFF,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,0X7F,0XFF, -0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0XF1, -0XFF,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,0X3F,0XFF,0XFF,0X03,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFC,0X0F,0XFF,0XFE,0X0F,0XFF, -0XE3,0XFF,0X18,0XFF,0X1F,0X80,0XF8,0XFF,0X1F,0XE0,0X00,0XFF,0X00,0X3F,0XE1,0XF8, -0X01,0XE0,0X00,0X80,0X07,0XFF,0XC0,0XFF,0XFC,0X3F,0XFF,0XF8,0X03,0XFF,0XE3,0XFF, -0X18,0X7F,0X1E,0X00,0X38,0XFF,0X1F,0XE0,0X00,0XFF,0X00,0X0F,0XE1,0XF8,0X00,0X60, -0X00,0X80,0X03,0XFF,0XF0,0XFF,0XFC,0X7F,0XFF,0XF8,0X01,0XFF,0XC3,0XFF,0X18,0X3F, -0X1C,0X00,0X18,0XFF,0X1F,0XE0,0X00,0XFF,0X00,0X0F,0XC0,0XF8,0X00,0X60,0X00,0X80, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF0,0XE1,0XFF,0X03,0XFF,0X18,0X3F,0X18,0X3E, -0X18,0XFF,0X1F,0XE3,0XFF,0XFF,0X1F,0X87,0XC0,0XF8,0XFC,0X23,0XFF,0X8F,0XE1,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XF1,0XF1,0XFE,0X03,0XFF,0X18,0X1F,0X18,0X7F,0X08,0XFF, -0X1F,0XE3,0XFF,0XFF,0X1F,0XC7,0X80,0X78,0XFE,0X23,0XFF,0X8F,0XF1,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XFF,0XF1,0XFE,0X03,0XFF,0X18,0X0F,0X10,0XFF,0X88,0XFF,0X1F,0XE3, -0XFF,0XFF,0X1F,0XC7,0X80,0X78,0XFE,0X23,0XFF,0X8F,0XF1,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0XFF,0XE1,0XFE,0X23,0XFF,0X18,0X8F,0X11,0XFF,0XF8,0XFF,0X1F,0XE3,0XFF,0XFF, -0X1F,0XC7,0X8C,0X78,0XFE,0X23,0XFF,0X8F,0XE1,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF, -0X03,0XFF,0XE3,0XFF,0X18,0X87,0X11,0XFF,0XF8,0X00,0X1F,0XE0,0X01,0XFF,0X1F,0X87, -0X0C,0X38,0XFC,0X20,0X01,0X80,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X03,0XFF, -0XE3,0XFF,0X18,0XC3,0X11,0XFF,0XF8,0X00,0X1F,0XE0,0X01,0XFF,0X00,0X0F,0X1E,0X38, -0X00,0X60,0X01,0X80,0X03,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X01,0XFF,0XE3,0XFF, -0X18,0XC3,0X11,0XFF,0XF8,0X00,0X1F,0XE0,0X01,0XFF,0X00,0X0F,0X1E,0X38,0X00,0X60, -0X01,0X80,0X0F,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XF0,0XFF,0XE3,0XFF,0X18,0XE1, -0X11,0XFF,0XF8,0XFF,0X1F,0XE3,0XFE,0X01,0X00,0X3E,0X00,0X18,0X01,0XE3,0XFF,0X8E, -0X0F,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XE3,0XFF,0X18,0XF1,0X11,0XFF, -0X88,0XFF,0X1F,0XE3,0XFE,0X01,0X1F,0XFE,0X00,0X18,0XFF,0XE3,0XFF,0X8F,0X07,0XFF, -0XF8,0XFF,0XFC,0X0F,0XFF,0XF1,0XF8,0XFF,0XE3,0XFF,0X18,0XF0,0X10,0XFF,0X88,0XFF, -0X1F,0XE3,0XFE,0X01,0X1F,0XFC,0X00,0X08,0XFF,0XE3,0XFF,0X8F,0X87,0XFF,0XC0,0XFF, -0XFF,0X03,0XFF,0XF0,0XF8,0XFF,0XE3,0XFF,0X18,0XF8,0X18,0X7F,0X08,0XFF,0X1F,0XE3, -0XFF,0XFF,0X1F,0XFC,0X3F,0X08,0XFF,0XE3,0XFF,0X8F,0X83,0XFF,0X03,0XFF,0XFF,0XE3, -0XFF,0XF0,0XF0,0XFF,0XE3,0XFF,0X18,0XFC,0X18,0X3E,0X18,0XFF,0X1F,0XE3,0XFF,0XFF, -0X1F,0XFC,0X7F,0X88,0XFF,0XE3,0XFF,0X8F,0XC3,0XFF,0X1F,0XFF,0XFF,0XF1,0XFF,0XF8, -0X01,0X8F,0XE3,0XFF,0X18,0XFC,0X1C,0X00,0X18,0XFF,0X1F,0XE0,0X00,0XFF,0X1F,0XF8, -0X7F,0X80,0XFF,0XE0,0X00,0X8F,0XE1,0XFE,0X3F,0XFF,0XFF,0XF9,0XFF,0XFC,0X03,0X8F, -0XE3,0XFF,0X18,0XFE,0X1E,0X00,0X38,0XFF,0X1F,0XE0,0X00,0XFF,0X1F,0XF8,0XFF,0XC0, -0XFF,0XE0,0X00,0X8F,0XE0,0XFE,0X7F,0XFF,0XFF,0XF8,0XFF,0XFE,0X07,0X8F,0XE3,0XFF, -0X18,0XFF,0X1F,0X80,0XF8,0XFF,0X1F,0XE0,0X00,0XFF,0X1F,0XF8,0XFF,0XC0,0XFF,0XE0, -0X00,0X8F,0XF0,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFC,0X7F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC, -0X7F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF, -0XFF,0XE3,0XFF,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,0X1F,0XFF,0XFE,0X03, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XFF,0XFC,0X1F,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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, -0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF, -0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF, -0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XF0,0XFF,0XFC,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,0XFF,0XFF, -0XC0,0XFF,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X07,0XFF, -0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0XF1, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XF0,0X0E,0X00,0X70,0X3E, -0X0F,0X3F,0X9F,0X90,0X02,0X7C,0X1E,0X7E,0X7F,0XFF,0XC1,0XF9,0XE1,0XFF,0XFF,0XF0, -0XF8,0X3C,0X3F,0XFC,0X7F,0XFF,0XFF,0XF1,0XFF,0XF0,0X06,0X00,0X60,0X1C,0X07,0X3F, -0X9F,0X90,0X02,0X78,0X0E,0X3E,0X7F,0XFF,0X81,0XF1,0XC0,0XFF,0XFF,0XE0,0X70,0X38, -0X1F,0XFC,0X3F,0XFF,0XFF,0XF1,0XFF,0XF3,0XE2,0X7F,0XC7,0X88,0XE3,0X3F,0X9F,0X9F, -0X3E,0X71,0XC6,0X1E,0X7F,0XFF,0X18,0XE1,0X8C,0X7F,0XFF,0XC6,0X63,0X11,0X8F,0XFE, -0X3F,0XFF,0XFF,0XC3,0XFF,0XF3,0XF2,0X7F,0XCF,0XC1,0XF1,0X3F,0X9F,0X9F,0X3E,0X63, -0XE2,0X1E,0X7E,0X7F,0X3C,0XE1,0X9E,0X7C,0XF3,0XCE,0X67,0X93,0XCF,0XFF,0X0F,0XFF, -0XFC,0X07,0XFF,0XF3,0XF2,0X7F,0XC7,0XF3,0XF9,0X3F,0X9F,0X9F,0X3E,0X67,0XF2,0X0E, -0X7E,0X7F,0XFC,0XC1,0X9E,0X7C,0X63,0XFC,0X7F,0X93,0XCF,0XFF,0X80,0XFF,0XFC,0X3F, -0XFF,0XF3,0XE2,0X00,0XE0,0XF3,0XF9,0X3F,0X9F,0X9F,0X3E,0X67,0XF2,0X46,0X7F,0XFF, -0XF8,0XC9,0X9E,0X7E,0X07,0XF0,0XFF,0X13,0XCF,0XFF,0XC0,0XFF,0XFC,0X7F,0XFF,0XF0, -0X06,0X00,0XF0,0X13,0XF9,0X3F,0X9F,0X9F,0X3E,0X67,0XF2,0X66,0X7F,0XFF,0XF9,0X89, -0X9E,0X7F,0X0F,0XF0,0X7F,0X33,0XCF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF0,0X0E,0X7F, -0XFE,0X03,0XF9,0X3F,0X9F,0X9F,0X3E,0X67,0XF2,0X62,0X7F,0XFF,0XF1,0X19,0X9E,0X7F, -0X0F,0XFE,0X3E,0X33,0XCF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF3,0X8E,0X7F,0XCF,0XC3, -0XF9,0X3F,0X9F,0X9F,0X3E,0X67,0XF2,0X70,0X7F,0XFF,0XE3,0X00,0X1E,0X7F,0X0F,0XFF, -0X3C,0X73,0XCF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF3,0XCE,0X7F,0XCF,0XC1,0XF1,0X3F, -0X9F,0X9F,0X3E,0X63,0XE2,0X78,0X7F,0XFF,0XC7,0X00,0X1E,0X7F,0X0F,0XCF,0X38,0XF3, -0XCF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF3,0XC6,0X7F,0XC7,0X88,0XE3,0X3F,0X8F,0X1F, -0X3E,0X71,0XC6,0X78,0X7F,0XFF,0X8F,0XF9,0X8C,0X7E,0X07,0XC6,0X31,0XF1,0X8F,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XF3,0XE2,0X00,0X60,0X1C,0X07,0X00,0XC0,0X3F,0X3E,0X78, -0X0E,0X7C,0X7E,0X7F,0X00,0XF9,0XC0,0XFC,0X63,0XC0,0X60,0X18,0X1F,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XF3,0XF2,0X00,0X70,0X3E,0X0F,0X00,0XE0,0X7F,0X3E,0X7C,0X1E,0X7E, -0X7E,0X7F,0X00,0XF9,0XE1,0XFC,0XF3,0XF0,0XE0,0X1C,0X3F,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFC,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,0X80,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0X0F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF, -0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0XF8, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0X07,0XFF,0XFC,0X0F,0XFF,0XFF,0X03,0XF0,0X79,0XFF,0X83,0XC0,0X3F,0XFF,0XC0,0X39, -0XFF,0X9F,0XE0,0X73,0XF3,0XFE,0X7E,0X7E,0X4F,0XCC,0X80,0X10,0X03,0XFF,0XC0,0XFF, -0XFC,0X3F,0XFF,0XFE,0X01,0XE0,0X39,0XFF,0X01,0XC0,0X1F,0XFF,0XC0,0X19,0XFF,0X0F, -0XC0,0X33,0XE3,0XFE,0X3C,0X3C,0X4F,0XCC,0X80,0X10,0X03,0XFF,0XF0,0XFF,0XFC,0X7F, -0XFF,0XFC,0X78,0XC7,0X19,0XFE,0X38,0XCF,0X8F,0XFF,0XCF,0X89,0XFF,0X0F,0X8F,0X13, -0XC7,0XFF,0X3C,0X3C,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF8, -0XFC,0X8F,0X89,0XFC,0X7C,0X4F,0XCF,0X9F,0XCF,0XC9,0XFE,0X07,0X1F,0X93,0X8F,0XFF, -0X3C,0X3C,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF9,0XFF,0X9F, -0XC9,0XFC,0XFE,0X4F,0XCF,0X9F,0XCF,0X89,0XFE,0X67,0X3F,0XF3,0X1F,0XFF,0X18,0X18, -0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF9,0XFF,0X9F,0XC9,0XFC, -0XFE,0X4F,0X8F,0XFF,0XC0,0X19,0XFE,0X67,0X3F,0XF2,0X3F,0XFF,0X99,0X99,0XC0,0X0C, -0XF9,0XF0,0X07,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF9,0XFF,0X9F,0XC9,0XFC,0XFE,0X40, -0X1F,0XFF,0XC0,0X19,0XFC,0X63,0X3F,0XF0,0X1F,0XFF,0X99,0X99,0XC0,0X0C,0XF9,0XF0, -0X07,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XF9,0XFF,0X9F,0XC9,0XFC,0XFE,0X40,0X3F,0XFF, -0XCF,0X89,0XFC,0X03,0X3F,0XF0,0X8F,0XFF,0X81,0X81,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XF9,0XFF,0X9F,0XC9,0XFC,0XFE,0X4E,0X3F,0XFF,0XCF,0XC9, -0XF8,0X01,0X3F,0XF1,0XCF,0XFF,0XC3,0XC3,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XF8,0XFC,0X8F,0X89,0XFC,0X7C,0X4F,0X3F,0XFF,0XCF,0XC9,0XF9,0XF9, -0X1F,0X93,0XC7,0XFF,0XC3,0XC3,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0XFC,0X78,0XC7,0X19,0XFE,0X38,0XCF,0X1F,0XFF,0XCF,0X89,0XF1,0XF8,0X8F,0X13, -0XE7,0XFF,0XC3,0XC3,0XCF,0XCC,0XF9,0XF3,0XFF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFE, -0X01,0XE0,0X38,0X07,0X01,0XCF,0X8F,0X9F,0XC0,0X18,0X03,0XFC,0XC0,0X33,0XE3,0X3F, -0XE7,0XE7,0XCF,0XCC,0XF9,0XF0,0X03,0XFF,0XF8,0XFF,0XFC,0X1F,0XFF,0XFF,0X03,0XF0, -0X78,0X07,0X83,0XCF,0XCF,0X9F,0XC0,0X38,0X03,0XFC,0XE0,0X73,0XF3,0X3F,0XE7,0XE7, -0XCF,0XCC,0XF9,0XF0,0X03,0XFF,0XE0,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFE,0X1F,0XFF,0XFF,0XF1,0XFF,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, -0X3F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF, -0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF9,0XFF,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,0X7F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF,0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0X03,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XE0,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF, -0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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, -0XFF,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFC,0X3F, -0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFC,0X0F,0XFF,0XFC, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0XFF,0XFF,0X83,0XFF,0XF8,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X07,0XFF,0XFF,0XF1,0XFF,0XF8,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XF1,0XFF,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00, -0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFE,0X3F,0XFF,0XFF,0XF8,0XFF,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0X8F, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC, -0X7F,0XFF,0XFF,0XF8,0XFF,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0X8F,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF, -0XFF,0XF8,0XFF,0XF8,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0X8F,0XF0,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFC,0X7F,0XFF,0XFF,0XF1, -0XFF,0XFC,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0X9F,0XF0,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XF1,0XFF,0XFC, -0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0X9F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XC3,0XFF,0XFC,0X7F,0X80, -0X00,0X00,0X00,0X00,0XFF,0X1F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X01,0XFF,0X0F,0XFF,0XFC,0X07,0XFF,0XFC,0X7F,0X80,0X00,0X00, -0X00,0X00,0XFF,0X1F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X01,0XFF,0X80,0XFF,0XFC,0X1F,0XFF,0XFC,0X7F,0X80,0X00,0X00,0X00,0X00, -0XFF,0X1F,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X01,0XFF,0XE0,0XFF,0XFC,0X7F,0XFF,0XFC,0X7F,0X80,0X00,0X00,0X00,0X00,0XFF,0X1F, -0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFE,0X7F,0X80,0X00,0X00,0X00,0X00,0XFF,0X1F,0XF0,0X00, -0X06,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XFE,0X7F,0XC0,0X00,0X00,0X00,0X01,0XFF,0X3F,0XF0,0X00,0X1F,0X80, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0XFE,0X3F,0XC0,0X00,0X00,0X00,0X01,0XFE,0X3F,0XF0,0X00,0X7F,0XE0,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFE, -0X3F,0XC0,0X00,0X00,0X00,0X01,0XFE,0X3F,0XF0,0X00,0XFF,0XF0,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFE,0X1F,0XC0, -0X00,0X00,0X00,0X01,0XFE,0X3F,0XF0,0X00,0XF6,0XF0,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X1F,0XC0,0X00,0X00, -0X00,0X01,0XFC,0X7F,0XF0,0X00,0XE6,0X70,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X0F,0XE0,0X00,0X00,0X00,0X03, -0XFC,0X7F,0XF0,0X00,0XE6,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X8F,0XE0,0X00,0X00,0X00,0X03,0XFC,0XFF, -0XF0,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0X8F,0XE0,0X00,0X00,0X00,0X03,0XF8,0XFF,0XF0,0X00, -0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF, -0XFC,0X3F,0XFF,0XFF,0XC7,0XE0,0X00,0X00,0X00,0X03,0XF9,0XFF,0XF0,0X00,0X7F,0XC0, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0XFF,0XFC,0X07, -0XFF,0XFF,0XC7,0XF0,0X00,0X00,0X00,0X07,0XF1,0XFF,0XF0,0X00,0X1F,0XE0,0X00,0X7F, -0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0XFF,0XFF,0XC3,0XFF,0XFF, -0XE3,0XF0,0X00,0X00,0X00,0X07,0XE3,0XFF,0XF0,0X00,0X07,0XF0,0X01,0XFF,0XE0,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X0F,0XFF,0XFF,0XF1,0XFF,0XFF,0XE3,0XF0, -0X00,0X00,0X00,0X07,0XE3,0XFF,0XF0,0X00,0X06,0XF0,0X07,0XFF,0XF8,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XF1,0XFF,0XFF,0XF1,0XF8,0X00,0X00, -0X00,0X0F,0XC7,0XFF,0XF0,0X00,0XE6,0X70,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X01,0XFC,0X3F,0XFF,0XFF,0XF8,0XFF,0XFF,0XF0,0X78,0X00,0X00,0X00,0X0F, -0X07,0XFF,0XF0,0X00,0XF6,0X70,0X1F,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X01,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XF8,0X18,0X00,0X00,0X00,0X0C,0X0F,0XFF, -0XF0,0X00,0XF6,0XF0,0X3F,0XC0,0X7F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFC, -0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XF0,0X00, -0X7F,0XE0,0X3F,0X80,0X1F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFC,0X7F,0XFF, -0XFF,0XF1,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X3F,0XFF,0XF0,0X00,0X7F,0XE0, -0X7E,0X00,0X0F,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFC,0X3F,0XFF,0XFF,0XF1, -0XFF,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0XF0,0X00,0X1F,0X80,0X7E,0X00, -0X07,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0X83,0XFF,0XFF, -0XFF,0XE0,0X00,0X00,0X00,0X03,0XFF,0XFF,0XF0,0X00,0X06,0X00,0XFC,0X00,0X07,0XC0, -0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X07,0XFF,0XFC,0X0F,0XFF,0XFF,0XFF,0XF0, -0X00,0X00,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X06,0X00,0XFC,0X00,0X03,0XC0,0X00,0X00, -0X00,0X00,0X00,0X00,0X01,0XFF,0X80,0XFF,0XFC,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X00, -0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XF8,0X00,0X03,0XC0,0X00,0X00,0X00,0X00, -0X00,0X00,0X01,0XFF,0XE0,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XF0,0X80,0X00,0X00,0X87, -0XFF,0XFF,0XF0,0X00,0X00,0X00,0XF8,0X00,0X03,0XC0,0X00,0X00,0X00,0X00,0X00,0X00, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XE1,0XC0,0X00,0X01,0XC3,0XFF,0XFF, -0XF0,0X00,0X00,0X00,0XF8,0X00,0X03,0XE0,0X00,0X03,0XF0,0X00,0X7E,0X00,0X01,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XF3,0XE0,0X00,0X03,0XE7,0XFF,0XFF,0XF0,0X00, -0X00,0X00,0XF8,0X00,0X03,0XE0,0X00,0X0F,0XFC,0X01,0XFF,0X80,0X01,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, -0XF8,0X00,0X03,0XE0,0X00,0X1F,0XFE,0X03,0XFF,0XC0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X0F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XF8,0X00, -0X03,0XE0,0X00,0X3F,0XFF,0X07,0XFF,0XE0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF, -0XFF,0XFF,0XFC,0X00,0X1F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFC,0X00,0X07,0XE0, -0X00,0X7E,0X1F,0X0F,0XC3,0XE0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF, -0XFE,0X00,0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X7C,0X00,0X07,0XE0,0X00,0X7C, -0X0F,0X8F,0X81,0XF0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFE,0X00, -0X3F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X7E,0X00,0X0F,0XE0,0X00,0X78,0X07,0X8F, -0X00,0XF0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF, -0XFF,0XFF,0XF0,0X00,0X00,0X00,0X7F,0X00,0X1F,0XE0,0X00,0X78,0X07,0X8F,0X00,0XF0, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF, -0XF0,0X00,0X00,0X00,0X3F,0XC0,0X7F,0XE0,0X00,0X78,0X07,0X8F,0X00,0XF0,0X01,0XFF, -0XF8,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00, -0X00,0X00,0X1F,0XFF,0XFB,0XE0,0X00,0X7C,0X07,0X8F,0X80,0XF0,0X01,0XFF,0XE0,0XFF, -0XFC,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, -0X0F,0XFF,0XF3,0XE0,0X00,0X3E,0X0F,0X07,0XC1,0XE0,0X01,0XFF,0X80,0XFF,0XFF,0XC3, -0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X07,0XFF, -0XE3,0XE0,0X00,0X1F,0XFE,0X03,0XFF,0XC0,0X01,0XFE,0X0F,0XFF,0XFF,0XF1,0XFF,0XFF, -0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF,0XC3,0XE0, -0X00,0X07,0XF8,0X00,0XFF,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF, -0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X7E,0X03,0XE0,0X00,0X0F, -0XFC,0X01,0XFF,0X80,0X01,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0X80, -0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X00,0X3F,0XFF,0X07, -0XFF,0XE0,0X01,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF, -0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X07,0XC0,0X00,0X7C,0X0F,0X0F,0X81,0XE0, -0X01,0XFC,0X7F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF, -0XF0,0X00,0X00,0X00,0X00,0X00,0X07,0XC0,0X00,0X78,0X07,0X8F,0X00,0XF0,0X01,0XFE, -0X7F,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00, -0X00,0X00,0X00,0X00,0X07,0XC0,0X00,0XF0,0X07,0XDE,0X00,0XF8,0X01,0XFE,0X3F,0XFF, -0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, -0X7C,0X00,0X0F,0XC0,0X00,0XF0,0X03,0XDE,0X00,0X78,0X01,0XFF,0X3F,0XFF,0XFF,0X03, -0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X7C,0X00, -0X0F,0X80,0X00,0XF0,0X03,0XDE,0X00,0X78,0X01,0XFF,0X03,0XFF,0XFC,0X0F,0XFF,0XFF, -0XFF,0XFF,0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X7E,0X00,0X0F,0X80, -0X00,0XF0,0X03,0XDE,0X00,0X78,0X01,0XFF,0XC0,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF, -0XFF,0X80,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X3E,0X00,0X1F,0X00,0X00,0XF0, -0X03,0XDE,0X00,0X78,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X80, -0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X3F,0X00,0X3F,0X00,0X00,0XF0,0X03,0XDE, -0X00,0X78,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0XFF,0XFF, -0XFF,0XFF,0XF0,0X00,0X00,0X00,0X1F,0XC0,0XFE,0X00,0X00,0X78,0X07,0X8F,0X00,0XF0, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X7F,0XFF,0XFF,0XFF, -0XF0,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X01,0XF0,0X7E,0X0F,0X8F,0XC1,0XF0,0X01,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00, -0X00,0X00,0X0F,0XFF,0XFC,0X01,0XF0,0X3F,0XFF,0X07,0XFF,0XE0,0X01,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, -0X07,0XFF,0XF0,0X01,0XF0,0X1F,0XFF,0X03,0XFF,0XE0,0X01,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X03,0XFF, -0XE0,0X01,0XF0,0X0F,0XFC,0X01,0XFF,0X80,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF, -0XFF,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X7F,0X00,0X01, -0XF0,0X03,0XF0,0X00,0X7E,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF, -0XFF,0X00,0X7F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XF8,0X00, -0X0F,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X03,0XFF, -0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X01,0XFF,0XF8,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XFF, -0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF, -0XF8,0XFF,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0XFF, -0XFF,0X03,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X00,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0X03,0XFF,0XFF,0XE3, -0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X1F,0XFF,0XFF,0XF1,0XFF,0XFF, -0XFF,0XFE,0X00,0X00,0X00,0X3F,0XFF,0XFF,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00, -0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X3F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XFC, -0X00,0X00,0X00,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XF8,0X00,0X00, -0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X0F, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFC,0X7F,0XFF,0XFF,0XF9,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X0F,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE, -0X7F,0XFF,0XFF,0XF1,0XFF,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,0X3F,0XFF, -0XFF,0XE3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0X03, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFC,0X1F,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF,0XF8,0XFF,0XFC,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, -0XFF,0XFF,0XF8,0XFF,0XFC,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,0XFF,0XFF, -0XF8,0XFF,0XFC,0X7F,0XFF,0XFB,0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF, -0XFD,0XFF,0XFF,0XFF,0XE7,0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFC,0XFF,0XFF,0XF8,0XFF, -0XFC,0X7F,0XFF,0X80,0X3F,0XFF,0XFE,0X01,0XFF,0XFF,0XF0,0X07,0XFF,0XFF,0XC0,0X1F, -0XFF,0XFF,0X00,0XFF,0XFF,0XF8,0X03,0XFF,0XFF,0XE0,0X1F,0XFF,0XF8,0XFF,0XFC,0X7F, -0XFE,0X04,0X0F,0XFF,0XF8,0X00,0X7F,0XFF,0XE0,0X81,0XFF,0XFF,0X02,0X0F,0XFF,0XFC, -0X00,0X3F,0XFF,0XE0,0X40,0XFF,0XFF,0X80,0X07,0XFF,0XF8,0XFF,0XFC,0X7F,0XFE,0X3F, -0X8F,0XFF,0XF0,0XFE,0X3F,0XFF,0XC7,0XF0,0XFF,0XFE,0X1F,0XC7,0XFF,0XF8,0XFE,0X1F, -0XFF,0XE3,0XF8,0XFF,0XFF,0X0F,0XC3,0XFF,0XF8,0XFF,0XFC,0X7F,0XFC,0X7F,0XC7,0XFF, -0XF3,0XFF,0X1F,0XFF,0X8F,0XFC,0XFF,0XFE,0X7F,0XE3,0XFF,0XF1,0XFF,0X1F,0XFF,0XC7, -0XFC,0X7F,0XFE,0X3F,0XF1,0XFF,0XF8,0XFF,0XFC,0X7F,0XF8,0XFF,0XE3,0XFF,0XE3,0XFF, -0X1F,0XFF,0X1F,0XFC,0X7F,0XFC,0X7F,0XE1,0XFF,0XF1,0XFF,0X8F,0XFF,0X8F,0XFE,0X3F, -0XFE,0X3F,0XF1,0XFF,0XF8,0XFF,0XFC,0X00,0X00,0XFF,0XE0,0X00,0X07,0XFF,0X80,0X00, -0X1F,0XFE,0X00,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XC0,0X00,0X0F,0XFE,0X00,0X00,0X7F, -0XF8,0X00,0X00,0XFF,0XFC,0X00,0X00,0XFF,0XF0,0X00,0X07,0XFF,0X80,0X00,0X1F,0XFE, -0X00,0X00,0XFF,0XF0,0X00,0X03,0XFF,0XC0,0X00,0X1F,0XFE,0X00,0X00,0X7F,0XF8,0X00, -0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,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 gImage_basemap[9600] = { /* 0X00,0X01,0XF0,0X00,0X40,0X01, */ -0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, +0X00,0XF0,0X0F,0XFF,0Xee,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, diff --git a/code/hello_world_01/main/epaper.h b/code/hello_world_01/main/epaper.h index fde1c3a..bc3b807 100644 --- a/code/hello_world_01/main/epaper.h +++ b/code/hello_world_01/main/epaper.h @@ -8,6 +8,9 @@ #include "esp_log.h" #include "esp_system.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + #include "spi.h" #define EPD_CS_PIN 34 diff --git a/code/hello_world_01/main/hello_world_main.c b/code/hello_world_01/main/hello_world_main.c index db09226..a82a0a3 100644 --- a/code/hello_world_01/main/hello_world_main.c +++ b/code/hello_world_01/main/hello_world_main.c @@ -20,6 +20,10 @@ #include "spiffs.h" #include "spi.h" #include "epaper.h" +#include "keyboard.h" +#include "power.h" +#include "iic.h" +#include "button_func.h" static const char *TAG = "SYS"; @@ -67,8 +71,15 @@ void app_main(void) ESP_LOGI(TAG,"PSRAM 总大小:%u KB,可用:%u KB", psram_total/1024, psram_free/1024); + + spi_init(); epd_init(); + + button_func_init(); + iic_init(); + power_init(); + keyboard_init(); //epd_clear(1); // // 3. 画测试点(黑色) // epd_draw_point(50, 50, 0); // (50,50) 黑点 diff --git a/code/hello_world_01/main/idf_component.yml b/code/hello_world_01/main/idf_component.yml new file mode 100644 index 0000000..45aceb1 --- /dev/null +++ b/code/hello_world_01/main/idf_component.yml @@ -0,0 +1,17 @@ +## IDF Component Manager Manifest File +dependencies: + ## Required IDF version + idf: + version: '>=4.1.0' + # # Put list of dependencies here + # # For components maintained by Espressif: + # component: "~1.0.0" + # # For 3rd party components: + # username/component: ">=1.0.0,<2.0.0" + # username2/component2: + # version: "~1.0.0" + # # For transient dependencies `public` flag can be set. + # # `public` flag doesn't have an effect dependencies of the `main` component. + # # All dependencies of `main` are public by default. + # public: true + espressif/button: '*' diff --git a/code/hello_world_01/main/iic.c b/code/hello_world_01/main/iic.c new file mode 100644 index 0000000..8e1c7df --- /dev/null +++ b/code/hello_world_01/main/iic.c @@ -0,0 +1,29 @@ +#include "iic.h" + +static const char *TAG = "IIC"; + +i2c_master_bus_handle_t bus_handle; // I2C 总线句柄 + + + +void iic_init() +{ + ESP_LOGI(TAG, "init"); + + i2c_master_bus_config_t bus_config = { + .clk_source = I2C_CLK_SRC_DEFAULT, // 时钟源(默认) + .i2c_port = I2C_BUS_PORT, + .sda_io_num = SDA_PIN, + .scl_io_num = SCL_PIN, + .glitch_ignore_cnt = 7, // 毛刺过滤,一般默认7 + .flags.enable_internal_pullup = true, // 启用内部上拉电阻 + }; + + esp_err_t err=i2c_new_master_bus(&bus_config, &bus_handle); + + if(err!=ESP_OK) + { + ESP_LOGE(TAG, "init _error: %d",err); + } + +} \ No newline at end of file diff --git a/code/hello_world_01/main/iic.h b/code/hello_world_01/main/iic.h new file mode 100644 index 0000000..f659e16 --- /dev/null +++ b/code/hello_world_01/main/iic.h @@ -0,0 +1,19 @@ +#ifndef IIC_H +#define IIC_H +#include +#include +#include "driver/gpio.h" +#include "esp_log.h" +#include "esp_system.h" + +#include "driver/i2c_master.h" + +#define I2C_BUS_PORT I2C_NUM_0 // I2C 端口号 +#define SDA_PIN 13 // SDA GPIO 引脚 +#define SCL_PIN 14 // SCL GPIO 引脚 + +extern i2c_master_bus_handle_t bus_handle; // I2C 总线句柄 + +void iic_init(); + +#endif \ No newline at end of file diff --git a/code/hello_world_01/main/keyboard.c b/code/hello_world_01/main/keyboard.c new file mode 100644 index 0000000..2f9a86d --- /dev/null +++ b/code/hello_world_01/main/keyboard.c @@ -0,0 +1,22 @@ +#include "keyboard.h" + + +static const char *TAG = "KEYBOARD"; + +void keyboard_init() +{ + ESP_LOGI(TAG, "init_GPIO"); + // 配置输出引脚:cs/dc/rst + gpio_config_t io_conf = { + .mode = GPIO_MODE_OUTPUT, + .pin_bit_mask = (1ULL << KEYBOARD_BL_PIN), + .pull_up_en = GPIO_PULLUP_DISABLE, + .pull_down_en = GPIO_PULLDOWN_DISABLE, + .intr_type = GPIO_INTR_DISABLE, + }; + gpio_config(&io_conf); + + gpio_set_level(KEYBOARD_BL_PIN, 1); + + +} \ No newline at end of file diff --git a/code/hello_world_01/main/keyboard.h b/code/hello_world_01/main/keyboard.h new file mode 100644 index 0000000..cfebccc --- /dev/null +++ b/code/hello_world_01/main/keyboard.h @@ -0,0 +1,13 @@ +#ifndef KEYBOARF_H +#define KEYBOARF_H +#include +#include +#include "driver/gpio.h" +#include "esp_log.h" +#include "esp_system.h" + +#define KEYBOARD_BL_PIN 42 + +void keyboard_init(); + +#endif \ No newline at end of file diff --git a/code/hello_world_01/main/power.c b/code/hello_world_01/main/power.c new file mode 100644 index 0000000..0723d17 --- /dev/null +++ b/code/hello_world_01/main/power.c @@ -0,0 +1,395 @@ +#include "power.h" + +static const char *TAG = "POWER"; + +i2c_master_dev_handle_t bq25896_handle; // 设备句柄 + + + + + + + + +// 读取单个寄存器 +esp_err_t bq25896_read_reg(uint8_t reg_addr, uint8_t *value) +{ + if (bq25896_handle == NULL) { + return ESP_ERR_INVALID_STATE; + } + + return i2c_master_transmit_receive( + bq25896_handle, + ®_addr, 1, // 发送寄存器地址 + value, 1, // 接收数据 + 1000 + ); +} + +// 读取多个连续寄存器 +esp_err_t bq25896_read_regs(uint8_t start_addr, uint8_t *buffer, size_t len) +{ + if (bq25896_handle == NULL) { + return ESP_ERR_INVALID_STATE; + } + + return i2c_master_transmit_receive( + bq25896_handle, + &start_addr, 1, // 发送起始地址 + buffer, len, // 接收数据 + 1000 + ); +} + + +void bq25896_read_system_status(void) +{ + uint8_t reg_value; + esp_err_t ret = bq25896_read_reg(0x0B, ®_value); + + if (ret == ESP_OK) { + bq25896_reg0b_t status = *(bq25896_reg0b_t *)®_value; + + // VBUS 状态 + const char* vbus_status[] = { + "No Input", "USB Host SDP", "USB CDP", "USB DCP", + "Adjustable High Voltage DCP", "Unknown", "Non-Standard Adapter", "OTG" + }; + if (status.vbus_stat < 8) { + ESP_LOGI(TAG, "VBUS Status: %s", vbus_status[status.vbus_stat]); + } + + // 充电状态 + const char* chrg_status[] = { + "Not Charging", "Trickle Charge", "Pre-Charge", "Fast Charging" + }; + if (status.chrg_stat < 4) { + ESP_LOGI(TAG, "Charging Status: %s", chrg_status[status.chrg_stat]); + } + + // 其他状态 + ESP_LOGI(TAG, "Power Good: %s", status.pg_stat ? "YES" : "NO"); + ESP_LOGI(TAG, "VSYS Status: %s", status.vsys_stat ? "MIN System Voltage" : "Normal"); + } +} + +// 读取电池电压 +float bq25896_read_battery_voltage(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x0E, ®_value) != ESP_OK) { + return -1.0f; + } + + // 计算电压: VBAT = (VBAT_REG[5:0] * 20mV) + 2.304V + float voltage = ((reg_value & 0x3F) * 0.020f) + 2.304f; + + ESP_LOGI(TAG, "Battery Voltage: %.3fV (Raw: 0x%02X)", voltage, reg_value); + return voltage; +} + +// 读取系统电压 +float bq25896_read_system_voltage(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x0F, ®_value) != ESP_OK) { + return -1.0f; + } + + // 计算电压: VSYS = (VSYS_REG[5:0] * 20mV) + 2.304V + float voltage = ((reg_value & 0x3F) * 0.020f) + 2.304f; + + ESP_LOGI(TAG, "System Voltage: %.3fV (Raw: 0x%02X)", voltage, reg_value); + return voltage; +} + +// 读取 VBUS 电压 +float bq25896_read_vbus_voltage(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x11, ®_value) != ESP_OK) { + return -1.0f; + } + + // 计算电压: VBUS = (VBUS_REG[5:0] * 100mV) + 2.6V + float voltage = ((reg_value & 0x3F) * 0.100f) + 2.600f; + + ESP_LOGI(TAG, "VBUS Voltage: %.2fV (Raw: 0x%02X)", voltage, reg_value); + return voltage; +} + +// 读取充电电流 +float bq25896_read_charge_current(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x12, ®_value) != ESP_OK) { + return -1.0f; + } + + // 计算电流: ICHG = (ICHG_REG[6:0] * 50mA) + float current = (reg_value & 0x7F) * 0.050f; + + ESP_LOGI(TAG, "Charge Current: %.2fA (Raw: 0x%02X)", current, reg_value); + return current; +} + +// 读取输入电流 +float bq25896_read_input_current(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x13, ®_value) != ESP_OK) { + return -1.0f; + } + + // 计算电流: IIN = (IIN_REG[5:0] * 50mA) + float current = (reg_value & 0x3F) * 0.050f; + + ESP_LOGI(TAG, "Input Current: %.2fA (Raw: 0x%02X)", current, reg_value); + return current; +} + +// 读取芯片温度 +float bq25896_read_junction_temp(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x14, ®_value) != ESP_OK) { + return -100.0f; + } + + // 计算温度: TREG = (TREG_REG[6:0] * 0.5°C) - 40°C + float temperature = ((reg_value & 0x7F) * 0.5f) - 40.0f; + + ESP_LOGI(TAG, "Junction Temperature: %.1f°C (Raw: 0x%02X)", temperature, reg_value); + return temperature; +} + +void bq25896_read_fault_status(void) +{ + uint8_t reg_value; + if (bq25896_read_reg(0x0C, ®_value) == ESP_OK) { + bq25896_reg0c_t fault = *(bq25896_reg0c_t *)®_value; + + if (fault.watchdog_fault) ESP_LOGE(TAG, "Watchdog Timer Expired"); + if (fault.boost_fault) ESP_LOGE(TAG, "Boost Over-current/Over-voltage"); + + // 充电故障 + if (fault.chrg_fault == 0) ESP_LOGI(TAG, "Charging: Normal"); + if (fault.chrg_fault == 1) ESP_LOGE(TAG, "Charging: Input Fault"); + if (fault.chrg_fault == 2) ESP_LOGE(TAG, "Charging: Thermal Shutdown"); + if (fault.chrg_fault == 3) ESP_LOGE(TAG, "Charging: Charge Safety Timer Expiration"); + + if (fault.bat_fault) ESP_LOGE(TAG, "Battery Over-voltage"); + + // NTC 故障 + if (fault.ntc_fault == 0) ESP_LOGI(TAG, "NTC: Normal"); + if (fault.ntc_fault == 1) ESP_LOGW(TAG, "NTC: Warm"); + if (fault.ntc_fault == 2) ESP_LOGW(TAG, "NTC: Cool"); + if (fault.ntc_fault == 3) ESP_LOGW(TAG, "NTC: Cold"); + if (fault.ntc_fault == 4) ESP_LOGE(TAG, "NTC: Hot"); + } +} + +// 关闭充电功能(系统仍由电池供电) +esp_err_t bq25896_disable_charging(void) +{ + // 读取寄存器 0x03 + uint8_t reg03_val; + esp_err_t ret = bq25896_read_reg(0x03, ®03_val); + if (ret != ESP_OK) return ret; + + // 设置 CHG_CONFIG 位 (BIT7 = 0) 关闭充电 + reg03_val &= ~(1 << 7); // 清除 BIT7 + + uint8_t write_buf[] = {0x03, reg03_val}; + ret = i2c_master_transmit(bq25896_handle, write_buf, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "Charging disabled"); + + // 同时将充电电流设为0 + uint8_t zero_current[] = {0x04, 0x00}; // 寄存器 0x04,充电电流=0 + i2c_master_transmit(bq25896_handle, zero_current, 2, 1000); + } + return ret; +} + + +// 启用充电功能 +esp_err_t bq25896_enable_charging(void) +{ + uint8_t reg03_val; + esp_err_t ret = bq25896_read_reg(0x03, ®03_val); + if (ret != ESP_OK) return ret; + + // 设置 CHG_CONFIG 位 (BIT7 = 1) 启用充电 + reg03_val |= (1 << 7); // 设置 BIT7 + + uint8_t write_buf[] = {0x03, reg03_val}; + ret = i2c_master_transmit(bq25896_handle, write_buf, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "Charging enabled"); + } + return ret; +} + +// 关闭 OTG 升压输出 +esp_err_t bq25896_disable_otg(void) +{ + uint8_t reg03_val; + esp_err_t ret = bq25896_read_reg(0x03, ®03_val); + if (ret != ESP_OK) return ret; + + // 清除 OTG_CONFIG 位 (BIT5 = 0) + reg03_val &= ~(1 << 5); + + uint8_t write_buf[] = {0x03, reg03_val}; + ret = i2c_master_transmit(bq25896_handle, write_buf, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "OTG disabled"); + + // 可选:将 OTG 电压设为最小值 + uint8_t min_voltage[] = {0x0A, 0x1E}; // 寄存器 0x0A,最小电压 ~4.8V + i2c_master_transmit(bq25896_handle, min_voltage, 2, 1000); + } + return ret; +} + +// 开启 OTG 升压输出 +esp_err_t bq25896_enable_otg(void) +{ + uint8_t reg03_val; + esp_err_t ret = bq25896_read_reg(0x03, ®03_val); + if (ret != ESP_OK) return ret; + + // 设置 OTG_CONFIG 位 (BIT5 = 1) + reg03_val |= (1 << 5); + + uint8_t write_buf[] = {0x03, reg03_val}; + ret = i2c_master_transmit(bq25896_handle, write_buf, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "OTG enabled (5V output)"); + + // 设置 OTG 电压为 5.0V + // 公式: VOTG = (VOTG_REG[5:0] * 64mV) + 4.8V + // 5.0V = 4.8V + 0.2V = 4.8V + (3 * 64mV) + uint8_t otg_voltage[] = {0x0A, 0x23}; // 0x23 = 35 * 64mV ≈ 5.0V + i2c_master_transmit(bq25896_handle, otg_voltage, 2, 1000); + } + return ret; +} + +// 关闭输入电流(最小化 VBUS 消耗) +esp_err_t bq25896_disable_input(void) +{ + // 设置最小输入电流限制 + uint8_t min_input[] = {0x00, 0x00}; // 寄存器 0x00,输入电流=100mA + esp_err_t ret = i2c_master_transmit(bq25896_handle, min_input, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "Input current limited to minimum"); + } + return ret; +} + +// 完全关闭电池供电(进入运输模式) +esp_err_t bq25896_enter_shipping_mode(void) +{ + // 1. 读取当前寄存器 0x03 的值 + uint8_t reg03_val; + esp_err_t ret = bq25896_read_reg(0x03, ®03_val); + if (ret != ESP_OK) return ret; + + // 2. 设置 BATFET_DIS 位 (BIT4 = 1) + reg03_val |= (1 << 4); // 0x10 + + // 3. 写入寄存器 + uint8_t write_buf[] = {0x03, reg03_val}; + ret = i2c_master_transmit(bq25896_handle, write_buf, 2, 1000); + + if (ret == ESP_OK) { + ESP_LOGI(TAG, "Entered shipping mode (BATFET disabled)"); + } + return ret; +} + +void power_sys_off() +{ + + ESP_LOGI(TAG, "Starting system shutdown..."); + + esp_err_t ret = ESP_OK; + + // 1. 先关闭充电 + ret = bq25896_disable_charging(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to disable charging"); + } + + + vTaskDelay(pdMS_TO_TICKS(100)); + + // 2. 关闭 OTG + ret = bq25896_disable_otg(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to disable OTG"); + } + + vTaskDelay(pdMS_TO_TICKS(100)); + + //完全关闭电池供电 + + ret = bq25896_enter_shipping_mode(); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to enter shipping mode"); + } else { + ESP_LOGI(TAG, "SYSTEM COMPLETELY SHUTDOWN"); + } + + +} + +void bq25896_check_immediate(void) +{ + ESP_LOGI(TAG, "=== 立即检查 ==="); + + // 1. 确认 I2C 通信正常 + uint8_t device_id; + if (bq25896_read_reg(0x14, &device_id) != ESP_OK) { + ESP_LOGE(TAG, "❌ I2C 通信失败!"); + return; + } + ESP_LOGI(TAG, "✓ I2C 通信正常,器件ID: 0x%02X", device_id); + + // 2. 读取寄存器 0x03 + uint8_t reg03; + bq25896_read_reg(0x03, ®03); + ESP_LOGI(TAG, "寄存器 0x03 = 0x%02X", reg03); + + // 3. 检查关键位 + ESP_LOGI(TAG, "BIT7(CHG_CONFIG): %s", (reg03 & 0x80) ? "1(启用充电)" : "0(关闭充电)"); + ESP_LOGI(TAG, "BIT5(OTG_CONFIG): %s", (reg03 & 0x20) ? "1(启用OTG)" : "0(关闭OTG)"); + ESP_LOGI(TAG, "BIT4(BATFET_DIS): %s", (reg03 & 0x10) ? "1(断开电池)" : "0(连接电池)"); +} + +void power_init() +{ + ESP_LOGI(TAG, "init"); + + i2c_device_config_t dev_config = { + .dev_addr_length = I2C_ADDR_BIT_LEN_7, // 7位地址模式 + .device_address = BQ25896_ADDR, + .scl_speed_hz = BQ25896_SPEED_HZ, + // .scl_wait_us = 0, // 可选,SCL 等待时间 + }; + esp_err_t err=i2c_master_bus_add_device(bus_handle, &dev_config, &bq25896_handle); + if(err!=ESP_OK) + { + ESP_LOGE(TAG, "bq25896 init err:%d",err); + } + + bq25896_check_immediate(); + +} \ No newline at end of file diff --git a/code/hello_world_01/main/power.h b/code/hello_world_01/main/power.h new file mode 100644 index 0000000..d97dd9d --- /dev/null +++ b/code/hello_world_01/main/power.h @@ -0,0 +1,40 @@ +#ifndef POWER_H +#define POWER_H +#include +#include +#include "driver/gpio.h" +#include "esp_log.h" +#include "esp_system.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "iic.h" + +#define BQ25896_ADDR 0x6B // I2C 设备地址 +#define BQ25896_SPEED_HZ 100000 // I2C 时钟频率(100kHz 标准模式) + +// 读取系统状态 +typedef struct { + uint8_t vbus_stat : 3; // VBUS 状态 + uint8_t chrg_stat : 2; // 充电状态 + uint8_t pg_stat : 1; // 电源正常状态 + uint8_t vsys_stat : 1; // 系统电压状态 + uint8_t reserved : 1; +} bq25896_reg0b_t; + +// 读取故障状态 +typedef struct { + uint8_t watchdog_fault : 1; // 看门狗故障 + uint8_t boost_fault : 1; // 升压故障 + uint8_t chrg_fault : 2; // 充电故障 + uint8_t bat_fault : 1; // 电池故障 + uint8_t ntc_fault : 3; // NTC 故障 +} bq25896_reg0c_t; + + + +void power_init(); +void power_sys_off(); + +#endif \ No newline at end of file diff --git a/code/hello_world_01/sdkconfig b/code/hello_world_01/sdkconfig index 1adbe58..58b2122 100644 --- a/code/hello_world_01/sdkconfig +++ b/code/hello_world_01/sdkconfig @@ -1,6 +1,6 @@ # # Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) 5.5.2 Project Configuration +# Espressif IoT Development Framework (ESP-IDF) 5.5.3 Project Configuration # CONFIG_SOC_ADC_SUPPORTED=y CONFIG_SOC_UART_SUPPORTED=y @@ -370,6 +370,7 @@ CONFIG_SOC_WIFI_HW_TSF=y CONFIG_SOC_WIFI_FTM_SUPPORT=y CONFIG_SOC_WIFI_GCMP_SUPPORT=y CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_TXOP_SUPPORT=y CONFIG_SOC_WIFI_CSI_SUPPORT=y CONFIG_SOC_WIFI_MESH_SUPPORT=y CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y @@ -645,6 +646,93 @@ CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y # If a component configuration is missing, please add it to the main component's requirements # +# +# Driver Configurations +# + +# +# Legacy TWAI Driver Configurations +# +# CONFIG_TWAI_SKIP_LEGACY_CONFLICT_CHECK is not set +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of Legacy TWAI Driver Configurations + +# +# Legacy ADC Driver Configuration +# +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set + +# +# Legacy ADC Calibration Configuration +# +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy I2C Driver Configurations +# +# CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy I2C Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy SDM Driver Configurations + +# +# Legacy Temperature Sensor Driver Configurations +# +# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Temperature Sensor Driver Configurations + +# +# Legacy Touch Sensor Driver Configurations +# +# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_TOUCH_SKIP_LEGACY_CONFLICT_CHECK is not set +# end of Legacy Touch Sensor Driver Configurations +# end of Driver Configurations + # # eFuse Bit Manager # @@ -653,6 +741,15 @@ CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING=y CONFIG_EFUSE_MAX_BLK_LEN=256 # end of eFuse Bit Manager +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set +# CONFIG_ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 is not set +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + # # Common ESP-related # @@ -665,6 +762,77 @@ CONFIG_ESP_ERR_TO_NAME_LOOKUP=y # CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set # end of ESP-Driver:GPIO Configurations +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_CACHE_SAFE is not set +CONFIG_GPTIMER_OBJ_CACHE_SAFE=y +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 is not set +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=y +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +CONFIG_MCPWM_ISR_HANDLER_IN_IRAM=y +# CONFIG_MCPWM_ISR_CACHE_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +CONFIG_MCPWM_OBJ_CACHE_SAFE=y +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +CONFIG_RMT_ENCODER_FUNC_IN_IRAM=y +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=y +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=y +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_TX_ISR_CACHE_SAFE is not set +# CONFIG_RMT_RX_ISR_CACHE_SAFE is not set +CONFIG_RMT_OBJ_CACHE_SAFE=y +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + # # ESP-Driver:SPI Configurations # @@ -674,6 +842,21 @@ CONFIG_SPI_MASTER_ISR_IN_IRAM=y CONFIG_SPI_SLAVE_ISR_IN_IRAM=y # end of ESP-Driver:SPI Configurations +# +# ESP-Driver:Temperature Sensor Configurations +# +# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Temperature Sensor Configurations + +# +# ESP-Driver:TWAI Configurations +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +# CONFIG_TWAI_IO_FUNC_IN_IRAM is not set +# CONFIG_TWAI_ISR_CACHE_SAFE is not set +# CONFIG_TWAI_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:TWAI Configurations + # # ESP-Driver:UART Configurations # @@ -697,6 +880,7 @@ CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=y # # Hardware Settings # +CONFIG_ESP_HW_SUPPORT_FUNC_IN_IRAM=y # # Chip revision @@ -757,6 +941,8 @@ CONFIG_RTC_CLK_SRC_INT_RC=y # CONFIG_RTC_CLK_SRC_EXT_OSC is not set # CONFIG_RTC_CLK_SRC_INT_8MD256 is not set CONFIG_RTC_CLK_CAL_CYCLES=1024 +CONFIG_RTC_CLK_FUNC_IN_IRAM=y +CONFIG_RTC_TIME_FUNC_IN_IRAM=y # end of RTC Clock Config # @@ -1470,6 +1656,30 @@ CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 CONFIG_VFS_INITIALIZE_DEV_NULL=y # end of Virtual file system + +# +# IoT Button +# +CONFIG_BUTTON_PERIOD_TIME_MS=5 +CONFIG_BUTTON_DEBOUNCE_TICKS=2 +CONFIG_BUTTON_SHORT_PRESS_TIME_MS=180 +CONFIG_BUTTON_LONG_PRESS_TIME_MS=1500 +CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=20 +CONFIG_ADC_BUTTON_MAX_CHANNEL=3 +CONFIG_ADC_BUTTON_MAX_BUTTON_PER_CHANNEL=8 +CONFIG_ADC_BUTTON_SAMPLE_TIMES=1 +# end of IoT Button + +# +# CMake Utilities +# +# CONFIG_CU_RELINKER_ENABLE is not set +# CONFIG_CU_DIAGNOSTICS_COLOR_NEVER is not set +CONFIG_CU_DIAGNOSTICS_COLOR_ALWAYS=y +# CONFIG_CU_DIAGNOSTICS_COLOR_AUTO is not set +# CONFIG_CU_GCC_LTO_ENABLE is not set +# CONFIG_CU_GCC_STRING_1BYTE_ALIGN is not set +# end of CMake Utilities # end of Component config # CONFIG_IDF_EXPERIMENTAL_FEATURES is not set @@ -1506,6 +1716,8 @@ CONFIG_STACK_CHECK_NONE=y # CONFIG_STACK_CHECK_STRONG is not set # CONFIG_STACK_CHECK_ALL is not set # CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set CONFIG_ESP32S3_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 CONFIG_ESP32S3_RTC_CLK_SRC_INT_RC=y