TI BLE5-Stack API Documentation  3.03.01.00
uble.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: TI_TEXT 2009 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
27 #ifndef UBLE_H
28 #define UBLE_H
29 
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #endif
34 
35 /*-------------------------------------------------------------------
36  * INCLUDES
37  */
38 #include <port.h>
39 
40 /*-------------------------------------------------------------------
41  * DEFINITIONS & CONSTANTS
42  */
43 
52  #define UBLE_PARAM_COMMON_START 0
54 
65  #define UBLE_PARAM_RFPRIORITY (UBLE_PARAM_COMMON_START+0)
66 
74  #define UBLE_PARAM_TXPOWER (UBLE_PARAM_COMMON_START+1)
75 
77  #define UBLE_PARAM_COMMON_END UBLE_PARAM_TXPOWER
78 #if defined(FEATURE_ADVERTISER)
80  #define UBLE_PARAM_ADV_CMN_START (UBLE_PARAM_COMMON_END+1)
82 
91  #define UBLE_PARAM_ADVINTERVAL (UBLE_PARAM_ADV_CMN_START+0)
92 
99  #define UBLE_PARAM_ADVCHANMAP (UBLE_PARAM_ADV_CMN_START+1)
100 
107  #define UBLE_PARAM_ADVTYPE (UBLE_PARAM_ADV_CMN_START+2)
108 
119  #define UBLE_PARAM_TIMETOADV (UBLE_PARAM_ADV_CMN_START+3)
120 
127  #define UBLE_PARAM_ADVDATA (UBLE_PARAM_ADV_CMN_START+4)
128 
130  #define UBLE_PARAM_ADV_CMN_END UBLE_PARAM_ADVDATA
131  #if defined(FEATURE_SCAN_RESPONSE)
133  #define UBLE_PARAM_ADV_SR_START (UBLE_PARAM_ADV_CMN_END+1)
135 
144  #define UBLE_PARAM_SCANRSPDATA (UBLE_PARAM_ADV_SR_START+0)
145 
154  #define UBLE_PARAM_ADVFLTPOLICY (UBLE_PARAM_ADV_SR_START+1)
155  #define UBLE_PARAM_ADV_SR_END UBLE_PARAM_ADVFLTPOLICY
157  #else /* FEATURE_SCAN_RESPONSE */
159  #define UBLE_PARAM_ADV_SR_END UBLE_PARAM_ADV_CMN_END
161  #endif /* FEATURE_SCAN_RESPONSE */
163 #else /* FEATURE_ADVERTISER */
164  #define UBLE_PARAM_ADV_SR_END UBLE_PARAM_COMMON_END
166 #endif /* FEATURE_ADVERTISER */
168 #if defined(FEATURE_SCANNER)
169  #define UBLE_PARAM_SCAN_START (UBLE_PARAM_ADV_SR_END+1)
171 
179  #define UBLE_PARAM_SCANINTERVAL (UBLE_PARAM_SCAN_START+0)
180 
187  #define UBLE_PARAM_SCANWINDOW (UBLE_PARAM_SCAN_START+1)
188 
195  #define UBLE_PARAM_SCANCHANMAP (UBLE_PARAM_SCAN_START+2)
196 
203  #define UBLE_PARAM_SCANTYPE (UBLE_PARAM_SCAN_START+3)
204 
211  #define UBLE_PARAM_FLTDUPLICATE (UBLE_PARAM_SCAN_START+4)
212 
219  #define UBLE_PARAM_SCANFLTPOLICY (UBLE_PARAM_SCAN_START+5)
220  #define UBLE_PARAM_SCAN_END UBLE_PARAM_SCANFLTPOLICY
222 #else /*FEATURE_SCANNER */
224  #define UBLE_PARAM_SCAN_END UBLE_PARAM_ADV_SR_END
226 #endif /* FEATURE_SCANNER */
228 #if defined(FEATURE_MONITOR)
229  #define UBLE_PARAM_MONITOR_START (UBLE_PARAM_ADV_SR_END+1)
231 
240  #define UBLE_PARAM_SESSIONID (UBLE_PARAM_MONITOR_START+0)
241 
248  #define UBLE_PARAM_MONITOR_CHAN (UBLE_PARAM_MONITOR_START+1)
249 
256  #define UBLE_PARAM_MONITOR_DURATION (UBLE_PARAM_MONITOR_START+2)
257 
264  #define UBLE_PARAM_MONITOR_START_TIME (UBLE_PARAM_MONITOR_START+3)
265 
272  #define UBLE_PARAM_MONITOR_ACCESS_ADDR (UBLE_PARAM_MONITOR_START+4)
273  #define UBLE_PARAM_MONITOR_END UBLE_PARAM_MONITOR_ACCESS_ADDR
275 #else /* FEATURE_MONITOR */
277  #define UBLE_PARAM_MONITOR_END UBLE_PARAM_ADV_SR_END
279 #endif /* FEATURE_MONITOR */
281  #define UBLE_NUM_PARAM (UBLE_PARAM_MONITOR_END+1)
283 
289 #ifdef USE_RCL
290 #define UBLE_RF_PRI_NORMAL ((uint8) RCL_Schedule_Now)
291 #define UBLE_RF_PRI_HIGH ((uint8) RCL_Schedule_Now)
292 #define UBLE_RF_PRI_HIGHEST ((uint8) RCL_Schedule_Now)
293 
294 #else
295 #define UBLE_RF_PRI_NORMAL ((uint8) RF_PriorityNormal)
296 #define UBLE_RF_PRI_HIGH ((uint8) RF_PriorityHigh)
297 #define UBLE_RF_PRI_HIGHEST ((uint8) RF_PriorityHighest)
298 #endif
299 
304 #define RF_TIME_RELAXED 0
305 #define RF_TIME_CRITICAL 1
306 
309 #define UBLE_TX_POWER_INVALID 0xFFFF
310 
314 #define UBLE_ADDRTYPE_PUBLIC 0
315 #define UBLE_ADDRTYPE_STATIC 1
316 #define UBLE_ADDRTYPE_NONRESOLVABLE 2
317 #define UBLE_ADDRTYPE_RESOLVABLE 3
318 #define UBLE_ADDRTYPE_BD 4
319 
324 #define UBLE_ADVTYPE_ADV_NC 5
325 #define UBLE_ADVTYPE_ADV_SCAN 6
326 
332 #define UBLE_ADV_CHAN_37 0x01
333 #define UBLE_ADV_CHAN_38 0x02
334 #define UBLE_ADV_CHAN_39 0x04
335 #define UBLE_ADV_CHAN_ALL (UBLE_ADV_CHAN_37 | UBLE_ADV_CHAN_38 | UBLE_ADV_CHAN_39)
336 
338 /* Min/Max for parameters */
339 #define UBLE_MIN_ADV_INTERVAL 160
340 #define UBLE_MAX_ADV_INTERVAL 16384
341 #define UBLE_MIN_CHANNEL_MAP UBLE_ADV_CHAN_37
342 #define UBLE_MAX_CHANNEL_MAP UBLE_ADV_CHAN_ALL
343 #define UBLE_MIN_TX_POWER TX_POWER_MINUS_21_DBM
344 #define UBLE_MAX_TX_POWER TX_POWER_5_DBM
345 #define UBLE_MIN_SCAN_INTERVAL 4
346 #define UBLE_MAX_SCAN_INTERVAL 16384
347 #define UBLE_MIN_SCAN_WINDOW 4
348 #define UBLE_MAX_SCAN_WINDOW 16384
349 #define UBLE_MIN_MONITOR_HANDLE 0
350 #define UBLE_MAX_MONITOR_HANDLE 8
351 #define UBLE_MIN_MONITOR_CHAN 0
352 #define UBLE_MAX_MONITOR_CHAN 39
353 #define UBLE_MIN_MONITOR_DURATION 0
354 #define UBLE_MAX_MONITOR_DURATION 64000
355 
356 /* Default Parameter Values */
357 #define UBLE_PARAM_DFLT_RFPRIORITY UBLE_RF_PRI_NORMAL
358 #define UBLE_PARAM_DFLT_RFTIMECRIT RF_TIME_RELAXED
359 #ifdef USE_RCL
360 #define UBLE_PARAM_DFLT_TXPOWER 0
361 #else
362 #define UBLE_PARAM_DFLT_TXPOWER TX_POWER_0_DBM
363 #endif
364 #define UBLE_PARAM_DFLT_ADVINTERVAL 1600
365 #define UBLE_PARAM_DFLT_ADVCHANMAP UBLE_ADV_CHAN_ALL
366 #define UBLE_PARAM_DFLT_ADVTYPE UBLE_ADVTYPE_ADV_NC
367 #define UBLE_PARAM_DFLT_TIMETOADV 0
368 #define UBLE_PARAM_DFLT_ADVDATA {0}
369 #define UBLE_PARAM_DFLT_SCANRSPDATA {0}
370 #define UBLE_PARAM_DFLT_ADVFLTPOLICY 0
371 #define UBLE_PARAM_DFLT_SCANINTERVAL 16
372 #define UBLE_PARAM_DFLT_SCANWINDOW 16
373 #define UBLE_PARAM_DFLT_SCANCHAN UBLE_ADV_CHAN_ALL
374 #define UBLE_PARAM_DFLT_SCANTYPE 0
375 #define UBLE_PARAM_DFLT_FLTDUPLICATE 0
376 #define UBLE_PARAM_DFLT_SCANFLTPOLICY 0
377 #define UBLE_PARAM_DFLT_MONITOR_HANDLE 0
378 #define UBLE_PARAM_DFLT_MONITOR_CHAN 37
379 #define UBLE_PARAM_DFLT_MONITOR_DURATION 320
380 #define UBLE_PARAM_DFLT_MONITOR_START_TIME 6400
381 #define UBLE_PARAM_DFLT_MONITOR_ACCESS_ADDR 0x8E89BED6
382 #define UBLE_PARAM_DFLT_MONITOR_CRCINIT 0x555555
383 
384 
388 #define UBLE_EVTDST_LL 0
389 #define UBLE_EVTDST_GAP 1
390 #define UBLE_NUM_EVTDST 2
391 
392 
396 #define US_TO_RAT 4
397 
398 #define MS_TO_RAT 4000
399 
400 #define BLE_TO_RAT 2500
401 
402 #define SYSTICK_TO_RAT (Clock_tickPeriod * US_TO_RAT)
403 
404 #define MS_TO_SYSTICK (1000 / Clock_tickPeriod)
405 
406 #define BLE_TO_SYSTICK (625 / Clock_tickPeriod)
407 
408 #define BYTE_TO_RAT (8 * US_TO_RAT)
409 
410 /* Length of ADV Data */
411 #define UBLE_MAX_ADVDATA_LEN B_MAX_ADV_LEN
412 
413 #define UBLE_MAX_OVERLAP_TIME_LIMIT 0x7270E000 // 8 minutes in 625us ticks. chosen to be half of 17 minutes RF overlap.
414 #define UBLE_MAX_32BIT_TIME 0xFFFFFFFF
415 
416 #define BLE_ROLE_PERIPHERAL 4
417 #define BLE_ROLE_CENTRAL 8
418 
421 /*-------------------------------------------------------------------
422  * TYPEDEFS
423  */
424 
430 typedef uint8 ubleAddrType_t;
431 
433 typedef uint8 ubleEvtDst_t;
434 
436 typedef uint8 ubleEvt_t;
437 
438 typedef struct {
439  ubleEvtDst_t dst;
440  ubleEvt_t evt;
441 } ubleEvtHdr_t;
442 
444 typedef uint8 ubleMsg_t;
445 
446 typedef struct {
447  ubleEvtHdr_t hdr;
448  ubleMsg_t *msg;
449 } ubleEvtMsg_t;
450 
464 typedef void (*ublePostEvtProxyCB_t)(void);
465 
471 typedef void (*ubleAntSwitchCB_t)(void);
472 
476 typedef void (*ubleProcessMsg_t)(ubleEvtMsg_t *pEvtMsg);
477 
480 
482 typedef struct {
483  uint8 rfPriority;
484  int8 txPower;
485 #if defined(FEATURE_ADVERTISER)
486  uint16 advInterval;
487  uint8 advChanMap;
488  uint8 advType;
489  uint8 timeToAdv;
490  uint8 advData[UBLE_MAX_ADVDATA_LEN];
491 #if defined(FEATURE_SCAN_RESPONSE)
492  uint8 scanRspData[UBLE_MAX_ADVDATA_LEN];
493  uint8 advFltPolicy;
494 #endif /* FEATURE_SCAN_RESPONSE */
495 #endif /* FEATURE_ADVERTISER */
496 #if defined(FEATURE_SCANNER)
497  uint16 scanInterval;
498  uint16 scanWindow;
499  uint8 scanChanMap;
500  uint8 scanType;
501  uint8 fltDuplicate;
502  uint8 scanFltPolicy;
503 #endif /* FEATURE_SCANNER */
504 #if defined(FEATURE_MONITOR)
505  uint8 monitorHandle;
506  uint8 monitorChan;
507  uint16 monitorDuration;
508  uint32 startTime;
509  uint32 accessAddr;
510  uint32 crcInit;
511 #endif /* FEATURE_MONITOR */
512 } ubleParams_t;
513 
519 typedef struct {
520  uint8 offset;
521  uint8 len;
522  uint8 min;
523  uint8 max;
524 } ubParamLookup_t;
526 
527 /*-------------------------------------------------------------------
528  * API FUNCTIONS
529  */
530 
560 bStatus_t uble_stackInit(ubleAddrType_t addrType, uint8* pStaticAddr,
561  ublePostEvtProxyCB_t pfnPostEvtProxyCB, uint8 timeCritical);
562 
575 uint8 uble_timeCompare(uint32 time1, uint32 time2);
576 
586 uint32 uble_timeDelta(uint32 time1, uint32 time2);
587 
602 bStatus_t uble_setParameter(uint8 param, uint8 len, void *pValue);
603 
616 bStatus_t uble_getParameter(uint8 param, void *pValue);
617 
629 bStatus_t uble_checkAddr(ubleAddrType_t addrType, uint8 *pAddr);
630 
635 void uble_resetAddr(void);
636 
647 bStatus_t uble_getAddr(ubleAddrType_t addrType, uint8* pAddr);
648 
657 
665 void uble_processMsg(void);
666 
667 /*-------------------------------------------------------------------
668  * BLE_LOG FUNCTIONS
669  */
670 //#define BLE_LOG
671 #ifdef BLE_LOG
672 
673 #define BLE_LOG_MODULE_CTRL 0x01
674 #define BLE_LOG_MODULE_HOST 0x02
675 #define BLE_LOG_MODULE_APP 0x04
676 #define BLE_LOG_MODULE_OSAL_TASK 0x08
677 #define BLE_LOG_MODULE_RF_CMD 0x10
678 
679 void bleLog_int_int(void *handle, uint32_t type, uint8_t *format, uint32_t param1, uint32_t param2);
680 void bleLog_int_str(void *handle, uint32_t type, uint8_t *format, uint32_t param1, char *param2);
681 void bleLog_int_time(void *handle, uint32_t type, uint8_t *start_str, uint32_t param1);
682 
683 #define BLE_LOG_INT_INT(handle, type, format, param1, param2) bleLog_int_int(handle, type, format, param1, param2)
684 #define BLE_LOG_INT_STR(handle, type, format, param1, param2) bleLog_int_str(handle, type, format, param1, param2)
685 #define BLE_LOG_INT_TIME(handle, type, start_str, param1) bleLog_int_time(handle, type, start_str, param1)
686 #else
687 #define BLE_LOG_INT_INT(handle, type, format, param1, param2)
688 #define BLE_LOG_INT_STR(handle, type, format, param1, param2)
689 #define BLE_LOG_INT_TIME(handle, type, start_str, param1)
690 
691 #endif //BLE_LOG
692 
693 /*-------------------------------------------------------------------
694 -------------------------------------------------------------------*/
695 
696 #ifdef __cplusplus
697 }
698 #endif
699 
700 #endif /* UBLE_H */
701 
void uble_processMsg(void)
Let the Micro Stack process the queued messages.
bStatus_t uble_registerAntSwitchCB(ubleAntSwitchCB_t pfnAntSwitchCB)
Register callback for antenna switch.
void uble_resetAddr(void)
Make BD Addr revert to Random Static Address if exists or Public Address otherwise.
bStatus_t uble_stackInit(ubleAddrType_t addrType, uint8 *pStaticAddr, ublePostEvtProxyCB_t pfnPostEvtProxyCB, uint8 timeCritical)
Initialize Micro BLE Stack.
bStatus_t uble_getParameter(uint8 param, void *pValue)
Get a Micro BLE Stack parameter.
void(* ubleProcessMsg_t)(ubleEvtMsg_t *pEvtMsg)
Function to process event messages destined to the calle module.
Definition: uble.h:476
void(* ubleAntSwitchCB_t)(void)
Type of the callback to switch antenna in the application.
Definition: uble.h:471
#define UBLE_MAX_ADVDATA_LEN
Max Advertising Data Length.
Definition: uble.h:411
uint8 ubleEvt_t
Micro BLE Stack Event.
Definition: uble.h:436
bStatus_t uble_setParameter(uint8 param, uint8 len, void *pValue)
Set a Micro BLE Stack parameter.
uint8 ubleMsg_t
Type of Micro BLE Stack message.
Definition: uble.h:444
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:246
uint8 ubleEvtDst_t
Recipient of Micro BLE Stack Event.
Definition: uble.h:433
void(* ublePostEvtProxyCB_t)(void)
Type of the callback to have uble_processMsg called in the application task context.
Definition: uble.h:464
uint8 uble_timeCompare(uint32 time1, uint32 time2)
This function determines if the first time parameter is greater than the second time parameter...
uint8 ubleAddrType_t
Address Type.
Definition: uble.h:430
bStatus_t uble_getAddr(ubleAddrType_t addrType, uint8 *pAddr)
Retrieve the address corresponding to the given address type.
bStatus_t uble_checkAddr(ubleAddrType_t addrType, uint8 *pAddr)
Check if the given address is valid.
uint32 uble_timeDelta(uint32 time1, uint32 time2)
This function determines the difference between two time parameters, taking timer counter wrap into a...
© Copyright 1995-2024, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale