SmartSnippets DA1459x SDK
ble_mgr.h
Go to the documentation of this file.
1 
43 #ifndef BLE_MGR_H_
44 #define BLE_MGR_H_
45 
46 #include <stdbool.h>
47 #include "osal.h"
48 #include "ad_ble.h"
49 #include "ble_config.h"
50 #include "ble_gap.h"
51 #include "ble_mgr_config.h"
52 #include "ble_mgr_cmd.h"
53 
54 #if (dg_configBLE_PRIVACY_1_2 == 1)
55 typedef enum {
56  BLE_MGR_RAL_OP_NONE = 0,
57  BLE_MGR_RAL_OP_ADV_DIRECTED,
58  BLE_MGR_RAL_OP_ADV_UNDIRECTED,
59  BLE_MGR_RAL_OP_SCAN,
60  BLE_MGR_RAL_OP_CONNECT,
61  BLE_MGR_RAL_OP_NO_PRIVACY,
62 } ble_mgr_ral_op_t;
63 #endif /* (dg_configBLE_PRIVACY_1_2 == 1) */
64 
66 typedef struct ble_dev_params_tag {
68  char dev_name[BLE_GAP_DEVNAME_LEN_MAX+1];
73  bool advertising;
74  bool connecting;
75  bool scanning;
83  uint8_t att_db_cfg;
84  uint16_t mtu_size;
90  uint8_t adv_channel_map;
91  uint16_t adv_intv_min;
92  uint16_t adv_intv_max;
95  uint16_t adv_data_length;
105 #if (dg_configBLE_PRIVACY_1_2 == 1)
106  ble_mgr_ral_op_t prev_privacy_operation;
107 #endif /* (dg_configBLE_PRIVACY_1_2 == 1) */
108 #if (dg_configBLE_2MBIT_PHY == 1)
109  uint8_t tx_phy_pref_default;
110  uint8_t rx_phy_pref_default;
111  bool phy_set_pending;
112  bool phy_change_req;
113 #endif /* (dg_configBLE_2MBIT_PHY == 1) */
114  int8_t conn_rssi;
116 
118 typedef enum ble_stack_msg_types {
119  HCI_CMD_MSG = 0x01, // HCI Command Packet
120  HCI_ACL_MSG = 0x02, // HCI ACL Data Packet
121  HCI_SCO_MSG = 0x03, // HCI Synchronous Data Packet
122  HCI_EVT_MSG = 0x04, // HCI Event Packet
123  GTL_MSG = 0x05, // GTL Message Packet
125 
127 typedef struct {
128  OS_TASK task;
129  OS_QUEUE cmd_q;
130 #if (BLE_MGR_USE_EVT_LIST == 0)
131  OS_QUEUE evt_q;
132 #else
133  void *evt_q;
134 #endif
135  OS_QUEUE rsp_q;
137 
146 void ble_mgr_init(void);
147 
158 OS_BASE_TYPE ble_mgr_command_queue_send(const void *item, OS_TICK_TIME wait_ticks);
159 
170 OS_BASE_TYPE ble_mgr_event_queue_send(const void *item, OS_TICK_TIME wait_ticks);
171 
178 void ble_mgr_event_queue_flush(void);
179 
189 OS_BASE_TYPE ble_mgr_event_queue_get(void *item, OS_TICK_TIME wait_ticks);
190 
202 OS_BASE_TYPE ble_mgr_event_queue_peek(void *item, OS_TICK_TIME wait_ticks);
203 
213 OS_BASE_TYPE ble_mgr_command_queue_send_from_isr(const void *item );
214 
222 
231 void ble_mgr_register_application(OS_TASK task);
232 
242 OS_BASE_TYPE ble_mgr_response_queue_send(const void *item, OS_TICK_TIME wait_ticks);
243 
253 OS_BASE_TYPE ble_mgr_response_queue_get(void *item, OS_TICK_TIME wait_ticks);
254 
262 void ble_mgr_notify_app_task(uint32_t notif_value);
263 
270 
277 void ble_mgr_dev_params_release(void);
278 
285 void ble_mgr_acquire(void);
286 
292 void ble_mgr_release(void);
293 
294 #if (BLE_MGR_DIRECT_ACCESS == 1)
295 
301 void ble_mgr_waitqueue_acquire(void);
302 
308 void ble_mgr_waitqueue_release(void);
309 #endif /* (BLE_MGR_DIRECT_ACCESS == 1) */
310 
316 bool ble_mgr_is_own_task(void);
317 
324 
330 
340 void ble_mgr_notify_adapter_blocked(bool status);
341 
347 
353 bool ble_mgr_adapter_is_blocked(void);
354 
367 
375 void ble_mgr_set_status(ble_status_t status);
376 
377 
378 
379 #endif /* BLE_MGR_H_ */
380 
ble_dev_params_tag::adv_type
gap_conn_mode_t adv_type
Definition: ble_mgr.h:88
gap_conn_params_t
Definition: ble_gap.h:574
ble_dev_params_tag::scan_rsp_data_length
uint16_t scan_rsp_data_length
Definition: ble_mgr.h:97
ble_mgr_notify_event_consumed
void ble_mgr_notify_event_consumed(void)
Notifies BLE manager that posted event was consumed.
ble_config.h
BLE configuration options.
ble_dev_params_tag::scan_rsp_data
uint8_t scan_rsp_data[BLE_SCAN_RSP_LEN_MAX]
Definition: ble_mgr.h:98
ble_mgr_dev_params_acquire
ble_dev_params_t * ble_mgr_dev_params_acquire(void)
Get a pointer to the BLE device parameters structure.
ble_mgr_response_queue_get
OS_BASE_TYPE ble_mgr_response_queue_get(void *item, OS_TICK_TIME wait_ticks)
Get message from BLE Manager's response queue.
own_address
Definition: ble_common.h:201
ble_mgr_cmd.h
BLE manager command definitions.
ble_dev_params_tag::irk
irk_t irk
Definition: ble_mgr.h:80
ble_mgr_command_queue_send_from_isr
OS_BASE_TYPE ble_mgr_command_queue_send_from_isr(const void *item)
Send a message to the BLE Manager's command queue from an ISR.
ble_mgr_init
void ble_mgr_init(void)
Initialize BLE Manager - create command and event queues.
ble_mgr_is_own_task
bool ble_mgr_is_own_task(void)
Checks if current task is BLE Manager task.
gap_io_cap_t
gap_io_cap_t
Definition: ble_gap.h:541
ble_dev_params_tag::io_capabilities
gap_io_cap_t io_capabilities
Definition: ble_mgr.h:104
ble_stack_msg_type_t
enum ble_stack_msg_types ble_stack_msg_type_t
ble_mgr_response_queue_send
OS_BASE_TYPE ble_mgr_response_queue_send(const void *item, OS_TICK_TIME wait_ticks)
Send message to BLE Manager's response queue.
BLE_NON_CONN_ADV_DATA_LEN_MAX
#define BLE_NON_CONN_ADV_DATA_LEN_MAX
Definition: ble_gap.h:55
ble_mgr_config.h
BLE Manager Configuration.
ble_stack_msg_types
ble_stack_msg_types
Definition: ble_mgr.h:118
ble_mgr_register_application
void ble_mgr_register_application(OS_TASK task)
Register application in BLE Manager.
ble_mgr_interface_t::rsp_q
OS_QUEUE rsp_q
Definition: ble_mgr.h:135
ble_dev_params_tag::advertising
bool advertising
Definition: ble_mgr.h:73
gap_scan_params_t
Definition: ble_gap.h:582
ble_dev_params_tag::status
ble_status_t status
Definition: ble_mgr.h:71
ble_dev_params_tag::adv_filter_policy
adv_filt_pol_t adv_filter_policy
Definition: ble_mgr.h:93
ble_dev_params_tag::adv_intv_max
uint16_t adv_intv_max
Definition: ble_mgr.h:92
ble_dev_params_tag::scanning
bool scanning
Definition: ble_mgr.h:75
ble_mgr_interface_t::task
OS_TASK task
Definition: ble_mgr.h:128
ble_mgr_notify_app_task
void ble_mgr_notify_app_task(uint32_t notif_value)
Send a task notification to the application task registered to the BLE Manager.
gap_chnl_map
Definition: ble_gap.h:458
BLE_SCAN_RSP_LEN_MAX
#define BLE_SCAN_RSP_LEN_MAX
Definition: ble_gap.h:58
ble_mgr_waitqueue_release
void ble_mgr_waitqueue_release(void)
Release the BLE manager waitqueue.
osal.h
OS abstraction layer API.
ble_mgr_dev_params_release
void ble_mgr_dev_params_release(void)
Release the BLE device parameters.
ble_dev_params_tag::adv_channel_map
uint8_t adv_channel_map
Definition: ble_mgr.h:90
ble_dev_params_tag::adv_mode
gap_disc_mode_t adv_mode
Definition: ble_mgr.h:89
ble_dev_params_tag::adv_intv_min
uint16_t adv_intv_min
Definition: ble_mgr.h:91
ble_dev_params_t
struct ble_dev_params_tag ble_dev_params_t
ble_mgr_event_queue_flush
void ble_mgr_event_queue_flush(void)
Flush BLE Manager's event queue.
ble_mgr_adapter_is_blocked
bool ble_mgr_adapter_is_blocked(void)
Returns current adapter status (blocked or not)
ble_dev_params_tag::addr_renew_duration
uint16_t addr_renew_duration
Definition: ble_mgr.h:78
ble_dev_params_tag::conn_rssi
int8_t conn_rssi
Definition: ble_mgr.h:114
ble_dev_params_tag::gap_ppcp
gap_conn_params_t gap_ppcp
Definition: ble_mgr.h:102
ble_mgr_interface_t
Definition: ble_mgr.h:127
ble_mgr_interface_t::cmd_q
OS_QUEUE cmd_q
Definition: ble_mgr.h:129
ble_mgr_notify_adapter_blocked
void ble_mgr_notify_adapter_blocked(bool status)
Notifies BLE manager that BLE adapter is blocked or unblocked on its event queue.
ble_mgr_command_queue_send
OS_BASE_TYPE ble_mgr_command_queue_send(const void *item, OS_TICK_TIME wait_ticks)
Send a message to the BLE Manager's command queue.
gap_role_t
gap_role_t
Definition: ble_gap.h:448
ble_dev_params_tag::connecting
bool connecting
Definition: ble_mgr.h:74
ble_mgr_event_queue_send
OS_BASE_TYPE ble_mgr_event_queue_send(const void *item, OS_TICK_TIME wait_ticks)
Send a message to the BLE Manager's event queue.
ble_dev_params_tag::adv_data_length
uint16_t adv_data_length
Definition: ble_mgr.h:95
gap_conn_mode_t
gap_conn_mode_t
Definition: ble_gap.h:470
ble_dev_params_tag::dev_name
char dev_name[BLE_GAP_DEVNAME_LEN_MAX+1]
Definition: ble_mgr.h:68
ble_dev_params_tag::mtu_size
uint16_t mtu_size
Definition: ble_mgr.h:84
ble_mgr_waitqueue_acquire
void ble_mgr_waitqueue_acquire(void)
Acquire the BLE manager waitqueue.
ble_mgr_acquire
void ble_mgr_acquire(void)
Acquire the BLE manager interface.
ble_dev_params_tag::channel_map
gap_chnl_map_t channel_map
Definition: ble_mgr.h:86
ble_mgr_set_status
void ble_mgr_set_status(ble_status_t status)
Set BLE status.
ble_dev_params_tag::adv_data
uint8_t adv_data[BLE_NON_CONN_ADV_DATA_LEN_MAX]
Definition: ble_mgr.h:96
ble_dev_params_tag
Definition: ble_mgr.h:66
ble_dev_params_tag::att_db_cfg
uint8_t att_db_cfg
Definition: ble_mgr.h:83
ble_mgr_event_queue_get
OS_BASE_TYPE ble_mgr_event_queue_get(void *item, OS_TICK_TIME wait_ticks)
Get message from BLE Manager's event queue.
ble_mgr_get_interface
const ble_mgr_interface_t * ble_mgr_get_interface(void)
Get BLE Manager interface structure.
ble_mgr_get_status
ble_status_t ble_mgr_get_status(void)
Get the status of BLE.
ad_ble.h
BLE Adapter API.
ble_dev_params_tag::addr_resolv_req_pending
uint16_t addr_resolv_req_pending
Definition: ble_mgr.h:81
ble_mgr_release
void ble_mgr_release(void)
Release the BLE manager interface.
ble_gap.h
BLE GAP API.
ble_status_t
ble_status_t
Definition: ble_common.h:170
ble_mgr_interface_t::evt_q
void * evt_q
Definition: ble_mgr.h:133
ble_dev_params_tag::appearance
gap_appearance_t appearance
Definition: ble_mgr.h:69
adv_filt_pol_t
adv_filt_pol_t
Definition: ble_gap.h:493
ble_dev_params_tag::role
gap_role_t role
Definition: ble_mgr.h:76
ble_mgr_notify_commit_storage
void ble_mgr_notify_commit_storage(void)
Notifies BLE manager to commit storage changes, if any.
irk_t
Definition: ble_common.h:217
ble_dev_params_tag::adv_direct_address
bd_address_t adv_direct_address
Definition: ble_mgr.h:94
gap_appearance_t
gap_appearance_t
Definition: ble_gap.h:111
gap_disc_mode_t
gap_disc_mode_t
Definition: ble_gap.h:478
ble_dev_params_tag::scan_params
gap_scan_params_t scan_params
Definition: ble_mgr.h:100
ble_mgr_event_queue_peek
OS_BASE_TYPE ble_mgr_event_queue_peek(void *item, OS_TICK_TIME wait_ticks)
Peek message from BLE Manager's event queue.
ble_mgr_dev_params_set_default
void ble_mgr_dev_params_set_default(void)
Set default dev_params.
ble_dev_params_tag::own_addr
own_address_t own_addr
Definition: ble_mgr.h:79
bd_address
Definition: ble_common.h:195