From affe532749c01003a2af1dde857afee824a4660d Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sun, 28 Jan 2024 22:35:36 +0800 Subject: [PATCH] update --- app/src/basic/ssd1306/driver_ssd1306_basic.c | 2 +- app/src/one_conduction/display_manager.c | 82 ++++++++++++++++++++++------ app/src/one_conduction/display_manager.h | 1 - app/src/one_conduction/one_conduction_main.c | 12 ++-- 4 files changed, 71 insertions(+), 26 deletions(-) diff --git a/app/src/basic/ssd1306/driver_ssd1306_basic.c b/app/src/basic/ssd1306/driver_ssd1306_basic.c index 62b6fdb..445c653 100644 --- a/app/src/basic/ssd1306/driver_ssd1306_basic.c +++ b/app/src/basic/ssd1306/driver_ssd1306_basic.c @@ -741,7 +741,7 @@ 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) { + if (i < progress_width || i == 0) { ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); } else if (i == width - 1) { ssd1306_gram_write_point(&gs_handle, xs + i, ys + yoff, 1); diff --git a/app/src/one_conduction/display_manager.c b/app/src/one_conduction/display_manager.c index 3037e05..0336a3e 100644 --- a/app/src/one_conduction/display_manager.c +++ b/app/src/one_conduction/display_manager.c @@ -31,13 +31,6 @@ PageState_t* dsp_mgr_get_state(void) { return NULL; } int compute_x_pos_by_center(int16_t x, int16_t width) { return x - width / 2; } int compute_y_pos_by_center(int16_t y, int16_t height) { return y - height / 2; } -static wave_drawer_t wave_drawer; - -void dsp_mgr_draw_point(int16_t y) { - wave_drawer_draw_next_point(&wave_drawer, y); - ssd1306_basic_gram_update(); -} - void dsp_mgr_change_to_samplingError() { /** * @brief @@ -203,6 +196,14 @@ void mainPage_show(bool colon_state) { void dsp_mgr_change_to_main() { mainPage_show(true); } void mainPage_updateState() { mainPage_show(!m_main_page_colon_state); } +void mainPage_schedule() { + static uint32_t last_update_time = 0; + if (znordic_haspassed_ms(last_update_time) < 300) { + return; + } + last_update_time = znordic_getpower_on_ms(); + mainPage_updateState(); +} /******************************************************************************* * 保持静止页面 * @@ -247,25 +248,70 @@ void PreparePage_schedule() {} /******************************************************************************* * 采样页面 * *******************************************************************************/ + +#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; + + int heartrate_x; + int heartrate_y; + +} sample_page_state_t; +sample_page_state_t m_sample_page_state; + void dsp_mgr_change_to_sampling() { // - wave_drawer_init(&wave_drawer, 1, 1, 120, 40); - wave_drawer_draw_border(&wave_drawer); + sample_page_state_t* sps = &m_sample_page_state; - uint8_t xchange, ychange; + sps->wave_drawser_x = SMAPLE_PAGE_START_X; + sps->wave_drawser_y = SMAPLE_PAGE_START_Y; + sps->wave_drawser_hight = 40; + sps->wave_drawser_width = 120; + + sps->progress_x = SMAPLE_PAGE_START_X+1; + sps->progress_y = SMAPLE_PAGE_START_Y + sps->wave_drawser_hight + 3 + 4; + sps->progress_width = 80; + sps->progress_hight = 8; - ssd1306_basic_draw_progress(1, 47, 80, 8, 50, 30); + sps->heartrate_x = sps->progress_x + sps->progress_width + 2; + sps->heartrate_y = sps->progress_y - 4; + + ssd1306_basic_clear_gram(); - ssd1306_basic_draw_str(82, 43, &xchange, &ychange, "<>123", &font_asicc16x8_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); + 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_gram_update(); + dsp_mgr_change_to_page(kPage_sampling); } -void mainPage_schedule() { - static uint32_t last_update_time = 0; - if (znordic_haspassed_ms(last_update_time) < 300) { - return; +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; + + // 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); } - last_update_time = znordic_getpower_on_ms(); - mainPage_updateState(); } /******************************************************************************* diff --git a/app/src/one_conduction/display_manager.h b/app/src/one_conduction/display_manager.h index 36d06e1..6e9a543 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_draw_point(int16_t y); void dsp_mgr_change_to_poweroff(); void dsp_mgr_change_to_welcome(); diff --git a/app/src/one_conduction/one_conduction_main.c b/app/src/one_conduction/one_conduction_main.c index f179bd3..c1f31ac 100644 --- a/app/src/one_conduction/one_conduction_main.c +++ b/app/src/one_conduction/one_conduction_main.c @@ -249,11 +249,6 @@ static void state_machine__change_to_home_state() { dsp_mgr_change_to_main(); } -static void state_machine__change_to_sampling_state() { - state_machine_change_to_state(kdevice_state_sampling); - dsp_mgr_change_to_sampling(); -} - static void app_event_process_cb(void* p_event_data, uint16_t event_size) { if (!p_event_data) return; app_event_t* p_event = (app_event_t*)p_event_data; @@ -312,7 +307,8 @@ static void app_event_process_cb(void* p_event_data, uint16_t event_size) { * 页面加载中 * *******************************************************************************/ if (cur_state_haspassed_ms() >= (500 * 5)) { - // state_machine__change_to_sampling_state(); + state_machine_change_to_state(kdevice_state_sampling); + dsp_mgr_change_to_sampling(); } else if (cur_state_haspassed_ms() >= (500 * 4)) { if (dsp_mgr_preparePage_get_progress() != 4) { dsp_mgr_preparePage_set_progress(4); @@ -331,6 +327,10 @@ static void app_event_process_cb(void* p_event_data, uint16_t event_size) { } } } + } else if (m_device_state == kdevice_state_sampling) { + /******************************************************************************* + * 采样页面逻辑 * + *******************************************************************************/ } #if 0