pinebuds/services/ble_app/app_main/app_ble_core.h

251 lines
6.7 KiB
C

/***************************************************************************
*
*Copyright 2015-2019 BES.
*All rights reserved. All unpublished rights reserved.
*
*No part of this work may be used or reproduced in any form or by any
*means, or stored in a database or retrieval system, without prior written
*permission of BES.
*
*Use of this work is governed by a license granted by BES.
*This work contains confidential and proprietary information of
*BES. which is protected by copyright, trade secret,
*trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __APP_BLE_CORE_H__
#define __APP_BLE_CORE_H__
/*****************************header include********************************/
/******************************macro defination*****************************/
/******************************type defination******************************/
/**
* @brief The event type of the ble
*
*/
typedef enum{
BLE_CONNECT_EVENT = 0,
BLE_DISCONNECT_EVENT,
BLE_CONN_PARAM_UPDATE_REQ_EVENT,
BLE_SET_RANDOM_BD_ADDR_EVENT,
BLE_EVENT_NUM_MAX,
} ble_evnet_type_e;
/**
* @brief The event type of other module
*
*/
typedef enum{
BLE_CALLBACK_RS_START = 0,
BLE_CALLBACK_RS_COMPLETE,
BLE_CALLBACK_ROLE_UPDATE,
BLE_CALLBACK_IBRT_EVENT_ENTRY,
BLE_CALLBACK_EVENT_NUM_MAX,
} ble_callback_evnet_type_e;
typedef struct {
ble_evnet_type_e evt_type;
union {
struct {
uint8_t conidx;
const uint8_t *peer_bdaddr;
} connect_handled;
struct {
uint8_t conidx;
} disconnect_handled;
struct {
/// Connection interval minimum
uint16_t intv_min;
/// Connection interval maximum
uint16_t intv_max;
/// Latency
uint16_t latency;
/// Supervision timeout
uint16_t time_out;
} conn_param_update_req_handled;
struct {
uint8_t *new_bdaddr;
} set_random_bd_addr_handled;
} p;
} ble_evnet_t;
typedef struct {
ble_callback_evnet_type_e evt_type;
union {
struct {
uint8_t newRole;
} rs_complete_handled;
struct {
uint8_t newRole;
} role_update_handled;
struct {
uint8_t event;
} ibrt_event_entry_handled;
} p;
} ble_callback_evnet_t;
typedef void (*APP_BLE_CORE_GLOBAL_HANDLER_FUNC)(ble_evnet_t *, void *);
typedef void (*APP_BLE_CORE_GLOBAL_CALLBACK_HANDLER_FUNC)(ble_callback_evnet_t *, void *);
// Element of a message handler table.
typedef struct {
// evt_type of the ble event
ble_evnet_type_e evt_type;
// Pointer to the handler function for the ble event above.
APP_BLE_CORE_GLOBAL_HANDLER_FUNC func;
} ble_event_handler_t;
// Element of a message handler table.
typedef struct {
// evt_type of the ble callback event
ble_callback_evnet_type_e evt_type;
// Pointer to the handler function for the ble callback event above.
APP_BLE_CORE_GLOBAL_CALLBACK_HANDLER_FUNC func;
} ble_callback_event_handler_t;
#ifdef __cplusplus
extern "C" {
#endif
/*---------------------------------------------------------------------------
* app_ble_core_register_global_handler_ind
*---------------------------------------------------------------------------
*
*Synopsis:
* to register custom handler function
*
* Parameters:
* handler -- custom handler function
*
* Return:
* void
*/
void app_ble_core_register_global_handler_ind(APP_BLE_CORE_GLOBAL_HANDLER_FUNC handler);
/*---------------------------------------------------------------------------
* app_ble_core_register_global_callback_handle_ind
*---------------------------------------------------------------------------
*
*Synopsis:
* to register custom callback handler function
*
* Parameters:
* handler -- custom callback handler function
*
* Return:
* void
*/
void app_ble_core_register_global_callback_handle_ind(APP_BLE_CORE_GLOBAL_CALLBACK_HANDLER_FUNC handler);
/*---------------------------------------------------------------------------
* app_ble_core_global_handle
*---------------------------------------------------------------------------
*
*Synopsis:
* for ble core to handle event
*
* Parameters:
* *event -- the event ble core need to handle
*
* Return:
* uint32_t
*/
void app_ble_core_global_handle(ble_evnet_t *event, void *output);
/*---------------------------------------------------------------------------
* app_ble_core_global_callback_event
*---------------------------------------------------------------------------
*
*Synopsis:
* for ble core to handle callback event
*
* Parameters:
* *event -- the event ble core need to handle
*
* Return:
* void
*/
void app_ble_core_global_callback_event(ble_callback_evnet_t *event, void *output);
/*---------------------------------------------------------------------------
* app_ble_stub_user_init
*---------------------------------------------------------------------------
*
*Synopsis:
* None
*
* Parameters:
* void
*
* Return:
* void
*/
void app_ble_stub_user_init(void);
/****************************function declearation**************************/
/*---------------------------------------------------------------------------
* app_ble_sync_ble_info
*---------------------------------------------------------------------------
*
*Synopsis:
* for tws sync ble info
*
* Parameters:
* void
*
* Return:
* void
*/
void app_ble_sync_ble_info(void);
/*---------------------------------------------------------------------------
* app_ble_mode_tws_sync_init
*---------------------------------------------------------------------------
*
*Synopsis:
* tws related environment initialization for ble module
*
* Parameters:
* void
*
* Return:
* void
*/
void app_ble_mode_tws_sync_init(void);
/****************************function declearation**************************/
/*---------------------------------------------------------------------------
* ble_adv_data_parse
*---------------------------------------------------------------------------
*
*Synopsis:
* for ble core to parse adv data
*
* Parameters:
* bleBdAddr -- ble address
* rssi -- ble rssi
* adv_buf -- adv data
* len -- adv data length
*
* Return:
* void
*/
void ble_adv_data_parse(uint8_t *bleBdAddr,
int8_t rssi,
unsigned char *adv_buf,
unsigned char len);
#ifdef __cplusplus
}
#endif
#endif /* #ifndef __APP_BLE_CORE_H__ */