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",
"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"
}

33
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;

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) {
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) {

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);
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){

5
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; }

3
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();
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 "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,

Loading…
Cancel
Save