/****************************************************************************** * * Copyright 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. * ******************************************************************************/ #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_t 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_t tDIS_ATTR_MASK; #define DIS_ATTR_ALL_MASK 0xffff typedef tDIS_ATTR_MASK tDIS_ATTR_BIT; typedef struct { uint16_t len; uint8_t* p_data; } tDIS_STRING; typedef struct { uint16_t vendor_id; uint16_t product_id; uint16_t product_version; uint8_t vendor_id_src; } tDIS_PNP_ID; typedef union { uint64_t system_id; tDIS_PNP_ID pnp_id; tDIS_STRING data_str; } tDIS_ATTR; #define DIS_MAX_STRING_DATA 7 typedef struct { uint16_t attr_mask; uint64_t system_id; tDIS_PNP_ID pnp_id; uint8_t* data_string[DIS_MAX_STRING_DATA]; } tDIS_VALUE; typedef void(tDIS_READ_CBACK)(const RawAddress& addr, tDIS_VALUE* p_dis_value); /***************************************************************************** * Data structure used by Battery Service ****************************************************************************/ typedef struct { RawAddress remote_bda; bool need_rsp; uint16_t 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)(uint8_t app_id, uint8_t 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_t tBA_LEVEL_DESCR; typedef struct { bool is_pri; tBA_LEVEL_DESCR ba_level_descr; tGATT_TRANSPORT transport; tBA_CBACK* p_cback; } tBA_REG_INFO; typedef union { uint8_t ba_level; uint16_t clt_cfg; tGATT_CHAR_RPT_REF rpt_ref; tGATT_CHAR_PRES pres_fmt; } tBA_RSP_DATA; /***************************************************************************** * External Function Declarations ****************************************************************************/ /***************************************************************************** * 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 ****************************************************************************/ /******************************************************************************* * * Function DIS_SrInit * * Description Initializa the Device Information Service Server. * ******************************************************************************/ extern tDIS_STATUS DIS_SrInit(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); /***************************************************************************** * DIS Client Function ****************************************************************************/ /******************************************************************************* * * Function DIS_ReadDISInfo * * Description Read remote device DIS information. * * Returns void * ******************************************************************************/ extern bool DIS_ReadDISInfo(const RawAddress& peer_bda, tDIS_READ_CBACK* p_cback, tDIS_ATTR_MASK mask); #endif