mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-20 18:55:23 +02:00 
			
		
		
		
	component/bt: Added the Macro for the classic BT support. component/bt: added the bluedroid deinit method. component/bt: allow more classic BT global variables to use dynamic allocation scheme 1. allocate memory for AVDT, AVCT control blocks when dynamic memory is used 2. allow SBC decoder buffer to use dynamic allocation scheme component/bt: Remove the wrong changes in bt/Kconfig & Added the GATTS_INCLUDED in the gatt_free function when gatt service close. component/bt: Shorten the abbreviation BT_ALLOCATION_FROM_SPIRAM_FIRST and BT_BLE_DYNAMIC_ENV_MEMORY two macros.
		
			
				
	
	
		
			256 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			256 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /******************************************************************************
 | |
|  *
 | |
|  *  Copyright (C) 2003-2012 Broadcom Corporation
 | |
|  *
 | |
|  *  Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  *  you may not use this file except in compliance with the License.
 | |
|  *  You may obtain a copy of the License at:
 | |
|  *
 | |
|  *  http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  *  Unless required by applicable law or agreed to in writing, software
 | |
|  *  distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  *  See the License for the specific language governing permissions and
 | |
|  *  limitations under the License.
 | |
|  *
 | |
|  ******************************************************************************/
 | |
| 
 | |
| /******************************************************************************
 | |
|  *
 | |
|  *  This is the private file for the BTA GATT server.
 | |
|  *
 | |
|  ******************************************************************************/
 | |
| #ifndef BTA_GATTS_INT_H
 | |
| #define BTA_GATTS_INT_H
 | |
| 
 | |
| #include "bt_target.h"
 | |
| #include "bta_sys.h"
 | |
| #include "bta_gatt_api.h"
 | |
| #include "gatt_api.h"
 | |
| 
 | |
| 
 | |
| /*****************************************************************************
 | |
| **  Constants and data types
 | |
| *****************************************************************************/
 | |
| enum {
 | |
|     BTA_GATTS_API_REG_EVT  = BTA_SYS_EVT_START(BTA_ID_GATTS),
 | |
|     BTA_GATTS_INT_START_IF_EVT,
 | |
|     BTA_GATTS_API_DEREG_EVT,
 | |
|     BTA_GATTS_API_CREATE_SRVC_EVT,
 | |
|     BTA_GATTS_API_INDICATION_EVT,
 | |
| 
 | |
|     BTA_GATTS_API_ADD_INCL_SRVC_EVT,
 | |
|     BTA_GATTS_API_ADD_CHAR_EVT,
 | |
|     BTA_GATTS_API_ADD_DESCR_EVT,
 | |
|     BTA_GATTS_API_DEL_SRVC_EVT,
 | |
|     BTA_GATTS_API_START_SRVC_EVT,
 | |
|     BTA_GATTS_API_STOP_SRVC_EVT,
 | |
|     BTA_GATTS_API_RSP_EVT,
 | |
|     BTA_GATTS_API_SET_ATTR_VAL_EVT,
 | |
|     BTA_GATTS_API_OPEN_EVT,
 | |
|     BTA_GATTS_API_CANCEL_OPEN_EVT,
 | |
|     BTA_GATTS_API_CLOSE_EVT,
 | |
|     BTA_GATTS_API_LISTEN_EVT,
 | |
|     BTA_GATTS_API_DISABLE_EVT
 | |
| };
 | |
| typedef UINT16 tBTA_GATTS_INT_EVT;
 | |
| 
 | |
| /* max number of application allowed on device */
 | |
| #define BTA_GATTS_MAX_APP_NUM   GATT_MAX_SR_PROFILES
 | |
| 
 | |
| /* max number of services allowed in the device */
 | |
| #define BTA_GATTS_MAX_SRVC_NUM   GATT_MAX_SR_PROFILES
 | |
| 
 | |
| /* internal strucutre for GATTC register API  */
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBT_UUID                app_uuid;
 | |
|     tBTA_GATTS_CBACK        *p_cback;
 | |
| } tBTA_GATTS_API_REG;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBTA_GATTS_IF           server_if;
 | |
| } tBTA_GATTS_INT_START_IF;
 | |
| 
 | |
| typedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBTA_GATTS_IF           server_if;
 | |
|     tBT_UUID                service_uuid;
 | |
|     UINT16                  num_handle;
 | |
|     UINT8                   inst;
 | |
|     BOOLEAN                 is_pri;
 | |
| 
 | |
| } tBTA_GATTS_API_CREATE_SRVC;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBT_UUID                char_uuid;
 | |
|     tBTA_GATT_PERM          perm;
 | |
|     tBTA_GATT_CHAR_PROP     property;
 | |
|     tBTA_GATTS_ATTR_CONTROL control;
 | |
|     tBTA_GATT_ATTR_VAL      attr_val;
 | |
| } tBTA_GATTS_API_ADD_CHAR;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     UINT16                  included_service_id;
 | |
| } tBTA_GATTS_API_ADD_INCL_SRVC;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBT_UUID                descr_uuid;
 | |
|     tBTA_GATT_PERM          perm;
 | |
|     tBTA_GATTS_ATTR_CONTROL control;
 | |
|     tBTA_GATT_ATTR_VAL      attr_val;
 | |
| } tBTA_GATTS_API_ADD_DESCR;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR  hdr;
 | |
|     UINT16  attr_id;
 | |
|     UINT16  len;
 | |
|     BOOLEAN need_confirm;
 | |
|     UINT8   value[BTA_GATT_MAX_ATTR_LEN];
 | |
| } tBTA_GATTS_API_INDICATION;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR              hdr;
 | |
|     UINT32              trans_id;
 | |
|     tBTA_GATT_STATUS    status;
 | |
|     tBTA_GATTS_RSP      *p_rsp;
 | |
| } tBTA_GATTS_API_RSP;
 | |
| 
 | |
| typedef struct{
 | |
|     BT_HDR              hdr;
 | |
|     UINT16 length;
 | |
|     UINT8 *value;
 | |
| }tBTA_GATTS_API_SET_ATTR_VAL;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     tBTA_GATT_TRANSPORT     transport;
 | |
| } tBTA_GATTS_API_START;
 | |
| 
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     BD_ADDR                 remote_bda;
 | |
|     tBTA_GATTS_IF           server_if;
 | |
|     BOOLEAN                 is_direct;
 | |
|     tBTA_GATT_TRANSPORT     transport;
 | |
| 
 | |
| } tBTA_GATTS_API_OPEN;
 | |
| 
 | |
| typedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN;
 | |
| 
 | |
| typedef struct {
 | |
|     BT_HDR                  hdr;
 | |
|     BD_ADDR_PTR             remote_bda;
 | |
|     tBTA_GATTS_IF           server_if;
 | |
|     BOOLEAN                 start;
 | |
| } tBTA_GATTS_API_LISTEN;
 | |
| 
 | |
| typedef union {
 | |
|     BT_HDR                          hdr;
 | |
|     tBTA_GATTS_API_REG              api_reg;
 | |
|     tBTA_GATTS_API_DEREG            api_dereg;
 | |
|     tBTA_GATTS_API_CREATE_SRVC      api_create_svc;
 | |
|     tBTA_GATTS_API_ADD_INCL_SRVC    api_add_incl_srvc;
 | |
|     tBTA_GATTS_API_ADD_CHAR         api_add_char;
 | |
|     tBTA_GATTS_API_ADD_DESCR        api_add_char_descr;
 | |
|     tBTA_GATTS_API_START            api_start;
 | |
|     tBTA_GATTS_API_INDICATION       api_indicate;
 | |
|     tBTA_GATTS_API_RSP              api_rsp;
 | |
|     tBTA_GATTS_API_SET_ATTR_VAL     api_set_val;
 | |
|     tBTA_GATTS_API_OPEN             api_open;
 | |
|     tBTA_GATTS_API_CANCEL_OPEN      api_cancel_open;
 | |
| 
 | |
|     tBTA_GATTS_INT_START_IF         int_start_if;
 | |
|     /* if peripheral role is supported */
 | |
|     tBTA_GATTS_API_LISTEN           api_listen;
 | |
| } tBTA_GATTS_DATA;
 | |
| 
 | |
| /* application registration control block */
 | |
| typedef struct {
 | |
|     BOOLEAN             in_use;
 | |
|     tBT_UUID            app_uuid;
 | |
|     tBTA_GATTS_CBACK    *p_cback;
 | |
|     tBTA_GATTS_IF       gatt_if;
 | |
| } tBTA_GATTS_RCB;
 | |
| 
 | |
| /* service registration control block */
 | |
| typedef struct {
 | |
|     tBT_UUID    service_uuid;   /* service UUID */
 | |
|     UINT16      service_id;     /* service handle */
 | |
|     UINT8       inst_num;       /* instance ID */
 | |
|     UINT8       rcb_idx;
 | |
|     UINT8       idx;            /* self index of serviec CB */
 | |
|     BOOLEAN     in_use;
 | |
| 
 | |
| } tBTA_GATTS_SRVC_CB;
 | |
| 
 | |
| 
 | |
| /* GATT server control block */
 | |
| typedef struct {
 | |
|     BOOLEAN             enabled;
 | |
|     tBTA_GATTS_RCB      rcb[BTA_GATTS_MAX_APP_NUM];
 | |
|     tBTA_GATTS_SRVC_CB  srvc_cb[BTA_GATTS_MAX_SRVC_NUM];
 | |
| } tBTA_GATTS_CB;
 | |
| 
 | |
| 
 | |
| 
 | |
| /*****************************************************************************
 | |
| **  Global data
 | |
| *****************************************************************************/
 | |
| 
 | |
| /* GATTC control block */
 | |
| #if BTA_DYNAMIC_MEMORY == FALSE
 | |
| extern tBTA_GATTS_CB  bta_gatts_cb;
 | |
| #else
 | |
| extern tBTA_GATTS_CB *bta_gatts_cb_ptr;
 | |
| #define bta_gatts_cb (*bta_gatts_cb_ptr)
 | |
| #endif
 | |
| 
 | |
| /*****************************************************************************
 | |
| **  Function prototypes
 | |
| *****************************************************************************/
 | |
| extern BOOLEAN bta_gatts_hdl_event(BT_HDR *p_msg);
 | |
| 
 | |
| extern void bta_gatts_api_disable(tBTA_GATTS_CB *p_cb);
 | |
| extern void bta_gatts_api_enable(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_data);
 | |
| extern void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_create_srvc(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_add_include_srvc(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_add_char(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_add_char_descr(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_set_attr_value(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern tGATT_STATUS bta_gatts_get_attr_value(UINT16 attr_handle, UINT16 *length, UINT8 **value);
 | |
| extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_start_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA *p_msg);
 | |
| 
 | |
| extern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| 
 | |
| 
 | |
| extern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| extern void bta_gatts_listen(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
 | |
| 
 | |
| extern BOOLEAN bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src);
 | |
| extern tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if);
 | |
| extern UINT8 bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if);
 | |
| extern UINT8 bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, UINT8 rcb_idx);
 | |
| extern tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, UINT16 service_id);
 | |
| extern tBTA_GATTS_SRVC_CB *bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, UINT16 attr_id);
 | |
| extern void bta_gatts_deinit(void);
 | |
| 
 | |
| #endif /* BTA_GATTS_INT_H */
 | |
| 
 |