diff --git a/app/src/basic/ssd1306/driver_ssd1306_basic.c b/app/src/basic/ssd1306/driver_ssd1306_basic.c index 445c653..ff1fd58 100644 --- a/app/src/basic/ssd1306/driver_ssd1306_basic.c +++ b/app/src/basic/ssd1306/driver_ssd1306_basic.c @@ -741,14 +741,16 @@ uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint uint16_t markpos_off = width * markpos / 100.0; for (uint16_t yoff = 0; yoff < high - 2; yoff++) { for (uint16_t i = 0; i < width; i++) { - if (i < progress_width || i == 0) { - ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); - } else if (i == width - 1) { + if (i == width - 1) { ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); } else if (i >= markpos_off && i < markpos_off + 1) { ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); } else { - ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 0); + if (i < progress_width || i == 0) { + ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); + } else { + ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 0); + } } } } diff --git a/app/src/one_conduction/display_manager.c b/app/src/one_conduction/display_manager.c index 10ea968..49b33fe 100644 --- a/app/src/one_conduction/display_manager.c +++ b/app/src/one_conduction/display_manager.c @@ -269,14 +269,10 @@ typedef struct { int heartrate_x; int heartrate_y; - - bool in30spage; - bool hasover30s; - } sample_page_state_t; sample_page_state_t m_sample_page_state; -void dsp_mgr_change_to_sampling() { // +void dsp_mgr_change_to_sampling(int progress_s, int heartrate) { // sample_page_state_t* sps = &m_sample_page_state; sps->wave_drawser_x = SMAPLE_PAGE_START_X; @@ -291,66 +287,49 @@ void dsp_mgr_change_to_sampling() { // sps->heartrate_x = sps->progress_x + sps->progress_width + 2; sps->heartrate_y = sps->progress_y - 4; - sps->in30spage = false; - sps->hasover30s = false; + + int progress = progress_s / 30.0 * 25; ssd1306_basic_clear_gram(); 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); uint8_t xchange, ychange; - // 显示进度条 - ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, 0); - // 显示?123 - ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>--", &font_asicc16x8_lib); + ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress); + if (heartrate <= 0) { + ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>-- ", &font_asicc16x8_lib); + } else { + ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, fmt("<>%3d", heartrate), &font_asicc16x8_lib); + } ssd1306_basic_gram_update(); dsp_mgr_change_to_page(kPage_sampling); } -void samplePage_set_in30s_page() { - /** - * @brief - * 不足30秒[X] - */ - ssd1306_basic_clear(); - uint8_t x = 20; - uint8_t y = 32 - font24x24_zh_lib.heightPixel / 2; // 12*4 +12 - uint8_t xchange, ychange; - - // ssd1306_basic_draw_str(&x, &y, "123", &fontclocklib); - - 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(); - dsp_mgr_change_to_page(kPage_samplingError); -} - void samplePage_update_state(int progress_s, int wave_y, int heartrate) { // sample_page_state_t* sps = &m_sample_page_state; uint8_t xchange, ychange; - if (!sps->in30spage) { - if (!sps->hasover30s && progress_s > 30) { - // 切换到30s页面 - - } else { - // 25 <=> 30 - int progress = progress_s / 30.0 * 25; - wave_drawer_draw_next_point(&sps->wave_drawer, wave_y); - ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress); - if (heartrate <= 0) { - ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>--", &font_asicc16x8_lib); - } - ssd1306_basic_gram_update(); - } + int progress = progress_s / 30.0 * 25; + + if (progress_s / 10 == 0) { + ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "xxx", &font8x8_xo_lib); + } else if (progress_s / 10 == 1) { + ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "oxx", &font8x8_xo_lib); + } else if (progress_s / 10 == 2) { + ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "oox", &font8x8_xo_lib); + } else if (progress_s / 10 == 3) { + ssd1306_basic_draw_str(sps->progress_x, sps->progress_y - 8, &xchange, &ychange, "ooo", &font8x8_xo_lib); + } + + wave_drawer_draw_next_point(&sps->wave_drawer, wave_y); + ssd1306_basic_draw_progress(sps->progress_x, sps->progress_y, sps->progress_width, sps->progress_hight, 25, progress); + if (heartrate <= 0) { + ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, "<>-- ", &font_asicc16x8_lib); } else { + ssd1306_basic_draw_str(sps->heartrate_x, sps->heartrate_y, &xchange, &ychange, fmt("<>%3d", heartrate), &font_asicc16x8_lib); } + ssd1306_basic_gram_update(); } void samplePage_schedule() { diff --git a/app/src/one_conduction/display_manager.h b/app/src/one_conduction/display_manager.h index 6e9a543..06e1727 100644 --- a/app/src/one_conduction/display_manager.h +++ b/app/src/one_conduction/display_manager.h @@ -62,7 +62,6 @@ void dsp_mgr_schedule(void); PageState_t* dsp_mgr_get_state(void); uint32_t dsp_mgr_get_page_elapsed_time_s(void); - void dsp_mgr_change_to_poweroff(); void dsp_mgr_change_to_welcome(); void dsp_mgr_change_to_main(); @@ -72,7 +71,8 @@ void dsp_mgr_change_to_preparePage(); void dsp_mgr_preparePage_set_progress(int progress); int dsp_mgr_preparePage_get_progress(); -void dsp_mgr_change_to_sampling(); +void dsp_mgr_change_to_sampling(int progress_s, int heartrate); + void dsp_mgr_change_to_samplingError(); void dsp_mgr_change_to_storaging(); void dsp_mgr_change_to_storagingSuc(); diff --git a/app/src/one_conduction/one_conduction_main.c b/app/src/one_conduction/one_conduction_main.c index 6e5f66e..bb8c770 100644 --- a/app/src/one_conduction/one_conduction_main.c +++ b/app/src/one_conduction/one_conduction_main.c @@ -88,9 +88,7 @@ static uint32_t m_plod_state_disconnect_timepoint = 0; static uint32_t m_plod_state_connect_timepoint = 0; static bool m_plod_state_connected_state = false; static uint32_t plod_state_has_disconnected_ms() { return znordic_haspassed_ms(m_plod_state_disconnect_timepoint); } -static bool plod_state_is_connected() { - return m_plod_state_connected_state; -} +static bool plod_state_is_connected() { return m_plod_state_connected_state; } static void m_plod_state_event_detect_tmr_cb(void* p_context) { // static uint32_t connecte_state_trigger_cnt = 0; static uint32_t connecte_state_trigger_cnt_last_val = 0; @@ -299,7 +297,7 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) { * 3. 切换页面 */ state_machine_change_to_state(kdevice_state_sampling); - dsp_mgr_change_to_sampling(); + dsp_mgr_change_to_sampling(0, 0); hwss_start_capture(); } else if (cur_state_haspassed_ms() >= (500 * 4)) { if (dsp_mgr_preparePage_get_progress() != 4) {