diff --git a/app/app.uvoptx b/app/app.uvoptx index 24dc30d..8ef17b0 100644 --- a/app/app.uvoptx +++ b/app/app.uvoptx @@ -386,8 +386,8 @@ 0 0 0 - .\src\one_conduction_main.c - one_conduction_main.c + .\src\main.c + main.c 0 0 @@ -398,8 +398,8 @@ 0 0 0 - .\src\main.c - main.c + .\src\one_conduction_main.c + one_conduction_main.c 0 0 @@ -410,8 +410,8 @@ 0 0 0 - .\src\app_basic_service\device_version_info_mgr.c - device_version_info_mgr.c + .\src\app_basic_service\zapp.c + zapp.c 0 0 @@ -422,8 +422,8 @@ 0 0 0 - .\src\app_basic_service\zapp.c - zapp.c + .\src\app_basic_service\device_version_info_mgr.c + device_version_info_mgr.c 0 0 @@ -431,7 +431,7 @@ Board Definition - 0 + 1 0 0 0 @@ -627,7 +627,7 @@ nRF_Drivers - 0 + 1 0 0 0 @@ -875,7 +875,7 @@ nRF_Libraries - 0 + 1 0 0 0 @@ -1530,8 +1530,8 @@ 0 0 0 - .\src\app_service\adc_mgr.c - adc_mgr.c + .\src\app_service\ecg_service\ecg_service.c + ecg_service.c 0 0 @@ -1542,8 +1542,188 @@ 0 0 0 - .\src\app_service\ecg_service\ecg_service.c - ecg_service.c + .\src\app_service\base_hardware\adc_mgr.c + adc_mgr.c + 0 + 0 + + + 15 + 90 + 1 + 0 + 0 + 0 + .\src\app_service\base_hardware\hardware_power_mgr.c + hardware_power_mgr.c + 0 + 0 + + + 15 + 91 + 1 + 0 + 0 + 0 + .\src\app_service\beep_ctrl.c + beep_ctrl.c + 0 + 0 + + + 15 + 92 + 1 + 0 + 0 + 0 + .\src\app_service\light_ctrl.c + light_ctrl.c + 0 + 0 + + + 15 + 93 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\display_mgr.c + display_mgr.c + 0 + 0 + + + 15 + 94 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\ssd1306_if_impl.c + ssd1306_if_impl.c + 0 + 0 + + + 15 + 95 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c + driver_ssd1306.c + 0 + 0 + + + 15 + 96 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c + driver_ssd1306_basic.c + 0 + 0 + + + 15 + 97 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\ssd1306\fontlib.c + fontlib.c + 0 + 0 + + + 15 + 98 + 1 + 0 + 0 + 0 + .\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c + wave_drawer.c + 0 + 0 + + + 15 + 99 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\ecg_algo.c + ecg_algo.c + 0 + 0 + + + 15 + 100 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\ecg_data_mgr.c + ecg_data_mgr.c + 0 + 0 + + + 15 + 101 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\algo\ecg_data_analyszer.c + ecg_data_analyszer.c + 0 + 0 + + + 15 + 102 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\algo\iflytop_simple_filter.c + iflytop_simple_filter.c + 0 + 0 + + + 15 + 103 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c + iflytop_simple_filter_ext.c + 0 + 0 + + + 15 + 104 + 1 + 0 + 0 + 0 + .\src\app_service\ecg_service\algo\iflytop_simple_qrs.c + iflytop_simple_qrs.c 0 0 diff --git a/app/app.uvprojx b/app/app.uvprojx index 0da6b8d..5d84d0e 100644 --- a/app/app.uvprojx +++ b/app/app.uvprojx @@ -389,25 +389,25 @@ .\config\sdk_config.h - one_conduction_main.c - 1 - .\src\one_conduction_main.c - - main.c 1 .\src\main.c - device_version_info_mgr.c + one_conduction_main.c 1 - .\src\app_basic_service\device_version_info_mgr.c + .\src\one_conduction_main.c zapp.c 1 .\src\app_basic_service\zapp.c + + device_version_info_mgr.c + 1 + .\src\app_basic_service\device_version_info_mgr.c + @@ -3796,14 +3796,89 @@ .\src\app_service\battery_mgr_service.c + ecg_service.c + 1 + .\src\app_service\ecg_service\ecg_service.c + + adc_mgr.c 1 - .\src\app_service\adc_mgr.c + .\src\app_service\base_hardware\adc_mgr.c - ecg_service.c + hardware_power_mgr.c 1 - .\src\app_service\ecg_service\ecg_service.c + .\src\app_service\base_hardware\hardware_power_mgr.c + + + beep_ctrl.c + 1 + .\src\app_service\beep_ctrl.c + + + light_ctrl.c + 1 + .\src\app_service\light_ctrl.c + + + display_mgr.c + 1 + .\src\app_service\display_ctrl_service\display_mgr.c + + + ssd1306_if_impl.c + 1 + .\src\app_service\display_ctrl_service\ssd1306_if_impl.c + + + driver_ssd1306.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c + + + driver_ssd1306_basic.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c + + + fontlib.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\fontlib.c + + + wave_drawer.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c + + + ecg_algo.c + 1 + .\src\app_service\ecg_service\ecg_algo.c + + + ecg_data_mgr.c + 1 + .\src\app_service\ecg_service\ecg_data_mgr.c + + + ecg_data_analyszer.c + 1 + .\src\app_service\ecg_service\algo\ecg_data_analyszer.c + + + iflytop_simple_filter.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_filter.c + + + iflytop_simple_filter_ext.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c + + + iflytop_simple_qrs.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_qrs.c @@ -4198,25 +4273,25 @@ .\config\sdk_config.h - one_conduction_main.c - 1 - .\src\one_conduction_main.c - - main.c 1 .\src\main.c - device_version_info_mgr.c + one_conduction_main.c 1 - .\src\app_basic_service\device_version_info_mgr.c + .\src\one_conduction_main.c zapp.c 1 .\src\app_basic_service\zapp.c + + device_version_info_mgr.c + 1 + .\src\app_basic_service\device_version_info_mgr.c + @@ -7605,14 +7680,89 @@ .\src\app_service\battery_mgr_service.c + ecg_service.c + 1 + .\src\app_service\ecg_service\ecg_service.c + + adc_mgr.c 1 - .\src\app_service\adc_mgr.c + .\src\app_service\base_hardware\adc_mgr.c - ecg_service.c + hardware_power_mgr.c 1 - .\src\app_service\ecg_service\ecg_service.c + .\src\app_service\base_hardware\hardware_power_mgr.c + + + beep_ctrl.c + 1 + .\src\app_service\beep_ctrl.c + + + light_ctrl.c + 1 + .\src\app_service\light_ctrl.c + + + display_mgr.c + 1 + .\src\app_service\display_ctrl_service\display_mgr.c + + + ssd1306_if_impl.c + 1 + .\src\app_service\display_ctrl_service\ssd1306_if_impl.c + + + driver_ssd1306.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306.c + + + driver_ssd1306_basic.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\driver_ssd1306_basic.c + + + fontlib.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\fontlib.c + + + wave_drawer.c + 1 + .\src\app_service\display_ctrl_service\ssd1306\wave_drawer.c + + + ecg_algo.c + 1 + .\src\app_service\ecg_service\ecg_algo.c + + + ecg_data_mgr.c + 1 + .\src\app_service\ecg_service\ecg_data_mgr.c + + + ecg_data_analyszer.c + 1 + .\src\app_service\ecg_service\algo\ecg_data_analyszer.c + + + iflytop_simple_filter.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_filter.c + + + iflytop_simple_filter_ext.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_filter_ext.c + + + iflytop_simple_qrs.c + 1 + .\src\app_service\ecg_service\algo\iflytop_simple_qrs.c diff --git a/app/src/board/ads129x/ads129x.c b/app/src/_board/ads129x/ads129x.c similarity index 100% rename from app/src/board/ads129x/ads129x.c rename to app/src/_board/ads129x/ads129x.c diff --git a/app/src/board/ads129x/ads129x.h b/app/src/_board/ads129x/ads129x.h similarity index 100% rename from app/src/board/ads129x/ads129x.h rename to app/src/_board/ads129x/ads129x.h diff --git a/app/src/board/ads129x/ads129x_type.h b/app/src/_board/ads129x/ads129x_type.h similarity index 100% rename from app/src/board/ads129x/ads129x_type.h rename to app/src/_board/ads129x/ads129x_type.h diff --git a/app/src/board/board_battery_state.c b/app/src/_board/board_battery_state.c similarity index 100% rename from app/src/board/board_battery_state.c rename to app/src/_board/board_battery_state.c diff --git a/app/src/board/board_battery_state.h b/app/src/_board/board_battery_state.h similarity index 100% rename from app/src/board/board_battery_state.h rename to app/src/_board/board_battery_state.h diff --git a/app/src/board/board_eeprom_driver.c b/app/src/_board/board_eeprom_driver.c similarity index 100% rename from app/src/board/board_eeprom_driver.c rename to app/src/_board/board_eeprom_driver.c diff --git a/app/src/board/board_eeprom_driver.h b/app/src/_board/board_eeprom_driver.h similarity index 100% rename from app/src/board/board_eeprom_driver.h rename to app/src/_board/board_eeprom_driver.h diff --git a/app/src/board/board_light_ctrl.c b/app/src/_board/board_light_ctrl.c similarity index 100% rename from app/src/board/board_light_ctrl.c rename to app/src/_board/board_light_ctrl.c diff --git a/app/src/board/board_light_ctrl.h b/app/src/_board/board_light_ctrl.h similarity index 100% rename from app/src/board/board_light_ctrl.h rename to app/src/_board/board_light_ctrl.h diff --git a/app/src/board/board_power_mgr.c b/app/src/_board/board_power_mgr.c similarity index 100% rename from app/src/board/board_power_mgr.c rename to app/src/_board/board_power_mgr.c diff --git a/app/src/board/board_power_mgr.h b/app/src/_board/board_power_mgr.h similarity index 100% rename from app/src/board/board_power_mgr.h rename to app/src/_board/board_power_mgr.h diff --git a/app/src/board/board_ssd1306_interface.c b/app/src/_board/board_ssd1306_interface.c similarity index 100% rename from app/src/board/board_ssd1306_interface.c rename to app/src/_board/board_ssd1306_interface.c diff --git a/app/src/board/board_ssd1306_interface.h b/app/src/_board/board_ssd1306_interface.h similarity index 100% rename from app/src/board/board_ssd1306_interface.h rename to app/src/_board/board_ssd1306_interface.h diff --git a/app/src/board/soc_public_res_mgr.c b/app/src/_board/soc_public_res_mgr.c similarity index 100% rename from app/src/board/soc_public_res_mgr.c rename to app/src/_board/soc_public_res_mgr.c diff --git a/app/src/board/soc_public_res_mgr.h b/app/src/_board/soc_public_res_mgr.h similarity index 100% rename from app/src/board/soc_public_res_mgr.h rename to app/src/_board/soc_public_res_mgr.h diff --git a/app/src/board/ssd1306/driver_ssd1306.c b/app/src/_board/ssd1306/driver_ssd1306.c similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306.c rename to app/src/_board/ssd1306/driver_ssd1306.c diff --git a/app/src/board/ssd1306/driver_ssd1306.h b/app/src/_board/ssd1306/driver_ssd1306.h similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306.h rename to app/src/_board/ssd1306/driver_ssd1306.h diff --git a/app/src/board/ssd1306/driver_ssd1306_basic.c b/app/src/_board/ssd1306/driver_ssd1306_basic.c similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306_basic.c rename to app/src/_board/ssd1306/driver_ssd1306_basic.c diff --git a/app/src/board/ssd1306/driver_ssd1306_basic.h b/app/src/_board/ssd1306/driver_ssd1306_basic.h similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306_basic.h rename to app/src/_board/ssd1306/driver_ssd1306_basic.h diff --git a/app/src/board/ssd1306/driver_ssd1306_font.h b/app/src/_board/ssd1306/driver_ssd1306_font.h similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306_font.h rename to app/src/_board/ssd1306/driver_ssd1306_font.h diff --git a/app/src/board/ssd1306/driver_ssd1306_interface.h b/app/src/_board/ssd1306/driver_ssd1306_interface.h similarity index 100% rename from app/src/board/ssd1306/driver_ssd1306_interface.h rename to app/src/_board/ssd1306/driver_ssd1306_interface.h diff --git a/app/src/board/ssd1306/fontlib.c b/app/src/_board/ssd1306/fontlib.c similarity index 100% rename from app/src/board/ssd1306/fontlib.c rename to app/src/_board/ssd1306/fontlib.c diff --git a/app/src/board/ssd1306/fontlib.h b/app/src/_board/ssd1306/fontlib.h similarity index 100% rename from app/src/board/ssd1306/fontlib.h rename to app/src/_board/ssd1306/fontlib.h diff --git a/app/src/board/ssd1306/wave_drawer.c b/app/src/_board/ssd1306/wave_drawer.c similarity index 100% rename from app/src/board/ssd1306/wave_drawer.c rename to app/src/_board/ssd1306/wave_drawer.c diff --git a/app/src/board/ssd1306/wave_drawer.h b/app/src/_board/ssd1306/wave_drawer.h similarity index 100% rename from app/src/board/ssd1306/wave_drawer.h rename to app/src/_board/ssd1306/wave_drawer.h diff --git a/app/src/app_basic_service/basic/event.h b/app/src/app_basic_service/basic/event.h index ec93ff3..3ddbe0b 100644 --- a/app/src/app_basic_service/basic/event.h +++ b/app/src/app_basic_service/basic/event.h @@ -8,7 +8,9 @@ #define ECG_DATA_REPORT_FRAME_NUM 32 // ecg每次上报的帧数 typedef enum { - kecg_data_report_event, // ecg数据上报事件 + kevent_tmr_scheduler_event, + + kecg_data_report_event, // ecg数据上报事件 kappevent_battery_start_charge, // 开始充电事件 kappevent_battery_end_charge, // 停止充电事件 } app_event_type_t; diff --git a/app/src/app_service/battery_mgr_service.c b/app/src/app_service/battery_mgr_service.c index cd76810..f406e33 100644 --- a/app/src/app_service/battery_mgr_service.c +++ b/app/src/app_service/battery_mgr_service.c @@ -77,7 +77,7 @@ static int16_t _battery_mgr_service_get_battery_level() { // percent_int = 100; } - return battery_level_filter(percent_int); + return _battery_level_filter(percent_int); } /*********************************************************************************************************************** diff --git a/app/src/app_service/beep_ctrl.c b/app/src/app_service/beep_ctrl.c index 7384edd..f820872 100644 --- a/app/src/app_service/beep_ctrl.c +++ b/app/src/app_service/beep_ctrl.c @@ -30,12 +30,12 @@ static uint32_t m_beep_cnt = 0; static void beep_tmr_handler(void *context) { if (m_beep_effect == kBoardBeepEffect_none) { - board_beep_ctrl_set(false); + beep_set(false); } else if (m_beep_effect == kBoardBeepEffect_oneShortBeep) { if (m_beep_cnt == 0) { - board_beep_ctrl_set(true); + beep_set(true); } else if (m_beep_cnt >= 1) { - board_beep_ctrl_set(false); + beep_set(false); app_timer_stop(m_beep_tmr); m_beep_effect = kBoardBeepEffect_none; } @@ -43,9 +43,9 @@ static void beep_tmr_handler(void *context) { else if (m_beep_effect == kBoardBeepEffect_oneShortLongBeep) { if (m_beep_cnt == 0) { - board_beep_ctrl_set(true); + beep_set(true); } else if (m_beep_cnt >= 6) { - board_beep_ctrl_set(false); + beep_set(false); app_timer_stop(m_beep_tmr); m_beep_effect = kBoardBeepEffect_none; } @@ -54,12 +54,12 @@ static void beep_tmr_handler(void *context) { else if (m_beep_effect == kBoardBeepEffect_threeShortBeep) { if (m_beep_cnt < 6) { if (m_beep_cnt % 2 == 0) { - board_beep_ctrl_set(true); + beep_set(true); } else if (m_beep_cnt % 2 == 1) { - board_beep_ctrl_set(false); + beep_set(false); } } else { - board_beep_ctrl_set(false); + beep_set(false); app_timer_stop(m_beep_tmr); m_beep_effect = kBoardBeepEffect_none; } @@ -68,9 +68,9 @@ static void beep_tmr_handler(void *context) { // 每隔1秒响三声 if (m_beep_cnt < 6) { if (m_beep_cnt % 2 == 0) { - board_beep_ctrl_set(true); + beep_set(true); } else if (m_beep_cnt % 2 == 1) { - board_beep_ctrl_set(false); + beep_set(false); } } else { if (BEEP_TIMER_INTERVAL * m_beep_cnt >= 10000) { @@ -96,7 +96,7 @@ void beep_load() { // void beep_unload() { if (!m_beep_loaded) return; - board_beep_ctrl_set(0); + beep_set(0); nrfx_pwm_uninit(&m_beep_pwm0); m_beep_loaded = false; } @@ -118,7 +118,7 @@ void beep_set_effect(board_beep_effect_t effect) { app_timer_stop(m_beep_tmr); m_beep_cnt = 0; if (m_beep_effect == kBoardBeepEffect_none) { - board_beep_ctrl_set(false); + beep_set(false); } else { app_timer_start(m_beep_tmr, APP_TIMER_TICKS(BEEP_TIMER_INTERVAL), NULL); } diff --git a/app/src/app_service/display_ctrl_service/display_manager.bak.c b/app/src/app_service/display_ctrl_service/display_manager.bak.c deleted file mode 100644 index a886363..0000000 --- a/app/src/app_service/display_ctrl_service/display_manager.bak.c +++ /dev/null @@ -1,443 +0,0 @@ -#include "display_manager.h" - -#include "../../../screen_res/logo_mono.c" -// -#include - -#include "board/board_battery_state.h" -#include "board/board_ssd1306_interface.h" -#include "aproject_config/config.h" -#include "font.h" -PageState_t g_pageState; - -void dsp_mgr_change_to_page(page_t page) { // - g_pageState.page = page; - g_pageState.last_page = page; - g_pageState.page_change_to_page_time = znordic_getpower_on_s(); - - g_pageState.in_prompt = false; - memset(g_pageState.prompt, 0, sizeof(g_pageState.prompt)); -} - -uint32_t dsp_mgr_get_page_elapsed_time_s(void) { // - return znordic_getpower_on_s() - g_pageState.page_change_to_page_time; -} - -void dsp_mgr_schedule(void) {} - -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; } - -#define SCREEN_CENTER_X 64 -#define SCREEN_CENTER_Y 32 - -#define CHARGE_BATTERY_WIDTH (12 * 1.2) -#define CHARGE_BATTERY_HEIGHT (22 * 1.2) - -#define MAIN_PAGE_BATTERY_WIDTH (12) // 首页电池宽度 -#define MAIN_PAGE_BATTERY_HEIGHT (22) // 首页电池高度 - -/******************************************************************************* - * 充电页面 * - *******************************************************************************/ -/** - * 显示元素: - * 1.电池电量 - * --------------- - * | _ | - * | | | | - * | | - * --------------- - * - * 动画效果: - * 1. 电池电量变化 - * - */ - -static uint32_t m_nowshowbatterylevel; // 当前显示的电池电量 - -void dsp_mgr_change_to_chargingPage() { - ssd1306_basic_clear(); - uint8_t x = compute_x_pos_by_center(SCREEN_CENTER_X, CHARGE_BATTERY_WIDTH); - uint8_t y = compute_y_pos_by_center(SCREEN_CENTER_Y, CHARGE_BATTERY_HEIGHT); - uint8_t xchange, ychange; - ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, BoardBattery_get_battery_level(), CHARGE_BATTERY_WIDTH, CHARGE_BATTERY_HEIGHT); - m_nowshowbatterylevel = BoardBattery_get_battery_level(); - ssd1306_basic_gram_update(); - dsp_mgr_change_to_page(kPage_chargingPage); -} - -void chargingPage_set_batteryLevel(int batteryLevel) { - uint8_t x = compute_x_pos_by_center(SCREEN_CENTER_X, CHARGE_BATTERY_WIDTH); - uint8_t y = compute_y_pos_by_center(SCREEN_CENTER_Y, CHARGE_BATTERY_HEIGHT); - uint8_t xchange, ychange; - ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, batteryLevel, CHARGE_BATTERY_WIDTH, CHARGE_BATTERY_HEIGHT); - ssd1306_basic_gram_update(); -} - -void chargingPage_schedule() { // - static uint32_t last_update_time = 0; - if (znordic_haspassed_ms(last_update_time) < 300) { - return; - } - - last_update_time = znordic_getpower_on_ms(); - m_nowshowbatterylevel += 5; - if (m_nowshowbatterylevel > 100) { - m_nowshowbatterylevel = BoardBattery_get_battery_level(); - } - chargingPage_set_batteryLevel(m_nowshowbatterylevel); -} - -/******************************************************************************* - * 欢迎页面 * - *******************************************************************************/ -void dsp_mgr_change_to_welcome() { - /** - * @brief 切换到欢迎界面 - * 1. 加载屏幕外设 - * 2. 打开屏幕电源 - * 3. 初始化开机页面 - */ - - // ssd1306_basic_string(0, 0, "123456789123456789123", 21, 0, SSD1306_FONT_12); - ssd1306_basic_draw_screen((const char*)gImage_logo_mono); - ssd1306_basic_gram_update(); - dsp_mgr_change_to_page(kPage_welcome); -} - -void welcomePage_schedule() {} - -/******************************************************************************* - * 首页 * - *******************************************************************************/ -static bool m_main_page_colon_state = false; - -void mainPage_show(bool colon_state) { - static ztm_t now; - int16_t batterylevel; - uint8_t xchange, ychange; - uint8_t x, y; - x = compute_x_pos_by_center(SCREEN_CENTER_X, fontclocklib.widthPixel * 5 + MAIN_PAGE_BATTERY_WIDTH); - y = compute_y_pos_by_center(SCREEN_CENTER_Y, fontclocklib.heightPixel + 1); - znordic_rtc_gettime(&now); - batterylevel = BoardBattery_get_battery_level(); - - ssd1306_basic_clear_gram(); - - // ZLOGI("mainPage_show %d %d", colon_state, x, y); - - ssd1306_basic_draw_str(x, y, &xchange, &ychange, fmt("%02d:%02d", now.tm_hour, now.tm_min), &fontclocklib); - x = x + 6 + xchange; - ssd1306_basic_draw_battery_level(x, y, &xchange, &ychange, batterylevel, MAIN_PAGE_BATTERY_WIDTH, MAIN_PAGE_BATTERY_HEIGHT); - ssd1306_basic_gram_update(); - m_main_page_colon_state = colon_state; - dsp_mgr_change_to_page(kPage_main); -} - -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(); -} - -/******************************************************************************* - * 保持静止页面 * - *******************************************************************************/ -static int m_prepare_page_progress = 0; -void PreparePage_show(int progress) { - m_prepare_page_progress = progress; - 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); - - if (progress == 0) { - ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "xxxx", &font8x8_xo_lib); - } else if (progress == 1) { - ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "oxxx", &font8x8_xo_lib); - } else if (progress == 2) { - ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "ooxx", &font8x8_xo_lib); - } else if (progress == 3) { - ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "ooox", &font8x8_xo_lib); - } else if (progress == 4) { - ssd1306_basic_draw_str(x - font8x8_xo_lib.widthPixel, y - font8x8_xo_lib.heightPixel, &xchange, &ychange, "oooo", &font8x8_xo_lib); - } - - ssd1306_basic_gram_update(); -} - -void dsp_mgr_change_to_preparePage() { - PreparePage_show(0); - dsp_mgr_change_to_page(kPage_preparePage); -} -void dsp_mgr_preparePage_set_progress(int progress) { PreparePage_show(progress); } -int dsp_mgr_preparePage_get_progress() { return m_prepare_page_progress; } - -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; -#if 0 -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; - 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; - - sps->heartrate_x = sps->progress_x + sps->progress_width + 2; - sps->heartrate_y = sps->progress_y - 4; - - int progress = progress_s / SAMPLE_MIN_TIME_S * 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, 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_update_state(int progress_s, int wave_y, int heartrate, bool update_screen) { // - - sample_page_state_t* sps = &m_sample_page_state; - uint8_t xchange, ychange; - - int progress = progress_s / SAMPLE_MIN_TIME_S * 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); - } - if (update_screen) ssd1306_basic_gram_update(); -} -#endif -void dsp_mgr_change_to_sampling(int progress_s, int heartrate) { // - 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; - - sps->heartrate_x = sps->wave_drawser_x + sps->wave_drawser_width + 1; - sps->heartrate_y = sps->wave_drawser_y + 5; - - int progress = progress_s / SAMPLE_MIN_TIME_S * 25; - uint8_t xchange, ychange; - - 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(); - dsp_mgr_change_to_page(kPage_sampling); -} - -void samplePage_update_state(int progress_s, int wave_y, int heartrate, bool updateHeart, bool update_screen) { // - - 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 (progress_s / 10 >= 3) { - // ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "o", &font8x8_xo_lib); - // } else { - // ssd1306_basic_draw_str(sps->progress_x + sps->progress_width + 2, sps->progress_y, &xchange, &ychange, "x", &font8x8_xo_lib); - // } - if (update_screen && updateHeart) { - if (heart_logo_state) { - 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, 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(); -} - -void samplePage_schedule() { - static int count = 0; - count++; - int capturetime = hwss_has_captured_time_ms(); - int wave_y = (int)hwss_read_val(); - int heartrate = (int)hwss_read_heart_rate(); - // ZLOGI("samplePage_schedule %d %d %d", capturetime, wave_y, heartrate); - samplePage_update_state(capturetime / 1000, wave_y, hwss_read_heart_rate(), count % 30 == 0, count % 10 == 0); -} - -/******************************************************************************* - * samplingError * - *******************************************************************************/ -void dsp_mgr_change_to_samplingError() { - /** - * @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(); - dsp_mgr_change_to_page(kPage_samplingError); -} - -void dsp_mgr_change_to_sampleSuc() { - /** - * @brief - * 1.进度条 - * 2.提示信息 - */ - ssd1306_basic_clear(); - 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(); - dsp_mgr_change_to_page(kPage_storagingSuc); -} - -/******************************************************************************* - * SCHEDULE * - *******************************************************************************/ - -APP_TIMER_DEF(m_dsp_mgr_schedule_tmr); -static void dsp_mgr_schedule_tmr_cb(void* p_context) { // - if (g_pageState.page == kPage_chargingPage) { - chargingPage_schedule(); - } else if (g_pageState.page == kPage_welcome) { - welcomePage_schedule(); - } else if (g_pageState.page == kPage_main) { - mainPage_schedule(); - } else if (g_pageState.page == kPage_preparePage) { - PreparePage_schedule(); - } else if (g_pageState.page == kPage_sampling) { - samplePage_schedule(); - } -} - -void dsp_mgr_init(void) { - static bool timer_inited = false; - board_screen_init(); - if (!timer_inited) { - ZERROR_CHECK(app_timer_create(&m_dsp_mgr_schedule_tmr, APP_TIMER_MODE_REPEATED, dsp_mgr_schedule_tmr_cb)); - } - // 此处周期决定采样一个页面显示的宽度 - ZERROR_CHECK(app_timer_start(m_dsp_mgr_schedule_tmr, APP_TIMER_TICKS(12), NULL)); - timer_inited = true; -} -void dsp_mgr_uninit(void) { - app_timer_stop(m_dsp_mgr_schedule_tmr); - board_screen_deinit(); -} diff --git a/app/src/app_service/display_ctrl_service/display_manager.bak.h b/app/src/app_service/display_ctrl_service/display_manager.bak.h deleted file mode 100644 index 0553b77..0000000 --- a/app/src/app_service/display_ctrl_service/display_manager.bak.h +++ /dev/null @@ -1,81 +0,0 @@ -#pragma once - -#include "znordic.h" -// -#include "app_timer.h" -#include "diskio_blkdev.h" -#include "ff.h" -#include "nrf_block_dev_sdc.h" -#include "nrf_delay.h" -#include "nrf_drv_pwm.h" -#include "nrf_drv_saadc.h" -#include "nrf_drv_twi.h" -#include "nrf_drv_wdt.h" -#include "nrf_gpio.h" - -/** - * @brief - * 页面流转 - * - * close <--------------------- - * | - * button ---> welcome ---> main ---> preparePage ---> sampling ---> storaging ---> storagingSuc - * ^ ---> samplingError | - * |-------------------------------------------| | - * |-----------------------------------------------------------| - * - */ - -typedef enum { - kPage_poweroff, - kPage_welcome, - kPage_main, - kPage_preparePage, - kPage_sampling, - kPage_samplingError, - kPage_storaging, - kPage_storagingSuc, - kPage_chargingPage, -} page_t; - -typedef struct { - /** - * @brief 页面状态 - */ - page_t page; // 当前页面 - page_t last_page; // 上一个页面 - uint32_t page_change_to_page_time; // 当前页面持续的时间 - - bool in_prompt; // 是否在提示状态 - char prompt[32]; // 提示内容 - - /** - * @brief - */ - -} PageState_t; - -void dsp_mgr_init(void); -void dsp_mgr_uninit(void); -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(); -void dsp_mgr_change_to_chargingPage(); - -// 保持静止页面 -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(int progress_s, int heartrate); - -// 采样出错页面 -void dsp_mgr_change_to_samplingError(); -// 采样成功页面 -void dsp_mgr_change_to_sampleSuc(); \ No newline at end of file diff --git a/app/src/app_service/display_ctrl_service/display_mgr.c b/app/src/app_service/display_ctrl_service/display_mgr.c index e760123..1de411f 100644 --- a/app/src/app_service/display_ctrl_service/display_mgr.c +++ b/app/src/app_service/display_ctrl_service/display_mgr.c @@ -4,11 +4,14 @@ // #include +#include "app_service/battery_mgr_service.h" #include "aproject_config/config.h" -#include "board/board_battery_state.h" #include "font.h" #include "ssd1306/driver_ssd1306_basic.h" #include "ssd1306/wave_drawer.h" +// +#include "app_service/ecg_service/ecg_service.h" +#include "ssd1306_if_impl.h" /*********************************************************************************************************************** * MARCO * @@ -23,8 +26,7 @@ #define MAIN_PAGE_BATTERY_HEIGHT (22) // 首页电池高度 typedef struct { - page_t page; - uint32_t page_get_schedule_period; + page_t page; void (*on_page_load)(); void (*on_page_scheduler)(); @@ -89,6 +91,9 @@ static void _page_change(page_t page) { } } +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; } + /*********************************************************************************************************************** * PAGE_IMPL * ***********************************************************************************************************************/ @@ -125,7 +130,7 @@ static void page_main_load() { x = compute_x_pos_by_center(SCREEN_CENTER_X, fontclocklib.widthPixel * 5 + MAIN_PAGE_BATTERY_WIDTH); y = compute_y_pos_by_center(SCREEN_CENTER_Y, fontclocklib.heightPixel + 1); znordic_rtc_gettime(&now); - batterylevel = BoardBattery_get_battery_level(); + batterylevel = battery_mgr_service_get_battery_level(); ssd1306_basic_clear_gram(); @@ -136,9 +141,7 @@ static void page_main_load() { } static void page_main_unload() {} static uint32_t page_main_get_scheduler_period() { return 300; } -static void page_main_tmr_cb() { - page_main_load(); -} +static void page_main_tmr_cb() { page_main_load(); } /*********************************************************************************************************************** * 采样页面 * ***********************************************************************************************************************/ @@ -240,11 +243,11 @@ static uint32_t page_sampling_get_scheduler_period() { return 10; } static void page_sampling_tmr_cb() { static int count = 0; count++; - int capturetime = hwss_has_captured_time_ms(); - int wave_y = (int)hwss_read_val(); - int heartrate = (int)hwss_read_heart_rate(); + int capturetime = ecg_service_has_captured_time(); + int wave_y = (int)ecg_service_get_display_val(); + int heartrate = (int)ecg_service_get_heart_rate(); - samplePage_update_state(capturetime / 1000, wave_y, hwss_read_heart_rate(), count % 30 == 0, count % 10 == 0); + samplePage_update_state(capturetime / 1000, wave_y, heartrate, count % 30 == 0, count % 10 == 0); } /*********************************************************************************************************************** @@ -294,7 +297,6 @@ static void page_charging_page_load() { static void page_charging_page_unload() {} static uint32_t page_charging_page_get_scheduler_period() { return 300; } static void page_charging_page_tmr_cb() { - charging_page__batterylevel += 5; if (charging_page__batterylevel > 100) { charging_page__batterylevel = battery_mgr_service_get_battery_level(); diff --git a/app/src/app_service/display_ctrl_service/font.h b/app/src/app_service/display_ctrl_service/font.h index 179ea34..91069b5 100644 --- a/app/src/app_service/display_ctrl_service/font.h +++ b/app/src/app_service/display_ctrl_service/font.h @@ -1,6 +1,7 @@ // https://www.23bei.com/tool-965.html #include +#include "ssd1306/fontlib.h" #if 0 const uint8_t fontclocklib_code[] = { 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0x80, 0x78, 0x06, // diff --git a/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c b/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c index ba880cb..0704444 100644 --- a/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c +++ b/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306.c @@ -513,7 +513,7 @@ uint8_t ssd1306_write_point(ssd1306_handle_t *handle, uint8_t x, uint8_t y, uint return 0; /* success return 0 */ } #endif - return 0; + } /** diff --git a/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c b/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c index ff1fd58..3b12a67 100644 --- a/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c +++ b/app/src/app_service/display_ctrl_service/ssd1306/driver_ssd1306_basic.c @@ -566,7 +566,7 @@ uint8_t ssd1306_basic_draw_str(uint8_t xs, uint8_t ys, uint8_t *xchange, uint8_t str_iterator_start(&iterator, frontlib->fontCode, str); char *nowchr = NULL; while (true) { - str_iterator_next(&iterator, &nowchr); + str_iterator_next(&iterator, (const char **)&nowchr); if (!nowchr) { break; } @@ -595,8 +595,8 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang level = 100; } - uint8_t xoff = 0; - uint8_t yoff = 0; + //uint8_t xoff = 0; + //uint8_t yoff = 0; int batteryHeaderHigh = 2; int batteryHeaderWidth = 7; @@ -717,6 +717,7 @@ uint8_t ssd1306_basic_draw_battery_level(uint8_t xs, uint8_t ys, uint8_t *xchang *xchange = batteryBodyWidth; *ychange = batteryBodyHigh + batteryHeaderHigh; + return 0; } uint8_t ssd1306_basic_draw_progress(uint8_t xs, uint8_t ys, uint16_t width, uint16_t high, uint16_t markpos, uint16_t progress) { @@ -789,4 +790,5 @@ uint8_t ssd1306_basic_draw_line(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) y1 += sy; } } + return 0; } diff --git a/app/src/app_service/ecg_service/algo/ecg_data_analyszer.c b/app/src/app_service/ecg_service/algo/ecg_data_analyszer.c index 52d507a..6138b2a 100644 --- a/app/src/app_service/ecg_service/algo/ecg_data_analyszer.c +++ b/app/src/app_service/ecg_service/algo/ecg_data_analyszer.c @@ -3,5 +3,5 @@ void ecg_data_analyszer_init() {} void ecg_data_analyszer_push_data(int32_t data) {} -float ecg_data_analyszer_get_display_data() {} -float ecg_data_analyszer_get_heart_rate() {} \ No newline at end of file +float ecg_data_analyszer_get_display_data() { return 50; } +float ecg_data_analyszer_get_heart_rate() { return 50; } \ No newline at end of file diff --git a/app/src/app_service/ecg_service/algo/iflytop_simple_filter.c b/app/src/app_service/ecg_service/algo/iflytop_simple_filter.c index a17498b..9a8d8f9 100644 --- a/app/src/app_service/ecg_service/algo/iflytop_simple_filter.c +++ b/app/src/app_service/ecg_service/algo/iflytop_simple_filter.c @@ -95,12 +95,12 @@ void NOTCHFilter_Init(NOTCHFilter_t *filter, float centerFreqHz, float notchWidt float ww_rps = 2.0 * PI * notchWidthHz; // pre warp center frequency - float w0_pw_rps = (2.0 / sampleTimeS) * tanf(0.5 * w0_rps * sampleTimeS); + float w0_pw_rps = (2.0f / sampleTimeS) * tanf(0.5f * w0_rps * sampleTimeS); // computing filter coefficients - filter->alpha = 4.0 + w0_rps * w0_pw_rps * sampleTimeS * sampleTimeS; - filter->beta = 2.0 * ww_rps * sampleTimeS; + filter->alpha = 4.0f + w0_rps * w0_pw_rps * sampleTimeS * sampleTimeS; + filter->beta = 2.0f * ww_rps * sampleTimeS; // clearing input and output buffers @@ -124,8 +124,8 @@ float NOTCHFilter_Update(NOTCHFilter_t *filter, float vin) { filter->vin[0] = vin; // compute new output - filter->vout[0] = (filter->alpha * filter->vin[0] + 2.0 * (filter->alpha - 8.0) * filter->vin[1] + filter->alpha * filter->vin[2] - - (2.0f * (filter->alpha - 8.0) * filter->vout[1] + (filter->alpha - filter->beta) * filter->vout[2])) / + filter->vout[0] = (filter->alpha * filter->vin[0] + 2.0f * (filter->alpha - 8.0f) * filter->vin[1] + filter->alpha * filter->vin[2] - + (2.0f * (filter->alpha - 8.0f) * filter->vout[1] + (filter->alpha - filter->beta) * filter->vout[2])) / (filter->alpha + filter->beta); return (filter->vout[0]); diff --git a/app/src/app_service/ecg_service/ecg_data_mgr.c b/app/src/app_service/ecg_service/ecg_data_mgr.c index e1fc03c..c96fe4f 100644 --- a/app/src/app_service/ecg_service/ecg_data_mgr.c +++ b/app/src/app_service/ecg_service/ecg_data_mgr.c @@ -1,4 +1,5 @@ #include "ecg_data_mgr.h" +#include static ecg_report_data_t m_report_data_cache; diff --git a/app/src/app_service/ecg_service/ecg_service.c b/app/src/app_service/ecg_service/ecg_service.c index 399226c..eefe3d6 100644 --- a/app/src/app_service/ecg_service/ecg_service.c +++ b/app/src/app_service/ecg_service/ecg_service.c @@ -55,11 +55,11 @@ uint8_t ads129x_send_cmd(uint8_t cmd) { uint8_t rx = 0; ADS129X_CS_RESET(); /* 选中设备 */ - port_ads129x_delay_us(100); + nrf_delay_us(100); rx = port_spi_transmit_receive(cmd); - port_ads129x_delay_us(100); + nrf_delay_us(100); ADS129X_CS_SET(); /* 释放设备 */ return rx; @@ -70,7 +70,7 @@ uint8_t ads129x_rw_reg(uint8_t cmd, uint8_t data) { uint8_t rx = 0; ADS129X_CS_RESET(); /* 选中设备 */ - port_ads129x_delay_us(1); + nrf_delay_us(1); port_spi_transmit_receive(cmd); /* 发送读写指令 */ port_spi_transmit_receive(0X00); /* 只写一个数据 */ @@ -80,7 +80,7 @@ uint8_t ads129x_rw_reg(uint8_t cmd, uint8_t data) { else rx = port_spi_transmit_receive(data); /* 写入数值 */ - port_ads129x_delay_us(1); + nrf_delay_us(1); ADS129X_CS_SET(); /* 释放设备 */ return rx; @@ -91,19 +91,19 @@ void ads129x_write_multiregs(uint8_t reg, uint8_t* ch, uint8_t size) { uint8_t i; ADS129X_CS_RESET(); /* 选中设备 */ - port_ads129x_delay_us(100); + nrf_delay_us(100); port_spi_transmit_receive(ADS129X_COMMAND_WREG | reg); - port_ads129x_delay_us(100); + nrf_delay_us(100); port_spi_transmit_receive(size - 1); for (i = 0; i < size; i++) { - port_ads129x_delay_us(100); + nrf_delay_us(100); port_spi_transmit_receive(*ch); ch++; } - port_ads129x_delay_us(100); + nrf_delay_us(100); ADS129X_CS_SET(); } @@ -112,19 +112,19 @@ void ads129x_read_multiregs(uint8_t reg, uint8_t* ch, uint8_t size) { uint8_t i; ADS129X_CS_RESET(); /* 选中设备 */ - port_ads129x_delay_us(100); + nrf_delay_us(100); port_spi_transmit_receive(ADS129X_COMMAND_RREG | reg); - port_ads129x_delay_us(100); + nrf_delay_us(100); port_spi_transmit_receive(size - 1); for (i = 0; i < size; i++) { - port_ads129x_delay_us(100); + nrf_delay_us(100); *ch = port_spi_transmit_receive(0); ch++; } - port_ads129x_delay_us(100); + nrf_delay_us(100); ADS129X_CS_SET(); } @@ -167,10 +167,10 @@ void ads129x_read_data(ads129x_capture_data_t* capture_data) { uint8_t rddata[9]; ADS129X_CS_RESET(); /* 选中设备 */ - port_ads129x_delay_us(10); + nrf_delay_us(10); port_spi_transmit_receive(ADS129X_COMMAND_RDATA); - port_ads129x_delay_us(1); + nrf_delay_us(1); for (int i = 0; i < 9; i++) { rddata[i] = port_spi_transmit_receive(0); } @@ -258,16 +258,16 @@ void ecg_service_load() { ADS129X_REST_RESET(); ADS129X_START_RESET(); - port_ads129x_delay_ms(1000); + nrf_delay_ms(1000); ADS129X_REST_SET(); - port_ads129x_delay_ms(100); /* 硬件复位 */ + nrf_delay_ms(100); /* 硬件复位 */ ads129x_send_cmd(ADS129X_COMMAND_SDATAC); /* 软件复位,并停止连续读状态 */ - port_ads129x_delay_ms(100); + nrf_delay_ms(100); ads129x_send_cmd(ADS129X_COMMAND_RESET); - port_ads129x_delay_ms(1000); + nrf_delay_ms(1000); ads129x_send_cmd(ADS129X_COMMAND_SDATAC); - port_ads129x_delay_ms(100); + nrf_delay_ms(100); static ads129x_regs_t regcache; ads129x_readback_regs(®cache); @@ -296,13 +296,26 @@ void ecg_service_unload() { nrf_gpio_cfg_default(ADS1291_READY_PIN); } +static uint32_t ecg_service_captured_time = 0; + void ecg_service_start_capture() { // ecg_data_mgr_clear_buffer(); ads129x_send_cmd(ADS129X_COMMAND_START); /* 发送开始数据转换(等效于拉高START引脚) */ + ecg_service_captured_time = znordic_getpower_on_ms(); } void ecg_service_stop_capture() { // ads129x_send_cmd(ADS129X_COMMAND_STOP); /* 发送停止数据转换(等效于拉低START引脚) */ } +uint32_t ecg_service_has_captured_time() { return znordic_haspassed_ms(ecg_service_captured_time); } void ecg_service_subic_write_reg(uint8_t addr, uint8_t val) { ads129x_rw_reg(ADS129X_COMMAND_WREG | addr, val); } 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(); +} diff --git a/app/src/app_service/ecg_service/ecg_service.h b/app/src/app_service/ecg_service/ecg_service.h index f6459a9..d890698 100644 --- a/app/src/app_service/ecg_service/ecg_service.h +++ b/app/src/app_service/ecg_service/ecg_service.h @@ -28,6 +28,9 @@ 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); diff --git a/app/src/app_service/light_ctrl.c b/app/src/app_service/light_ctrl.c index 19b1065..d4e2f07 100644 --- a/app/src/app_service/light_ctrl.c +++ b/app/src/app_service/light_ctrl.c @@ -37,7 +37,7 @@ static void light_ctrl_effect_tmr_handler(void* p_context) { // } } else if (m_led_green_light_effect == kLightEffect_quickFlash) { if (BLINK_PERIOD_MS * m_blink_cnt >= QUICK_BLINK_PERIOD_MS) { - board_light_toggle_green_light_state(); + light_ctrl_toggle_green_light_state(); m_blink_cnt = 0; return; } diff --git a/app/src/one_conduction_main.c b/app/src/one_conduction_main.c index e41948e..e5e4b1d 100644 --- a/app/src/one_conduction_main.c +++ b/app/src/one_conduction_main.c @@ -136,12 +136,12 @@ void one_conduction_process_rx_packet(uint8_t* rx, int len) { receipt->drop_state0 = (0); receipt->drop_state1 = 0x00; receipt->device_state0.sampling_state = (zapp_state_machine_now_state() == kdevice_state_sampling); - receipt->device_state0.preview_state = zapp_get_gstate()->is_preview; - receipt->device_state0.low_battery = (BatteryMgrService_get_battery_level() < APP_LOW_BATTERY_WARNING_LIMIT); + receipt->device_state0.report_state = 0; + receipt->device_state0.low_battery = (0 < APP_LOW_BATTERY_WARNING_LIMIT); receipt->device_state0.full_storge = false; receipt->device_state1 = 0; - receipt->powerlevel = BatteryMgrService_get_battery_level(); + receipt->powerlevel = battery_mgr_service_get_battery_level(); receipt->storage_item_num = 0; zdatachannel_data_send2(bletxbuf, sendlen);