Browse Source

update

3lead_uart_test_ok_version
zhaohe 1 year ago
parent
commit
e0e3b445d8
  1. 3
      .vscode/settings.json
  2. 33
      app/src/basic/zble_module.c
  3. 6
      app/src/basic/zdatachannel_service.c
  4. 2
      app/src/basic/zdatachannel_service.h
  5. 5
      app/src/one_conduction/ble_cmd_process_service.c
  6. 3
      app/src/one_conduction/ble_cmd_process_service.h
  7. 30
      app/src/one_conduction/one_conduction_main.c

3
.vscode/settings.json

@ -88,7 +88,8 @@
"config.h": "c", "config.h": "c",
"stdarg.h": "c", "stdarg.h": "c",
"nrf_uarte.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" "files.encoding": "gbk"
} }

33
app/src/basic/zble_module.c

@ -7,7 +7,7 @@
#include "znordic.h" #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 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. */ #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_conn_handle = BLE_CONN_HANDLE_INVALID; /**< 当�连接�柄 */
static uint16_t m_mtu_size = BLE_GATT_ATT_MTU_DEFAULT - 3; 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) { static void ble_evt_handler(ble_evt_t const* p_ble_evt, void* p_context) {
uint32_t err_code; 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 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) { static void on_adv_evt(ble_adv_evt_t ble_adv_evt) {
uint32_t err_code;
switch (ble_adv_evt) { switch (ble_adv_evt) {
case BLE_ADV_EVT_FAST: case BLE_ADV_EVT_FAST:
// err_code = bsp_indication_set(BSP_INDICATE_ADVERTISING); // 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) { void zble_module_init(zble_module_cfg_t* cfg) {
/** /**
* @brief * @brief
* åˆå§åŒèçåè®®æ ˆï¼Œå¹æ³¨åŒèçäºä»å¤ç彿°ï¼Œåºå®šä»£ç ï¼Œå¿ä¿®æ¹
* åˆå§åŒèçåè®®æ ˆï¼Œå¹æ³¨åŒèçäºä»å¤ç彿°ï¼Œåºå®šä»£ç ï¼Œå¿ä¿®æ?
*/ */
{ NRF_SDH_BLE_OBSERVER(m_ble_observer, 3, ble_evt_handler, NULL); } { NRF_SDH_BLE_OBSERVER(m_ble_observer, 3, ble_evt_handler, NULL); }
/******************************************************************************* /*******************************************************************************
* GAPåˆå§åŒ *
* GAPåˆå§åŒ? *
*******************************************************************************/ *******************************************************************************/
{ {
uint32_t err_code; uint32_t err_code;
@ -183,7 +166,7 @@ void zble_module_init(zble_module_cfg_t* cfg) {
} }
/******************************************************************************* /*******************************************************************************
* GATT åˆå§åŒ *
* GATT åˆå§åŒ? *
*******************************************************************************/ *******************************************************************************/
{ {
ret_code_t err_code; 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(); if (cfg->on_service_init) cfg->on_service_init();
} }
/******************************************************************************* /*******************************************************************************
* 广æ­åˆå§åŒ *
* 广æ­åˆå§åŒ? *
*******************************************************************************/ *******************************************************************************/
{ {
uint32_t err_code; 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); ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
} }
/******************************************************************************* /*******************************************************************************
* è¿žæŽ¥åæ°åˆå§åŒ *
* è¿žæŽ¥åæ°åˆå§åŒ? *
*******************************************************************************/ *******************************************************************************/
{ {
uint32_t err_code; uint32_t err_code;

6
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) { switch (p_ble_evt->header.evt_id) {
case BLE_GAP_EVT_CONNECTED: case BLE_GAP_EVT_CONNECTED:
ZLOGI("BLE_GAP_EVT_CONNECTED");
p_nus->conn_handle = p_ble_evt->evt.gap_evt.conn_handle; 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->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); 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; break;
case BLE_GAP_EVT_DISCONNECTED: case BLE_GAP_EVT_DISCONNECTED:
ZLOGI("BLE_GAP_EVT_DISCONNECTED");
p_nus->conn_handle = BLE_CONN_HANDLE_INVALID; p_nus->conn_handle = BLE_CONN_HANDLE_INVALID;
break; break;
case BLE_GATTS_EVT_WRITE: 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) { uint32_t zdatachannel_init(zdatachannel_t *p_nus, zdatachannel_init_t const *p_nus_init) {
p_datachannel = p_nus; p_datachannel = p_nus;
ret_code_t err_code; 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) { uint32_t zdatachannel_data_send(uint8_t *p_data, uint16_t *p_length) {
ble_gatts_hvx_params_t hvx_params; ble_gatts_hvx_params_t hvx_params;
if (!p_datachannel->cmd_tx_channel_is_notification_enabled) { 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) { uint32_t zdatachannel_block_data_send(uint8_t *p_data, uint16_t *p_length) {
ble_gatts_hvx_params_t hvx_params; ble_gatts_hvx_params_t hvx_params;
if (!p_datachannel->datablock_tx_channel_is_notification_enabled) { if (!p_datachannel->datablock_tx_channel_is_notification_enabled) {

2
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); 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); 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); 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){ static inline uint32_t zdatachannel_data_send2(uint8_t* p_data, uint16_t p_length){

5
app/src/one_conduction/ble_cmd_process_service.c

@ -2,13 +2,16 @@
#include "basic/device_info_mgr.h" #include "basic/device_info_mgr.h"
#include "basic/heart_rate_sensor_protocol.h" #include "basic/heart_rate_sensor_protocol.h"
#include "basic/zble_module.h"
#include "basic/zdatachannel_service.h" #include "basic/zdatachannel_service.h"
#include "config.h" #include "config.h"
#include "one_conduction_board.h" #include "one_conduction_board.h"
#include "sample_data_manager.h" #include "sample_data_manager.h"
static uint8_t txbuf[128]; 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_start_realtime_report() { return 0; }
int ble_stop_realtime_report() { return 0; } int ble_stop_realtime_report() { return 0; }

3
app/src/one_conduction/ble_cmd_process_service.h

@ -4,4 +4,5 @@
#include "device_state.h" #include "device_state.h"
void ble_cmder_process_rx(uint8_t* rx, int len); void ble_cmder_process_rx(uint8_t* rx, int len);
void ble_cmder_try_start_adv();
void ble_cmder_start_adv();
void ble_cmder_stop_adv();

30
app/src/one_conduction/one_conduction_main.c

@ -3,6 +3,7 @@
#include "app_event.h" #include "app_event.h"
#include "basic/zble_module.h" #include "basic/zble_module.h"
#include "basic/zdatachannel_service.h" #include "basic/zdatachannel_service.h"
#include "ble_cmd_process_service.h"
#include "config.h" #include "config.h"
#include "display_manager.h" #include "display_manager.h"
#include "heart_wave_sample_service.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; 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; appevent.eventType = kplod_connected_event;
m_plod_state_connected_state = true; m_plod_state_connected_state = true;
app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); 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; appevent.eventType = kplod_disconnected_event;
m_plod_state_connected_state = false; m_plod_state_connected_state = false;
app_sched_event_put(&appevent, sizeof(appevent), app_event_process_cb); 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) { // static void m_charge_event_detect_tmr_cb(void* p_context) { //
@ -118,7 +121,7 @@ static void power_on() {
hwss_init(); hwss_init();
sample_data_mgr_init(); sample_data_mgr_init();
dsp_mgr_init(); dsp_mgr_init();
// zble_module_start_adv();
ble_cmder_start_adv();
m_poweronflag = true; m_poweronflag = true;
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ采样 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_led_deinit();
SingleLeadECG_beep_deinit(); SingleLeadECG_beep_deinit();
SingleLeadECG_adc_module_deinit(); SingleLeadECG_adc_module_deinit();
// zble_module_stop_adv();
ble_cmder_stop_adv();
ZERROR_CHECK(app_timer_stop(m_state_machine_driver_tmr)); 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(); state_machine__change_to_standby_state();
} }
// //
@ -380,6 +386,10 @@ void one_conduction_main() {
NRF_LOG_INFO("Version :%d", VERSION); NRF_LOG_INFO("Version :%d", VERSION);
NRF_LOG_INFO("Manufacturer :%s", MANUFACTURER_NAME); 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 = // static zble_module_cfg_t cfg = //
{ {
.deviceName = BLE_NAME, .deviceName = BLE_NAME,

Loading…
Cancel
Save