diff --git a/.vscode/settings.json b/.vscode/settings.json index 96ba328..ecc924a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -88,7 +88,8 @@ "config.h": "c", "stdarg.h": "c", "nrf_uarte.h": "c", - "heart_rate_sensor_protocol.h": "c" + "heart_rate_sensor_protocol.h": "c", + "ble_cmd_process_service.h": "c" }, "files.encoding": "gbk" } \ No newline at end of file diff --git a/app/src/basic/zble_module.c b/app/src/basic/zble_module.c index 31b4cd7..6439140 100644 --- a/app/src/basic/zble_module.c +++ b/app/src/basic/zble_module.c @@ -7,7 +7,7 @@ #include "znordic.h" /******************************************************************************* - * 广播包配置 * + * 广播包配? * *******************************************************************************/ #define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS) /**< Minimum acceptable connection interval (20 ms), Connection interval uses 1.25 ms units. */ #define MAX_CONN_INTERVAL MSEC_TO_UNITS(75, UNIT_1_25_MS) /**< Maximum acceptable connection interval (75 ms), Connection interval uses 1.25 ms units. */ @@ -39,24 +39,7 @@ NRF_BLE_GATT_DEF(m_gatt); /**< GATT module instance. */ static uint16_t m_conn_handle = BLE_CONN_HANDLE_INVALID; /**< 当前连接句柄 */ static uint16_t m_mtu_size = BLE_GATT_ATT_MTU_DEFAULT - 3; -/**@brief Function for putting the chip into sleep mode. - * - * @note This function will not return. - */ -static void sleep_mode_enter(void) { -#if 0 - uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE); - ZERROR_CHECK(err_code); - - // Prepare wakeup buttons. - err_code = bsp_btn_ble_sleep_mode_prepare(); - ZERROR_CHECK(err_code); - // Go to system-off mode (this function will not return; wakeup will cause a reset). - err_code = sd_power_system_off(); - ZERROR_CHECK(err_code); -#endif -} static void ble_evt_handler(ble_evt_t const* p_ble_evt, void* p_context) { uint32_t err_code; @@ -126,7 +109,7 @@ static void on_conn_params_evt(ble_conn_params_evt_t* p_evt) { } static void conn_params_error_handler(uint32_t nrf_error) { APP_ERROR_HANDLER(nrf_error); } static void on_adv_evt(ble_adv_evt_t ble_adv_evt) { - uint32_t err_code; + switch (ble_adv_evt) { case BLE_ADV_EVT_FAST: // err_code = bsp_indication_set(BSP_INDICATE_ADVERTISING); @@ -155,11 +138,11 @@ void zble_module_stop_adv() { void zble_module_init(zble_module_cfg_t* cfg) { /** * @brief - * 初始化蓝牙协议栈,并注册蓝牙事件处理函数,固定代码,勿修改 + * 初始化蓝牙协议栈,并注册蓝牙事件处理函数,固定代码,勿修? */ { NRF_SDH_BLE_OBSERVER(m_ble_observer, 3, ble_evt_handler, NULL); } /******************************************************************************* - * GAP初始化 * + * GAP初始? * *******************************************************************************/ { uint32_t err_code; @@ -183,7 +166,7 @@ void zble_module_init(zble_module_cfg_t* cfg) { } /******************************************************************************* - * GATT 初始化 * + * GATT 初始? * *******************************************************************************/ { ret_code_t err_code; @@ -196,14 +179,14 @@ void zble_module_init(zble_module_cfg_t* cfg) { } /******************************************************************************* - * 蓝牙服务初始化 * + * 蓝牙服务初始? * *******************************************************************************/ { if (cfg->on_service_init) cfg->on_service_init(); } /******************************************************************************* - * 广播初始化 * + * 广播初始? * *******************************************************************************/ { uint32_t err_code; @@ -230,7 +213,7 @@ void zble_module_init(zble_module_cfg_t* cfg) { ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG); } /******************************************************************************* - * 连接参数初始化 * + * 连接参数初始? * *******************************************************************************/ { uint32_t err_code; diff --git a/app/src/basic/zdatachannel_service.c b/app/src/basic/zdatachannel_service.c index 3868763..9636926 100644 --- a/app/src/basic/zdatachannel_service.c +++ b/app/src/basic/zdatachannel_service.c @@ -80,11 +80,13 @@ void zdatachannel_on_ble_evt(ble_evt_t const *p_ble_evt, void *p_context) { switch (p_ble_evt->header.evt_id) { case BLE_GAP_EVT_CONNECTED: + ZLOGI("BLE_GAP_EVT_CONNECTED"); p_nus->conn_handle = p_ble_evt->evt.gap_evt.conn_handle; p_nus->cmd_tx_channel_is_notification_enabled = notification_enable(p_ble_evt->evt.gap_evt.conn_handle, p_nus->cmd_tx_handles.cccd_handle); p_nus->datablock_tx_channel_is_notification_enabled = notification_enable(p_ble_evt->evt.gap_evt.conn_handle, p_nus->cmd_tx_handles.cccd_handle); break; case BLE_GAP_EVT_DISCONNECTED: + ZLOGI("BLE_GAP_EVT_DISCONNECTED"); p_nus->conn_handle = BLE_CONN_HANDLE_INVALID; break; case BLE_GATTS_EVT_WRITE: @@ -96,6 +98,8 @@ void zdatachannel_on_ble_evt(ble_evt_t const *p_ble_evt, void *p_context) { } } +bool zdatachannel_is_connected() { return p_datachannel->conn_handle != BLE_CONN_HANDLE_INVALID; } + uint32_t zdatachannel_init(zdatachannel_t *p_nus, zdatachannel_init_t const *p_nus_init) { p_datachannel = p_nus; ret_code_t err_code; @@ -174,7 +178,6 @@ uint32_t zdatachannel_init(zdatachannel_t *p_nus, zdatachannel_init_t const *p_n } uint32_t zdatachannel_data_send(uint8_t *p_data, uint16_t *p_length) { - ble_gatts_hvx_params_t hvx_params; if (!p_datachannel->cmd_tx_channel_is_notification_enabled) { @@ -196,7 +199,6 @@ uint32_t zdatachannel_data_send(uint8_t *p_data, uint16_t *p_length) { } uint32_t zdatachannel_block_data_send(uint8_t *p_data, uint16_t *p_length) { - ble_gatts_hvx_params_t hvx_params; if (!p_datachannel->datablock_tx_channel_is_notification_enabled) { diff --git a/app/src/basic/zdatachannel_service.h b/app/src/basic/zdatachannel_service.h index bdd9d7f..094f9e5 100644 --- a/app/src/basic/zdatachannel_service.h +++ b/app/src/basic/zdatachannel_service.h @@ -76,6 +76,8 @@ struct zdatachannel_s { uint32_t zdatachannel_init(zdatachannel_t* p_nus, zdatachannel_init_t const* p_nus_init); void zdatachannel_on_ble_evt(ble_evt_t const* p_ble_evt, void* p_context); +bool zdatachannel_is_connected(); + uint32_t zdatachannel_data_send(uint8_t* p_data, uint16_t* p_length); static inline uint32_t zdatachannel_data_send2(uint8_t* p_data, uint16_t p_length){ diff --git a/app/src/one_conduction/ble_cmd_process_service.c b/app/src/one_conduction/ble_cmd_process_service.c index 0ae27ec..271cce4 100644 --- a/app/src/one_conduction/ble_cmd_process_service.c +++ b/app/src/one_conduction/ble_cmd_process_service.c @@ -2,13 +2,16 @@ #include "basic/device_info_mgr.h" #include "basic/heart_rate_sensor_protocol.h" +#include "basic/zble_module.h" #include "basic/zdatachannel_service.h" #include "config.h" #include "one_conduction_board.h" #include "sample_data_manager.h" + static uint8_t txbuf[128]; -void ble_cmder_try_start_adv() {} +void ble_cmder_start_adv() { zble_module_start_adv(); } +void ble_cmder_stop_adv() { zble_module_stop_adv(); } int ble_start_realtime_report() { return 0; } int ble_stop_realtime_report() { return 0; } diff --git a/app/src/one_conduction/ble_cmd_process_service.h b/app/src/one_conduction/ble_cmd_process_service.h index 5fb269b..a14c427 100644 --- a/app/src/one_conduction/ble_cmd_process_service.h +++ b/app/src/one_conduction/ble_cmd_process_service.h @@ -4,4 +4,5 @@ #include "device_state.h" void ble_cmder_process_rx(uint8_t* rx, int len); -void ble_cmder_try_start_adv(); \ No newline at end of file +void ble_cmder_start_adv(); +void ble_cmder_stop_adv(); \ No newline at end of file diff --git a/app/src/one_conduction/one_conduction_main.c b/app/src/one_conduction/one_conduction_main.c index 279ee68..b90ae08 100644 --- a/app/src/one_conduction/one_conduction_main.c +++ b/app/src/one_conduction/one_conduction_main.c @@ -3,6 +3,7 @@ #include "app_event.h" #include "basic/zble_module.h" #include "basic/zdatachannel_service.h" +#include "ble_cmd_process_service.h" #include "config.h" #include "display_manager.h" #include "heart_wave_sample_service.h" @@ -56,22 +57,24 @@ static void m_plod_state_event_detect_tmr_cb(void* p_context) { // connecte_state_trigger_cnt = 0; } - if (connecte_state_trigger_cnt == 15) { + if (!m_plod_state_connected_state && connecte_state_trigger_cnt >= 10) { // ¼ appevent.eventType = kplod_connected_event; m_plod_state_connected_state = true; app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); - } else if (connecte_state_trigger_cnt_last_val >= 5 && connecte_state_trigger_cnt == 0) { + } else if (m_plod_state_connected_state && connecte_state_trigger_cnt == 0) { // Ͽ¼ appevent.eventType = kplod_disconnected_event; m_plod_state_connected_state = false; app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); - } else if (connecte_state_trigger_cnt >= 10 && connecte_state_trigger_cnt % 10 == 0) { - // ӳ¼ - appevent.eventType = kplod_connecting_event; - appevent.val.plod_connected_accumulation_time = connecte_state_trigger_cnt / 10; - app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); } + + // else if (connecte_state_trigger_cnt >= 10 && connecte_state_trigger_cnt % 10 == 0) { + // // ӳ¼ + // appevent.eventType = kplod_connecting_event; + // appevent.val.plod_connected_accumulation_time = connecte_state_trigger_cnt / 10; + // app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); + // } } static void m_charge_event_detect_tmr_cb(void* p_context) { // @@ -118,7 +121,7 @@ static void power_on() { hwss_init(); sample_data_mgr_init(); dsp_mgr_init(); - // zble_module_start_adv(); + ble_cmder_start_adv(); m_poweronflag = true; ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ @@ -133,7 +136,7 @@ static void power_off() { SingleLeadECG_led_deinit(); SingleLeadECG_beep_deinit(); SingleLeadECG_adc_module_deinit(); - // zble_module_stop_adv(); + ble_cmder_stop_adv(); ZERROR_CHECK(app_timer_stop(m_state_machine_driver_tmr)); } /******************************************************************************* @@ -218,7 +221,10 @@ void app_event_process_cb(void* p_event_data, uint16_t event_size) { * ҳ * *******************************************************************************/ // ûʱ䲻Զл״̬ - if (!plod_state_is_connected() && plod_state_has_disconnected_ms() >= 3000 && ds_cur_state_haspassed_ms() >= 3000) { + if (!zdatachannel_is_connected() && // + !plod_state_is_connected() && // + plod_state_has_disconnected_ms() >= 30000 && // + ds_cur_state_haspassed_ms() >= 30000) { state_machine__change_to_standby_state(); } // û־ֹлɼҳ @@ -380,6 +386,10 @@ void one_conduction_main() { NRF_LOG_INFO("Version :%d", VERSION); NRF_LOG_INFO("Manufacturer :%s", MANUFACTURER_NAME); + ztm_t tm; + znordic_rtc_gettime(&tm); + NRF_LOG_INFO("RTC time :%d-%d-%d %d:%d:%d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); + static zble_module_cfg_t cfg = // { .deviceName = BLE_NAME,