srvc_api.h revision dbba0e652e0ce23dd691df3c03979ec6e32c8db3
1/******************************************************************************
2 *
3 *  Copyright (C) 1999-2013 Broadcom Corporation
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19#ifndef SRVC_DIS_API_H
20#define SRVC_DIS_API_H
21
22#include "bt_target.h"
23#include "gatt_api.h"
24#include "gattdefs.h"
25
26#define DIS_SUCCESS             GATT_SUCCESS
27#define DIS_ILLEGAL_PARAM       GATT_ILLEGAL_PARAMETER
28#define DIS_NO_RESOURCES        GATT_NO_RESOURCES
29typedef UINT8 tDIS_STATUS;
30
31
32/*****************************************************************************
33**  Data structure for DIS
34*****************************************************************************/
35
36#define DIS_ATTR_SYS_ID_BIT         0x0001
37#define DIS_ATTR_MODEL_NUM_BIT      0x0002
38#define DIS_ATTR_SERIAL_NUM_BIT     0x0004
39#define DIS_ATTR_FW_NUM_BIT         0x0008
40#define DIS_ATTR_HW_NUM_BIT         0x0010
41#define DIS_ATTR_SW_NUM_BIT         0x0020
42#define DIS_ATTR_MANU_NAME_BIT      0x0040
43#define DIS_ATTR_IEEE_DATA_BIT      0x0080
44#define DIS_ATTR_PNP_ID_BIT         0x0100
45typedef UINT16  tDIS_ATTR_MASK;
46
47#define DIS_ATTR_ALL_MASK           0xffff
48
49typedef tDIS_ATTR_MASK tDIS_ATTR_BIT ;
50
51typedef struct
52{
53    UINT16      len;
54    UINT8       *p_data;
55}tDIS_STRING;
56
57typedef struct
58{
59    UINT16       vendor_id;
60    UINT16       product_id;
61    UINT16       product_version;
62    UINT8        vendor_id_src;
63
64}tDIS_PNP_ID;
65
66typedef union
67{
68    UINT64              system_id;
69    tDIS_PNP_ID         pnp_id;
70    tDIS_STRING         data_str;
71}tDIS_ATTR;
72
73#define DIS_MAX_STRING_DATA     7
74
75typedef struct
76{
77    UINT16                  attr_mask;
78    UINT64                  system_id;
79    tDIS_PNP_ID             pnp_id;
80    UINT8                   *data_string[DIS_MAX_STRING_DATA];
81}tDIS_VALUE;
82
83
84typedef void (tDIS_READ_CBACK)(BD_ADDR addr, tDIS_VALUE *p_dis_value);
85
86/*****************************************************************************
87**  Data structure used by Battery Service
88*****************************************************************************/
89typedef struct
90{
91    BD_ADDR remote_bda;
92    BOOLEAN need_rsp;
93    UINT16  clt_cfg;
94}tBA_WRITE_DATA;
95
96#define BA_READ_CLT_CFG_REQ     1
97#define BA_READ_PRE_FMT_REQ     2
98#define BA_READ_RPT_REF_REQ     3
99#define BA_READ_LEVEL_REQ       4
100#define BA_WRITE_CLT_CFG_REQ    5
101
102typedef void (tBA_CBACK)(UINT8 app_id, UINT8 event, tBA_WRITE_DATA *p_data);
103
104#define BA_LEVEL_NOTIFY         0x01
105#define BA_LEVEL_PRE_FMT        0x02
106#define BA_LEVEL_RPT_REF        0x04
107typedef UINT8   tBA_LEVEL_DESCR;
108
109typedef struct
110{
111    BOOLEAN         is_pri;
112    tBA_LEVEL_DESCR     ba_level_descr;
113    tGATT_TRANSPORT transport;
114    tBA_CBACK       *p_cback;
115
116}tBA_REG_INFO;
117
118typedef union
119{
120    UINT8       ba_level;
121    UINT16      clt_cfg;
122    tGATT_CHAR_RPT_REF  rpt_ref;
123    tGATT_CHAR_PRES     pres_fmt;
124}tBA_RSP_DATA;
125
126/*****************************************************************************
127**  External Function Declarations
128*****************************************************************************/
129#ifdef __cplusplus
130extern "C"
131{
132#endif
133/*****************************************************************************
134**  Service Engine API
135*****************************************************************************/
136/*******************************************************************************
137**
138** Function         srvc_eng_init
139**
140** Description      Initializa the GATT Service engine, register a GATT application
141**                  as for a central service management.
142**
143*******************************************************************************/
144    GATT_API extern tGATT_STATUS srvc_eng_init (void);
145
146
147/*****************************************************************************
148**  DIS Server Function
149*****************************************************************************/
150
151/*******************************************************************************
152**
153** Function         DIS_SrInit
154**
155** Description      Initializa the Device Information Service Server.
156**
157*******************************************************************************/
158    GATT_API extern tDIS_STATUS DIS_SrInit (tDIS_ATTR_MASK dis_attr_mask);
159/*******************************************************************************
160**
161** Function         DIS_SrUpdate
162**
163** Description      Update the DIS server attribute values
164**
165*******************************************************************************/
166    GATT_API extern tDIS_STATUS DIS_SrUpdate(tDIS_ATTR_BIT dis_attr_bit, tDIS_ATTR *p_info);
167/*****************************************************************************
168**  DIS Client Function
169*****************************************************************************/
170/*******************************************************************************
171**
172** Function         DIS_ReadDISInfo
173**
174** Description      Read remote device DIS information.
175**
176** Returns          void
177**
178*******************************************************************************/
179    GATT_API extern BOOLEAN DIS_ReadDISInfo(BD_ADDR peer_bda, tDIS_READ_CBACK *p_cback);
180
181/*******************************************************************************
182**      BATTERY SERVICE API
183*******************************************************************************/
184/*******************************************************************************
185**
186** Function         Battery_Instantiate
187**
188** Description      Instantiate a Battery service
189**
190*******************************************************************************/
191    GATT_API extern UINT16 Battery_Instantiate (UINT8 app_id, tBA_REG_INFO *p_reg_info);
192
193/*******************************************************************************
194**
195** Function         Battery_Rsp
196**
197** Description      Respond to a battery service request
198**
199*******************************************************************************/
200    GATT_API extern void Battery_Rsp (UINT8 app_id, tGATT_STATUS st, UINT8 event, tBA_RSP_DATA *p_rsp);
201/*******************************************************************************
202**
203** Function         Battery_Notify
204**
205** Description      Send battery level notification
206**
207*******************************************************************************/
208    GATT_API extern void Battery_Notify (UINT8 app_id, BD_ADDR remote_bda, UINT8 battery_level);
209
210
211#ifdef __cplusplus
212
213}
214#endif
215
216#endif
217
218
219