Appiko
ble_adv.h
1 
35 #ifndef CODEBASE_PERIPHERAL_MODULES_BLE_ADV_H_
36 #define CODEBASE_PERIPHERAL_MODULES_BLE_ADV_H_
37 
38 #include <stdbool.h>
39 #include <stdint.h>
40 
41 #ifdef DEBUG
42 
43 #define LOG_BUFFER_SIZE 128
44 
45 typedef struct {
46  uint32_t time;
47  const char* func_name;
48  uint8_t radio_state;
49  uint8_t radio_ctx_state;
50  uint8_t freq;
51 }log_t;
52 
53 void dump_log(void);
54 
55 #else
56 
57 #endif
58 
59 /**************** Link Layer ****************/
60 
62 #define ADV_INTERVAL_MS(x) ((x*16)/10)
63 
65 #define ADRS_LEN 6
66 
67 #define ADV_HEADER_LEN 2
68 
70 typedef enum {
71  PUBLIC_ADRS_PARAM,
72  RANDOM_ADRS_PARAM
73  /* Page 1279 of 4.2 spec. Controller generates Resolvable Private Address based on the local
74  IRK from resolving list. If resolving list contains no matching entry,
75  use public/private address. */
76  //RESV_PRIV_ADRS_PUBLIC
77  //RESV_PRIV_ADRS_PRIVATE
79 
86 #define GAP_ADV_FLAGS 0x1
87 #define GAP_ADV_UUID16_INCOMP 0x2
88 #define GAP_ADV_UUID16_ALL 0x3
89 #define GAP_ADV_UUID32_INCOMP 0x4
90 #define GAP_ADV_UUID32_ALL 0x5
91 #define GAP_ADV_UUID128_INCOMP 0x6
92 #define GAP_ADV_UUID128_ALL 0x7
93 #define GAP_ADV_NAME_SHORT 0x8
94 #define GAP_ADV_NAME_FULL 0x9
95 #define GAP_ADV_TRANSMIT_PWR 0xA
96 #define GAP_ADV_CONN_INTERVAL 0x12
97 #define GAP_ADV_SERVICE_DATA 0x16
98 #define GAP_ADV_MANUF_DATA 0xFF
99 
102 typedef enum {
103  ADV_IND_PARAM, // Connectable undirected advertising
104  ADV_DIRECT_IND_PARAM, // Connectable high duty cycle directed advertising (high duty cycle)
105  ADV_SCAN_IND_PARAM, // Scannable undirected advertising
106  ADV_NONCONN_IND_PARAM // Non connectable undirected advertising
107  //ADV_DIRECT_IND // Connectable low duty cycle directed advertising(low duty cycle)
109 
111 typedef enum {
120 
124 typedef struct {
126  uint16_t adv_intvl;
131 // Peer_Address_Type,
132 // Peer_Address,
135 // Advertising_Filter_Policy;
137 
141 void ble_adv_set_tx_power(int8_t pwr);
142 
146 int8_t ble_adv_get_tx_power(void);
147 
150 void ble_adv_start(void);
151 
154 void ble_adv_stop(void);
155 
160 void ble_adv_set_adv_data(uint8_t len, uint8_t* data_ptr);
161 
165 void ble_adv_set_adv_param(ble_adv_param_t * adv_param);
166 
171 void ble_adv_set_random_adrs(uint8_t * rand_adrs);
172 
177 void ble_adv_set_scan_rsp_data(uint8_t len, uint8_t* data_ptr);
178 
179 
180 #endif /* CODEBASE_PERIPHERAL_MODULES_BLE_ADV_H_ */
181 
CH_39_PARAM.
Definition: ble_adv.h:115
CH_ALL_PARAM.
Definition: ble_adv.h:118
CH_37_PARAM.
Definition: ble_adv.h:112
void ble_adv_start(void)
Start advertising based on the parameters set.
Definition: ble_adv.c:550
ble_adv_ch_map_t adv_ch_map
Definition: ble_adv.h:134
void ble_adv_set_tx_power(int8_t pwr)
Set the advertising transmission power in dBm.
Definition: ble_adv.c:229
CH_38_PARAM.
Definition: ble_adv.h:113
uint16_t adv_intvl
Definition: ble_adv.h:126
ble_adv_type_t
Defines for advertising parameters (BLE Spec 4.2 Vol 2, Part E, 7.8.5 Page No:1277)
Definition: ble_adv.h:102
CH_37_38_PARAM.
Definition: ble_adv.h:114
ble_adv_type_t adv_type
Definition: ble_adv.h:128
ble_adv_ch_map_t
The various advertisement channels combinations that can be used for advertising.
Definition: ble_adv.h:111
void ble_adv_set_adv_param(ble_adv_param_t *adv_param)
Set the advertising parameters to be used.
Definition: ble_adv.c:202
adrs_type_t own_adrs_type
Definition: ble_adv.h:130
CH_38_39_PARAM.
Definition: ble_adv.h:117
int8_t ble_adv_get_tx_power(void)
Get the advertising transmission power in dBm.
Definition: ble_adv.c:225
void ble_adv_stop(void)
Stop advertising.
Definition: ble_adv.c:556
void ble_adv_set_scan_rsp_data(uint8_t len, uint8_t *data_ptr)
Set the scan response data.
Definition: ble_adv.c:251
CH_37_39_PARAM.
Definition: ble_adv.h:116
void ble_adv_set_random_adrs(uint8_t *rand_adrs)
Set the random address to be used.
Definition: ble_adv.c:242
The structure format for setting the advertisement parameters.
Definition: ble_adv.h:124
adrs_type_t
The address types in BLE advertisement: Public and random.
Definition: ble_adv.h:70
void ble_adv_set_adv_data(uint8_t len, uint8_t *data_ptr)
Set the advertising data.
Definition: ble_adv.c:246