m2mb API docs  25.21.002
m2mb API sets documentation
m2mb_bt.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
23 #ifndef M2MB_BT_H
24 #define M2MB_BT_H
25 
26 #include <stdio.h>
27 #include <string.h>
28 #include <stdlib.h>
29 #include <pthread.h>
30 #include "m2mb_types.h"
31 #include "m2mb_os_types.h"
32 #include "m2mb_os_api.h"
33 #include "m2mb_os_sem.h"
34 
35 #define M2MB_BT_MAX_DEVICE_NAME_LENGTH (39+1)
36 #define M2MB_BT_MAX_MANUFACTURER_NAME_LENGTH M2MB_BT_MAX_DEVICE_NAME_LENGTH
37 #define M2MB_BT_FIXPIN_SIZE 6
38 #define M2MB_BT_ADV_DATA_SIZE 32
39 #define M2MB_BT_SCAN_RSP_DATA_SIZE 32
40 #define M2MB_BT_ADDRESS_RESOLUTION_TIMEOUT 60
41 
42 #define M2MB_BT_MAX_PHONE_NUMBER 82
43 
44 typedef enum
45 {
46  M2MB_BT_STATUS_SUCCESS_E,
47  M2MB_BT_STATUS_FAILURE_E,
48  M2MB_BT_STATUS_OUT_OF_RANGE_E,
49  M2MB_BT_STATUS_NOT_READY_E,
50  M2MB_BT_STATUS_UNSUPPORTED_E,
51  M2MB_BT_STATUS_PARAM_INVALID_E,
52  M2MB_BT_STATUS_NO_MEM_E,
53  M2MB_BT_STATUS_AUTH_FAILURE_E,
54  M2MB_BT_STATUS_AUTH_REJECTED_E,
55  M2MB_BT_STATUS_INVALID_E,
56 
57  M2MB_BT_STATUS_ERR_INVALID_HANDLE_E,
58  M2MB_BT_STATUS_ERR_REQUEST_NOT_SUPPORTED_E,
59  M2MB_BT_STATUS_ERR_TIMEOUT_E,
60 
61 } M2MB_BT_STATUS_T;
62 
63 typedef enum
64 {
65  M2MB_BT_STATE_UNINITIALIZED,
66  M2MB_BT_STATE_INITIALIZED,
67 } M2MB_BT_INIT_STATE_T;
68 
69 typedef enum
70 {
71  M2MB_BT_ADVERTISE_ON_WITH_CUSTOMIZED_ADV_DISABLE,
72  M2MB_BT_ADVERTISE_ON_WITH_CUSTOMIZED_ADV_ENABLE,
73  M2MB_BT_ADVERTISE_OFF,
74 } M2MB_BT_ADV_TYPE_T;
75 
76 typedef enum
77 {
78  M2MB_BT_GAP_EVENT_SSP_REQUEST,
79  M2MB_BT_GAP_API_SSP_REPLY,
80 } M2MB_BT_MSG_T;
81 
82 typedef enum
83 {
84  M2MB_BT_AG_HFP_CONNECT_EVENT_E, /* HF device connect */
85  M2MB_BT_AG_HFP_DISCONNECT_EVENT_E, /* HF device disconnect */
86  M2MB_BT_AG_HFP_CALL_INCOMING_EVENT_E, /* Incoming call indication */
87  M2MB_BT_AG_HFP_CALL_ANSWER_EVENT_E, /* Call accepted by HF */
88  M2MB_BT_AG_HFP_CALL_REJECT_EVENT_E, /* call rejected by HF or remote number */
89  M2MB_BT_AG_HFP_CALL_HOLD_EVENT_E, /* Call hold event from HF */
90  M2MB_BT_AG_HFP_CALL_OUTGOING_EVENT_E, /* Outgoing call initiated by HF */
91  M2MB_BT_AG_HFP_CALL_DISCONNECT_EVENT_E, /* current call dis-connected either by HF or remote caller */
92  M2MB_BT_AG_HFP_AUDIO_CONNECT_EVENT_E, /* Audio path established */
93  M2MB_BT_AG_HFP_AUDIO_DISCONNECT_EVENT_E, /* Audio path disconnected */
94  M2MB_BT_AG_HFP_VOLUME_CTRL_EVENT_E, /* Volume control */
95  M2MB_BT_AG_HFP_CODEC_INFO_EVENT_E, /* Codec information */
96  M2MB_BT_SCAN_EVENT_E, /* scan result event */
97  M2MB_BT_DISCOVERY_START_EVENT_E, /* discovery start event */
98  M2MB_BT_DISCOVERY_STOP_EVENT_E, /* discovery stop event */
99  M2MB_BT_SSP_PIN_NOTIFICATION_EVENT_E,
100  M2MB_BT_SSP_PIN_EVENT_E,
102  M2MB_BT_SSP_REQUEST_EVENT_E,
103 
111 
112 /* codec type - WBS or NBS */
113 typedef enum
114 {
115  M2MB_BT_HFP_AG_CODEC_NONE,
116  M2MB_BT_HFP_AG_CODEC_WBS,
117  M2MB_BT_HFP_AG_CODEC_NBS
118 }M2MB_BT_HFP_AG_CODEC_TYPE_T;
119 
120 typedef enum
121 {
122  M2MB_BT_AG_HFP_DIAL_MSG_ID_DIAL_OUT_NUMBER,
123  M2MB_BT_AG_HFP_DIAL_MSG_ID_REDIAL,
124  M2MB_BT_AG_HFP_DIAL_MSG_ID_MEM_DIAL,
125 
126 }M2MB_BT_AG_HFP_DIAL_MSG_ID_T;
127 
128 typedef enum {
129  M2MB_BT_SPP_STATE_SERVER_INACTIVE = 0,
130  M2MB_BT_SPP_STATE_SERVER_ACTIVE=1,
131 }M2MB_BT_SPP_SERVER_STATE_T;
132 
133 typedef enum {
134  M2MB_BT_SPP_STATE_DEVICE_CONNECTED=2,
135  M2MB_BT_SPP_STATE_DEVICE_RECEIVE=3,
136  M2MB_BT_SPP_STATE_DEVICE_DISCONNECTED=4
137 }M2MB_BT_SPP_DEVICE_STATE_T;
138 
139 typedef struct M2MB_BT_BD_ADDR_S
140 {
141  UINT8 BD_ADDR0;
142  UINT8 BD_ADDR1;
143  UINT8 BD_ADDR2;
144  UINT8 BD_ADDR3;
145  UINT8 BD_ADDR4;
146  UINT8 BD_ADDR5;
148 
150 {
152  INT8 RSSI;
154  INT32 bluetooth_class; /* device class */
156 
157 
161 typedef struct
162 {
163  M2MB_BT_BD_ADDR_T bd_addr;
165  uint32_t pass_key;
166  uint8_t accept;
168 
174 typedef struct {
177  INT8 pincode[7];
178  UINT8 pin_size;
179  UINT8 accept_flag;
182 
183 typedef struct {
185  INT32 connection_id;
187 
188 typedef struct {
190  INT32 connection_id;
192 
193 typedef struct {
195  INT32 connection_id;
196  M2MB_BT_HFP_AG_CODEC_TYPE_T codec;
198 
199 typedef struct {
201  INT32 connection_id;
203 
204 typedef struct {
206  int con_id;
207  M2MB_BT_AG_HFP_DIAL_MSG_ID_T msg_id;
208  char dial_str[M2MB_BT_MAX_PHONE_NUMBER];
210 
211 typedef struct {
212  char number[M2MB_BT_MAX_PHONE_NUMBER];
214 
215 typedef struct {
217  M2MB_BT_HFP_AG_CODEC_TYPE_T codec_type;
219 
221 {
222  M2MB_BT_SPP_SERVER_STATE_T state;
224 
225 
227 {
230  int rx_len;
231  char *rx_buf;
234 
236 {
239  M2MB_BT_STATUS_T status;
241 
243 {
246  M2MB_BT_STATUS_T status;
248 
250 {
253  M2MB_BT_STATUS_T status;
255 
256 
258 {
264  union
265  {
270  /* HFP AG related events */
271  M2MB_BT_HFP_AG_CON_EVENT_T hfp_ag_con_event;
272  M2MB_BT_HFP_AG_DISCON_EVENT_T hfp_ag_discon_event;
273  M2MB_BT_HFP_AG_AUDIO_CON_EVENT_T hfp_ag_audio_con_event;
274  M2MB_BT_HFP_AG_AUDIO_DISCON_EVENT_T hfp_ag_audio_discon_event;
275  M2MB_BT_HFP_AG_DIAL_EVENT_T hfp_ag_dial_event;
276  M2MB_BT_HFP_AG_CALL_IND_EVENT_T hfp_ag_call_ind;
277  M2MB_BT_HFP_AG_CODEC_INFO_EVENT_T hfp_ag_codec_info_event;
278 
279  /*SPP related events */
285  } event_data;
287 
288 
290 {
291  M2MB_BT_BD_ADDR_T remote_bd_address;
293 
294 
295 /* BT configuration parameters */
296 typedef enum
297 {
305 
306 typedef enum
307 {
308  M2MB_BT_HFP_VOL_CTRL_TYPE_SPK,
309  M2MB_BT_HFP_VOL_CTRL_TYPE_MIC
310 }M2MB_BT_HFP_VOL_CTRL_TYPE_T;
311 
312 typedef HANDLE M2MB_BT_HANDLE;
313 
319 typedef void (*m2mb_bt_event_callback) (M2MB_BT_HANDLE bt_handle, M2MB_BT_USER_EVENTS_T bt_event, UINT16 resp_size, void *resp, void *userdata);
320 /*-----------------------------------------------------------------------------------------------*/
349 /*-----------------------------------------------------------------------------------------------*/
350 
351 M2MB_BT_STATUS_T m2mb_bt_initialize(M2MB_BT_HANDLE *bt_handle, m2mb_bt_event_callback bt_callback, void *user_data);
352 /*-----------------------------------------------------------------------------------------------*/
377 /*-----------------------------------------------------------------------------------------------*/
378 
379 M2MB_BT_STATUS_T m2mb_bt_get_init_state(M2MB_BT_HANDLE bt_handle, M2MB_BT_INIT_STATE_T *state);
380 /*-----------------------------------------------------------------------------------------------*/
402 /*-----------------------------------------------------------------------------------------------*/
403 M2MB_BT_STATUS_T m2mb_bt_shutdown(M2MB_BT_HANDLE bt_handle);
404 
405 /*-----------------------------------------------------------------------------------------------*/
437 /*-----------------------------------------------------------------------------------------------*/
438 
439 M2MB_BT_STATUS_T m2mb_bt_conf(M2MB_BT_HANDLE bt_handle, UINT8 num_cmds, ...);
440 
441 /*-----------------------------------------------------------------------------------------------*/
466 /*-----------------------------------------------------------------------------------------------*/
467 M2MB_BT_STATUS_T m2mb_bt_scan_start(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr);
468 
469 
470 /*-----------------------------------------------------------------------------------------------*/
492 /*-----------------------------------------------------------------------------------------------*/
493 M2MB_BT_STATUS_T m2mb_bt_scan_stop(M2MB_BT_HANDLE bt_handle);
494 
495 
496 /*-----------------------------------------------------------------------------------------------*/
524 /*-----------------------------------------------------------------------------------------------*/
525 M2MB_BT_STATUS_T m2mb_bt_bond_list_get(M2MB_BT_HANDLE bt_handle, M2MB_BT_BOND_LIST_INFO_T **bond_list_info, UINT32 *num_of_entries);
526 
527 
528 /*-----------------------------------------------------------------------------------------------*/
553 /*-----------------------------------------------------------------------------------------------*/
554 M2MB_BT_STATUS_T m2mb_bt_bond_delete(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr);
555 
556 
557 /*-----------------------------------------------------------------------------------------------*/
585 /*-----------------------------------------------------------------------------------------------*/
586 M2MB_BT_STATUS_T m2mb_bt_sspconf_reply(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr, UINT32 accept_flag);
587 
588 
589 /*-----------------------------------------------------------------------------------------------*/
621 /*-----------------------------------------------------------------------------------------------*/
622 M2MB_BT_STATUS_T m2mb_bt_ssppin_reply( M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr, INT32 ssppin, UINT8 accept_flag);
623 
624 #endif /* M2MB_BT_H */
M2MB_BT_HFP_AG_AUDIO_CON_EVENT_T::codec
M2MB_BT_HFP_AG_CODEC_TYPE_T codec
Definition: m2mb_bt.h:196
M2MB_BT_SPP_RX_END_EVENT_S
Definition: m2mb_bt.h:235
M2MB_BT_HFP_AG_AUDIO_DISCON_EVENT_T
Definition: m2mb_bt.h:199
M2MB_BT_SPP_RX_DATA_EVENT_S::rx_len
int rx_len
Definition: m2mb_bt.h:230
m2mb_bt_scan_start
M2MB_BT_STATUS_T m2mb_bt_scan_start(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr)
Starts BT scanning.
M2MB_BT_SPP_DISCONNECT_EVENT_S
Definition: m2mb_bt.h:249
M2MB_BT_HFP_AG_DISCON_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:189
M2MB_BT_CFG_DEVICE_NAME_GET_E
Definition: m2mb_bt.h:299
M2MB_BT_BD_ADDR_S
Definition: m2mb_bt.h:139
M2MB_BT_BOND_LIST_INFO_S
Definition: m2mb_bt.h:289
M2MB_BT_SPP_STATE_CHANGE_EVENT_S
Definition: m2mb_bt.h:220
M2MB_BT_CONFIG_PARAM_T
M2MB_BT_CONFIG_PARAM_T
Definition: m2mb_bt.h:296
M2MB_BT_PIN_REQUEST_T::pin_size
UINT8 pin_size
Definition: m2mb_bt.h:178
M2MB_BT_SPP_RX_END_EVENT_S::connection_id
INT32 connection_id
Definition: m2mb_bt.h:238
M2MB_BT_HFP_AG_AUDIO_CON_EVENT_T
Definition: m2mb_bt.h:193
m2mb_bt_sspconf_reply
M2MB_BT_STATUS_T m2mb_bt_sspconf_reply(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr, UINT32 accept_flag)
passkey conformation
M2MB_BT_SSP_REQUEST_T
Definition: m2mb_bt.h:161
M2MB_BT_SCAN_REPORT_DATA_S::RSSI
INT8 RSSI
Definition: m2mb_bt.h:152
M2MB_BT_SPP_PEER_DISCONNECT_IND
Definition: m2mb_bt.h:106
M2MB_BT_USER_EVENT_CTX_S::ssp_req
M2MB_BT_SSP_REQUEST_T ssp_req
Definition: m2mb_bt.h:267
M2MB_BT_USER_EVENT_CTX_S::event_data
union M2MB_BT_USER_EVENT_CTX_S::@2 event_data
BT user event data.
m2mb_bt_shutdown
M2MB_BT_STATUS_T m2mb_bt_shutdown(M2MB_BT_HANDLE bt_handle)
Deinitialization of BT.
M2MB_BT_CFG_DEVICE_NAME_SET_E
Definition: m2mb_bt.h:300
M2MB_BT_SPP_CONNECT_EVENT_S::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:244
M2MB_BT_SPP_RX_END_EVENT_S::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:237
M2MB_BT_USER_EVENT_CTX_S::spp_state_ind
M2MB_BT_SPP_STATE_CHANGE_EVENT_T spp_state_ind
Definition: m2mb_bt.h:281
M2MB_BT_SPP_DISCONNECT_EVENT_S::connection_id
INT32 connection_id
Definition: m2mb_bt.h:252
M2MB_BT_HFP_AG_CODEC_INFO_EVENT_T
Definition: m2mb_bt.h:215
M2MB_BT_SPP_CONNECT_EVENT_S::status
M2MB_BT_STATUS_T status
Definition: m2mb_bt.h:246
m2mb_bt_scan_stop
M2MB_BT_STATUS_T m2mb_bt_scan_stop(M2MB_BT_HANDLE bt_handle)
Stops BT scanning.
M2MB_BT_MAX_DEVICE_NAME_LENGTH
#define M2MB_BT_MAX_DEVICE_NAME_LENGTH
Definition: m2mb_bt.h:35
M2MB_BT_CFG_BD_ADDR_GET_E
Definition: m2mb_bt.h:298
m2mb_os_types.h
types used across OS (semaphore, mutex...)
M2MB_BT_SPP_RX_DATA_EVENT_S::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:228
M2MB_BT_USER_EVENT_CTX_S
Definition: m2mb_bt.h:257
M2MB_BT_SCAN_REPORT_DATA_S::BD_ADDR
M2MB_BT_BD_ADDR_T BD_ADDR
Definition: m2mb_bt.h:151
M2MB_BT_HFP_AG_CALL_IND_EVENT_T
Definition: m2mb_bt.h:211
M2MB_BT_SPP_DISCONNECT_EVENT_S::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:251
M2MB_BT_USER_EVENT_CTX_S::spp_rx_data_ind
M2MB_BT_SPP_RX_DATA_EVENT_T spp_rx_data_ind
Definition: m2mb_bt.h:280
M2MB_BT_USER_EVENT_CTX_S::spp_disconnect_ind
M2MB_BT_SPP_DISCONNECT_EVENT_T spp_disconnect_ind
Definition: m2mb_bt.h:284
m2mb_bt_ssppin_reply
M2MB_BT_STATUS_T m2mb_bt_ssppin_reply(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr, INT32 ssppin, UINT8 accept_flag)
passkey/pin response
M2MB_BT_HFP_AG_DISCON_EVENT_T
Definition: m2mb_bt.h:188
M2MB_BT_HFP_AG_AUDIO_CON_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:194
M2MB_BT_USER_EVENT_CTX_S::scan_data
M2MB_BT_SCAN_REPORT_DATA_T scan_data
Definition: m2mb_bt.h:266
m2mb_bt_conf
M2MB_BT_STATUS_T m2mb_bt_conf(M2MB_BT_HANDLE bt_handle, UINT8 num_cmds,...)
BT configuration API.
M2MB_BT_USER_EVENT_CTX_S::spp_rx_end_ind
M2MB_BT_SPP_RX_END_EVENT_T spp_rx_end_ind
Definition: m2mb_bt.h:282
m2mb_types.h
M2MB base types (ver. 121626N)
M2MB_BT_PIN_REQUEST_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:175
m2mb_bt_bond_list_get
M2MB_BT_STATUS_T m2mb_bt_bond_list_get(M2MB_BT_HANDLE bt_handle, M2MB_BT_BOND_LIST_INFO_T **bond_list_info, UINT32 *num_of_entries)
Gets the bond information.
m2mb_os_api.h
OS header include all OS API system.
M2MB_BT_PIN_REQUEST_T
BT PIN request.
Definition: m2mb_bt.h:174
M2MB_BT_PIN_REQUEST_T::accept_flag
UINT8 accept_flag
Definition: m2mb_bt.h:179
m2mb_os_sem.h
OS Samaphore prototypes.
m2mb_bt_get_init_state
M2MB_BT_STATUS_T m2mb_bt_get_init_state(M2MB_BT_HANDLE bt_handle, M2MB_BT_INIT_STATE_T *state)
Getting BT initialization state.
M2MB_BT_SPP_RX_DATA_EVENT_S
Definition: m2mb_bt.h:226
M2MB_BT_CFG_MANUFACTURER_NAME_GET_E
Definition: m2mb_bt.h:301
m2mb_bt_bond_delete
M2MB_BT_STATUS_T m2mb_bt_bond_delete(M2MB_BT_HANDLE bt_handle, M2MB_BT_BD_ADDR_T bd_addr)
Deletes bond information.
M2MB_BT_CFG_MANUFACTURER_NAME_SET_E
Definition: m2mb_bt.h:302
M2MB_BT_SPP_PEER_RX_END_EVENT_E
Definition: m2mb_bt.h:108
M2MB_BT_HFP_AG_DIAL_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:205
M2MB_BT_HFP_AG_CODEC_INFO_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:216
M2MB_BT_HFP_AG_DIAL_EVENT_T
Definition: m2mb_bt.h:204
M2MB_BT_SPP_RX_DATA_EVENT_S::rx_buf
char * rx_buf
Definition: m2mb_bt.h:231
M2MB_BT_SPP_SERVER_STATE_CHANGE_EVENT_E
Definition: m2mb_bt.h:104
m2mb_bt_event_callback
void(* m2mb_bt_event_callback)(M2MB_BT_HANDLE bt_handle, M2MB_BT_USER_EVENTS_T bt_event, UINT16 resp_size, void *resp, void *userdata)
BT event callback.
Definition: m2mb_bt.h:319
M2MB_BT_USER_EVENT_CTX_S::ssp_pin
M2MB_BT_PIN_REQUEST_T ssp_pin
Definition: m2mb_bt.h:268
M2MB_BT_HFP_AG_CON_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:184
M2MB_BT_SCAN_REPORT_DATA_S
Definition: m2mb_bt.h:149
M2MB_BT_HFP_AG_AUDIO_DISCON_EVENT_T::bd_addr
M2MB_BT_BD_ADDR_T bd_addr
Definition: m2mb_bt.h:200
m2mb_bt_initialize
M2MB_BT_STATUS_T m2mb_bt_initialize(M2MB_BT_HANDLE *bt_handle, m2mb_bt_event_callback bt_callback, void *user_data)
Initialization of BT.
M2MB_BT_SSP_CONF_EVENT_E
Definition: m2mb_bt.h:101
M2MB_BT_SPP_PEER_RX_DATA_EVENT_E
Definition: m2mb_bt.h:107
M2MB_BT_SCAN_REPORT_DATA_S::device_name
INT8 device_name[M2MB_BT_MAX_DEVICE_NAME_LENGTH+1]
Definition: m2mb_bt.h:153
M2MB_BT_SPP_CONNECT_EVENT_S::connection_id
INT32 connection_id
Definition: m2mb_bt.h:245
M2MB_BT_USER_EVENTS_T
M2MB_BT_USER_EVENTS_T
Definition: m2mb_bt.h:82
M2MB_BT_SPP_STATE_CHANGE_EVENT_S::state
M2MB_BT_SPP_SERVER_STATE_T state
Definition: m2mb_bt.h:222
M2MB_BT_SPP_PEER_CONNECT_IND
Definition: m2mb_bt.h:105
M2MB_BT_SPP_CONNECT_EVENT_S
Definition: m2mb_bt.h:242
M2MB_BT_SPP_RX_DATA_EVENT_S::connection_id
INT32 connection_id
Definition: m2mb_bt.h:229
M2MB_BT_HFP_AG_CON_EVENT_T
Definition: m2mb_bt.h:183
M2MB_BT_USER_EVENT_CTX_S::spp_connect_ind
M2MB_BT_SPP_CONNECT_EVENT_T spp_connect_ind
Definition: m2mb_bt.h:283