diff --git a/app/config/sdk_config.h b/app/config/sdk_config.h index aaa5b2e..0286b42 100644 --- a/app/config/sdk_config.h +++ b/app/config/sdk_config.h @@ -4,5 +4,6 @@ #define NRF_LOG_BACKEND_UART_ENABLED 1 #define NRF_LOG_BACKEND_UART_TX_PIN 41 #define APP_TIMER_CONFIG_USE_SCHEDULER 1 +#define NRF_LOG_BACKEND_UART_BAUDRATE 268435456 #include "libznordic/zsdk_config/zsdk_ble_slave_config.h" \ No newline at end of file diff --git a/app/src/aproject_config/config.h b/app/src/aproject_config/config.h index 6974224..5b2e5e2 100644 --- a/app/src/aproject_config/config.h +++ b/app/src/aproject_config/config.h @@ -20,12 +20,10 @@ #define BEEP_PIN 1 #define BEEP_PWM_INSTANCE 0 - #define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 #define BATTERY_ADC_CHANNEL 1 // 不重复即可 #define BATTERY_CHARGE_DETECT_PIN 6 - /** * @brief */ @@ -37,7 +35,7 @@ #define SAMPLE_PRECISION 12 // 采样精度 #define AUTOMATIC_SLEEP_TIME 30000 // 开机后自动休眠时间 #define SAMPLE_MIN_TIME_S (30.0) // 采样最小时间 -#define LITTLE_DATA_BLOCK_FRAME_NUM 5 // 每次多少帧上报一次 +#define LITTLE_DATA_BLOCK_FRAME_NUM 50 // 每次多少帧上报一次 #define KEEP_STILL_OVERTIME_MS_1P5 1500 // 保持静止超时时间的1/6 diff --git a/app/src/basic_service/app_event.h b/app/src/basic_service/app_event.h index 0c4d493..587ef3e 100644 --- a/app/src/basic_service/app_event.h +++ b/app/src/basic_service/app_event.h @@ -17,7 +17,7 @@ typedef enum { kevent_capture_little_data_block_event, // 单次采样数据回调 } app_event_type_t; -typedef uint16_t one_frame_t; +typedef int32_t one_frame_t; typedef struct { app_event_type_t eventType; diff --git a/app/src/board/ads129x/ads129x.c b/app/src/board/ads129x/ads129x.c index 1e65c69..65364c3 100644 --- a/app/src/board/ads129x/ads129x.c +++ b/app/src/board/ads129x/ads129x.c @@ -177,14 +177,14 @@ static bool ads129x_write_reg(ads129x_regs_t* writeval) { * EXTERN * ***********************************************************************************************************************/ void ads129x_read_data_loop() { - app_timer_pause(); - app_sched_execute(); - - ads129x_capture_data_t capture_data; - while (true) { - ads129x_read_data(&capture_data); - ZLOGI("%d {%d} %x", ADS129X_DRDY_GET(), capture_data.ch1data, capture_data.loffstate); - } + // app_timer_pause(); + + // ads129x_capture_data_t capture_data; + // while (true) { + // ads129x_read_data(&capture_data); + // ZLOGI("%d {%d} %x", ADS129X_DRDY_GET(), capture_data.ch1data, capture_data.loffstate); + // znordic_force_flush_log(); + // } } uint8_t ads129x_init(ads129x_cfg_t* cfg) { diff --git a/app/src/board/app_board.c b/app/src/board/app_board.c index 7ffa098..19352ca 100644 --- a/app/src/board/app_board.c +++ b/app/src/board/app_board.c @@ -6,6 +6,7 @@ /*********************************************************************************************************************** * CFG * ***********************************************************************************************************************/ +APP_TIMER_DEF(m_module_timer); #define ADS1291_SPI_INSTANCE 2 @@ -27,7 +28,7 @@ do { \ ret_code_t ecode = (exptr); \ if (ecode != NRF_SUCCESS) { \ - ZLOGE("%s:%d ZERROR_CHECK(%s) fail:%d", __FILE__, __LINE__, #exptr, ecode); \ + ZLOGE("%s:%d ZERROR_CHECK(%s) fail:%x", __FILE__, __LINE__, #exptr, ecode); \ } \ } while (0) @@ -70,14 +71,16 @@ static void __ads1291_init() { znrf_gpio_cfg_output(ADS1291_START_PIN, NRF_GPIO_PIN_NOPULL); znrf_gpio_cfg_output(ADS1291_SPI_CS0_PIN, NRF_GPIO_PIN_NOPULL); - // --------------------------------------------------------------------------- + ZERROR_CHECK(nrfx_gpiote_init()); { nrf_gpio_cfg_input(ADS1291_READY_PIN, NRF_GPIO_PIN_PULLUP); nrf_drv_gpiote_in_config_t inConfig = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false); // inConfig.pull = NRF_GPIO_PIN_PULLUP; // 默认上拉 inConfig.sense = NRF_GPIOTE_POLARITY_HITOLO; // 下降沿触发 - nrfx_gpiote_in_init(ADS1291_READY_PIN, &inConfig, ads1291_ready_pin_irq); + ZERROR_CHECK(nrfx_gpiote_in_init(ADS1291_READY_PIN, &inConfig, ads1291_ready_pin_irq)); + nrfx_gpiote_in_event_enable(ADS1291_READY_PIN, true); } + static ads129x_cfg_t ads129x_cfg = { .cspin = ADS1291_SPI_CS0_PIN, .drdypin = ADS1291_READY_PIN, @@ -91,12 +94,15 @@ static void __ads1291_init() { * EXTERN * ***********************************************************************************************************************/ void app_board_init() { - nrfx_gpiote_init(); + // nrfx_gpiote_init(); __ads1291_init(); BoardBattery_init(); BoardBattery_load(); board_power_mgr_init(); board_power_mgr_main_power_supply_set(true); + + // ZERROR_CHECK(app_timer_create(&m_module_timer, APP_TIMER_MODE_REPEATED, module_tmr_cb)); + // ZERROR_CHECK(app_timer_start(m_module_timer, APP_TIMER_TICKS(100), NULL)); } void app_board_reg_irq_listener(app_board_irq_event_t event, on_irq_t listener) { diff --git a/app/src/board/board_beep_ctrl.c b/app/src/board/board_beep_ctrl.c index 4865c84..82bc8b8 100644 --- a/app/src/board/board_beep_ctrl.c +++ b/app/src/board/board_beep_ctrl.c @@ -1,6 +1,6 @@ #include "board_beep_ctrl.h" #define BEEP_TIMER_INTERVAL (150) -#if 1 +#if 0 APP_TIMER_DEF(m_beep_tmr); // static nrf_drv_pwm_t m_beep_pwm0 = NRF_DRV_PWM_INSTANCE(BEEP_PWM_INSTANCE); @@ -128,6 +128,23 @@ void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) { } #else +static void beep_tmr_handler(void *context) {} +void BoardBeepCtrl_init(void) {} + +void BoardBeepCtrl_load() { // + +} +void BoardBeepCtrl_unload() { + +} + +void BoardBeepCtrl_set(uint8_t state) { + +} + +void BoardBeepCtrl_setEffect(BoardBeepEffect_t effect) { + +} #endif \ No newline at end of file diff --git a/app/src/one_conduction_main.c b/app/src/one_conduction_main.c index 692da7c..bb0f588 100644 --- a/app/src/one_conduction_main.c +++ b/app/src/one_conduction_main.c @@ -283,22 +283,16 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { * 采样数据存储 * *******************************************************************************/ if (p_event->eventType == kevent_capture_256data_event) { - if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) { - sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256); - } + // if (hwss_has_captured_time_ms() <= (MAX_STORAGE_TIMEOUT_S * 1000)) { + // sample_data_mgr_write(m_cur_fd, p_event->val.capture_data_cache, 256); + // } } /******************************************************************************* * 实时采样数据上报 * *******************************************************************************/ if (p_event->eventType == kevent_capture_little_data_block_event) { // 单帧实时上报 - ZASSERT(LITTLE_DATA_BLOCK_FRAME_NUM == 5); - ble_cmder_try_report_one_sample_data(p_event->val.little_data_block.frameIndex, // - p_event->val.little_data_block.data[0], // - p_event->val.little_data_block.data[1], // - p_event->val.little_data_block.data[2], // - p_event->val.little_data_block.data[3], // - p_event->val.little_data_block.data[4]); + ble_cmder_try_report_one_sample_data(p_event); } /******************************************************************************* diff --git a/app/src/service/ble_cmd_processer/ble_cmd_process_service.c b/app/src/service/ble_cmd_processer/ble_cmd_process_service.c index 5dd5433..76ed49c 100644 --- a/app/src/service/ble_cmd_processer/ble_cmd_process_service.c +++ b/app/src/service/ble_cmd_processer/ble_cmd_process_service.c @@ -14,8 +14,8 @@ APP_TIMER_DEF(m_record_upload_tmr); // 数据上报定时器 APP_TIMER_DEF(m_record_upload_finish_packet_report_tmr); // 数据上报完成上报定时器 -static uint8_t txbuf[128]; -static uint8_t reportbuf[128]; +static uint8_t txbuf[250]; +static uint8_t reportbuf[250]; static bool m_realtime_report_state = false; static int m_upload_record_state = 0; static uint32_t m_upload_data_state_enter_tp = 0; @@ -61,7 +61,7 @@ int ble_stop_realtime_report() { m_realtime_report_state = false; return 0; } -void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, uint16_t data1, uint16_t data2, uint16_t data3, uint16_t data4) { +void ble_cmder_try_report_one_sample_data(app_event_t* event) { if (!m_realtime_report_state) { return; } @@ -70,20 +70,27 @@ void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, u reportpacket->cmd = ify_hrs_report_heartrate_data; reportpacket->frame_index = 0; reportpacket->frame_type = kifyhrs_pt_report; - reportpacket->sample_data_index = frameIndex; - - reportpacket->data[0] = (data0 >> 0) & 0xFF; // 第一帧数据 - reportpacket->data[1] = (data0 >> 8) & 0xFF; // 第一帧数据 - reportpacket->data[2] = (data1 >> 0) & 0xFF; // 第二帧数据 - reportpacket->data[3] = (data1 >> 8) & 0xFF; // 第二帧数据 - reportpacket->data[4] = (data2 >> 0) & 0xFF; // 第三帧数据 - reportpacket->data[5] = (data2 >> 8) & 0xFF; // 第三帧数据 - reportpacket->data[6] = (data3 >> 0) & 0xFF; // 第四帧数据 - reportpacket->data[7] = (data3 >> 8) & 0xFF; // 第四帧数据 - reportpacket->data[8] = (data4 >> 0) & 0xFF; // 第五帧数据 - reportpacket->data[9] = (data4 >> 8) & 0xFF; // 第五帧数据 - - uint16_t sendlen = sizeof(heartrate_report_packet_t) + 10; + reportpacket->sample_data_index = event->val.little_data_block.frameIndex; + + for (int i = 0; i < LITTLE_DATA_BLOCK_FRAME_NUM; i++) { + reportpacket->data[i * 4] = (event->val.little_data_block.data[i] >> 0) & 0xFF; + reportpacket->data[i * 4 + 1] = (event->val.little_data_block.data[i] >> 8) & 0xFF; + reportpacket->data[i * 4 + 2] = (event->val.little_data_block.data[i] >> 16) & 0xFF; + reportpacket->data[i * 4 + 3] = (event->val.little_data_block.data[i] >> 24) & 0xFF; + } + + STATIC_ASSERT(sizeof(one_frame_t) == 4); + + // reportpacket->data[2] = (data1 >> 0) & 0xFF; // 第二帧数据 + // reportpacket->data[3] = (data1 >> 8) & 0xFF; // 第二帧数据 + // reportpacket->data[4] = (data2 >> 0) & 0xFF; // 第三帧数据 + // reportpacket->data[5] = (data2 >> 8) & 0xFF; // 第三帧数据 + // reportpacket->data[6] = (data3 >> 0) & 0xFF; // 第四帧数据 + // reportpacket->data[7] = (data3 >> 8) & 0xFF; // 第四帧数据 + // reportpacket->data[8] = (data4 >> 0) & 0xFF; // 第五帧数据 + // reportpacket->data[9] = (data4 >> 8) & 0xFF; // 第五帧数据 + + uint16_t sendlen = sizeof(heartrate_report_packet_t) + LITTLE_DATA_BLOCK_FRAME_NUM * 4; zdatachannel_data_send2(reportbuf, sendlen); return; } diff --git a/app/src/service/ble_cmd_processer/ble_cmd_process_service.h b/app/src/service/ble_cmd_processer/ble_cmd_process_service.h index 1b9658c..ce20220 100644 --- a/app/src/service/ble_cmd_processer/ble_cmd_process_service.h +++ b/app/src/service/ble_cmd_processer/ble_cmd_process_service.h @@ -9,7 +9,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len); void ble_cmder_start_adv(); void ble_cmder_stop_adv(); -void ble_cmder_try_report_one_sample_data(uint32_t frameIndex, uint16_t data0, uint16_t data1, uint16_t data2, uint16_t data3, uint16_t data4); +void ble_cmder_try_report_one_sample_data(app_event_t* event); void ble_cmder_try_report_sensor_drop_event(uint8_t dropstate0, uint8_t dropstate1); void ble_cmder_report_upload_finish_event(uint32_t sumcheckcode); void ble_cmder_report_sample_finish_event(); diff --git a/app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c b/app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c index 53b0497..367e652 100644 --- a/app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c +++ b/app/src/service/heart_wave_sample_service/heart_wave_sample_data_pre_process.c @@ -8,5 +8,5 @@ void hwsd_pre_processer_process(one_frame_t framdata) { // m_displaydata = framdata; } -uint16_t hwsd_pre_processer_get_display_data() { return m_displaydata; } +one_frame_t hwsd_pre_processer_get_display_data() { return m_displaydata; } one_frame_t hwsd_pre_processer_get_storage_data() { return m_datacache; } diff --git a/app/src/service/heart_wave_sample_service/heart_wave_sample_service.c b/app/src/service/heart_wave_sample_service/heart_wave_sample_service.c index 53aecea..e478b95 100644 --- a/app/src/service/heart_wave_sample_service/heart_wave_sample_service.c +++ b/app/src/service/heart_wave_sample_service/heart_wave_sample_service.c @@ -18,18 +18,18 @@ typedef enum { static capture_state_t m_prepare_capture_state = kidle; static uint32_t m_start_capture_tp; static void on_ads129x_ready_irq(app_board_irq_event_t event) { - // static ads129x_capture_data_t capture_data; - // ads129x_read_data(&capture_data); - // ZLOGI("1"); - // static uint16_t data; - // data += 100; + static ads129x_capture_data_t capture_data; + ads129x_read_data(&capture_data); + hwsd_mgr_push_one_frame(capture_data.ch1data); + // static int32_t data; + // data += 1000; + // if (data >= 60000) { + // data = -60000; + // } // hwsd_mgr_push_one_frame(data); } -void hwss_init(void) { - // - app_board_reg_irq_listener(kon_irq_ads1291_ready_pin, on_ads129x_ready_irq); -} +void hwss_init(void) { app_board_reg_irq_listener(kon_irq_ads1291_ready_pin, on_ads129x_ready_irq); } void hwss_start_prepare_capture(void) { m_start_capture_tp = znordic_getpower_on_s();