diff --git a/app/src/app_basic_service/basic/event.h b/app/src/app_basic_service/basic/event.h index 3357438..b2d6bbf 100644 --- a/app/src/app_basic_service/basic/event.h +++ b/app/src/app_basic_service/basic/event.h @@ -34,7 +34,6 @@ typedef struct { union { struct { uint32_t frameIndex; - uint8_t leadoffstate; ecg_report_data_t* ecgData; } ecg_data_report_event; } val; diff --git a/app/src/app_basic_service/device_version_info_mgr.c b/app/src/app_basic_service/device_version_info_mgr.c index 32bfeb6..1444946 100644 --- a/app/src/app_basic_service/device_version_info_mgr.c +++ b/app/src/app_basic_service/device_version_info_mgr.c @@ -74,7 +74,7 @@ uint16_t device_info_read_firmware_version(void) { return FIRMWARE_VERSION; } uint16_t device_info_read_hardware_version(void) { return HARDWARE_VERSION; } void device_info_write_active_flag(bool val) { - uint32_t data; + uint32_t data = 0x12345678; nrf_fstorage_write(&fstorage, fstorage.start_addr, &data, sizeof(data), NULL); } bool device_info_get_active_flag() { diff --git a/app/src/app_service/ecg_service/ecg_service.c b/app/src/app_service/ecg_service/ecg_service.c index bb4259b..514e643 100644 --- a/app/src/app_service/ecg_service/ecg_service.c +++ b/app/src/app_service/ecg_service/ecg_service.c @@ -13,6 +13,7 @@ static nrf_drv_spi_t ads129x_spi = NRF_DRV_SPI_INSTANCE(ADS1291_SPI_INSTANCE); // global static nrf_drv_spi_config_t ads129x_spi_config; static bool m_testmode_flag; +static bool m_report_data_in_raw_mode_flag; /*********************************************************************************************************************** * PRIVATE_FUNC * @@ -200,8 +201,11 @@ static void ads1291_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t a // 上报 one_frame_t frame; - frame.data = ecg_algo_get_report_data(); - // frame.data = capture_data.ch1data; + if (m_report_data_in_raw_mode_flag) { + frame.data = capture_data.ch1data; + } else { + frame.data = ecg_algo_get_report_data(); + } frame.leadoff = capture_data.loffstate; ecg_data_mgr_push_one_frame(frame); } @@ -348,3 +352,5 @@ void ecg_service_set_in_test_mode(bool testmode) { ZLOGI("ecg_service_set_in_test_mode %d", testmode); m_testmode_flag = testmode; } + +void ecg_service_set_report_data_in_raw_mode(bool rawmode) { m_report_data_in_raw_mode_flag = rawmode; } diff --git a/app/src/app_service/ecg_service/ecg_service.h b/app/src/app_service/ecg_service/ecg_service.h index ca6484c..6d84bec 100644 --- a/app/src/app_service/ecg_service/ecg_service.h +++ b/app/src/app_service/ecg_service/ecg_service.h @@ -36,3 +36,4 @@ void ecg_service_subic_write_reg(uint8_t addr, uint8_t val); uint8_t ecg_service_subic_read_reg(uint8_t addr); void ecg_service_set_in_test_mode(bool testmode); +void ecg_service_set_report_data_in_raw_mode(bool rawmode); diff --git a/app/src/aproject_config/config.h b/app/src/aproject_config/config.h index a15b3d8..0fff750 100644 --- a/app/src/aproject_config/config.h +++ b/app/src/aproject_config/config.h @@ -7,7 +7,7 @@ #define CATEGORY "M1003" // 单导联 #define MANUFACTURER_NAME "iflytop" -#define FIRMWARE_VERSION (10) +#define FIRMWARE_VERSION (1) #define BLESTACK_VERSION 1 #define BOOTLOADER_VERSION 1 #define HARDWARE_VERSION (1) @@ -32,7 +32,7 @@ #define MAX_STORAGE_SIZE (MAX_STORAGE_TIMEOUT_S * 400) // 存储最大限制为 (256-8)kbyte #define MAX_FILE_NUM 10 // 最多存储条目数 #define SAMPLE_RATE 500 // 采样率 -#define SAMPLE_PRECISION 12 // 采样精度 +#define SAMPLE_PRECISION 16 // 采样精度 #define AUTOMATIC_SLEEP_TIME 30000 // 开机后自动休眠时间 #define SAMPLE_MIN_TIME_S (30.0) // 采样最小时间 #define LITTLE_DATA_BLOCK_FRAME_NUM 50 // 每次多少帧上报一次 diff --git a/app/src/ble_data_processer_utils.c b/app/src/ble_data_processer_utils.c index b884016..047556f 100644 --- a/app/src/ble_data_processer_utils.c +++ b/app/src/ble_data_processer_utils.c @@ -42,12 +42,16 @@ void report_ecg_data(app_event_t* data) { reportpacket->frame_index = 0; reportpacket->frame_type = kifyhrs_pt_report; reportpacket->sample_data_index = data->val.ecg_data_report_event.frameIndex; - reportpacket->leadoff_state = data->val.ecg_data_report_event.leadoffstate; reportpacket->sample_data_num = ECG_DATA_REPORT_FRAME_NUM; for (int i = 0; i < ECG_DATA_REPORT_FRAME_NUM; i++) { reportpacket->frame[i] = data->val.ecg_data_report_event.ecgData->frame[i].data; } + uint8_t leadoffstate = 0; + for (int i = 0; i < ECG_DATA_REPORT_FRAME_NUM; i++) { + leadoffstate |= data->val.ecg_data_report_event.ecgData->frame[i].leadoff; + } + zdatachannel_data_send2(blereportbuf, // sizeof(m1003_heartrate_report_packet_t) + ECG_DATA_REPORT_FRAME_NUM * sizeof(reportpacket->frame[0])); } diff --git a/app/src/one_conduction_main.c b/app/src/one_conduction_main.c index b5980b3..755f3ae 100644 --- a/app/src/one_conduction_main.c +++ b/app/src/one_conduction_main.c @@ -190,6 +190,12 @@ void one_conduction_process_rx_packet(uint8_t* rx, int len) { send_success_receipt(rxheader, 0); } + else if (cmd == ify_hrs_cmd_set_ecg_report_data_in_raw_mode) { + int32_t testmode = *(int32_t*)rxheader->data; + ecg_service_set_report_data_in_raw_mode(testmode); + send_success_receipt(rxheader, 0); + } + else { send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); } @@ -225,7 +231,7 @@ void on_state_change(device_state_t from, device_state_t to) { } else if (from == kstate_mainPage) { } else if (from == kstate_capture) { ecg_service_stop_capture(); - beep_set_effect(STOP_SAMPLE_EFFECT); + beep_set_effect(STOP_SAMPLE_EFFECT); } else if (from == kstate_charging) { } @@ -257,7 +263,7 @@ void on_state_change(device_state_t from, device_state_t to) { } else if (to == kstate_capture) { dsp_mgr_change_page(kpage_sampling); ecg_service_start_capture(); - beep_set_effect(START_SAMPLE_EFFECT); + beep_set_effect(START_SAMPLE_EFFECT); } else if (to == kstate_charging) { dsp_mgr_change_page(kpage_charging_page); @@ -271,7 +277,7 @@ void on_state_change(device_state_t from, device_state_t to) { // extern int32_t maxval; // extern int32_t minval; // extern int32_t nowval100; -void on_zapp_ebus_event(void* p_event_data, uint16_t event_size) { +void on_zapp_ebus_event(void* p_event_data, uint16_t event_size) { if (!p_event_data) return; app_event_t* p_event = (app_event_t*)p_event_data; diff --git a/ify_hrs_protocol b/ify_hrs_protocol index a1fda58..a532e43 160000 --- a/ify_hrs_protocol +++ b/ify_hrs_protocol @@ -1 +1 @@ -Subproject commit a1fda58c30f6bb892c9f503280b3896c67e00dda +Subproject commit a532e43847aa8dd525f86748104a496ec561e841