Browse Source

update

master
zhaohe 1 year ago
parent
commit
4904c3d84f
  1. 3
      app/src/app_basic_service/basic/state.h
  2. 189
      app/src/app_service/display_ctrl_service/display_mgr.c
  3. 2
      app/src/app_service/display_ctrl_service/display_mgr.h
  4. 283
      app/src/app_service/display_ctrl_service/font.h
  5. 21
      app/src/app_service/ecg_service/ecg_algo.c
  6. 5
      app/src/app_service/ecg_service/ecg_algo.h
  7. 78
      app/src/app_service/ecg_service/ecg_service.c
  8. 2
      app/src/app_service/ecg_service/ecg_service.h
  9. 21
      app/src/one_conduction_main.c
  10. 2
      screen_res/font/data/config/FontsCfg.table
  11. 10
      screen_res/font/data/config/array2ImgFrom.table
  12. 2
      screen_res/font/data/config/arrayCfg.table
  13. 6
      screen_res/font/data/config/arrayCfgFrom.table

3
app/src/app_basic_service/basic/state.h

@ -8,6 +8,7 @@ typedef enum {
kstate_welcomPage,
kstate_mainPage,
kstate_capture,
kstate_capture_end,
kstate_prepare_capture,
kstate_charging,
kstate_test,
@ -23,6 +24,8 @@ static const char* device_state_to_str(device_state_t ds) {
return "kstate_mainPage";
case kstate_capture:
return "kstate_capture";
case kstate_capture_end:
return "kstate_capture_end";
case kstate_prepare_capture:
return "kstate_prepare_capture";
case kstate_charging:

189
app/src/app_service/display_ctrl_service/display_mgr.c

@ -147,34 +147,9 @@ static void page_main_tmr_cb() { page_main_load(); }
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
#define SMAPLE_PAGE_START_X 1
#define SMAPLE_PAGE_START_Y 1
typedef struct {
wave_drawer_t wave_drawer;
int wave_drawser_x;
int wave_drawser_y;
int wave_drawser_hight;
int wave_drawser_width;
int progress_x;
int progress_y;
int progress_width;
int progress_hight;
static bool page_sampling__inErrorPage;
int heartrate_x;
int heartrate_y;
bool in_error_page;
} sample_page_state_t;
sample_page_state_t m_sample_page_state;
static void page_sampling_show_error_info() {
if (m_sample_page_state.in_error_page) {
return;
}
m_sample_page_state.in_error_page = true;
static void page_sampling_show_error() {
ssd1306_basic_clear_gram();
uint8_t x = 0;
uint8_t y = 0;
@ -186,146 +161,43 @@ static void page_sampling_show_error_info() {
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "放上双手", &font24x24_zh_lib);
ssd1306_basic_gram_update();
page_sampling__inErrorPage = true;
}
static void page_sampling_load() {
m_sample_page_state.in_error_page = false;
sample_page_state_t* sps = &m_sample_page_state;
sps->progress_x = SMAPLE_PAGE_START_X + 10;
sps->progress_y = SMAPLE_PAGE_START_Y + 3;
sps->progress_width = 100;
sps->progress_hight = 8;
sps->wave_drawser_x = SMAPLE_PAGE_START_X + 5;
sps->wave_drawser_y = SMAPLE_PAGE_START_Y + sps->progress_hight + 5;
sps->wave_drawser_hight = 45;
sps->wave_drawser_width = 85;
static void page_sampling_show_normal() {
ssd1306_basic_clear_gram();
uint8_t x = 0;
uint8_t y = 0;
uint8_t xchange, ychange;
sps->heartrate_x = sps->wave_drawser_x + sps->wave_drawser_width + 1;
sps->heartrate_y = sps->wave_drawser_y + 5;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 4);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
int progress = 0 / SAMPLE_MIN_TIME_S * 25;
uint8_t xchange, ychange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "采样中", &font24x24_zh_lib);
ssd1306_basic_clear_gram();
/**
* @brief
* =================
* | |
* | wave |
* | |
*/
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
// ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "x", &font8x8_xo_lib);
wave_drawer_init(&sps->wave_drawer, sps->wave_drawser_x, sps->wave_drawser_y, sps->wave_drawser_width, sps->wave_drawser_hight);
// wave_drawer_draw_border(&sps->wave_drawer);
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, "<>", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, "-- ", &font_asicc16x8_lib);
ssd1306_basic_gram_update();
page_sampling__inErrorPage = false;
}
void samplePage_update_state(int progress_s, int wave_y, bool leadoff, int heartrate, bool updateHeart, bool update_screen) { //
m_sample_page_state.in_error_page = false;
sample_page_state_t* sps = &m_sample_page_state;
uint8_t xchange, ychange;
static bool heart_logo_state = false;
int progress = progress_s / SAMPLE_MIN_TIME_S * 25;
ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress);
if (update_screen && updateHeart) {
if (heart_logo_state) {
if (!leadoff) {
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, "<>", &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x + 2 + 4, sps->heartrate_y, &xchange, &ychange, "E ", &font_asicc16x8_lib);
}
} else {
ssd1306_basic_draw_str(sps->heartrate_x + 2, sps->heartrate_y, &xchange, &ychange, " ", &font_asicc16x8_lib);
}
heart_logo_state = !heart_logo_state;
}
//
if (heartrate <= 0) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, "-- ", &font_asicc16x8_lib);
} else {
if (heartrate >= 100) {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, fmt("%d", heartrate), &font_asicc16x8_lib);
} else {
ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y + 20, &xchange, &ychange, " ", &font_asicc16x8_lib);
ssd1306_basic_draw_str(sps->heartrate_x + 4, sps->heartrate_y + 20, &xchange, &ychange, fmt("%d", heartrate), &font_asicc16x8_lib);
}
}
wave_drawer_draw_next_point(&sps->wave_drawer, wave_y);
if (update_screen) ssd1306_basic_gram_update();
}
static void page_sampling_load() { page_sampling_show_normal(); }
static void page_sampling_unload() {}
static uint32_t page_sampling_get_scheduler_period() { return 20; }
static uint32_t page_sampling_get_scheduler_period() { return 300; }
static void page_sampling_tmr_cb() {
static int count = 0;
count++;
int capturetime = ecg_service_has_captured_time();
int wave_y = (int)ecg_service_get_display_val();
int heartrate = (int)ecg_service_get_heart_rate();
bool leadoff = ecg_leadoff_detect();
if (leadoff) {
wave_y = 50;
heartrate = 0;
}
if (leadoff) {
if (!m_sample_page_state.in_error_page) {
beep_set_effect(LEAD_OFF_EFFECT);
page_sampling_show_error_info();
if (page_sampling__inErrorPage) {
if (!ecg_leadoff_detect()) {
page_sampling_show_normal();
}
} else {
if (m_sample_page_state.in_error_page) {
beep_set_effect(LEAD_OFF_RECOVER_EFFECT);
page_sampling_load();
if (ecg_leadoff_detect()) {
page_sampling_show_error();
}
samplePage_update_state(capturetime / 1000, wave_y, leadoff, heartrate, count % 15 == 0, count % 5 == 0);
}
}
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
static void page_sampling_error_load() {
/**
* @brief
* 30[X]
*/
ssd1306_basic_clear_gram();
uint8_t x;
uint8_t y;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 3 + font12x24_asiic_lib.widthPixel * 2);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
uint8_t xchange, ychange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "不足", &font24x24_zh_lib);
x = x + xchange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "30", &font12x24_asiic_lib);
x = x + xchange;
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "", &font24x24_zh_lib);
x = x + xchange;
ssd1306_basic_gram_update();
}
static void page_sampling_error_unload() {}
static uint32_t page_sampling_error_get_scheduler_period() { return 300; }
static void page_sampling_error_tmr_cb() {}
/***********************************************************************************************************************
* charging_page *
***********************************************************************************************************************/
@ -397,6 +269,25 @@ static void page_sample_prepare_tmr_cb() {
}
#endif
static void page_sampling_end_load() {
ssd1306_basic_clear_gram();
uint8_t x = 0;
uint8_t y = 0;
uint8_t xchange, ychange;
x = compute_x_pos_by_center(SCREEN_CENTER_X, font24x24_zh_lib.widthPixel * 4);
y = compute_y_pos_by_center(SCREEN_CENTER_Y, font24x24_zh_lib.heightPixel);
ssd1306_basic_draw_str(x, y, &xchange, &ychange, "采样结束", &font24x24_zh_lib);
ssd1306_basic_gram_update();
page_sampling__inErrorPage = false;
}
static void page_sampling_end_unload() {}
static uint32_t page_sampling_end_get_scheduler_period() { return 1000; }
static void page_sampling_end_tmr_cb() {}
/***********************************************************************************************************************
* EXTERN *
***********************************************************************************************************************/
@ -419,9 +310,9 @@ void dsp_mgr_init(void) {
_PAGE_REG(page_welcome);
_PAGE_REG(page_main);
_PAGE_REG(page_sampling);
_PAGE_REG(page_sampling_error);
_PAGE_REG(page_charging_page);
_PAGE_REG(page_sample_prepare);
_PAGE_REG(page_sampling_end);
ZERROR_CHECK(app_timer_create(&m_dsp_mgr_schedule_tmr, APP_TIMER_MODE_REPEATED, dsp_mgr_schedule_tmr_cb));
}

2
app/src/app_service/display_ctrl_service/display_mgr.h

@ -19,7 +19,7 @@ typedef enum {
kpage_main,
kpage_sample_prepare,
kpage_sampling,
kpage_sampling_error,
kpage_sampling_end,
kpage_charging_page,
} page_t;

283
app/src/app_service/display_ctrl_service/font.h

@ -102,142 +102,159 @@ static FontLibrary_t font12x24_asiic_lib = {
const uint8_t
font24x24_zh_code[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x82, 0xFF, 0x21, 0x21, 0x11, 0xF9, 0x01, 0x60, 0x1C,
0x63, 0x82, 0x62, 0x1F, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x0C, 0x03, 0x10, 0x10, 0x70,
0x4F, 0x40, 0x20, 0x10, 0x08, 0x06, 0x01, 0x06, 0x08, 0x70, 0x60, 0x40, 0x40, 0x00, 0x00, // [0], "",Size:72, W24×H24, addr:0x0000
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x04, 0x04,
0x04, 0x04, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // [1], "",Size:72, W24×H24, addr:0x0048
0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x10, 0x10, 0x90, 0x78, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x78, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x86, 0x68, 0x38, 0xE7, 0x80, 0x00, 0x07, 0x88,
0x70, 0xD8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x03, 0x00, 0x40, 0x20,
0x10, 0x0B, 0x04, 0x02, 0x01, 0x00, 0x00, 0x03, 0x0C, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, // [2], "",Size:72, W24×H24, addr:0x0090
0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0xF0, 0x08, 0x08, 0x08, 0x04, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xFF, 0x21,
0x21, 0x21, 0x11, 0x11, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x10, 0x20, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [3], "",Size:72, W24×H24, addr:0x00D8
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x1C, 0x00, 0x00, 0x08, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0xD0, 0x38,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0C, 0x02, 0xF9, 0x07, 0x00, 0x20, 0x20, 0x22, 0x27, 0xE2, 0x62,
0xFE, 0x72, 0x92, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x10, 0x08,
0x04, 0x02, 0x01, 0x00, 0x20, 0x7F, 0x00, 0x01, 0x02, 0x0C, 0x18, 0x10, 0x10, 0x00, 0x00, // [4], "",Size:72, W24×H24, addr:0x0120
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0x08, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0xFC, 0x40, 0x40, 0x40, 0x40,
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC2, 0x41, 0x21, 0xEF, 0x11, 0x11, 0x4D, 0x4D, 0xC4, 0x44, 0x44,
0x47, 0x24, 0xF4, 0x2C, 0x24, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x00, 0x10, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [5], "",Size:72, W24×H24, addr:0x0168
0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0xA0, 0xFC, 0xA0, 0xA0, 0xA0, 0x00, 0x80, 0x60, 0x50, 0x4C, 0x40, 0xE0, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0xFD, 0x95, 0x94, 0x53, 0x92, 0xFA, 0x02, 0x02, 0x13, 0x12,
0x12, 0xFE, 0x93, 0x92, 0x92, 0xFF, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x02, 0x12, 0x22,
0x7F, 0x00, 0x00, 0x00, 0x11, 0x21, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [6], "",Size:72, W24×H24, addr:0x01B0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x04,
0x04, 0x04, 0x04, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x10, 0x1F, 0x10,
0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x10, 0x00, 0x00, // [7], "",Size:72, W24×H24, addr:0x01F8
0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x70, 0x30, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x03, 0xFC, 0x00,
0x00, 0x08, 0x08, 0x10, 0x20, 0x60, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [8], "",Size:72, W24×H24, addr:0x0240
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0xC8, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7F, 0x02, 0x02, 0x02, 0xFE, 0x21, 0x21,
0x21, 0x21, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x08, 0x06, 0x01, 0x01, 0x01,
0x02, 0x02, 0x07, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // [9], "",Size:72, W24×H24, addr:0x0288
0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x10, 0xF0, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFC, 0x00, 0x80,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x42, 0x32, 0x0E, 0xFF, 0x09, 0x31, 0x61, 0x18, 0x06, 0x01,
0x00, 0x10, 0x1F, 0x80, 0x70, 0x20, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [10], "",Size:72, W24×H24, addr:0x02D0
0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x20, 0xFC, 0x20, 0x20, 0x20, 0xE0, 0x38, 0x24, 0x10, 0x10, 0x10,
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x30, 0x0C, 0x03,
0x0A, 0x12, 0xB2, 0x82, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x3F, 0x21, 0x21,
0x21, 0x3F, 0x21, 0x31, 0x2F, 0x21, 0x21, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, // [11], "",Size:72, W24×H24, addr:0x0318
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x90, 0x10, 0x10, 0x10, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x08, 0x08,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x84, 0x44, 0x34, 0x1C, 0x0C,
0xFF, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x02, 0x01, 0x00,
0x00, 0x08, 0x10, 0x20, 0x60, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [12], "",Size:72, W24×H24, addr:0x0360
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF8, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04,
0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3F, 0x20, 0x00, 0x00, // [13], "",Size:72, W24×H24, addr:0x03A8
0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x1C, 0x00, 0x00, 0x80, 0x10, 0x10, 0x10, 0x10, 0x10, 0x88, 0x68, 0x18, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x86, 0xC5, 0xB4, 0x8A, 0x46, 0x63, 0x50, 0x50, 0x48, 0x44, 0x42,
0xC1, 0x40, 0x21, 0x22, 0x24, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x19, 0x08, 0x08, 0x08, 0x04, 0x24,
0x24, 0x20, 0x20, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, // [14], "",Size:72, W24×H24, addr:0x03F0
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x00, 0x00, 0x40, 0x40, 0x40, 0xC0, 0x70, 0x4C, 0x40, 0x20, 0x20, 0x20,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0xF4, 0x0E, 0x00, 0x80, 0x8C, 0x8B, 0x88, 0x88,
0xFF, 0x48, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x06, 0x09, 0x08,
0x08, 0x10, 0x10, 0x10, 0x10, 0x2F, 0x20, 0x20, 0x60, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, // [15], "",Size:72, W24×H24, addr:0x0438
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x80, 0x80, 0x40, 0x40, 0xC0, 0x42, 0x44, 0x58, 0x20, 0xE0, 0x20,
0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x41, 0x41, 0x21, 0xFF, 0x11, 0x88, 0x88, 0x88, 0x88, 0xC8, 0x7B,
0x58, 0x44, 0x47, 0xC4, 0x44, 0x44, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x7F, 0x80, 0x80,
0x40, 0x40, 0x22, 0x25, 0x14, 0x08, 0x0C, 0x0B, 0x10, 0x10, 0x20, 0x60, 0x00, 0x00, 0x00, // [16], "",Size:72, W24×H24, addr:0x0480
0x00, 0x00, 0x00, 0xE0, 0x40, 0x20, 0xC0, 0x00, 0xFC, 0x00, 0xC0, 0x38, 0x00, 0xF0, 0x20, 0x20, 0x10, 0x10, 0x08,
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02, 0xC2, 0x23, 0x1E, 0xFF, 0x0B, 0x12, 0x22, 0x00, 0xFB,
0x04, 0x04, 0x04, 0x04, 0xFC, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1F, 0x09, 0x08, 0x08, 0x08, 0x0F,
0x48, 0x28, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // [17], "",Size:72, W24×H24, addr:0x04C8
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x10, 0x10, 0x10, 0xD0, 0x30, 0x08, 0x08, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x7F, 0x08, 0x08, 0x08, 0x08,
0xFB, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x06, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [18], "",Size:72, W24×H24, addr:0x0510
0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x11, 0x11, 0x11, 0x09, 0x88, 0xFF, 0x88, 0x88,
0x88, 0x88, 0x88, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01,
0x01, 0x00, 0x3F, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x6C, 0x30, 0x00, 0x00, // [19], "",Size:72, W24×H24, addr:0x0558
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x48, 0x48, 0x28, 0xA8, 0xA8, 0xA8, 0xA8, 0xC8, 0xF8, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0xF7, 0x95, 0x95, 0x95, 0xB4, 0x54, 0x54,
0x54, 0x94, 0xF4, 0x1A, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x53, 0x52,
0x52, 0x4A, 0x7F, 0x4A, 0x4A, 0x49, 0x49, 0x49, 0x48, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // [20], "",Size:72, W24×H24, addr:0x05A0
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0xFE, 0x44, 0xA0, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x14, 0xE2, 0x21, 0xA0, 0xAF, 0x90, 0x90,
0x11, 0xF1, 0x12, 0x04, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x4F,
0x25, 0x24, 0x24, 0x24, 0x24, 0x25, 0x27, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, // [21], "",Size:72, W24×H24, addr:0x05E8
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90, 0xD0, 0xB8, 0x48, 0x48, 0x48, 0x44, 0x44, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x84, 0x44, 0x24, 0x1C, 0xEE, 0xA3, 0xA2, 0x92, 0x92,
0x92, 0x92, 0xF2, 0x12, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x24, 0x24, 0x24, 0x22, 0x22, 0x22, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [22], "",Size:72, W24×H24, addr:0x0630
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x04, 0x00, 0x80, 0x80,
0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x87, 0xE4, 0x94, 0x4C, 0x43, 0x01, 0x01, 0x91, 0x11, 0x91,
0x9F, 0x91, 0x91, 0x90, 0xC8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
0x04, 0x04, 0x3F, 0x21, 0x20, 0x10, 0x10, 0x10, 0x1C, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, // [23], "",Size:72, W24×H24, addr:0x0678
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF0, 0x90, 0x88, 0x48, 0xF8, 0x48, 0x48, 0x48, 0x88, 0xF8, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x2F, 0x24, 0xA4, 0x64, 0xFF, 0x24, 0x62,
0xA2, 0x12, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x02, 0x01,
0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, // [24], "",Size:72, W24×H24, addr:0x06C0
0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0xF0, 0x08, 0x08, 0x08, 0x04, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xFF, 0x21,
0x21, 0x21, 0x11, 0x11, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x10, 0x20, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [25], "",Size:72, W24×H24, addr:0x0708
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x20, 0x20, 0x20, 0xE0, 0x10, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x42, 0x31, 0x0D, 0xFF, 0x09, 0x11, 0x01, 0x80, 0x7F, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x20, 0x3F, 0x60,
0x10, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x3E, 0x00, 0x00, // [26], "",Size:72, W24×H24, addr:0x0750
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x90, 0x10, 0x10, 0x10, 0xD0, 0x88, 0x08, 0x08, 0x04, 0xC4, 0x64, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x10, 0x11, 0x91, 0xD0, 0x30, 0xFE, 0x11, 0x70,
0x96, 0x11, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x03, 0x01,
0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, // [27], "",Size:72, W24×H24, addr:0x0798
0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0xF0, 0x4C, 0x40, 0x40, 0x40, 0xEC, 0x38, 0x20, 0xA0, 0xA0, 0x20, 0x20,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x20, 0x1F, 0x25, 0x25, 0x25, 0xF5, 0x1F, 0x95,
0x95, 0x94, 0x94, 0x90, 0x90, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x11, 0x11, 0x09, 0x09, 0x05,
0x03, 0x03, 0x7F, 0x01, 0x02, 0x02, 0x04, 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // [28], "",Size:72, W24×H24, addr:0x07E0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFC, 0x00, 0x84, 0x88, 0x90, 0x80,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x21, 0x21, 0x21, 0xF1, 0x11, 0x01, 0x0F,
0xF1, 0x80, 0x40, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x04, 0x08,
0x18, 0x07, 0x08, 0x04, 0x02, 0x03, 0x03, 0x04, 0x18, 0x30, 0x20, 0x7C, 0x00, 0x00, 0x00, // [29], "",Size:72, W24×H24, addr:0x0828
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xFF, 0x80, 0x80, 0x80, 0x44, 0x02, 0xC2,
0x3F, 0x02, 0x02, 0x02, 0x02, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x40,
0x20, 0x10, 0x08, 0x06, 0x01, 0x10, 0x10, 0x20, 0x60, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, // [30], "",Size:72, W24×H24, addr:0x0870
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x44, 0x58, 0x40, 0x40, 0x40, 0x40, 0x40, 0xA0,
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x20, 0x20, 0x20, 0xE4, 0x24, 0x24, 0x22, 0xE2,
0x22, 0x22, 0x20, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x06,
0x01, 0x00, 0x00, 0x00, 0x3F, 0x20, 0x40, 0x40, 0x40, 0x40, 0x24, 0x38, 0x00, 0x00, 0x00, // [31], "",Size:72, W24×H24, addr:0x08B8
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x30, 0x1E, 0x00, 0x10, 0xE0, 0x20, 0x20, 0x20, 0xF0, 0x10, 0x10, 0x08, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x06, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x08, 0x08, 0x08,
0x08, 0x7F, 0x84, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
0x10, 0x1F, 0x08, 0x04, 0x0A, 0x08, 0x30, 0x03, 0x04, 0x18, 0x30, 0x20, 0x7F, 0x00, 0x00, // [32], "",Size:72, W24×H24, addr:0x0900
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x1C,0x38,0x30,0x00,0x00,0x00,0x00,0xE0,0xFC,0x1C,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x82,0xFF,0xFF,0x21,0x31,0xF9,0xF9,0x61,0x7C,0x7F,0xE3,
0xE2,0x7F,0x1F,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x60,0x70,0x1C,0x0F,0x13,0x10,0x70,0x7F,0x4F,0x60,
0x30,0x18,0x0E,0x07,0x07,0x0E,0x78,0x70,0x60,0x40,0x40,0x00, // [0], "",Size:72, W24×H24, addr:0x0000
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x04,0x04,0x04,
0x04,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,
0x1F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00, // [1], "",Size:72, W24×H24, addr:0x0048
0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x30,0x10,0x90,0xF8,0x78,0x10,0x10,0x10,0x10,0x90,0xF8,0x78,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x87,0xEE,0x78,0xFF,0xE7,0x80,0x07,0x8F,0xF8,0xF8,
0xDF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x0C,0x07,0x03,0x40,0x60,0x30,0x1B,0x0F,
0x06,0x03,0x01,0x00,0x03,0x0F,0x1C,0x18,0x10,0x10,0x00,0x00, // [2], "",Size:72, W24×H24, addr:0x0090
0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x30,0x10,0x10,0xF0,0xF8,0x08,0x08,0x0C,0x06,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x62,0x22,0x22,0x22,0x22,0x22,0x22,0xFF,0xFF,0x21,0x21,
0x31,0x11,0x11,0x11,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x60,
0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [3], "",Size:72, W24×H24, addr:0x00D8
0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xFC,0x1C,0x00,0x08,0xF8,0xF0,0x10,0x10,0x10,0x10,0xD0,0xF8,0x38,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1C,0x0E,0xFB,0xFF,0x07,0x20,0x20,0x22,0x27,0xE7,0xE2,0xFE,0xFE,
0xF2,0x93,0x11,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x10,0x18,0x0C,0x06,0x03,
0x01,0x20,0x7F,0x7F,0x01,0x03,0x0E,0x1C,0x18,0x10,0x10,0x00, // [4], "",Size:72, W24×H24, addr:0x0120
0x00,0x00,0x00,0x00,0x00,0x00,0xF4,0xFC,0x08,0x80,0x80,0x80,0x80,0xC0,0xFC,0xFC,0x40,0x40,0x40,0x40,
0x40,0x00,0x00,0x00,0x00,0x00,0x80,0xC2,0xC3,0x61,0xEF,0xFF,0x11,0x5D,0x4D,0xCD,0xC4,0x44,0x47,0x67,
0xF4,0xFC,0x2C,0x26,0x22,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x7F,0x7F,0x00,0x00,0x00,0x00,
0x03,0x03,0x10,0x30,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00, // [5], "",Size:72, W24×H24, addr:0x0168
0x00,0x00,0x00,0x20,0x20,0x20,0xA0,0xFC,0xFC,0xA0,0xA0,0xA0,0x80,0xE0,0x70,0x5C,0x4C,0xE0,0xE0,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFD,0xFD,0x95,0xD7,0xD3,0xFA,0xFA,0x02,0x13,0x13,0x12,0xFE,
0xFF,0x93,0x92,0xFF,0xFF,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x02,0x12,0x32,0x7F,0x7F,0x00,
0x00,0x11,0x31,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [6], "",Size:72, W24×H24, addr:0x01B0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFA,0xFE,0x04,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x00,0x00,0xFB,0xFF,0x04,0x04,
0x04,0x04,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x30,0x1F,0x1F,0x10,0x10,0x10,
0x1F,0x1F,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x10,0x00, // [7], "",Size:72, W24×H24, addr:0x01F8
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xF0,0x70,0x38,0x08,0x08,0x08,0x08,
0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x60,0x30,0x18,0x0C,0x07,0xFF,0xFC,0x00,0x08,
0x08,0x18,0x30,0x60,0x60,0xC0,0xC0,0x00,0x00,0x00,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [8], "",Size:72, W24×H24, addr:0x0240
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0x10,0x10,0x10,0x18,0x08,0x08,0xC8,0xFC,0x3C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x02,0x02,0xFE,0xFF,0x21,0x21,0x21,
0x31,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x70,0x38,0x0E,0x07,0x01,0x01,0x03,0x02,0x07,
0x07,0x0C,0x18,0x10,0x30,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // [9], "",Size:72, W24×H24, addr:0x0288
0x00,0x00,0x00,0x20,0x20,0x20,0x30,0xF0,0xF8,0x0C,0x04,0x04,0x00,0x00,0x00,0x04,0xFC,0xFC,0x80,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xC2,0x72,0x3E,0xFF,0xFF,0x39,0x71,0x79,0x1E,0x07,0x01,0x10,
0x1F,0x9F,0xF0,0x70,0x21,0x07,0x06,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x7F,0x7F,0x40,0x40,0x60,
0x30,0x18,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // [10], "",Size:72, W24×H24, addr:0x02D0
0x00,0x00,0x00,0x00,0x40,0x40,0x60,0x20,0x20,0xFC,0xFC,0x20,0x20,0xE0,0xF8,0x3C,0x34,0x10,0x10,0x10,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0xFF,0xFE,0x00,0x7F,0x7F,0x30,0x3C,0x0F,0x0B,0x1A,
0xB2,0xB2,0x82,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x3F,0x21,0x21,0x3F,0x3F,
0x31,0x3F,0x2F,0x21,0x3F,0x3F,0x20,0x20,0x30,0x10,0x00,0x00, // [11], "",Size:72, W24×H24, addr:0x0318
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x90,0x90,0x10,0x10,0x18,0x08,0xF8,0xF8,0x08,0x08,0x08,0x08,
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x87,0x84,0xC4,0x74,0x3C,0x1C,0xFF,0xFF,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x08,0x0C,0x04,0x06,0x03,0x01,0x00,0x08,0x18,
0x30,0x60,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [12], "",Size:72, W24×H24, addr:0x0360
0x00,0x00,0x00,0x00,0x00,0xA0,0xB0,0x30,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0xF8,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF6,0xFF,0x09,0x08,0x08,0x08,0x08,0x08,0x0C,0x04,0x07,
0x07,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x38,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x3F,0x20,0x00, // [13], "",Size:72, W24×H24, addr:0x03A8
0x00,0x00,0x00,0x00,0x80,0xE0,0x7C,0x1C,0x00,0x80,0x90,0x10,0x10,0x10,0x10,0x98,0xE8,0x78,0x18,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x86,0xC7,0xF5,0xBE,0xCE,0x67,0x73,0x50,0x58,0x4C,0x46,0xC3,0xC1,
0x61,0x23,0x26,0x24,0x0C,0x08,0x00,0x00,0x00,0x00,0x10,0x19,0x19,0x08,0x08,0x0C,0x24,0x24,0x24,0x20,
0x20,0x20,0x3F,0x3F,0x20,0x20,0x20,0x20,0x30,0x10,0x00,0x00, // [14], "",Size:72, W24×H24, addr:0x03F0
0x00,0x00,0x00,0x00,0x00,0x10,0x70,0x60,0x00,0x40,0x40,0x40,0xC0,0xF0,0x7C,0x4C,0x60,0x20,0x20,0x20,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x04,0xF4,0xFE,0x0E,0x80,0x8C,0x8F,0x8B,0x88,0xFF,0xFF,
0x48,0x4C,0x44,0x44,0x40,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x06,0x0F,0x09,0x08,0x18,0x10,
0x10,0x10,0x3F,0x2F,0x20,0x60,0x60,0x60,0x20,0x20,0x20,0x00, // [15], "",Size:72, W24×H24, addr:0x0438
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x80,0x80,0xC0,0x40,0xC0,0xC2,0x46,0x5C,0x78,0xE0,0xE0,0x20,
0x20,0x20,0x00,0x00,0x00,0x00,0x81,0xC1,0x41,0x61,0xFF,0xFF,0x99,0x88,0x88,0x88,0xC8,0xFB,0x7B,0x5C,
0x47,0xC7,0xC4,0x44,0x44,0x44,0x40,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x7F,0xFF,0x80,0xC0,0x40,0x62,
0x27,0x35,0x1C,0x0C,0x0F,0x1B,0x10,0x30,0x60,0x60,0x00,0x00, // [16], "",Size:72, W24×H24, addr:0x0480
0x00,0x00,0x00,0xE0,0xE0,0x60,0xE0,0xC0,0xFC,0xFC,0xC0,0xF8,0x38,0xF0,0xF0,0x20,0x30,0x10,0x18,0x0C,
0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xC2,0xE3,0x3F,0xFF,0xFF,0x1B,0x32,0x22,0xFB,0xFF,0x04,
0x04,0x04,0xFC,0xFE,0x02,0x02,0x00,0x00,0x00,0x00,0x08,0x1F,0x1F,0x09,0x08,0x08,0x0F,0x4F,0x68,0x38,
0x1E,0x07,0x01,0x00,0x00,0x3C,0x3F,0x03,0x00,0x00,0x00,0x00, // [17], "",Size:72, W24×H24, addr:0x04C8
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xF0,0xF0,0x10,0x10,0x10,0xD0,0xF0,0x38,0x08,0x08,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0xFF,0x7F,0x08,0x08,0x08,0xFB,0xFF,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x40,0x60,0x30,0x18,0x0E,0x07,0x01,0x00,0x00,
0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [18], "",Size:72, W24×H24, addr:0x0510
0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x82,0xFE,0xFC,0x80,0x80,0x80,0x80,0xC0,0xC0,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x11,0x11,0x19,0x89,0xFF,0xFF,0x88,0x88,0x88,
0x88,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x01,0x01,0x01,0x01,0x3F,
0x7F,0x60,0x40,0x40,0x40,0x40,0x40,0x40,0x6C,0x7C,0x30,0x00, // [19], "",Size:72, W24×H24, addr:0x0558
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x48,0x68,0xA8,0xA8,0xA8,0xA8,0xE8,0xF8,0xFC,0x0C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0xF7,0xF7,0x95,0x95,0xB5,0xF4,0x54,0x54,0xD4,
0xF4,0xFE,0x1A,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x53,0x53,0x52,0x5A,0x7F,
0x7F,0x4A,0x4B,0x49,0x49,0x49,0x68,0x20,0x20,0x00,0x00,0x00, // [20], "",Size:72, W24×H24, addr:0x05A0
0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0xC0,0xFE,0xFE,0xE4,0xA0,0x20,0x20,0x20,0x20,0x20,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x18,0x08,0x1C,0xF6,0xE3,0xA1,0xAF,0xBF,0x90,0x91,0xF1,
0xF3,0x16,0x0C,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x4F,0x6F,0x25,0x24,
0x24,0x24,0x25,0x27,0x27,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // [21], "",Size:72, W24×H24, addr:0x05E8
0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0xD0,0xF8,0xF8,0x48,0x48,0x4C,0x44,0x44,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x84,0xC4,0x64,0x3C,0xFE,0xEF,0xA3,0xB2,0x92,0x92,0x92,
0xF2,0xF2,0x12,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x02,0x02,0x03,0x01,0x00,0x00,0x00,0x7F,0x7F,0x24,
0x24,0x26,0x22,0x22,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00, // [22], "",Size:72, W24×H24, addr:0x0630
0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x3C,0x1C,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x04,0x80,0x80,0x80,
0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x84,0x87,0xE7,0xF4,0xDC,0x4F,0x43,0x01,0x91,0x91,0x91,0x9F,0x9F,
0x91,0x91,0xD8,0xC8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x08,0x08,0x0C,0x04,0x04,0x04,0x3F,
0x3F,0x21,0x30,0x10,0x10,0x1C,0x1F,0x13,0x00,0x00,0x00,0x00, // [23], "",Size:72, W24×H24, addr:0x0678
0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xFC,0xF0,0x98,0xC8,0xF8,0xF8,0x48,0x48,0xC8,0xF8,0xFC,0x0C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x2F,0x2F,0xA4,0xE4,0xFF,0xFF,0x66,0xE2,0xB2,
0x13,0x13,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x0C,0x04,0x06,0x03,0x01,0x00,0x7F,
0x7F,0x00,0x00,0x01,0x03,0x0E,0x0C,0x08,0x08,0x08,0x08,0x00, // [24], "",Size:72, W24×H24, addr:0x06C0
0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x30,0x10,0x10,0xF0,0xF8,0x08,0x08,0x0C,0x06,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x62,0x22,0x22,0x22,0x22,0x22,0x22,0xFF,0xFF,0x21,0x21,
0x31,0x11,0x11,0x11,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x30,0x60,
0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [25], "",Size:72, W24×H24, addr:0x0708
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x00,0x00,0x00,0xF0,0xF0,0x20,0x20,0xE0,0xF0,0x10,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC2,0x73,0x3D,0xFF,0xFF,0x19,0x11,0x81,0xFF,0x7F,0x00,0x00,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x01,0x00,0x20,0x3F,0x7F,0x70,0x1C,0x0F,
0x03,0x00,0x00,0x00,0x1F,0x3F,0x30,0x20,0x20,0x3E,0x3E,0x00, // [26], "",Size:72, W24×H24, addr:0x0750
0x00,0x00,0x00,0x00,0x00,0x00,0x50,0xD0,0x90,0x10,0x10,0xD0,0xD8,0x88,0x08,0x0C,0xC4,0xE4,0x64,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x30,0x11,0x91,0xD1,0xF0,0xFE,0xFF,0x71,0xF6,0x97,
0x11,0x10,0x18,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x18,0x0C,0x06,0x03,0x03,0x01,0x00,0x7F,
0x7F,0x00,0x00,0x01,0x03,0x0E,0x0C,0x08,0x08,0x08,0x08,0x00, // [27], "",Size:72, W24×H24, addr:0x0798
0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0xF0,0xFC,0x4C,0x40,0x40,0xEC,0xFC,0x38,0xA0,0xA0,0xA0,0x20,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x20,0x3F,0x3F,0x25,0x25,0xF5,0xFF,0x9F,0x95,0x95,
0x94,0x94,0x90,0x90,0x80,0x80,0x00,0x00,0x00,0x00,0x20,0x21,0x31,0x11,0x19,0x09,0x0D,0x07,0x03,0x7F,
0x7F,0x03,0x02,0x06,0x0C,0x18,0x18,0x10,0x10,0x10,0x10,0x00, // [28], "",Size:72, W24×H24, addr:0x07E0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x84,0x8C,0x98,0x90,0x80,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x21,0x21,0xF1,0xF1,0x11,0x0F,0xFF,0xF1,
0xC0,0x70,0x38,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,0x04,0x0C,0x18,0x1F,0x0F,
0x0C,0x06,0x03,0x03,0x07,0x1C,0x38,0x30,0x7C,0x7C,0x00,0x00, // [29], "",Size:72, W24×H24, addr:0x0828
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0xFC,0xFC,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0xFF,0xFF,0x80,0x80,0xC4,0x46,0xC2,0xFF,0x3F,
0x02,0x02,0x02,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x03,0x01,0x41,0x60,0x30,0x18,
0x0E,0x07,0x11,0x10,0x30,0x60,0x7F,0x1F,0x00,0x00,0x00,0x00, // [30], "",Size:72, W24×H24, addr:0x0870
0x00,0x00,0x00,0x00,0x00,0xA0,0xE0,0x40,0x40,0x40,0x40,0x44,0x5C,0x58,0x40,0x40,0x40,0x40,0xE0,0xE0,
0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x21,0x21,0x20,0x20,0xE4,0xE4,0x24,0x26,0xE2,0xE2,0x22,
0x22,0x31,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x40,0x60,0x30,0x18,0x0E,0x07,0x01,0x00,
0x00,0x3F,0x3F,0x60,0x40,0x40,0x40,0x64,0x3C,0x38,0x00,0x00, // [31], "",Size:72, W24×H24, addr:0x08B8
0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x3E,0x1E,0x10,0xF0,0xE0,0x20,0x20,0xF0,0xF0,0x10,0x18,0x0C,0x0C,
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0E,0x07,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x08,0x08,0x08,0x7F,
0xFF,0x84,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x00,0x00,0x10,0x1F,0x1F,
0x0C,0x0E,0x0A,0x38,0x33,0x07,0x1C,0x38,0x30,0x7F,0x7F,0x00, // [32], "",Size:72, W24×H24, addr:0x0900
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xF8,0x00,0x00,0x08,0x18,0x70,0x60,0x80,0xE0,0xFC,0x9C,0x88,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xC1,0xE1,0x39,0xFF,0xFF,0x0F,0x99,0x99,0x89,0x89,0x89,0x89,0xFF,
0xFF,0xC8,0x4C,0x44,0x40,0x40,0x40,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [33], "",Size:72, W24×H24, addr:0x0948
0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x3C,0x1C,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0x04,0x80,0x80,0x80,
0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x84,0x87,0xE7,0xF4,0xDC,0x4F,0x43,0x01,0x91,0x91,0x91,0x9F,0x9F,
0x91,0x91,0xD8,0xC8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x08,0x08,0x0C,0x04,0x04,0x04,0x3F,
0x3F,0x21,0x30,0x10,0x10,0x1C,0x1F,0x13,0x00,0x00,0x00,0x00, // [34], "",Size:72, W24×H24, addr:0x0990
0x00,0x00,0x00,0x40,0xC0,0xC0,0x40,0x40,0x40,0x40,0x40,0xFC,0xFC,0x44,0x40,0x40,0x40,0x60,0x20,0x20,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7E,0xA4,0xE6,0xFF,0xFF,0x62,0xE2,0xA2,
0x3E,0x1F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x18,0x0C,0x04,0x06,0x03,0x01,0x00,0x7F,
0x7F,0x00,0x01,0x03,0x06,0x0C,0x18,0x10,0x10,0x10,0x10,0x00, // [35], "",Size:72, W24×H24, addr:0x09D8
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x74,0xFC,0x88,0x80,0x80,0x80,0x80,0x80,0xC0,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x21,0x21,0x21,0x21,0xFF,0xFF,0x20,0x20,0x20,
0x20,0x20,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [36], "",Size:72, W24×H24, addr:0x0A20
};
static FontLibrary_t font24x24_zh_lib = {
.font = font24x24_zh_code,
.fontIndex = "放上双手保持静止不足秒蓝牙已经连接断开电量查看结果手机采集成功完低",
.fontIndex = "放上双手保持静止不足秒蓝牙已经连接断开电量查看结果手机采集成功完低样结束中",
.fontIndexLen = 88,
.fontCode = kgbk,
.isAscii = false,

21
app/src/app_service/ecg_service/ecg_algo.c

@ -6,7 +6,7 @@
#include "algo/zsimple_qrs.h"
#include "znordic.h"
#define REPORT_MEDIAN_WINDOWS_SIZE 101 // ±ØÐëÊÇÆæÊý
#define REPORT_MEDIAN_WINDOWS_SIZE 151 // ±ØÐëÊÇÆæÊý
LPFilterExt_t m_lp_filter;
HPFilterExt_t m_hp_filter;
@ -19,7 +19,7 @@ int32_t m_data_statistics_buf[STATISTICS_BUF_SIZE]; //
zdata_statistics_t m_data_statistics;
int32_t reportdata;
int32_t displaydata;
bool m_leadoff;
void ecg_algo_init() { ecg_algo_reset(); }
@ -36,10 +36,18 @@ void report_data_process(int32_t indata) {
}
void leadoff_data_process(int32_t indata) {
zdata_statistics_push(&m_data_statistics, indata);
if (zdata_statistics_is_full(&m_data_statistics)) {
int32_t max = zdata_statistics_get_max(&m_data_statistics);
int32_t min = zdata_statistics_get_min(&m_data_statistics);
if (max - min > 45000) {
m_leadoff = true;
} else {
m_leadoff = false;
}
} else {
m_leadoff = true;
}
}
void ecg_algo_process_data(int32_t indata) {
@ -67,5 +75,4 @@ void ecg_algo_reset() {
}
int32_t ecg_algo_get_report_data() { return reportdata; }
int32_t ecg_algo_get_display_data() { return displaydata; }
int32_t ecg_algo_get_heart_rate() { return 0; }
bool ecg_algo_get_leadoff_state() { return m_leadoff; }

5
app/src/app_service/ecg_service/ecg_algo.h

@ -5,12 +5,11 @@
#include "app_basic_service/zapp.h"
#define SAMPLE_PERIOD_S ((float)(1.0 / SAMPLE_RATE))
#define STATISTICS_BUF_SIZE ((int32_t)(1 / SAMPLE_PERIOD_S))
#define STATISTICS_BUF_SIZE ((int32_t)(0.5 / SAMPLE_PERIOD_S)) /*1sµÄÊý¾Ý*/
void ecg_algo_init();
void ecg_algo_process_data(int32_t indata);
void ecg_algo_reset();
int32_t ecg_algo_get_report_data();
int32_t ecg_algo_get_display_data();
int32_t ecg_algo_get_heart_rate();
bool ecg_algo_get_leadoff_state();

78
app/src/app_service/ecg_service/ecg_service.c

@ -14,8 +14,6 @@ static nrf_drv_spi_t ads129x_spi = NRF_DRV_SPI_INSTANCE(ADS1291_SPI_INSTA
static nrf_drv_spi_config_t ads129x_spi_config;
static bool m_testmode_flag;
static bool m_report_data_in_raw_mode_flag;
static bool m_leadoffstate;
uint8_t m_leadoff_raw_state;
static uint32_t predata_filter_cnt = 0;
@ -194,68 +192,6 @@ static bool ads129x_ping() {
/***********************************************************************************************************************
* PUBLIC_FUNC *
***********************************************************************************************************************/
static void leadoff_state_process(ads129x_capture_data_t* capture_data) {
/**
* @brief
* ecg脱落检测逻辑
* 1. 15000
* 2. ecg_leadoff状态被触发
* 3. 500
*
*
*/
if (!m_leadoffstate) {
/**
* @brief
*/
static uint32_t un_lead_off_cnt = 0;
bool leadoff = false;
int32_t abs_af_filter = ecg_algo_get_report_data();
if (abs_af_filter < 0) {
abs_af_filter = -abs_af_filter;
}
if (abs_af_filter < 500) {
leadoff = true;
}
if (leadoff) {
un_lead_off_cnt++;
} else {
un_lead_off_cnt = 0;
}
if (un_lead_off_cnt > 300) {
un_lead_off_cnt = 0;
m_leadoffstate = true;
}
} else {
/**
* @brief
*/
static uint32_t cnt = 0;
int32_t abs_af_filter = ecg_algo_get_report_data();
if (abs_af_filter < 0) {
abs_af_filter = -abs_af_filter;
}
if (abs_af_filter > 1500) {
cnt++;
} else {
cnt = 0;
}
if (cnt > 6) {
cnt = 0;
m_leadoffstate = false;
}
}
}
static void ads1291_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) {
static ads129x_capture_data_t capture_data;
predata_filter_cnt++;
@ -268,7 +204,6 @@ static void ads1291_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t a
//
ecg_algo_process_data(capture_data.ch1data);
leadoff_state_process(&capture_data);
//
one_frame_t frame;
@ -277,12 +212,11 @@ static void ads1291_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t a
} else {
frame.data = ecg_algo_get_report_data();
}
if (m_leadoffstate) {
if (ecg_algo_get_leadoff_state()) {
frame.leadoff = 0x3;
} else {
frame.leadoff = 0;
}
m_leadoff_raw_state = capture_data.loffstate;
ecg_data_mgr_push_one_frame(frame);
}
@ -409,7 +343,6 @@ void ecg_service_start_capture() { //
ads129x_send_cmd(ADS129X_COMMAND_START); /* 发送开始数据转换(等效于拉高START引脚) */
ecg_service_captured_time = znordic_getpower_on_ms();
m_leadoffstate = true;
m_work_state = true;
}
void ecg_service_stop_capture() { //
@ -428,8 +361,6 @@ void ecg_service_subic_write_reg(uint8_t addr, uint8_t val) {
ads129x_write_regs(&regcache);
}
uint8_t ecg_service_subic_read_reg(uint8_t addr) { return ads129x_rw_reg(ADS129X_COMMAND_RREG | addr, 0); }
int32_t ecg_service_get_display_val() { return ecg_algo_get_display_data(); }
int32_t ecg_service_get_heart_rate() { return ecg_algo_get_heart_rate(); }
void ecg_service_set_in_test_mode(bool testmode) {
ZLOGI("ecg_service_set_in_test_mode %d", testmode);
@ -439,9 +370,6 @@ void ecg_service_set_in_test_mode(bool testmode) {
void ecg_service_set_report_data_in_raw_mode(bool rawmode) { m_report_data_in_raw_mode_flag = rawmode; }
bool ecg_leadoff_detect() {
return false;
// if (m_testmode_flag) {
// return false;
// }
// return m_leadoffstate;
// return false;
return ecg_algo_get_leadoff_state();
}

2
app/src/app_service/ecg_service/ecg_service.h

@ -29,8 +29,6 @@ void ecg_service_unload();
void ecg_service_start_capture();
void ecg_service_stop_capture();
uint32_t ecg_service_has_captured_time();
int32_t ecg_service_get_display_val();
int32_t ecg_service_get_heart_rate();
void ecg_service_subic_write_reg(uint8_t addr, uint8_t val);
uint8_t ecg_service_subic_read_reg(uint8_t addr);

21
app/src/one_conduction_main.c

@ -380,16 +380,27 @@ void on_zapp_ebus_event(void* p_event_data, uint16_t event_size) {
ecg_service_stop_capture();
beep_set_effect(STOP_SAMPLE_EFFECT);
} else {
if (zble_module_has_disconnected_ms() >= 1000) {
zapp_state_machine_change_state(kstate_standby);
if (zble_module_has_disconnected_ms() >= 2000) {
zapp_state_machine_change_state(kstate_capture_end);
} else if (event == kappevent_stop_capture) {
zapp_state_machine_change_state(kstate_mainPage);
zapp_state_machine_change_state(kstate_capture_end);
} else if (event == kecg_data_report_event) {
report_ecg_data(p_event);
}
}
} else if (zapp_state_machine_now_state() == kstate_charging) {
} else if (zapp_state_machine_now_state() == kstate_capture_end) {
if (event == kappevent_state_machine_state_enter) {
dsp_mgr_change_page(kpage_sampling_end);
} else if (event == kappevent_state_machine_state_exit) {
} else {
if (zapp_state_machine_haspassed_ms() > 2000) {
zapp_state_machine_change_state(kstate_mainPage);
}
}
}
else if (zapp_state_machine_now_state() == kstate_charging) {
/**
* @brief
* 1. ->
@ -457,7 +468,7 @@ void one_conduction_main() {
dsp_mgr_init();
ecg_service_init();
// zapp_state_machine_change_state(kstate_prepare_capture);
// zapp_state_machine_change_state(kstate_capture);
zble_module_start_adv();
zapp_start_schedule();

2
screen_res/font/data/config/FontsCfg.table

@ -1,3 +1,3 @@
{
cfg={offsetH="0";cutDown=0;fontH=24;userImgPixClrN=4282994728;userImgPixClrP=4288471279;userImgMaxNum=223.22222222222;isRotate180FlipX=false;imgW=24;userImgPixSize="5";imgH=24;userImgDir="./data/fontimg/";cutRight=0;cwRotate90=0;font="仿宋";fontStyple=0;offsetV="0";cutLeft=0;cutUp=0;isRotate180FlipY=false;fontW=24}
cfg={cutRight=0;cutDown=0;cutLeft=0;userImgPixClrN=4282994728;userImgPixClrP=4288471279;userImgMaxNum=223.22222222222;isRotate180FlipX=false;imgW=24;userImgPixSize="5";imgH=24;userImgDir="./data/fontimg/";offsetH="0";cwRotate90=0;font="仿宋";fontStyple=1;cutUp=0;fontH=24;offsetV="0";isRotate180FlipY=false;fontW=24}
}

10
screen_res/font/data/config/array2ImgFrom.table

@ -3,15 +3,15 @@ edtOffset="0";
cmbbxMode=1;
rdScanModeVH=1;
rdComVcc=0;
edtImgW='8\r\n';
edtImgH="16";
edtArray=' { 0x08,0xF8,0x08,0x08,0x08,0xC8,0x18,0x00,0x00,0x3F,0x21,0x21,0x21,0x23,0x30,0x00, }/* 0, "中",Size:100, 25×25 */';
edtImgW="24";
edtImgH="24";
edtArray=' {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x82, 0xFF, 0x21, 0x21, 0x11, 0xF9, 0x01, 0x60, 0x1C,\r\n 0x63, 0x82, 0x62, 0x1F, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x0C, 0x03, 0x10, 0x10, 0x70,\r\n 0x4F, 0x40, 0x20, 0x10, 0x08, 0x06, 0x01, 0x06, 0x08, 0x70, 0x60, 0x40, 0x40, 0x00, 0x00}';
rdScanModeV=0;
rdComGnd=1;
rdScanModeHV=0;
rdScanModeH=0;
afterLoad=null;
beforeSave=null;
rdByteLsb=1;
rdByteMsb=0;
rdScanModeH=0
rdScanModeHV=0
}

2
screen_res/font/data/config/arrayCfg.table

@ -1,6 +1,6 @@
{
scanMode="VH";
isByteMsb=0;
scanMode="VH";
txtLineCharMaxNum=20;
isCommonGnd=1
}

6
screen_res/font/data/config/arrayCfgFrom.table

@ -1,13 +1,13 @@
{
rdScanModeH=0;
rdScanModeHV=0;
afterLoad=null;
rdScanModeVH=1;
rdByteLsb=1;
rdComVcc=0;
beforeSave=null;
rdScanModeH=0;
edtTxtRowByteNum="20";
rdScanModeHV=0;
rdScanModeV=0;
rdByteMsb=0;
rdScanModeV=0;
rdComGnd=1
}
Loading…
Cancel
Save