BLE-Stack APIs  1.00.00
uble.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: TISD 2009 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
28 #ifndef UBLE_H
29 #define UBLE_H
30 
31 #ifdef __cplusplus
32 extern "C"
33 {
34 #endif
35 
36 /*-------------------------------------------------------------------
37  * INCLUDES
38  */
39 #include <ti/sysbios/knl/Queue.h>
40 #include <urfc.h>
41 
42 /*-------------------------------------------------------------------
43  * DEFINITIONS & CONSTANTS
44  */
45 
54  #define UB_PARAM_COMMON_START 0
56 
67  #define UB_PARAM_RFPRIORITY (UB_PARAM_COMMON_START+0)
68 
76  #define UB_PARAM_TXPOWER (UB_PARAM_COMMON_START+1)
77 
79  #define UB_PARAM_COMMON_END UB_PARAM_TXPOWER
80 #if defined(FEATURE_ADVERTISER)
81  #define UB_PARAM_ADV_CMN_START (UB_PARAM_COMMON_END+1)
82 
91  #define UB_PARAM_ADVINTERVAL (UB_PARAM_ADV_CMN_START+0)
92 
99  #define UB_PARAM_ADVCHANMAP (UB_PARAM_ADV_CMN_START+1)
100 
107  #define UB_PARAM_ADVTYPE (UB_PARAM_ADV_CMN_START+2)
108 
119  #define UB_PARAM_TIMETOADV (UB_PARAM_ADV_CMN_START+3)
120 
127  #define UB_PARAM_ADVDATA (UB_PARAM_ADV_CMN_START+4)
128 
130  #define UB_PARAM_ADV_CMN_END UB_PARAM_ADVDATA
131  #if defined(FEATURE_SCAN_RESPONSE)
132  #define UB_PARAM_ADV_SR_START (UB_PARAM_ADV_CMN_END+1)
133 
142  #define UB_PARAM_SCANRSPDATA (UB_PARAM_ADV_SR_START+0)
143 
152  #define UB_PARAM_ADVFLTPOLICY (UB_PARAM_ADV_SR_START+1)
153 
155  #define UB_PARAM_ADV_SR_END UB_PARAM_ADVFLTPOLICY
156  #else /* FEATURE_SCAN_RESPONSE */
157  #define UB_PARAM_ADV_SR_END UB_PARAM_ADV_CMN_END
158  #endif /* FEATURE_SCAN_RESPONSE */
159 #else /* FEATURE_ADVERTISER */
160  #define UB_PARAM_ADV_SR_END UB_PARAM_COMMON_END
161 #endif /* FEATURE_ADVERTISER */
162 #if defined(FEATURE_SCANNER)
163  #define UB_PARAM_SCAN_START (UB_PARAM_ADV_SR_END+1)
164  #define UB_PARAM_SCANINTERVAL (UB_PARAM_SCAN_START+0)
165  #define UB_PARAM_SCANWINDOW (UB_PARAM_SCAN_START+1)
166  #define UB_PARAM_SCANCHANMAP (UB_PARAM_SCAN_START+2)
167  #define UB_PARAM_SCANTYPE (UB_PARAM_SCAN_START+3)
168  #define UB_PARAM_FLTDUPLICATE (UB_PARAM_SCAN_START+4)
169  #define UB_PARAM_SCANFLTPOLICY (UB_PARAM_SCAN_START+5)
170  #define UB_PARAM_SCAN_END UB_PARAM_SCANFLTPOLICY
171 #else /*FEATURE_SCANNER */
172  #define UB_PARAM_SCAN_END UB_PARAM_ADV_SR_END
173 #endif /* FEATURE_SCANNER */
174  #define UB_NUM_PARAM (UB_PARAM_SCAN_END+1)
175 
181 #define RF_PRI_NORMAL ((uint8) RF_PriorityNormal)
182 #define RF_PRI_HIGH ((uint8) RF_PriorityHigh)
183 #define RF_PRI_HIGHEST ((uint8) RF_PriorityHighest)
184 
189 #define RF_TIME_RELAXED 0
190 #define RF_TIME_CRITICAL 1
191 
194 #define UB_TX_POWER_INVALID 0xFFFF
195 
199 #define UB_ADDRTYPE_PUBLIC 0
200 #define UB_ADDRTYPE_STATIC 1
201 #define UB_ADDRTYPE_NONRESOLVABLE 2
202 #define UB_ADDRTYPE_RESOLVABLE 3
203 #define UB_ADDRTYPE_BD 4
204 
209 #define UB_ADVTYPE_ADV_NC 5
210 #define UB_ADVTYPE_ADV_SCAN 6
211 
217 #define UB_ADV_CHAN_37 0x01
218 #define UB_ADV_CHAN_38 0x02
219 #define UB_ADV_CHAN_39 0x04
220 #define UB_ADV_CHAN_ALL (UB_ADV_CHAN_37 | UB_ADV_CHAN_38 | UB_ADV_CHAN_39)
221 
223 /* Min/Max for parameters */
224 #define UB_MIN_ADV_INTERVAL 160
225 #define UB_MAX_ADV_INTERVAL 16384
226 #define UB_MIN_CHANNEL_MAP UB_ADV_CHAN_37
227 #define UB_MAX_CHANNEL_MAP UB_ADV_CHAN_ALL
228 #define UB_MIN_TX_POWER TX_POWER_MINUS_21_DBM
229 #define UB_MAX_TX_POWER TX_POWER_5_DBM
230 
231 /* Default Parameter Values */
233 #define UB_PARAM_DFLT_RFPRIORITY RF_PRI_NORMAL
234 #define UB_PARAM_DFLT_RFTIMECRIT RF_TIME_RELAXED
235 #define UB_PARAM_DFLT_TXPOWER TX_POWER_0_DBM
236 #define UB_PARAM_DFLT_ADVINTERVAL 1600
237 #define UB_PARAM_DFLT_ADVCHANMAP UB_ADV_CHAN_ALL
238 #define UB_PARAM_DFLT_ADVTYPE UB_ADVTYPE_ADV_NC
239 #define UB_PARAM_DFLT_TIMETOADV 0
240 #define UB_PARAM_DFLT_ADVDATA {0}
241 #define UB_PARAM_DFLT_SCANRSPDATA {0}
242 #define UB_PARAM_DFLT_ADVFLTPOLICY 0
243 
245 
248 #define UB_EVTDST_LL 0
249 #define UB_EVTDST_GAP 1
250 #define UB_NUM_EVTDST 2
251 
252 
256 #define US_TO_RAT 4
257 
258 #define MS_TO_RAT 4000
259 
260 #define BLE_TO_RAT 2500
261 
262 #define SYSTICK_TO_RAT (Clock_tickPeriod * US_TO_RAT)
263 
264 #define MS_TO_SYSTICK (1000 / Clock_tickPeriod)
265 
266 #define BYTE_TO_RAT (8 * US_TO_RAT)
267 
268 /* Length of ADV Data */
269 #define UB_MAX_ADVDATA_LEN B_MAX_ADV_LEN
270 
271 
273 /*-------------------------------------------------------------------
274  * TYPEDEFS
275  */
276 
282 typedef uint8 ubAddrType_t;
283 
285 typedef uint8 ubEvtDst_t;
286 
288 typedef uint8 ubEvt_t;
289 
290 PACKED_TYPEDEF_STRUCT {
291  Queue_Elem _elem;
292  ubEvtDst_t dst;
293  ubEvt_t evt;
294 } ubEvtHdr_t;
295 
297 typedef uint8 ubMsg_t;
298 
299 PACKED_TYPEDEF_STRUCT {
300  ubEvtHdr_t hdr;
301  ubMsg_t msg[];
302 } ubEvtMsg_t;
303 
317 typedef void (*ubPostEvtProxyCB_t)(void);
318 
322 typedef void (*ubProcessMsg_t)(ubEvtMsg_t *pEvtMsg);
323 
326 
328 PACKED_TYPEDEF_STRUCT {
329  uint8 rfPriority;
330  int8 txPower;
331 #if defined(FEATURE_ADVERTISER)
332  uint16 advInterval;
333  uint8 advChanMap;
334  uint8 advType;
335  uint8 timeToAdv;
336  uint8 advData[UB_MAX_ADVDATA_LEN];
337 #if defined(FEATURE_SCAN_RESPONSE)
338  uint8 scanRspData[UB_MAX_ADVDATA_LEN];
339  uint8 advFltPolicy;
340 #endif /* FEATURE_SCAN_RESPONSE */
341 #endif /* FEATURE_ADVERTISER */
342 #if defined(FEATURE_SCANNER)
343  uint16 scanInterval;
344  uint16 scanWindow;
345  uint8 scanChanMap;
346  uint8 scanType;
347  uint8 fltDuplicate;
348  uint8 scanFltPolicy;
349 #endif /* FEATURE_SCANNER */
350 } ubParams_t;
351 
357 PACKED_TYPEDEF_STRUCT {
358  uint8 offset;
359  uint8 len;
360  uint8 min;
361  uint8 max;
362 } ubParamLookup_t;
364 
365 /*-------------------------------------------------------------------
366  * API FUNCTIONS
367  */
368 
398 bStatus_t ub_stackInit(ubAddrType_t addrType, uint8* pStaticAddr,
399  ubPostEvtProxyCB_t pfnPostEvtProxyCB, uint8 timeCritical);
400 
415 bStatus_t ub_setParameter(uint8 param, uint8 len, void *pValue);
416 
429 bStatus_t ub_getParameter(uint8 param, void *pValue);
430 
442 bStatus_t ub_checkAddr(ubAddrType_t addrType, uint8 *pAddr);
443 
448 void ub_resetAddr(void);
449 
460 bStatus_t ub_getAddr(ubAddrType_t addrType, uint8* pAddr);
461 
469 void ub_processMsg(void);
470 
471 /*-------------------------------------------------------------------
472 -------------------------------------------------------------------*/
473 
474 #ifdef __cplusplus
475 }
476 #endif
477 
478 #endif /* UBLE_H */
479 
void ub_resetAddr(void)
Make BD Addr revert to Random Static Address if exists or Public Address otherwise.
void(* ubPostEvtProxyCB_t)(void)
Type of the callback to have ub_processMsg called in the application task context.
Definition: uble.h:317
bStatus_t ub_checkAddr(ubAddrType_t addrType, uint8 *pAddr)
Check if the given address is valid.
bStatus_t ub_getParameter(uint8 param, void *pValue)
Get a Micro BLE Stack parameter.
bStatus_t ub_setParameter(uint8 param, uint8 len, void *pValue)
Set a Micro BLE Stack parameter.
#define UB_MAX_ADVDATA_LEN
Max Advertising Data Length.
Definition: uble.h:269
uint8 ubEvt_t
Micro BLE Stack Event.
Definition: uble.h:288
uint8 ubAddrType_t
Address Type.
Definition: uble.h:282
uint8 ubMsg_t
Type of Micro BLE Stack message.
Definition: uble.h:297
bStatus_t ub_stackInit(ubAddrType_t addrType, uint8 *pStaticAddr, ubPostEvtProxyCB_t pfnPostEvtProxyCB, uint8 timeCritical)
Initialize Micro BLE Stack.
void ub_processMsg(void)
Let the Micro Stack process the queued messages.
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:225
bStatus_t ub_getAddr(ubAddrType_t addrType, uint8 *pAddr)
Retrieve the address corresponding to the given address type.
uint8 ubEvtDst_t
Recipient of Micro BLE Stack Event.
Definition: uble.h:285
This file contains configurable variables for the Micro BLE Stack radio.
void(* ubProcessMsg_t)(ubEvtMsg_t *pEvtMsg)
Function to process event messages destined to the calle module.
Definition: uble.h:322
Copyright 2017, Texas Instruments Incorporated