RUI3 (RAK Unified Interface 3) - RAK4631
udrv_ble.h
Go to the documentation of this file.
1 #ifndef _DRV_BLE_H_
2 #define _DRV_BLE_H_
3 
4 #ifdef __cplusplus
5 extern "C"
6 {
7 #endif
8 
9 #include <stdint.h>
10 
11 #define APP_ADV_TIMEOUT_IN_SECONDS 30
14  typedef enum
15  {
23  DRV_BLE_TX_POWER_0DBM = (0x00UL),
25  DRV_BLE_TX_POWER_NEG5DBM = (0xFBUL), // Edited by Sercan ERAT
27  DRV_BLE_TX_POWER_NEG10DBM = (0xF6UL), // Edited by Sercan ERAT
34 
35  typedef enum
36  {
43 
44  typedef enum
45  {
51 
52  typedef enum
53  {
61 
62  typedef enum
63  {
64  SET_NO_ACCESS = 0, /* Set sec_mode pointed to by ptr to have no access rights*/
65  SET_OPEN = 1, /* Set sec_mode pointed to by ptr to require no protection, open link.*/
66  SET_ENC_NO_MITM = 2, /* Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/
67  SET_ENC_WITH_MITM = 3, /* Set sec_mode pointed to by ptr to require encryption and MITM protection.*/
68  SET_LESC_ENC_WITH_MITM = 4, /* Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/
69  SET_SIGNED_NO_MITM = 5, /* Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/
70  SET_SIGNED_WITH_MITM = 6 /* Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/
72 
73 
74  typedef enum
75  {
78  } Event;
79 
80 
81  typedef void (*BLE_CUS_NOTIFY_HANDLER) (uint16_t, uint8_t *);
82 
83  typedef void (*BLE_CUS_SEND_HANDLER) (uint16_t, uint8_t *);
84 
85  typedef void (*BLE_SCAN_DATA_HANDLER) (int8_t, uint8_t *, uint8_t *, uint16_t); //rssi, mac address, raw data, raw data length
86 
87  typedef void (*BLE_KEYBOARD_HANDLER) (uint16_t, uint8_t);
88 
89  typedef void (*BLE_HANDLER)(void);
90 
92 
94 
96 
98 
99  void udrv_ble_register_callback_handler (Event event,BLE_HANDLER handler);
100 
101  void udrv_ble_stack_start(void);
102 
103  void udrv_ble_services_start(void);
104 
105  void udrv_ble_stop(void);
106 
111  int32_t udrv_ble_nus_available(void);
112 
113  int32_t udrv_ble_nus_read(uint8_t *Buffer, int32_t NumberOfBytes);
114 
115  void udrv_ble_nus_write(uint8_t *pdata, uint16_t length);
116 
118 
119  int32_t udrv_ble_get_txpower();
120 
121  int32_t udrv_ble_advertising_start(uint8_t time_out);
122 
123  int32_t udrv_ble_advertising_stop(void);
124 
125  int32_t udrv_ble_advertising_status();
126 
127  int32_t udrv_ble_set_device_name(char *devic_name, uint8_t device_name_length);
128 
129  char *udrv_ble_get_device_name();
130 
131  int32_t udrv_ble_get_macaddress(uint8_t *macaddr);
132 
133  int32_t udrv_ble_set_macaddress(uint8_t *macaddr);
134 
135  int32_t udrv_ble_set_adv_interval(uint32_t adv_interval);
136 
137  int32_t udrv_ble_get_adv_interval();
138 
139  void udrv_ble_set_adv_slow_mode(uint8_t adv_mode);
140 
141  uint8_t udrv_ble_get_adv_slow_mode();
142 
143  void udrv_ble_set_adv_fast_mode(uint8_t adv_mode);
144 
145  uint8_t udrv_ble_get_adv_fast_mode();
146 
147  void udrv_ble_switch_service_mode(drv_ble_service_mode service_mode);
148 
149  int32_t udrv_ble_set_beacon_major(uint16_t major_value);
150 
151  int32_t udrv_ble_set_beacon_minor(uint16_t minor_value);
152 
153  int32_t udrv_ble_set_beacon_uuid(uint8_t beaconUuid[]);
154 
155  int32_t udrv_ble_set_beacon_power(int8_t beacon_power);
156 
157  int32_t udrv_ble_set_beacon_custom_payload(uint8_t cus_adv_data[], uint8_t cus_adv_len);
158 
159  void udrv_ble_cus_init(void);
160 
161  void udrv_cus_services_init(uint8_t cus_service_uuid[]);
162 
163  int32_t udrv_cus_add_char(uint16_t chars_uuid, uint32_t chars_properties, uint8_t chars_permission, uint16_t len);
164 
165  void udrv_cus_notify(uint8_t *notify_data, uint16_t chars_uuid);
166 
167  void udrv_cus_write(uint8_t *send_data, uint16_t chars_uuid);
168 
169  void udrv_ble_cus_start(void);
170 
171  uint8_t udrv_cus_is_notifyEnabled(uint16_t chars_uuid);
172 
173  int32_t udrv_ble_set_scan_interval_window(uint16_t scan_interval, uint16_t scan_window);
174 
175  void udrv_ble_scan_start(uint16_t scan_sec);
176 
177  void udrv_ble_hid_start();
178 
179  void udrv_ble_hid_keys_send(uint8_t key_len, uint8_t * key_pattern);
180 
181  void udrv_ble_delete_bonds();
182 
184 
185  int32_t udrv_nus_set_keypairing(uint8_t *pairing_key, uint8_t key_length);
186 
187  int32_t udrv_nus_set_permission(uint8_t permission);
188 #ifdef __cplusplus
189 }
190 #endif
191 
192 #endif // #ifndef _DRV_BLE_H_
int32_t udrv_ble_set_adv_interval(uint32_t adv_interval)
Definition: udrv_ble.h:67
void udrv_ble_stack_start(void)
Definition: udrv_ble.h:47
void(* BLE_HANDLER)(void)
Definition: udrv_ble.h:89
int32_t udrv_ble_set_beacon_minor(uint16_t minor_value)
int32_t udrv_ble_set_beacon_power(int8_t beacon_power)
chars_properties
Definition: udrv_ble.h:52
void udrv_ble_set_adv_slow_mode(uint8_t adv_mode)
void(* BLE_CUS_NOTIFY_HANDLER)(uint16_t, uint8_t *)
Definition: udrv_ble.h:81
void udrv_ble_switch_service_mode(drv_ble_service_mode service_mode)
void udrv_ble_delete_bonds()
void udrv_ble_hid_keys_send(uint8_t key_len, uint8_t *key_pattern)
void udrv_ble_cus_start(void)
uint8_t udrv_cus_is_notifyEnabled(uint16_t chars_uuid)
void udrv_cus_notify(uint8_t *notify_data, uint16_t chars_uuid)
void udrv_cus_write(uint8_t *send_data, uint16_t chars_uuid)
int32_t udrv_ble_get_adv_interval()
Definition: udrv_ble.h:37
drv_ble_service_mode
Definition: udrv_ble.h:44
void udrv_ble_set_adv_fast_mode(uint8_t adv_mode)
void udrv_ble_cus_register_send_handler(BLE_CUS_SEND_HANDLER handler)
void(* BLE_SCAN_DATA_HANDLER)(int8_t, uint8_t *, uint8_t *, uint16_t)
Definition: udrv_ble.h:85
Definition: udrv_ble.h:32
int32_t udrv_ble_set_beacon_major(uint16_t major_value)
void udrv_ble_cus_register_notify_handler(BLE_CUS_NOTIFY_HANDLER handler)
void udrv_ble_scan_data_handler(BLE_SCAN_DATA_HANDLER handler)
int32_t udrv_nus_set_keypairing(uint8_t *pairing_key, uint8_t key_length)
Definition: udrv_ble.h:22
Definition: udrv_ble.h:40
void udrv_ble_services_start(void)
int32_t udrv_ble_advertising_status()
Definition: udrv_ble.h:23
void(* BLE_KEYBOARD_HANDLER)(uint16_t, uint8_t)
Definition: udrv_ble.h:87
Definition: udrv_ble.h:58
int32_t udrv_ble_advertising_stop(void)
drv_ble_adv_mode_t
Definition: udrv_ble.h:35
Definition: udrv_ble.h:57
Definition: udrv_ble.h:69
Definition: udrv_ble.h:66
int32_t udrv_ble_set_macaddress(uint8_t *macaddr)
Definition: udrv_ble.h:55
void udrv_ble_keyboard_handler(BLE_KEYBOARD_HANDLER handler)
Definition: udrv_ble.h:21
int32_t udrv_ble_get_macaddress(uint8_t *macaddr)
void udrv_ble_register_callback_handler(Event event, BLE_HANDLER handler)
int32_t udrv_ble_nus_available(void)
This API is used to get the read data length.
Definition: udrv_ble.h:68
Definition: udrv_ble.h:56
int32_t udrv_ble_get_txpower()
void udrv_print_current_service()
Definition: udrv_ble.h:18
Definition: udrv_ble.h:59
void udrv_ble_stop(void)
Definition: udrv_ble.h:65
void udrv_ble_cus_init(void)
int32_t udrv_nus_set_permission(uint8_t permission)
Definition: udrv_ble.h:64
int32_t udrv_ble_set_scan_interval_window(uint16_t scan_interval, uint16_t scan_window)
Event
Definition: udrv_ble.h:74
Definition: udrv_ble.h:30
uint8_t udrv_ble_get_adv_slow_mode()
void(* BLE_CUS_SEND_HANDLER)(uint16_t, uint8_t *)
Definition: udrv_ble.h:83
Definition: udrv_ble.h:20
void udrv_ble_hid_start()
uint16_t length
Definition: RAKProtocol.h:71
int32_t udrv_ble_set_beacon_custom_payload(uint8_t cus_adv_data[], uint8_t cus_adv_len)
char * udrv_ble_get_device_name()
int32_t udrv_ble_set_device_name(char *devic_name, uint8_t device_name_length)
Definition: udrv_ble.h:25
void udrv_cus_services_init(uint8_t cus_service_uuid[])
Definition: udrv_ble.h:49
Definition: udrv_ble.h:70
Definition: udrv_ble.h:29
void udrv_ble_set_txpower(drv_ble_tx_power_t tx_power)
Definition: udrv_ble.h:17
Definition: udrv_ble.h:48
Definition: udrv_ble.h:76
int32_t udrv_cus_add_char(uint16_t chars_uuid, uint32_t chars_properties, uint8_t chars_permission, uint16_t len)
Definition: udrv_ble.h:31
Definition: udrv_ble.h:19
Definition: udrv_ble.h:41
Definition: udrv_ble.h:26
chars_security_req
Definition: udrv_ble.h:62
Definition: udrv_ble.h:27
void udrv_ble_scan_start(uint16_t scan_sec)
Definition: udrv_ble.h:16
Definition: udrv_ble.h:24
Definition: udrv_ble.h:38
Definition: udrv_ble.h:77
drv_ble_tx_power_t
Definition: udrv_ble.h:14
Definition: udrv_ble.h:39
Definition: udrv_ble.h:46
Definition: udrv_ble.h:28
void udrv_ble_nus_write(uint8_t *pdata, uint16_t length)
int32_t udrv_ble_set_beacon_uuid(uint8_t beaconUuid[])
uint8_t udrv_ble_get_adv_fast_mode()
Definition: udrv_ble.h:54
int32_t udrv_ble_nus_read(uint8_t *Buffer, int32_t NumberOfBytes)
int32_t udrv_ble_advertising_start(uint8_t time_out)