BLE-Stack APIs  3.00.01
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 
23 #ifndef UBLE_H
24 #define UBLE_H
25 
26 #ifdef __cplusplus
27 extern "C"
28 {
29 #endif
30 
31 /*-------------------------------------------------------------------
32  * INCLUDES
33  */
34 #include <ti/sysbios/knl/Queue.h>
35 #include <urfc.h>
36 
37 /*-------------------------------------------------------------------
38  * DEFINITIONS & CONSTANTS
39  */
40 
49  #define UB_PARAM_COMMON_START 0
51 
62  #define UB_PARAM_RFPRIORITY (UB_PARAM_COMMON_START+0)
63 
71  #define UB_PARAM_TXPOWER (UB_PARAM_COMMON_START+1)
72 
74  #define UB_PARAM_COMMON_END UB_PARAM_TXPOWER
75 #if defined(FEATURE_ADVERTISER)
76  #define UB_PARAM_ADV_CMN_START (UB_PARAM_COMMON_END+1)
77 
86  #define UB_PARAM_ADVINTERVAL (UB_PARAM_ADV_CMN_START+0)
87 
94  #define UB_PARAM_ADVCHANMAP (UB_PARAM_ADV_CMN_START+1)
95 
102  #define UB_PARAM_ADVTYPE (UB_PARAM_ADV_CMN_START+2)
103 
114  #define UB_PARAM_TIMETOADV (UB_PARAM_ADV_CMN_START+3)
115 
122  #define UB_PARAM_ADVDATA (UB_PARAM_ADV_CMN_START+4)
123 
125  #define UB_PARAM_ADV_CMN_END UB_PARAM_ADVDATA
126  #if defined(FEATURE_SCAN_RESPONSE)
127  #define UB_PARAM_ADV_SR_START (UB_PARAM_ADV_CMN_END+1)
128 
137  #define UB_PARAM_SCANRSPDATA (UB_PARAM_ADV_SR_START+0)
138 
147  #define UB_PARAM_ADVFLTPOLICY (UB_PARAM_ADV_SR_START+1)
148 
150  #define UB_PARAM_ADV_SR_END UB_PARAM_ADVFLTPOLICY
151  #else /* FEATURE_SCAN_RESPONSE */
152  #define UB_PARAM_ADV_SR_END UB_PARAM_ADV_CMN_END
153  #endif /* FEATURE_SCAN_RESPONSE */
154 #else /* FEATURE_ADVERTISER */
155  #define UB_PARAM_ADV_SR_END UB_PARAM_COMMON_END
156 #endif /* FEATURE_ADVERTISER */
157 #if defined(FEATURE_SCANNER)
158  #define UB_PARAM_SCAN_START (UB_PARAM_ADV_SR_END+1)
159  #define UB_PARAM_SCANINTERVAL (UB_PARAM_SCAN_START+0)
160  #define UB_PARAM_SCANWINDOW (UB_PARAM_SCAN_START+1)
161  #define UB_PARAM_SCANCHANMAP (UB_PARAM_SCAN_START+2)
162  #define UB_PARAM_SCANTYPE (UB_PARAM_SCAN_START+3)
163  #define UB_PARAM_FLTDUPLICATE (UB_PARAM_SCAN_START+4)
164  #define UB_PARAM_SCANFLTPOLICY (UB_PARAM_SCAN_START+5)
165  #define UB_PARAM_SCAN_END UB_PARAM_SCANFLTPOLICY
166 #else /*FEATURE_SCANNER */
167  #define UB_PARAM_SCAN_END UB_PARAM_ADV_SR_END
168 #endif /* FEATURE_SCANNER */
169  #define UB_NUM_PARAM (UB_PARAM_SCAN_END+1)
170 
176 #define RF_PRI_NORMAL ((uint8) RF_PriorityNormal)
177 #define RF_PRI_HIGH ((uint8) RF_PriorityHigh)
178 #define RF_PRI_HIGHEST ((uint8) RF_PriorityHighest)
179 
184 #define RF_TIME_RELAXED 0
185 #define RF_TIME_CRITICAL 1
186 
189 #define UB_TX_POWER_INVALID 0xFFFF
190 
194 #define UB_ADDRTYPE_PUBLIC 0
195 #define UB_ADDRTYPE_STATIC 1
196 #define UB_ADDRTYPE_NONRESOLVABLE 2
197 #define UB_ADDRTYPE_RESOLVABLE 3
198 #define UB_ADDRTYPE_BD 4
199 
204 #define UB_ADVTYPE_ADV_NC 5
205 #define UB_ADVTYPE_ADV_SCAN 6
206 
212 #define UB_ADV_CHAN_37 0x01
213 #define UB_ADV_CHAN_38 0x02
214 #define UB_ADV_CHAN_39 0x04
215 #define UB_ADV_CHAN_ALL (UB_ADV_CHAN_37 | UB_ADV_CHAN_38 | UB_ADV_CHAN_39)
216 
218 /* Min/Max for parameters */
219 #define UB_MIN_ADV_INTERVAL 160
220 #define UB_MAX_ADV_INTERVAL 16384
221 #define UB_MIN_CHANNEL_MAP UB_ADV_CHAN_37
222 #define UB_MAX_CHANNEL_MAP UB_ADV_CHAN_ALL
223 #define UB_MIN_TX_POWER TX_POWER_MINUS_21_DBM
224 #define UB_MAX_TX_POWER TX_POWER_5_DBM
225 
226 /* Default Parameter Values */
228 #define UB_PARAM_DFLT_RFPRIORITY RF_PRI_NORMAL
229 #define UB_PARAM_DFLT_RFTIMECRIT RF_TIME_RELAXED
230 #define UB_PARAM_DFLT_TXPOWER TX_POWER_0_DBM
231 #define UB_PARAM_DFLT_ADVINTERVAL 1600
232 #define UB_PARAM_DFLT_ADVCHANMAP UB_ADV_CHAN_ALL
233 #define UB_PARAM_DFLT_ADVTYPE UB_ADVTYPE_ADV_NC
234 #define UB_PARAM_DFLT_TIMETOADV 0
235 #define UB_PARAM_DFLT_ADVDATA {0}
236 #define UB_PARAM_DFLT_SCANRSPDATA {0}
237 #define UB_PARAM_DFLT_ADVFLTPOLICY 0
238 
240 
243 #define UB_EVTDST_LL 0
244 #define UB_EVTDST_GAP 1
245 #define UB_NUM_EVTDST 2
246 
247 
251 #define US_TO_RAT 4
252 
253 #define MS_TO_RAT 4000
254 
255 #define BLE_TO_RAT 2500
256 
257 #define SYSTICK_TO_RAT (Clock_tickPeriod * US_TO_RAT)
258 
259 #define MS_TO_SYSTICK (1000 / Clock_tickPeriod)
260 
261 #define BYTE_TO_RAT (8 * US_TO_RAT)
262 
263 /* Length of ADV Data */
264 #define UB_MAX_ADVDATA_LEN B_MAX_ADV_LEN
265 
266 
268 /*-------------------------------------------------------------------
269  * TYPEDEFS
270  */
271 
277 typedef uint8 ubAddrType_t;
278 
280 typedef uint8 ubEvtDst_t;
281 
283 typedef uint8 ubEvt_t;
284 
285 PACKED_TYPEDEF_STRUCT {
286  Queue_Elem _elem;
287  ubEvtDst_t dst;
288  ubEvt_t evt;
289 } ubEvtHdr_t;
290 
292 typedef uint8 ubMsg_t;
293 
294 PACKED_TYPEDEF_STRUCT {
295  ubEvtHdr_t hdr;
296  ubMsg_t msg[];
297 } ubEvtMsg_t;
298 
312 typedef void (*ubPostEvtProxyCB_t)(void);
313 
317 typedef void (*ubProcessMsg_t)(ubEvtMsg_t *pEvtMsg);
318 
321 
323 PACKED_TYPEDEF_STRUCT {
324  uint8 rfPriority;
325  int8 txPower;
326 #if defined(FEATURE_ADVERTISER)
327  uint16 advInterval;
328  uint8 advChanMap;
329  uint8 advType;
330  uint8 timeToAdv;
331  uint8 advData[UB_MAX_ADVDATA_LEN];
332 #if defined(FEATURE_SCAN_RESPONSE)
333  uint8 scanRspData[UB_MAX_ADVDATA_LEN];
334  uint8 advFltPolicy;
335 #endif /* FEATURE_SCAN_RESPONSE */
336 #endif /* FEATURE_ADVERTISER */
337 #if defined(FEATURE_SCANNER)
338  uint16 scanInterval;
339  uint16 scanWindow;
340  uint8 scanChanMap;
341  uint8 scanType;
342  uint8 fltDuplicate;
343  uint8 scanFltPolicy;
344 #endif /* FEATURE_SCANNER */
345 } ubParams_t;
346 
352 PACKED_TYPEDEF_STRUCT {
353  uint8 offset;
354  uint8 len;
355  uint8 min;
356  uint8 max;
357 } ubParamLookup_t;
359 
360 /*-------------------------------------------------------------------
361  * API FUNCTIONS
362  */
363 
393 bStatus_t ub_stackInit(ubAddrType_t addrType, uint8* pStaticAddr,
394  ubPostEvtProxyCB_t pfnPostEvtProxyCB, uint8 timeCritical);
395 
410 bStatus_t ub_setParameter(uint8 param, uint8 len, void *pValue);
411 
424 bStatus_t ub_getParameter(uint8 param, void *pValue);
425 
437 bStatus_t ub_checkAddr(ubAddrType_t addrType, uint8 *pAddr);
438 
443 void ub_resetAddr(void);
444 
455 bStatus_t ub_getAddr(ubAddrType_t addrType, uint8* pAddr);
456 
464 void ub_processMsg(void);
465 
466 /*-------------------------------------------------------------------
467 -------------------------------------------------------------------*/
468 
469 #ifdef __cplusplus
470 }
471 #endif
472 
473 #endif /* UBLE_H */
474 
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:312
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:264
uint8 ubEvt_t
Micro BLE Stack Event.
Definition: uble.h:283
uint8 ubAddrType_t
Address Type.
Definition: uble.h:277
uint8 ubMsg_t
Type of Micro BLE Stack message.
Definition: uble.h:292
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:224
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:280
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:317
Copyright 2017, Texas Instruments Incorporated