caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_nwk_connection.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_NWK_CONNECTION_H
7#define CAFFEINE_SAL_NWK_CONNECTION_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include "cfn_sal.h"
16
17/* Defines ----------------------------------------------------------*/
18
19#define CFN_SAL_NWK_TYPE_CONNECTION CFN_SAL_TYPE('C', 'O', 'N')
20
21/* Types Enums ------------------------------------------------------*/
22
30
38
39/* Types Structs ----------------------------------------------------*/
40
41typedef struct
42{
43 int16_t rssi_dbm;
44 int8_t snr_db;
47
48typedef struct
49{
50 uint32_t timeout_ms;
52 void *custom;
54
55typedef struct cfn_sal_nwk_connection_s cfn_sal_nwk_connection_t;
57
59 uint32_t event,
60 uint32_t error,
61 void *user_arg);
62
67{
68 cfn_hal_api_base_t base;
69
70 /* Control */
71 cfn_hal_error_code_t (*connect)(cfn_sal_nwk_connection_t *driver);
72 cfn_hal_error_code_t (*disconnect)(cfn_sal_nwk_connection_t *driver);
73
74 /* Info */
75 cfn_hal_error_code_t (*get_status)(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_status_t *status_out);
76 cfn_hal_error_code_t (*get_info)(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_info_t *info_out);
77
78 /* Extended Info & Config */
79 cfn_hal_error_code_t (*scan_networks)(cfn_sal_nwk_connection_t *driver, void *results_array, size_t max_count);
80 cfn_hal_error_code_t (*get_mac_address)(cfn_sal_nwk_connection_t *driver, uint8_t *mac_buf);
81 cfn_hal_error_code_t (*get_ip_address)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf);
82 cfn_hal_error_code_t (*get_gateway)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf);
83 cfn_hal_error_code_t (*get_dns)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf);
84 cfn_hal_error_code_t (*set_static_ip)(cfn_sal_nwk_connection_t *driver,
85 const uint8_t *ip,
86 const uint8_t *mask,
87 const uint8_t *gateway);
88};
89
91
92CFN_SAL_CREATE_DRIVER_TYPE(sal_nwk_connection,
97
98/* Functions inline ------------------------------------------------- */
99
101 uint32_t peripheral_id,
102 void *dependency,
104 const cfn_sal_phy_t *phy,
107 void *user_arg)
108{
109 CFN_HAL_POPULATE_DRIVER(
110 driver, CFN_SAL_NWK_TYPE_CONNECTION, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
111}
112
115 const cfn_sal_phy_t *phy,
116 void *dependency,
118 void *user_arg);
120
121CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_init(cfn_sal_nwk_connection_t *driver)
122{
123 if (!driver)
124 {
125 return CFN_HAL_ERROR_BAD_PARAM;
126 }
127 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
128 return cfn_hal_base_init(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION);
129}
130
131CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_deinit(cfn_sal_nwk_connection_t *driver)
132{
133 if (!driver)
134 {
135 return CFN_HAL_ERROR_BAD_PARAM;
136 }
137 return cfn_hal_base_deinit(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION);
138}
139
140CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_config_set(cfn_sal_nwk_connection_t *driver,
142{
143 if (!driver)
144 {
145 return CFN_HAL_ERROR_BAD_PARAM;
146 }
147 driver->config = config;
148 return cfn_hal_base_config_set(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, (const void *) config);
149}
150
151CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_config_get(cfn_sal_nwk_connection_t *driver,
153{
154 if (!driver || !config || !driver->config)
155 {
156 return CFN_HAL_ERROR_BAD_PARAM;
157 }
158 *config = *(driver->config);
159 return CFN_HAL_ERROR_OK;
160}
161
162CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_callback_register(cfn_sal_nwk_connection_t *driver,
164 void *user_arg)
165{
166 if (!driver)
167 {
168 return CFN_HAL_ERROR_BAD_PARAM;
169 }
170 driver->cb = callback;
171 driver->cb_user_arg = user_arg;
172 return cfn_hal_base_callback_register(
173 &driver->base, CFN_SAL_NWK_TYPE_CONNECTION, (cfn_hal_callback_t) callback, user_arg);
174}
175
176CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_power_state_set(cfn_sal_nwk_connection_t *driver,
177 cfn_hal_power_state_t state)
178{
179 if (!driver)
180 {
181 return CFN_HAL_ERROR_BAD_PARAM;
182 }
183 return cfn_hal_power_state_set(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, state);
184}
185
186CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_enable(cfn_sal_nwk_connection_t *driver,
187 uint32_t event_mask)
188{
189 if (!driver)
190 {
191 return CFN_HAL_ERROR_BAD_PARAM;
192 }
193 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, event_mask);
194}
195
196CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_disable(cfn_sal_nwk_connection_t *driver,
197 uint32_t event_mask)
198{
199 if (!driver)
200 {
201 return CFN_HAL_ERROR_BAD_PARAM;
202 }
203 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, event_mask);
204}
205
206CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_get(cfn_sal_nwk_connection_t *driver,
207 uint32_t *event_mask)
208{
209 if (!driver)
210 {
211 return CFN_HAL_ERROR_BAD_PARAM;
212 }
213 return cfn_hal_base_event_get(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, event_mask);
214}
215
216CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_enable(cfn_sal_nwk_connection_t *driver,
217 uint32_t error_mask)
218{
219 if (!driver)
220 {
221 return CFN_HAL_ERROR_BAD_PARAM;
222 }
223 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, error_mask);
224}
225
226CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_disable(cfn_sal_nwk_connection_t *driver,
227 uint32_t error_mask)
228{
229 if (!driver)
230 {
231 return CFN_HAL_ERROR_BAD_PARAM;
232 }
233 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, error_mask);
234}
235
236CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_get(cfn_sal_nwk_connection_t *driver,
237 uint32_t *error_mask)
238{
239 if (!driver)
240 {
241 return CFN_HAL_ERROR_BAD_PARAM;
242 }
243 return cfn_hal_base_error_get(&driver->base, CFN_SAL_NWK_TYPE_CONNECTION, error_mask);
244}
245
246/* Service Specific Functions --------------------------------------- */
247
248CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_connect(cfn_sal_nwk_connection_t *driver)
249{
250 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
251 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_NWK_TYPE_CONNECTION, connect, driver, error);
252 return error;
253}
254
255CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_disconnect(cfn_sal_nwk_connection_t *driver)
256{
257 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
258 CFN_HAL_CHECK_AND_CALL_FUNC(CFN_SAL_NWK_TYPE_CONNECTION, disconnect, driver, error);
259 return error;
260}
261
262CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_status(cfn_sal_nwk_connection_t *driver,
264{
265 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
266 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_status, driver, error, status_out);
267 return error;
268}
269
270CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_info(cfn_sal_nwk_connection_t *driver,
272{
273 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
274 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_info, driver, error, info_out);
275 return error;
276}
277
278CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_scan_networks(cfn_sal_nwk_connection_t *driver,
279 void *results_array,
280 size_t max_count)
281{
282 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
283 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(
284 CFN_SAL_NWK_TYPE_CONNECTION, scan_networks, driver, error, results_array, max_count);
285 return error;
286}
287
288CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_mac_address(cfn_sal_nwk_connection_t *driver,
289 uint8_t *mac_buf)
290{
291 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
292 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_mac_address, driver, error, mac_buf);
293 return error;
294}
295
296CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_ip_address(cfn_sal_nwk_connection_t *driver,
297 uint8_t *ip_buf)
298{
299 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
300 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_ip_address, driver, error, ip_buf);
301 return error;
302}
303
304CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_gateway(cfn_sal_nwk_connection_t *driver,
305 uint8_t *ip_buf)
306{
307 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
308 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_gateway, driver, error, ip_buf);
309 return error;
310}
311
312CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_dns(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
313{
314 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
315 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, get_dns, driver, error, ip_buf);
316 return error;
317}
318
319CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_set_static_ip(cfn_sal_nwk_connection_t *driver,
320 const uint8_t *ip,
321 const uint8_t *mask,
322 const uint8_t *gateway)
323{
324 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
325 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_NWK_TYPE_CONNECTION, set_static_ip, driver, error, ip, mask, gateway);
326 return error;
327}
328
329#ifdef __cplusplus
330}
331#endif
332
333#endif /* CAFFEINE_SAL_NWK_CONNECTION_H */
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
cfn_sal_nwk_connection_status_t
Definition cfn_sal_nwk_connection.h:32
@ CFN_SAL_NWK_CONNECTION_STATUS_ERROR
Definition cfn_sal_nwk_connection.h:36
@ CFN_SAL_NWK_CONNECTION_STATUS_CONNECTING
Definition cfn_sal_nwk_connection.h:34
@ CFN_SAL_NWK_CONNECTION_STATUS_DISCONNECTED
Definition cfn_sal_nwk_connection.h:33
@ CFN_SAL_NWK_CONNECTION_STATUS_CONNECTED
Definition cfn_sal_nwk_connection.h:35
CFN_HAL_INLINE void cfn_sal_nwk_connection_populate(cfn_sal_nwk_connection_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_nwk_connection_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_nwk_connection_config_t *config, cfn_sal_nwk_connection_callback_t callback, void *user_arg)
Definition cfn_sal_nwk_connection.h:100
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_power_state_set(cfn_sal_nwk_connection_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_nwk_connection.h:176
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_connect(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:248
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_disable(cfn_sal_nwk_connection_t *driver, uint32_t error_mask)
Definition cfn_sal_nwk_connection.h:226
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_gateway(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:304
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_set_static_ip(cfn_sal_nwk_connection_t *driver, const uint8_t *ip, const uint8_t *mask, const uint8_t *gateway)
Definition cfn_sal_nwk_connection.h:319
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_ip_address(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:296
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_status(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_status_t *status_out)
Definition cfn_sal_nwk_connection.h:262
struct cfn_sal_nwk_connection_s cfn_sal_nwk_connection_t
Definition cfn_sal_nwk_connection.h:55
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_scan_networks(cfn_sal_nwk_connection_t *driver, void *results_array, size_t max_count)
Definition cfn_sal_nwk_connection.h:278
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_disable(cfn_sal_nwk_connection_t *driver, uint32_t event_mask)
Definition cfn_sal_nwk_connection.h:196
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_deinit(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:131
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_enable(cfn_sal_nwk_connection_t *driver, uint32_t event_mask)
Definition cfn_sal_nwk_connection.h:186
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_init(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:121
#define CFN_SAL_NWK_TYPE_CONNECTION
Definition cfn_sal_nwk_connection.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_mac_address(cfn_sal_nwk_connection_t *driver, uint8_t *mac_buf)
Definition cfn_sal_nwk_connection.h:288
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_callback_register(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_callback_t callback, void *user_arg)
Definition cfn_sal_nwk_connection.h:162
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_dns(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:312
cfn_hal_error_code_t cfn_sal_nwk_connection_destruct(cfn_sal_nwk_connection_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_config_get(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_config_t *config)
Definition cfn_sal_nwk_connection.h:151
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_get(cfn_sal_nwk_connection_t *driver, uint32_t *error_mask)
Definition cfn_sal_nwk_connection.h:236
void(* cfn_sal_nwk_connection_callback_t)(cfn_sal_nwk_connection_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_nwk_connection.h:58
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_event_get(cfn_sal_nwk_connection_t *driver, uint32_t *event_mask)
Definition cfn_sal_nwk_connection.h:206
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_config_set(cfn_sal_nwk_connection_t *driver, const cfn_sal_nwk_connection_config_t *config)
Definition cfn_sal_nwk_connection.h:140
cfn_sal_nwk_connection_event_t
Definition cfn_sal_nwk_connection.h:24
@ CFN_SAL_NWK_CONNECTION_EVENT_DISCONNECTED
Definition cfn_sal_nwk_connection.h:27
@ CFN_SAL_NWK_CONNECTION_EVENT_NONE
Definition cfn_sal_nwk_connection.h:25
@ CFN_SAL_NWK_CONNECTION_EVENT_LINK_LOST
Definition cfn_sal_nwk_connection.h:28
@ CFN_SAL_NWK_CONNECTION_EVENT_CONNECTED
Definition cfn_sal_nwk_connection.h:26
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_get_info(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_info_t *info_out)
Definition cfn_sal_nwk_connection.h:270
cfn_hal_error_code_t cfn_sal_nwk_connection_construct(cfn_sal_nwk_connection_t *driver, const cfn_sal_nwk_connection_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_nwk_connection_callback_t callback, void *user_arg)
CFN_HAL_VMT_CHECK(struct cfn_sal_nwk_connection_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_error_enable(cfn_sal_nwk_connection_t *driver, uint32_t error_mask)
Definition cfn_sal_nwk_connection.h:216
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_nwk_connection_disconnect(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:255
Connection Virtual Method Table (VMT).
Definition cfn_sal_nwk_connection.h:67
cfn_hal_error_code_t(* get_info)(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_info_t *info_out)
Definition cfn_sal_nwk_connection.h:76
cfn_hal_error_code_t(* get_dns)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:83
cfn_hal_api_base_t base
Definition cfn_sal_nwk_connection.h:68
cfn_hal_error_code_t(* get_ip_address)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:81
cfn_hal_error_code_t(* connect)(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:71
cfn_hal_error_code_t(* get_status)(cfn_sal_nwk_connection_t *driver, cfn_sal_nwk_connection_status_t *status_out)
Definition cfn_sal_nwk_connection.h:75
cfn_hal_error_code_t(* get_gateway)(cfn_sal_nwk_connection_t *driver, uint8_t *ip_buf)
Definition cfn_sal_nwk_connection.h:82
cfn_hal_error_code_t(* get_mac_address)(cfn_sal_nwk_connection_t *driver, uint8_t *mac_buf)
Definition cfn_sal_nwk_connection.h:80
cfn_hal_error_code_t(* disconnect)(cfn_sal_nwk_connection_t *driver)
Definition cfn_sal_nwk_connection.h:72
cfn_hal_error_code_t(* set_static_ip)(cfn_sal_nwk_connection_t *driver, const uint8_t *ip, const uint8_t *mask, const uint8_t *gateway)
Definition cfn_sal_nwk_connection.h:84
cfn_hal_error_code_t(* scan_networks)(cfn_sal_nwk_connection_t *driver, void *results_array, size_t max_count)
Definition cfn_sal_nwk_connection.h:79
Definition cfn_sal_nwk_connection.h:49
bool auto_reconnect
Definition cfn_sal_nwk_connection.h:51
uint32_t timeout_ms
Definition cfn_sal_nwk_connection.h:50
void * custom
Definition cfn_sal_nwk_connection.h:52
Definition cfn_sal_nwk_connection.h:42
int8_t snr_db
Definition cfn_sal_nwk_connection.h:44
uint8_t link_quality_percent
Definition cfn_sal_nwk_connection.h:45
int16_t rssi_dbm
Definition cfn_sal_nwk_connection.h:43
Generic physical mapping for services.
Definition cfn_sal_types.h:26