349 lines
11 KiB
C
349 lines
11 KiB
C
|
/******************************************************************************
|
||
|
*
|
||
|
* 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 "bt_target.h"
|
||
|
#include "gatt_api.h"
|
||
|
#include "gattdefs.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
|