Browse Source

update

master
zhaohe 1 year ago
parent
commit
44e3c0469b
  1. 15
      include/zble_module.h
  2. 9
      src/zble_module.c

15
include/zble_module.h

@ -1,4 +1,5 @@
#pragma once #pragma once
#include <stdbool.h>
#include <stdint.h> #include <stdint.h>
/** /**
@ -6,15 +7,29 @@
*/ */
typedef void (*on_service_init_t)(void); typedef void (*on_service_init_t)(void);
typedef enum {
kzble_event_none,
kzble_event_connected,
kzble_event_disconnected,
} zble_event_type_t;
typedef struct {
zble_event_type_t eventType;
} zble_event_t;
typedef struct { typedef struct {
const char* deviceName; const char* deviceName;
on_service_init_t on_service_init; on_service_init_t on_service_init;
} zble_module_cfg_t; } zble_module_cfg_t;
typedef void (*zble_event_listener_t)(zble_event_t* event);
void zble_module_init(zble_module_cfg_t* cfg); void zble_module_init(zble_module_cfg_t* cfg);
void zble_module_reglistener(zble_event_listener_t event_listener);
void zble_module_start_adv(); void zble_module_start_adv();
void zble_module_stop_adv(); void zble_module_stop_adv();
bool zble_module_is_connected();
int32_t zble_module_get_mtu_size(); int32_t zble_module_get_mtu_size();

9
src/zble_module.c

@ -38,16 +38,22 @@ 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;
static zble_event_listener_t m_event_listener;
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;
static zble_event_t zevent;
switch (p_ble_evt->header.evt_id) { switch (p_ble_evt->header.evt_id) {
case BLE_GAP_EVT_CONNECTED: case BLE_GAP_EVT_CONNECTED:
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle; m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
zevent.eventType = kzble_event_connected;
if (m_event_listener) m_event_listener(&zevent);
break; break;
case BLE_GAP_EVT_DISCONNECTED: case BLE_GAP_EVT_DISCONNECTED:
m_conn_handle = BLE_CONN_HANDLE_INVALID; m_conn_handle = BLE_CONN_HANDLE_INVALID;
zevent.eventType = kzble_event_disconnected;
if (m_event_listener) m_event_listener(&zevent);
break; break;
case BLE_GAP_EVT_PHY_UPDATE_REQUEST: { case BLE_GAP_EVT_PHY_UPDATE_REQUEST: {
@ -128,10 +134,13 @@ void zble_module_stop_adv() {
uint32_t err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle); uint32_t err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle);
ZERROR_CHECK(err_code); ZERROR_CHECK(err_code);
} }
bool zble_module_is_connected() { return m_conn_handle != BLE_CONN_HANDLE_INVALID; }
/******************************************************************************* /*******************************************************************************
* INIT * * INIT *
*******************************************************************************/ *******************************************************************************/
void zble_module_reglistener(zble_event_listener_t event_listener) { m_event_listener = event_listener; }
void zble_module_init(zble_module_cfg_t* cfg) { void zble_module_init(zble_module_cfg_t* cfg) {
/** /**
* @brief * @brief

Loading…
Cancel
Save