| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- /******************************************************************************
- *
- * Copyright (C) 1999-2013 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.
- *
- ******************************************************************************/
- /*******************************************************************************
- **
- ** Header file for profile folder.
- **
- ********************************************************************************/
- #ifndef SRVC_DIS_API_H
- #define SRVC_DIS_API_H
- #include "common/bt_target.h"
- #include "stack/gatt_api.h"
- #include "stack/gattdefs.h"
- #include "esp_gatts_api.h"
- #define DIS_SUCCESS GATT_SUCCESS
- #define DIS_ILLEGAL_PARAM GATT_ILLEGAL_PARAMETER
- #define DIS_NO_RESOURCES GATT_NO_RESOURCES
- typedef UINT8 tDIS_STATUS;
- /*****************************************************************************
- ** Data structure for DIS
- *****************************************************************************/
- #define DIS_ATTR_SYS_ID_BIT 0x0001
- #define DIS_ATTR_MODEL_NUM_BIT 0x0002
- #define DIS_ATTR_SERIAL_NUM_BIT 0x0004
- #define DIS_ATTR_FW_NUM_BIT 0x0008
- #define DIS_ATTR_HW_NUM_BIT 0x0010
- #define DIS_ATTR_SW_NUM_BIT 0x0020
- #define DIS_ATTR_MANU_NAME_BIT 0x0040
- #define DIS_ATTR_IEEE_DATA_BIT 0x0080
- #define DIS_ATTR_PNP_ID_BIT 0x0100
- typedef UINT16 tDIS_ATTR_MASK;
- #define DIS_ATTR_ALL_MASK 0xffff
- typedef tDIS_ATTR_MASK tDIS_ATTR_BIT ;
- #define DIS_MAX_NUM_INC_SVR 0
- #define DIS_MAX_CHAR_NUM 9
- #define DIS_MAX_ATTR_NUM (DIS_MAX_CHAR_NUM * 2 + DIS_MAX_NUM_INC_SVR + 1)
- #ifndef DIS_ATTR_DB_SIZE
- #define DIS_ATTR_DB_SIZE GATT_DB_MEM_SIZE(DIS_MAX_NUM_INC_SVR, DIS_MAX_CHAR_NUM, 0)
- #endif
- #define DIS_SYSTEM_ID_SIZE 8
- #define DIS_PNP_ID_SIZE 7
- typedef struct {
- UINT16 uuid;
- UINT16 handle;
- } tDIS_DB_ENTRY;
- typedef struct {
- UINT16 len;
- UINT8 *p_data;
- } tDIS_STRING;
- typedef struct {
- UINT16 vendor_id;
- UINT16 product_id;
- UINT16 product_version;
- UINT8 vendor_id_src;
- } tDIS_PNP_ID;
- typedef union {
- UINT64 system_id;
- tDIS_PNP_ID pnp_id;
- tDIS_STRING data_str;
- } tDIS_ATTR;
- #define DIS_MAX_STRING_DATA 7
- typedef struct {
- UINT16 attr_mask;
- UINT64 system_id;
- tDIS_PNP_ID pnp_id;
- UINT8 *data_string[DIS_MAX_STRING_DATA];
- } tDIS_VALUE;
- //typedef void (tDIS_READ_CBACK)(BD_ADDR addr, tDIS_VALUE *p_dis_value);
- typedef struct {
- tDIS_DB_ENTRY dis_attr[DIS_MAX_CHAR_NUM];
- tDIS_VALUE dis_value;
- // tDIS_READ_CBACK *p_read_dis_cback;
- UINT16 service_handle;
- UINT16 max_handle;
- bool enabled;
- // UINT8 dis_read_uuid_idx;
- // tDIS_ATTR_MASK request_mask;
- } tDIS_CB;
- /*****************************************************************************
- ** Data structure used by Battery Service
- *****************************************************************************/
- #ifndef BA_MAX_INT_NUM
- #define BA_MAX_INT_NUM 4
- #endif
- #define BATTERY_LEVEL_SIZE 1
- typedef struct {
- BD_ADDR remote_bda;
- BOOLEAN need_rsp;
- UINT16 clt_cfg;
- } tBA_WRITE_DATA;
- #define BA_READ_CLT_CFG_REQ 1
- #define BA_READ_PRE_FMT_REQ 2
- #define BA_READ_RPT_REF_REQ 3
- #define BA_READ_LEVEL_REQ 4
- #define BA_WRITE_CLT_CFG_REQ 5
- typedef void (tBA_CBACK)(UINT32 trans_id, UINT16 conn_id, UINT8 app_id, UINT8 event, tBA_WRITE_DATA *p_data);
- #define BA_LEVEL_NOTIFY 0x01
- #define BA_LEVEL_PRE_FMT 0x02
- #define BA_LEVEL_RPT_REF 0x04
- typedef UINT8 tBA_LEVEL_DESCR;
- typedef struct {
- BOOLEAN is_pri;
- tBA_LEVEL_DESCR ba_level_descr;
- tGATT_TRANSPORT transport;
- tBA_CBACK *p_cback;
- } tBA_REG_INFO;
- typedef union {
- UINT8 ba_level;
- UINT16 clt_cfg;
- tGATT_CHAR_RPT_REF rpt_ref;
- tGATT_CHAR_PRES pres_fmt;
- } tBA_RSP_DATA;
- typedef struct {
- UINT8 app_id;
- UINT16 ba_level_hdl;
- UINT16 clt_cfg_hdl;
- UINT16 rpt_ref_hdl;
- UINT16 pres_fmt_hdl;
- tBA_CBACK *p_cback;
- UINT16 pending_handle;
- //UINT8 pending_clcb_idx;
- UINT8 pending_evt;
- } tBA_INST;
- typedef struct {
- tBA_INST battery_inst[BA_MAX_INT_NUM];
- UINT8 inst_id;
- bool enabled;
- } tBATTERY_CB;
- /*****************************************************************************
- ** External Function Declarations
- *****************************************************************************/
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*****************************************************************************
- ** Service Engine API
- *****************************************************************************/
- /*******************************************************************************
- **
- ** Function srvc_eng_init
- **
- ** Description Initializa the GATT Service engine, register a GATT application
- ** as for a central service management.
- **
- *******************************************************************************/
- //extern tGATT_STATUS srvc_eng_init (void);
- /*****************************************************************************
- ** DIS Server Function
- *****************************************************************************/
- extern bool dis_valid_handle_range(UINT16 handle);
- /*******************************************************************************
- **
- ** Function DIS_Init
- **
- ** Description Initializa the Device Information Service Server.
- **
- *******************************************************************************/
- extern void DIS_Init (tBTA_GATTS_IF gatt_if, tDIS_ATTR_MASK dis_attr_mask);
- /*******************************************************************************
- **
- ** Function DIS_SrUpdate
- **
- ** Description Update the DIS server attribute values
- **
- *******************************************************************************/
- extern tDIS_STATUS DIS_SrUpdate(tDIS_ATTR_BIT dis_attr_bit, tDIS_ATTR *p_info);
- /*******************************************************************************
- **
- ** Function dis_AddChar
- **
- ** Description add characteristic for dis
- **
- *******************************************************************************/
- extern void dis_AddChar(UINT16 service_id);
- /*******************************************************************************
- ** dis_s_read_attr_value
- **
- ** Process read DIS attribute request.
- *******************************************************************************/
- extern void dis_s_read_attr_value (tGATTS_DATA *p_data, tGATT_VALUE *p_value,
- UINT32 trans_id, UINT16 conn_id);
- /*****************************************************************************
- ** DIS Client Function
- *****************************************************************************/
- /*******************************************************************************
- **
- ** Function DIS_ReadDISInfo
- **
- ** Description Read remote device DIS information.
- **
- ** Returns void
- **
- *******************************************************************************/
- //extern BOOLEAN DIS_ReadDISInfo(BD_ADDR peer_bda, tDIS_READ_CBACK *p_cback,
- // tDIS_ATTR_MASK mask);
- /*******************************************************************************
- ** BATTERY SERVICE API
- *******************************************************************************/
- /***************************************************************
- **
- ** Function bas_register
- **
- ** Description register app for battery service
- **
- ****************************************************************/
- extern void bas_register(void);
- /***************************************************************
- **
- ** Function bas_init
- **
- ** Description register battery service
- **
- ****************************************************************/
- extern void bas_init(tBTA_GATTS_IF gatt_if, UINT16 app_id);
- /***************************************************************
- **
- ** Function bas_AddChar
- **
- ** Description add characteristic for battery service
- **
- ****************************************************************/
- extern void bas_AddChar(UINT16 service_id, tBT_UUID *char_uuid);
- /***************************************************************
- **
- ** Function bas_AddCharDescr
- **
- ** Description add descriptor for battery service if needed
- **
- ****************************************************************/
- extern void bas_AddCharDescr(UINT16 service_id, UINT16 attr_id);
- /***************************************************************
- **
- ** Function bas_service_cmpl
- **
- ** Description create battery service complete
- **
- ****************************************************************/
- extern void bas_service_cmpl(UINT16 service_id, tBTA_GATT_STATUS status);
- /*******************************************************************************
- **
- ** Function Battery_Rsp
- **
- ** Description Respond to a battery service request
- **
- *******************************************************************************/
- extern void Battery_Rsp (UINT32 trans_id, UINT16 conn_id, UINT8 app_id,
- tGATT_STATUS st, UINT8 event, tBA_RSP_DATA *p_rsp);
- /*******************************************************************************
- **
- ** Function Battery_Notify
- **
- ** Description Send battery level notification
- **
- *******************************************************************************/
- extern void Battery_Notify (UINT16 conn_id, UINT8 app_id, BD_ADDR remote_bda, UINT8 battery_level);
- /*****************************************************************************
- ** Function bas_s_read_attr_value
- **
- ** Description it will be called when client send a read request
- ******************************************************************************/
- extern void bas_s_read_attr_value(tGATTS_DATA *p_data, UINT32 trans_id, UINT16 conn_id);
- /*****************************************************************************
- ** Function bas_s_write_attr_value
- **
- ** Description it will be called when client send a write request
- ******************************************************************************/
- extern void bas_s_write_attr_value(tGATTS_DATA *p_data, UINT32 trans_id,
- UINT16 conn_id, BD_ADDR bd_addr);
- extern void gatts_server_test(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|