Morse Micro IoT SDK  2.11.2
mmagic_controller.h
1/*
2 * Copyright 2026 Morse Micro
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Warning: this file is autogenerated. Do not modify by hand.
7 */
8
9#pragma once
10
28#include <stdbool.h>
29#include <stddef.h>
30#include <stdint.h>
31#include <memory.h>
32
33#ifdef __cplusplus
34extern "C"
35{
36#endif
37
38#ifndef MM_PACKED
40#define MM_PACKED __attribute__((packed))
41#endif
42
51{
53 MMAGIC_SECURITY_TYPE_SAE = 0,
55 MMAGIC_SECURITY_TYPE_OWE = 1,
57 MMAGIC_SECURITY_TYPE_OPEN = 2,
58};
59
62{
64 MMAGIC_PMF_MODE_REQUIRED = 0,
66 MMAGIC_PMF_MODE_DISABLED = 1,
67};
68
71{
73 MMAGIC_POWER_SAVE_MODE_DISABLED = 0,
75 MMAGIC_POWER_SAVE_MODE_ENABLED = 1,
76};
77
80{
82 MMAGIC_MCS10_MODE_DISABLED = 0,
84 MMAGIC_MCS10_MODE_FORCED = 1,
86 MMAGIC_MCS10_MODE_AUTO = 2,
87};
88
91{
93 MMAGIC_DUTY_CYCLE_MODE_SPREAD = 0,
95 MMAGIC_DUTY_CYCLE_MODE_BURST = 1,
96};
97
100{
102 MMAGIC_STATION_TYPE_SENSOR = 0,
104 MMAGIC_STATION_TYPE_NON_SENSOR = 1,
105};
106
109{
111 MMAGIC_STATUS_OK = 0,
113 MMAGIC_STATUS_ERROR = 1,
115 MMAGIC_STATUS_INVALID_ARG = 2,
117 MMAGIC_STATUS_UNAVAILABLE = 3,
119 MMAGIC_STATUS_TIMEOUT = 4,
121 MMAGIC_STATUS_INVALID_STREAM = 5,
123 MMAGIC_STATUS_NOT_FOUND = 6,
125 MMAGIC_STATUS_NOT_SUPPORTED = 7,
127 MMAGIC_STATUS_TX_ERROR = 8,
129 MMAGIC_STATUS_NO_MEM = 9,
131 MMAGIC_STATUS_CLOSED = 10,
133 MMAGIC_STATUS_CHANNEL_LIST_NOT_SET = 11,
135 MMAGIC_STATUS_SHUTDOWN_BLOCKED = 12,
137 MMAGIC_STATUS_CHANNEL_INVALID = 13,
139 MMAGIC_STATUS_NOT_RUNNING = 14,
141 MMAGIC_STATUS_NO_LINK = 15,
143 MMAGIC_STATUS_UNKNOWN_HOST = 16,
145 MMAGIC_STATUS_SOCKET_FAILED = 17,
147 MMAGIC_STATUS_SOCKET_CONNECT_FAILED = 18,
149 MMAGIC_STATUS_SOCKET_BIND_FAILED = 19,
151 MMAGIC_STATUS_SOCKET_LISTEN_FAILED = 20,
153 MMAGIC_STATUS_NTP_KOD_RECEIVED = 21,
155 MMAGIC_STATUS_NTP_KOD_BACKOFF_RECEIVED = 22,
157 MMAGIC_STATUS_SOCKET_SEND_FAILED = 23,
160 MMAGIC_STATUS_INVALID_CREDENTIALS = 24,
162 MMAGIC_STATUS_HANDSHAKE_FAILED = 25,
164 MMAGIC_STATUS_AUTHENTICATION_FAILED = 26,
167 MMAGIC_STATUS_MISSING_CREDENTIALS = 27,
170 MMAGIC_STATUS_TIME_NOT_SYNCHRONIZED = 28,
172 MMAGIC_STATUS_MQTT_REFUSED = 29,
174 MMAGIC_STATUS_MQTT_KEEPALIVE_TIMEOUT = 30,
176 MMAGIC_STATUS_NOT_INITIALIZED = 31,
178 MMAGIC_STATUS_BAD_VERSION = 32,
180 MMAGIC_STATUS_DPP_PB_ERROR = 33,
182 MMAGIC_STATUS_DPP_PB_SESSION_OVERLAP = 34,
183};
184
187{
189 MMAGIC_IPERF_MODE_UDP_SERVER = 0,
191 MMAGIC_IPERF_MODE_TCP_SERVER = 1,
193 MMAGIC_IPERF_MODE_UDP_CLIENT = 2,
195 MMAGIC_IPERF_MODE_TCP_CLIENT = 3,
196};
197
200{
202 MMAGIC_IPERF_STATE_NOT_STARTED = 0,
204 MMAGIC_IPERF_STATE_RUNNING = 1,
206 MMAGIC_IPERF_STATE_FINISHED = 2,
208 MMAGIC_IPERF_STATE_ABORTED = 3,
209};
210
213{
215 MMAGIC_IP_LINK_STATE_DOWN = 0,
217 MMAGIC_IP_LINK_STATE_UP = 1,
218};
219
222{
224 MMAGIC_DEEP_SLEEP_MODE_DISABLED = 0,
226 MMAGIC_DEEP_SLEEP_MODE_ONE_SHOT = 1,
228 MMAGIC_DEEP_SLEEP_MODE_HARDWARE = 2,
229};
230
233{
235 MMAGIC_STA_STATE_DISCONNECTED = 1,
237 MMAGIC_STA_STATE_CONNECTING = 2,
239 MMAGIC_STA_STATE_CONNECTED = 3,
240};
241
244{
246 MMAGIC_STA_EVENT_SCAN_REQUEST = 0,
248 MMAGIC_STA_EVENT_SCAN_COMPLETE = 1,
250 MMAGIC_STA_EVENT_SCAN_ABORT = 2,
252 MMAGIC_STA_EVENT_AUTH_REQUEST = 3,
254 MMAGIC_STA_EVENT_ASSOC_REQUEST = 4,
256 MMAGIC_STA_EVENT_DEAUTH_TX = 5,
258 MMAGIC_STA_EVENT_CTRL_PORT_OPEN = 6,
260 MMAGIC_STA_EVENT_CTRL_PORT_CLOSED = 7,
261};
262
265{
267 MMAGIC_SOCKET_PROTO_TCP = 0,
269 MMAGIC_SOCKET_PROTO_UDP = 1,
270};
271
274{
276 MMAGIC_SUBSYSTEM_ID_HOST = 0,
278 MMAGIC_SUBSYSTEM_ID_MAC = 1,
280 MMAGIC_SUBSYSTEM_ID_PHY = 2,
282 MMAGIC_SUBSYSTEM_ID_UMAC = 3,
283};
284
287{
289 uint8_t len;
290
292 char data[32 + 1];
293};
294
297{
299 uint8_t len;
300
302 char data[100 + 1];
303};
304
307{
309 uint8_t len;
310
312 char data[254 + 1];
313};
314
317{
319 uint8_t len;
320
322 uint8_t data[255];
323};
324
327{
329 uint16_t len;
330
332 uint8_t data[1536];
333};
334
337{
339 uint16_t len;
340
342 uint8_t data[1600];
343};
344
347{
349 uint8_t addr[6];
350};
351
355{
357 char country_code[3];
358};
359
362{
364 uint8_t oui[3];
365};
366
369{
371 uint8_t count;
373 struct struct_oui ouis[5];
374};
375
378{
380 struct string32 ssid;
382 struct struct_mac_addr bssid;
384 int32_t rssi;
386 struct raw255 ies;
397 uint8_t bw_mhz;
399 uint8_t op_bw_mhz;
402 int16_t noise_dbm;
404 uint64_t tsf;
405};
406
409{
411 struct string32 application_version;
413 struct string32 bootloader_version;
415 struct string32 user_hardware_version;
417 struct string32 morse_firmware_version;
419 struct string32 morselib_version;
421 struct string32 morse_hardware_version;
422};
423
426{
428 struct struct_scan_result results[10];
430 uint8_t num;
431};
432
436{
438 char addr[48];
439};
440
443{
449 struct struct_ip_addr ip_addr;
451 struct struct_ip_addr netmask;
453 struct struct_ip_addr gateway;
455 struct struct_ip_addr broadcast;
457 struct struct_ip_addr dns_servers[2];
458};
459
462{
464 struct struct_ip_addr receiver_addr;
466 uint32_t total_count;
468 uint32_t recv_count;
470 uint32_t min_time_ms;
472 uint32_t avg_time_ms;
474 uint32_t max_time_ms;
476 uint16_t session_id;
477};
478
481{
483 struct struct_ip_addr remote_addr;
485 uint16_t remote_port;
487 struct struct_ip_addr local_addr;
489 uint16_t local_port;
493 uint32_t duration_ms;
496};
497
500{
502 uint8_t buffer[64];
504 uint8_t len;
505};
506
511{
530};
531
543struct mmagic_controller;
544
554typedef void (*mmagic_controller_agent_start_cb_t)(struct mmagic_controller *controller, void *arg);
555
560{
565};
566
570#define MMAGIC_CONTROLLER_ARGS_INIT { 0 }
571
580struct mmagic_controller *mmagic_controller_init(const struct mmagic_controller_init_args *args);
581
587void mmagic_controller_deinit(struct mmagic_controller *controller);
588
600#define CONTROL_STREAM 0
601
603#define MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS 1000
604
607#define MMAGIC_CONTROLLER_DEFAULT_COMMIT_RESPONSE_TIMEOUT_MS 12000
608
623enum mmagic_status mmagic_controller_tx(struct mmagic_controller *controller,
624 uint8_t stream_id,
625 uint8_t submodule_id,
626 uint8_t command_id,
627 uint8_t subcommand_id,
628 const uint8_t *buffer,
629 size_t buffer_length);
630
647enum mmagic_status mmagic_controller_rx(struct mmagic_controller *controller,
648 uint8_t stream_id,
649 uint8_t submodule_id,
650 uint8_t command_id,
651 uint8_t subcommand_id,
652 uint8_t *buffer,
653 size_t buffer_length,
654 uint32_t timeout_ms);
655
667enum mmagic_status mmagic_controller_agent_sync(struct mmagic_controller *controller,
668 uint32_t timeout_ms);
669
687enum mmagic_status mmagic_controller_request_agent_reset(struct mmagic_controller *controller);
688
691{
786};
787
790{
824};
825
828{
853};
854
857{
871};
872
875{
883};
884
887{
898};
899
902{
915};
916
919{
930};
931
934{
951};
952
955{
984};
985
988{
998};
999
1002{
1011};
1012
1015{
1018};
1019
1022{
1035};
1036
1039{
1042};
1043
1046{
1065};
1066
1090 struct mmagic_controller *controller,
1091 struct struct_country_code *var)
1092{
1093 enum mmagic_status status;
1094 status = mmagic_controller_tx(controller,
1099 NULL,
1100 0);
1101 if (status != MMAGIC_STATUS_OK)
1102 {
1103 return status;
1104 }
1105 status = mmagic_controller_rx(controller,
1110 (uint8_t *)var,
1111 sizeof(*var),
1113 return status;
1114}
1115
1127 struct mmagic_controller *controller,
1128 struct struct_country_code *var)
1129{
1130 enum mmagic_status status;
1131 status = mmagic_controller_tx(controller,
1136 (uint8_t *)var,
1137 sizeof(*var));
1138 if (status != MMAGIC_STATUS_OK)
1139 {
1140 return status;
1141 }
1142 status = mmagic_controller_rx(controller,
1147 NULL,
1148 0,
1150 return status;
1151}
1152
1164 struct mmagic_controller *controller,
1165 struct string32 *var)
1166{
1167 enum mmagic_status status;
1168 status = mmagic_controller_tx(controller,
1173 NULL,
1174 0);
1175 if (status != MMAGIC_STATUS_OK)
1176 {
1177 return status;
1178 }
1179 status = mmagic_controller_rx(controller,
1184 (uint8_t *)var,
1185 sizeof(*var),
1187 return status;
1188}
1189
1201 struct mmagic_controller *controller,
1202 const char *var)
1203{
1204 struct string32 var_val;
1205 enum mmagic_status status;
1206 var_val.len = strlen(var);
1207 if (var_val.len > sizeof(var_val.data) - 1)
1208 {
1209 return MMAGIC_STATUS_INVALID_ARG;
1210 }
1211 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1212 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1213 status = mmagic_controller_tx(controller,
1218 (uint8_t *)&var_val,
1219 sizeof(var_val));
1220 if (status != MMAGIC_STATUS_OK)
1221 {
1222 return status;
1223 }
1224 status = mmagic_controller_rx(controller,
1229 NULL,
1230 0,
1232 return status;
1233}
1234
1246 struct mmagic_controller *controller,
1247 struct string100 *var)
1248{
1249 enum mmagic_status status;
1250 status = mmagic_controller_tx(controller,
1255 NULL,
1256 0);
1257 if (status != MMAGIC_STATUS_OK)
1258 {
1259 return status;
1260 }
1261 status = mmagic_controller_rx(controller,
1266 (uint8_t *)var,
1267 sizeof(*var),
1269 return status;
1270}
1271
1283 struct mmagic_controller *controller,
1284 const char *var)
1285{
1286 struct string100 var_val;
1287 enum mmagic_status status;
1288 var_val.len = strlen(var);
1289 if (var_val.len > sizeof(var_val.data) - 1)
1290 {
1291 return MMAGIC_STATUS_INVALID_ARG;
1292 }
1293 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1294 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1295 status = mmagic_controller_tx(controller,
1300 (uint8_t *)&var_val,
1301 sizeof(var_val));
1302 if (status != MMAGIC_STATUS_OK)
1303 {
1304 return status;
1305 }
1306 status = mmagic_controller_rx(controller,
1311 NULL,
1312 0,
1314 return status;
1315}
1316
1328 struct mmagic_controller *controller,
1329 enum mmagic_security_type *var)
1330{
1331 enum mmagic_status status;
1332 status = mmagic_controller_tx(controller,
1337 NULL,
1338 0);
1339 if (status != MMAGIC_STATUS_OK)
1340 {
1341 return status;
1342 }
1343 status = mmagic_controller_rx(controller,
1348 (uint8_t *)var,
1349 sizeof(*var),
1351 return status;
1352}
1353
1365 struct mmagic_controller *controller,
1366 enum mmagic_security_type var)
1367{
1368 enum mmagic_status status;
1369 status = mmagic_controller_tx(controller,
1374 (uint8_t *)&var,
1375 sizeof(var));
1376 if (status != MMAGIC_STATUS_OK)
1377 {
1378 return status;
1379 }
1380 status = mmagic_controller_rx(controller,
1385 NULL,
1386 0,
1388 return status;
1389}
1390
1402 struct mmagic_controller *controller,
1403 int16_t *var)
1404{
1405 enum mmagic_status status;
1406 status = mmagic_controller_tx(controller,
1411 NULL,
1412 0);
1413 if (status != MMAGIC_STATUS_OK)
1414 {
1415 return status;
1416 }
1417 status = mmagic_controller_rx(controller,
1422 (uint8_t *)var,
1423 sizeof(*var),
1425 return status;
1426}
1427
1439 struct mmagic_controller *controller,
1440 int16_t var)
1441{
1442 enum mmagic_status status;
1443 status = mmagic_controller_tx(controller,
1448 (uint8_t *)&var,
1449 sizeof(var));
1450 if (status != MMAGIC_STATUS_OK)
1451 {
1452 return status;
1453 }
1454 status = mmagic_controller_rx(controller,
1459 NULL,
1460 0,
1462 return status;
1463}
1464
1476 struct mmagic_controller *controller,
1477 struct struct_mac_addr *var)
1478{
1479 enum mmagic_status status;
1480 status = mmagic_controller_tx(controller,
1485 NULL,
1486 0);
1487 if (status != MMAGIC_STATUS_OK)
1488 {
1489 return status;
1490 }
1491 status = mmagic_controller_rx(controller,
1496 (uint8_t *)var,
1497 sizeof(*var),
1499 return status;
1500}
1501
1513 struct mmagic_controller *controller,
1514 struct struct_mac_addr *var)
1515{
1516 enum mmagic_status status;
1517 status = mmagic_controller_tx(controller,
1522 (uint8_t *)var,
1523 sizeof(*var));
1524 if (status != MMAGIC_STATUS_OK)
1525 {
1526 return status;
1527 }
1528 status = mmagic_controller_rx(controller,
1533 NULL,
1534 0,
1536 return status;
1537}
1538
1550 struct mmagic_controller *controller,
1551 enum mmagic_pmf_mode *var)
1552{
1553 enum mmagic_status status;
1554 status = mmagic_controller_tx(controller,
1559 NULL,
1560 0);
1561 if (status != MMAGIC_STATUS_OK)
1562 {
1563 return status;
1564 }
1565 status = mmagic_controller_rx(controller,
1570 (uint8_t *)var,
1571 sizeof(*var),
1573 return status;
1574}
1575
1587 struct mmagic_controller *controller,
1588 enum mmagic_pmf_mode var)
1589{
1590 enum mmagic_status status;
1591 status = mmagic_controller_tx(controller,
1596 (uint8_t *)&var,
1597 sizeof(var));
1598 if (status != MMAGIC_STATUS_OK)
1599 {
1600 return status;
1601 }
1602 status = mmagic_controller_rx(controller,
1607 NULL,
1608 0,
1610 return status;
1611}
1612
1624 struct mmagic_controller *controller,
1625 enum mmagic_station_type *var)
1626{
1627 enum mmagic_status status;
1628 status = mmagic_controller_tx(controller,
1633 NULL,
1634 0);
1635 if (status != MMAGIC_STATUS_OK)
1636 {
1637 return status;
1638 }
1639 status = mmagic_controller_rx(controller,
1644 (uint8_t *)var,
1645 sizeof(*var),
1647 return status;
1648}
1649
1661 struct mmagic_controller *controller,
1662 enum mmagic_station_type var)
1663{
1664 enum mmagic_status status;
1665 status = mmagic_controller_tx(controller,
1670 (uint8_t *)&var,
1671 sizeof(var));
1672 if (status != MMAGIC_STATUS_OK)
1673 {
1674 return status;
1675 }
1676 status = mmagic_controller_rx(controller,
1681 NULL,
1682 0,
1684 return status;
1685}
1686
1698 struct mmagic_controller *controller,
1699 uint32_t *var)
1700{
1701 enum mmagic_status status;
1702 status = mmagic_controller_tx(controller,
1707 NULL,
1708 0);
1709 if (status != MMAGIC_STATUS_OK)
1710 {
1711 return status;
1712 }
1713 status = mmagic_controller_rx(controller,
1718 (uint8_t *)var,
1719 sizeof(*var),
1721 return status;
1722}
1723
1735 struct mmagic_controller *controller,
1736 uint32_t var)
1737{
1738 enum mmagic_status status;
1739 status = mmagic_controller_tx(controller,
1744 (uint8_t *)&var,
1745 sizeof(var));
1746 if (status != MMAGIC_STATUS_OK)
1747 {
1748 return status;
1749 }
1750 status = mmagic_controller_rx(controller,
1755 NULL,
1756 0,
1758 return status;
1759}
1760
1772 struct mmagic_controller *controller,
1773 bool *var)
1774{
1775 enum mmagic_status status;
1776 status = mmagic_controller_tx(controller,
1781 NULL,
1782 0);
1783 if (status != MMAGIC_STATUS_OK)
1784 {
1785 return status;
1786 }
1787 status = mmagic_controller_rx(controller,
1792 (uint8_t *)var,
1793 sizeof(*var),
1795 return status;
1796}
1797
1809 struct mmagic_controller *controller,
1810 bool var)
1811{
1812 enum mmagic_status status;
1813 status = mmagic_controller_tx(controller,
1818 (uint8_t *)&var,
1819 sizeof(var));
1820 if (status != MMAGIC_STATUS_OK)
1821 {
1822 return status;
1823 }
1824 status = mmagic_controller_rx(controller,
1829 NULL,
1830 0,
1832 return status;
1833}
1834
1846 struct mmagic_controller *controller,
1847 bool *var)
1848{
1849 enum mmagic_status status;
1850 status = mmagic_controller_tx(controller,
1855 NULL,
1856 0);
1857 if (status != MMAGIC_STATUS_OK)
1858 {
1859 return status;
1860 }
1861 status = mmagic_controller_rx(controller,
1866 (uint8_t *)var,
1867 sizeof(*var),
1869 return status;
1870}
1871
1883 struct mmagic_controller *controller,
1884 bool var)
1885{
1886 enum mmagic_status status;
1887 status = mmagic_controller_tx(controller,
1892 (uint8_t *)&var,
1893 sizeof(var));
1894 if (status != MMAGIC_STATUS_OK)
1895 {
1896 return status;
1897 }
1898 status = mmagic_controller_rx(controller,
1903 NULL,
1904 0,
1906 return status;
1907}
1908
1920 struct mmagic_controller *controller,
1921 bool *var)
1922{
1923 enum mmagic_status status;
1924 status = mmagic_controller_tx(controller,
1929 NULL,
1930 0);
1931 if (status != MMAGIC_STATUS_OK)
1932 {
1933 return status;
1934 }
1935 status = mmagic_controller_rx(controller,
1940 (uint8_t *)var,
1941 sizeof(*var),
1943 return status;
1944}
1945
1957 struct mmagic_controller *controller,
1958 bool var)
1959{
1960 enum mmagic_status status;
1961 status = mmagic_controller_tx(controller,
1966 (uint8_t *)&var,
1967 sizeof(var));
1968 if (status != MMAGIC_STATUS_OK)
1969 {
1970 return status;
1971 }
1972 status = mmagic_controller_rx(controller,
1977 NULL,
1978 0,
1980 return status;
1981}
1982
1994 struct mmagic_controller *controller,
1995 enum mmagic_power_save_mode *var)
1996{
1997 enum mmagic_status status;
1998 status = mmagic_controller_tx(controller,
2003 NULL,
2004 0);
2005 if (status != MMAGIC_STATUS_OK)
2006 {
2007 return status;
2008 }
2009 status = mmagic_controller_rx(controller,
2014 (uint8_t *)var,
2015 sizeof(*var),
2017 return status;
2018}
2019
2031 struct mmagic_controller *controller,
2032 enum mmagic_power_save_mode var)
2033{
2034 enum mmagic_status status;
2035 status = mmagic_controller_tx(controller,
2040 (uint8_t *)&var,
2041 sizeof(var));
2042 if (status != MMAGIC_STATUS_OK)
2043 {
2044 return status;
2045 }
2046 status = mmagic_controller_rx(controller,
2051 NULL,
2052 0,
2054 return status;
2055}
2056
2069 struct mmagic_controller *controller,
2070 uint32_t *var)
2071{
2072 enum mmagic_status status;
2073 status = mmagic_controller_tx(controller,
2078 NULL,
2079 0);
2080 if (status != MMAGIC_STATUS_OK)
2081 {
2082 return status;
2083 }
2084 status = mmagic_controller_rx(controller,
2089 (uint8_t *)var,
2090 sizeof(*var),
2092 return status;
2093}
2094
2107 struct mmagic_controller *controller,
2108 uint32_t var)
2109{
2110 enum mmagic_status status;
2111 status = mmagic_controller_tx(controller,
2116 (uint8_t *)&var,
2117 sizeof(var));
2118 if (status != MMAGIC_STATUS_OK)
2119 {
2120 return status;
2121 }
2122 status = mmagic_controller_rx(controller,
2127 NULL,
2128 0,
2130 return status;
2131}
2132
2144 struct mmagic_controller *controller,
2145 bool *var)
2146{
2147 enum mmagic_status status;
2148 status = mmagic_controller_tx(controller,
2153 NULL,
2154 0);
2155 if (status != MMAGIC_STATUS_OK)
2156 {
2157 return status;
2158 }
2159 status = mmagic_controller_rx(controller,
2164 (uint8_t *)var,
2165 sizeof(*var),
2167 return status;
2168}
2169
2181 struct mmagic_controller *controller,
2182 bool var)
2183{
2184 enum mmagic_status status;
2185 status = mmagic_controller_tx(controller,
2190 (uint8_t *)&var,
2191 sizeof(var));
2192 if (status != MMAGIC_STATUS_OK)
2193 {
2194 return status;
2195 }
2196 status = mmagic_controller_rx(controller,
2201 NULL,
2202 0,
2204 return status;
2205}
2206
2222 struct mmagic_controller *controller,
2223 uint32_t *var)
2224{
2225 enum mmagic_status status;
2226 status = mmagic_controller_tx(controller,
2231 NULL,
2232 0);
2233 if (status != MMAGIC_STATUS_OK)
2234 {
2235 return status;
2236 }
2237 status = mmagic_controller_rx(controller,
2242 (uint8_t *)var,
2243 sizeof(*var),
2245 return status;
2246}
2247
2263 struct mmagic_controller *controller,
2264 uint32_t var)
2265{
2266 enum mmagic_status status;
2267 status = mmagic_controller_tx(controller,
2272 (uint8_t *)&var,
2273 sizeof(var));
2274 if (status != MMAGIC_STATUS_OK)
2275 {
2276 return status;
2277 }
2278 status = mmagic_controller_rx(controller,
2283 NULL,
2284 0,
2286 return status;
2287}
2288
2303 struct mmagic_controller *controller,
2304 uint32_t *var)
2305{
2306 enum mmagic_status status;
2307 status = mmagic_controller_tx(controller,
2312 NULL,
2313 0);
2314 if (status != MMAGIC_STATUS_OK)
2315 {
2316 return status;
2317 }
2318 status = mmagic_controller_rx(controller,
2323 (uint8_t *)var,
2324 sizeof(*var),
2326 return status;
2327}
2328
2343 struct mmagic_controller *controller,
2344 uint32_t var)
2345{
2346 enum mmagic_status status;
2347 status = mmagic_controller_tx(controller,
2352 (uint8_t *)&var,
2353 sizeof(var));
2354 if (status != MMAGIC_STATUS_OK)
2355 {
2356 return status;
2357 }
2358 status = mmagic_controller_rx(controller,
2363 NULL,
2364 0,
2366 return status;
2367}
2368
2381 struct mmagic_controller *controller,
2382 bool *var)
2383{
2384 enum mmagic_status status;
2385 status = mmagic_controller_tx(controller,
2390 NULL,
2391 0);
2392 if (status != MMAGIC_STATUS_OK)
2393 {
2394 return status;
2395 }
2396 status = mmagic_controller_rx(controller,
2401 (uint8_t *)var,
2402 sizeof(*var),
2404 return status;
2405}
2406
2419 struct mmagic_controller *controller,
2420 bool var)
2421{
2422 enum mmagic_status status;
2423 status = mmagic_controller_tx(controller,
2428 (uint8_t *)&var,
2429 sizeof(var));
2430 if (status != MMAGIC_STATUS_OK)
2431 {
2432 return status;
2433 }
2434 status = mmagic_controller_rx(controller,
2439 NULL,
2440 0,
2442 return status;
2443}
2444
2458 struct mmagic_controller *controller,
2459 uint16_t *var)
2460{
2461 enum mmagic_status status;
2462 status = mmagic_controller_tx(controller,
2467 NULL,
2468 0);
2469 if (status != MMAGIC_STATUS_OK)
2470 {
2471 return status;
2472 }
2473 status = mmagic_controller_rx(controller,
2478 (uint8_t *)var,
2479 sizeof(*var),
2481 return status;
2482}
2483
2497 struct mmagic_controller *controller,
2498 uint16_t var)
2499{
2500 enum mmagic_status status;
2501 status = mmagic_controller_tx(controller,
2506 (uint8_t *)&var,
2507 sizeof(var));
2508 if (status != MMAGIC_STATUS_OK)
2509 {
2510 return status;
2511 }
2512 status = mmagic_controller_rx(controller,
2517 NULL,
2518 0,
2520 return status;
2521}
2522
2536 struct mmagic_controller *controller,
2537 uint16_t *var)
2538{
2539 enum mmagic_status status;
2540 status = mmagic_controller_tx(controller,
2545 NULL,
2546 0);
2547 if (status != MMAGIC_STATUS_OK)
2548 {
2549 return status;
2550 }
2551 status = mmagic_controller_rx(controller,
2556 (uint8_t *)var,
2557 sizeof(*var),
2559 return status;
2560}
2561
2575 struct mmagic_controller *controller,
2576 uint16_t var)
2577{
2578 enum mmagic_status status;
2579 status = mmagic_controller_tx(controller,
2584 (uint8_t *)&var,
2585 sizeof(var));
2586 if (status != MMAGIC_STATUS_OK)
2587 {
2588 return status;
2589 }
2590 status = mmagic_controller_rx(controller,
2595 NULL,
2596 0,
2598 return status;
2599}
2600
2616 struct mmagic_controller *controller,
2617 struct string32 *var)
2618{
2619 enum mmagic_status status;
2620 status = mmagic_controller_tx(controller,
2625 NULL,
2626 0);
2627 if (status != MMAGIC_STATUS_OK)
2628 {
2629 return status;
2630 }
2631 status = mmagic_controller_rx(controller,
2636 (uint8_t *)var,
2637 sizeof(*var),
2639 return status;
2640}
2641
2657 struct mmagic_controller *controller,
2658 const char *var)
2659{
2660 struct string32 var_val;
2661 enum mmagic_status status;
2662 var_val.len = strlen(var);
2663 if (var_val.len > sizeof(var_val.data) - 1)
2664 {
2665 return MMAGIC_STATUS_INVALID_ARG;
2666 }
2667 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2668 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2669 status = mmagic_controller_tx(controller,
2674 (uint8_t *)&var_val,
2675 sizeof(var_val));
2676 if (status != MMAGIC_STATUS_OK)
2677 {
2678 return status;
2679 }
2680 status = mmagic_controller_rx(controller,
2685 NULL,
2686 0,
2688 return status;
2689}
2690
2706 struct mmagic_controller *controller,
2707 struct string32 *var)
2708{
2709 enum mmagic_status status;
2710 status = mmagic_controller_tx(controller,
2715 NULL,
2716 0);
2717 if (status != MMAGIC_STATUS_OK)
2718 {
2719 return status;
2720 }
2721 status = mmagic_controller_rx(controller,
2726 (uint8_t *)var,
2727 sizeof(*var),
2729 return status;
2730}
2731
2747 struct mmagic_controller *controller,
2748 const char *var)
2749{
2750 struct string32 var_val;
2751 enum mmagic_status status;
2752 var_val.len = strlen(var);
2753 if (var_val.len > sizeof(var_val.data) - 1)
2754 {
2755 return MMAGIC_STATUS_INVALID_ARG;
2756 }
2757 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2758 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2759 status = mmagic_controller_tx(controller,
2764 (uint8_t *)&var_val,
2765 sizeof(var_val));
2766 if (status != MMAGIC_STATUS_OK)
2767 {
2768 return status;
2769 }
2770 status = mmagic_controller_rx(controller,
2775 NULL,
2776 0,
2778 return status;
2779}
2780
2796 struct mmagic_controller *controller,
2797 struct string32 *var)
2798{
2799 enum mmagic_status status;
2800 status = mmagic_controller_tx(controller,
2805 NULL,
2806 0);
2807 if (status != MMAGIC_STATUS_OK)
2808 {
2809 return status;
2810 }
2811 status = mmagic_controller_rx(controller,
2816 (uint8_t *)var,
2817 sizeof(*var),
2819 return status;
2820}
2821
2837 struct mmagic_controller *controller,
2838 const char *var)
2839{
2840 struct string32 var_val;
2841 enum mmagic_status status;
2842 var_val.len = strlen(var);
2843 if (var_val.len > sizeof(var_val.data) - 1)
2844 {
2845 return MMAGIC_STATUS_INVALID_ARG;
2846 }
2847 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2848 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2849 status = mmagic_controller_tx(controller,
2854 (uint8_t *)&var_val,
2855 sizeof(var_val));
2856 if (status != MMAGIC_STATUS_OK)
2857 {
2858 return status;
2859 }
2860 status = mmagic_controller_rx(controller,
2865 NULL,
2866 0,
2868 return status;
2869}
2870
2886 struct mmagic_controller *controller,
2887 struct string32 *var)
2888{
2889 enum mmagic_status status;
2890 status = mmagic_controller_tx(controller,
2895 NULL,
2896 0);
2897 if (status != MMAGIC_STATUS_OK)
2898 {
2899 return status;
2900 }
2901 status = mmagic_controller_rx(controller,
2906 (uint8_t *)var,
2907 sizeof(*var),
2909 return status;
2910}
2911
2927 struct mmagic_controller *controller,
2928 const char *var)
2929{
2930 struct string32 var_val;
2931 enum mmagic_status status;
2932 var_val.len = strlen(var);
2933 if (var_val.len > sizeof(var_val.data) - 1)
2934 {
2935 return MMAGIC_STATUS_INVALID_ARG;
2936 }
2937 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2938 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2939 status = mmagic_controller_tx(controller,
2944 (uint8_t *)&var_val,
2945 sizeof(var_val));
2946 if (status != MMAGIC_STATUS_OK)
2947 {
2948 return status;
2949 }
2950 status = mmagic_controller_rx(controller,
2955 NULL,
2956 0,
2958 return status;
2959}
2960
2975 struct mmagic_controller *controller,
2976 enum mmagic_mcs10_mode *var)
2977{
2978 enum mmagic_status status;
2979 status = mmagic_controller_tx(controller,
2984 NULL,
2985 0);
2986 if (status != MMAGIC_STATUS_OK)
2987 {
2988 return status;
2989 }
2990 status = mmagic_controller_rx(controller,
2995 (uint8_t *)var,
2996 sizeof(*var),
2998 return status;
2999}
3000
3015 struct mmagic_controller *controller,
3016 enum mmagic_mcs10_mode var)
3017{
3018 enum mmagic_status status;
3019 status = mmagic_controller_tx(controller,
3024 (uint8_t *)&var,
3025 sizeof(var));
3026 if (status != MMAGIC_STATUS_OK)
3027 {
3028 return status;
3029 }
3030 status = mmagic_controller_rx(controller,
3035 NULL,
3036 0,
3038 return status;
3039}
3040
3053 struct mmagic_controller *controller,
3054 bool *var)
3055{
3056 enum mmagic_status status;
3057 status = mmagic_controller_tx(controller,
3062 NULL,
3063 0);
3064 if (status != MMAGIC_STATUS_OK)
3065 {
3066 return status;
3067 }
3068 status = mmagic_controller_rx(controller,
3073 (uint8_t *)var,
3074 sizeof(*var),
3076 return status;
3077}
3078
3091 struct mmagic_controller *controller,
3092 bool var)
3093{
3094 enum mmagic_status status;
3095 status = mmagic_controller_tx(controller,
3100 (uint8_t *)&var,
3101 sizeof(var));
3102 if (status != MMAGIC_STATUS_OK)
3103 {
3104 return status;
3105 }
3106 status = mmagic_controller_rx(controller,
3111 NULL,
3112 0,
3114 return status;
3115}
3116
3130 struct mmagic_controller *controller,
3131 enum mmagic_duty_cycle_mode *var)
3132{
3133 enum mmagic_status status;
3134 status = mmagic_controller_tx(controller,
3139 NULL,
3140 0);
3141 if (status != MMAGIC_STATUS_OK)
3142 {
3143 return status;
3144 }
3145 status = mmagic_controller_rx(controller,
3150 (uint8_t *)var,
3151 sizeof(*var),
3153 return status;
3154}
3155
3169 struct mmagic_controller *controller,
3170 enum mmagic_duty_cycle_mode var)
3171{
3172 enum mmagic_status status;
3173 status = mmagic_controller_tx(controller,
3178 (uint8_t *)&var,
3179 sizeof(var));
3180 if (status != MMAGIC_STATUS_OK)
3181 {
3182 return status;
3183 }
3184 status = mmagic_controller_rx(controller,
3189 NULL,
3190 0,
3192 return status;
3193}
3194
3207 struct mmagic_controller *controller,
3208 bool *var)
3209{
3210 enum mmagic_status status;
3211 status = mmagic_controller_tx(controller,
3216 NULL,
3217 0);
3218 if (status != MMAGIC_STATUS_OK)
3219 {
3220 return status;
3221 }
3222 status = mmagic_controller_rx(controller,
3227 (uint8_t *)var,
3228 sizeof(*var),
3230 return status;
3231}
3232
3245 struct mmagic_controller *controller,
3246 bool var)
3247{
3248 enum mmagic_status status;
3249 status = mmagic_controller_tx(controller,
3254 (uint8_t *)&var,
3255 sizeof(var));
3256 if (status != MMAGIC_STATUS_OK)
3257 {
3258 return status;
3259 }
3260 status = mmagic_controller_rx(controller,
3265 NULL,
3266 0,
3268 return status;
3269}
3270
3279 struct mmagic_controller *controller)
3280{
3281 enum mmagic_status status;
3282 status = mmagic_controller_tx(controller,
3286 0,
3287 NULL,
3288 0);
3289 if (status != MMAGIC_STATUS_OK)
3290 {
3291 return status;
3292 }
3293 status = mmagic_controller_rx(controller,
3297 0,
3298 NULL,
3299 0,
3301 return status;
3302}
3303
3308{
3311 uint32_t timeout;
3312};
3313
3323 struct mmagic_controller *controller,
3324 struct mmagic_core_wlan_connect_cmd_args *cmd_args)
3325{
3326 enum mmagic_status status;
3327 const uint8_t stream_id = CONTROL_STREAM;
3328 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3329
3330 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
3331 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
3332 {
3333 response_timeout_ms += cmd_args->timeout;
3334 }
3335 else
3336 {
3337 response_timeout_ms = UINT32_MAX;
3338 }
3339
3340 status = mmagic_controller_tx(controller,
3341 stream_id,
3344 0,
3345 (uint8_t *)cmd_args,
3346 sizeof(*cmd_args));
3347 if (status != MMAGIC_STATUS_OK)
3348 {
3349 return status;
3350 }
3351 status = mmagic_controller_rx(controller,
3352 stream_id,
3355 0,
3356 NULL,
3357 0,
3358 response_timeout_ms);
3359 return status;
3360}
3361
3370 struct mmagic_controller *controller)
3371{
3372 enum mmagic_status status;
3373 const uint8_t stream_id = CONTROL_STREAM;
3374 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3375
3376 status = mmagic_controller_tx(controller,
3377 stream_id,
3380 0,
3381 NULL,
3382 0);
3383 if (status != MMAGIC_STATUS_OK)
3384 {
3385 return status;
3386 }
3387 return mmagic_controller_rx(controller,
3388 stream_id,
3391 0,
3392 NULL,
3393 0,
3394 response_timeout_ms);
3395 return status;
3396}
3397
3400{
3402 struct string32 ssid;
3405 uint32_t timeout;
3406};
3407
3410{
3413};
3414
3427 struct mmagic_controller *controller,
3428 struct mmagic_core_wlan_scan_cmd_args *cmd_args,
3429 struct mmagic_core_wlan_scan_rsp_args *rsp_args)
3430{
3431 enum mmagic_status status;
3432 const uint8_t stream_id = CONTROL_STREAM;
3433 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3434
3435 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
3436 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
3437 {
3438 response_timeout_ms += cmd_args->timeout;
3439 }
3440 else
3441 {
3442 response_timeout_ms = UINT32_MAX;
3443 }
3444
3445 status = mmagic_controller_tx(controller,
3446 stream_id,
3449 0,
3450 (uint8_t *)cmd_args,
3451 sizeof(*cmd_args));
3452 if (status != MMAGIC_STATUS_OK)
3453 {
3454 return status;
3455 }
3456 status = mmagic_controller_rx(controller,
3457 stream_id,
3460 0,
3461 (uint8_t *)rsp_args,
3462 sizeof(*rsp_args),
3463 response_timeout_ms);
3464 return status;
3465}
3466
3469{
3471 int32_t rssi;
3472};
3473
3485 struct mmagic_controller *controller,
3486 struct mmagic_core_wlan_get_rssi_rsp_args *rsp_args)
3487{
3488 enum mmagic_status status;
3489 const uint8_t stream_id = CONTROL_STREAM;
3490 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3491
3492 status = mmagic_controller_tx(controller,
3493 stream_id,
3496 0,
3497 NULL,
3498 0);
3499 if (status != MMAGIC_STATUS_OK)
3500 {
3501 return status;
3502 }
3503 status = mmagic_controller_rx(controller,
3504 stream_id,
3507 0,
3508 (uint8_t *)rsp_args,
3509 sizeof(*rsp_args),
3510 response_timeout_ms);
3511 return status;
3512}
3513
3516{
3518 struct struct_mac_addr mac_addr;
3519};
3520
3532 struct mmagic_controller *controller,
3534{
3535 enum mmagic_status status;
3536 const uint8_t stream_id = CONTROL_STREAM;
3537 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3538
3539 status = mmagic_controller_tx(controller,
3540 stream_id,
3543 0,
3544 NULL,
3545 0);
3546 if (status != MMAGIC_STATUS_OK)
3547 {
3548 return status;
3549 }
3550 status = mmagic_controller_rx(controller,
3551 stream_id,
3554 0,
3555 (uint8_t *)rsp_args,
3556 sizeof(*rsp_args),
3557 response_timeout_ms);
3558 return status;
3559}
3560
3563{
3566};
3567
3577 struct mmagic_controller *controller,
3578 struct mmagic_core_wlan_wnm_sleep_cmd_args *cmd_args)
3579{
3580 enum mmagic_status status;
3581 const uint8_t stream_id = CONTROL_STREAM;
3582 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3583
3584 status = mmagic_controller_tx(controller,
3585 stream_id,
3588 0,
3589 (uint8_t *)cmd_args,
3590 sizeof(*cmd_args));
3591 if (status != MMAGIC_STATUS_OK)
3592 {
3593 return status;
3594 }
3595 status = mmagic_controller_rx(controller,
3596 stream_id,
3599 0,
3600 NULL,
3601 0,
3602 response_timeout_ms);
3603 return status;
3604}
3605
3608{
3610 struct struct_oui_list oui_filter;
3611};
3612
3623 struct mmagic_controller *controller,
3625{
3626 enum mmagic_status status;
3627 const uint8_t stream_id = CONTROL_STREAM;
3628 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3629
3630 status = mmagic_controller_tx(controller,
3631 stream_id,
3634 0,
3635 (uint8_t *)cmd_args,
3636 sizeof(*cmd_args));
3637 if (status != MMAGIC_STATUS_OK)
3638 {
3639 return status;
3640 }
3641 status = mmagic_controller_rx(controller,
3642 stream_id,
3645 0,
3646 NULL,
3647 0,
3648 response_timeout_ms);
3649 return status;
3650}
3651
3660 struct mmagic_controller *controller)
3661{
3662 enum mmagic_status status;
3663 const uint8_t stream_id = CONTROL_STREAM;
3664 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3665
3666 status = mmagic_controller_tx(controller,
3667 stream_id,
3670 0,
3671 NULL,
3672 0);
3673 if (status != MMAGIC_STATUS_OK)
3674 {
3675 return status;
3676 }
3677 return mmagic_controller_rx(controller,
3678 stream_id,
3681 0,
3682 NULL,
3683 0,
3684 response_timeout_ms);
3685 return status;
3686}
3687
3690{
3693};
3694
3706 struct mmagic_controller *controller,
3708{
3709 enum mmagic_status status;
3710 const uint8_t stream_id = CONTROL_STREAM;
3711 uint32_t response_timeout_ms = 3000;
3712
3713 status = mmagic_controller_tx(controller,
3714 stream_id,
3717 0,
3718 NULL,
3719 0);
3720 if (status != MMAGIC_STATUS_OK)
3721 {
3722 return status;
3723 }
3724 status = mmagic_controller_rx(controller,
3725 stream_id,
3728 0,
3729 (uint8_t *)rsp_args,
3730 sizeof(*rsp_args),
3731 response_timeout_ms);
3732 return status;
3733}
3734
3745 struct mmagic_controller *controller)
3746{
3747 enum mmagic_status status;
3748 const uint8_t stream_id = CONTROL_STREAM;
3749 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3750
3751 status = mmagic_controller_tx(controller,
3752 stream_id,
3755 0,
3756 NULL,
3757 0);
3758 if (status != MMAGIC_STATUS_OK)
3759 {
3760 return status;
3761 }
3762 return mmagic_controller_rx(controller,
3763 stream_id,
3766 0,
3767 NULL,
3768 0,
3769 response_timeout_ms);
3770 return status;
3771}
3772
3781 struct mmagic_controller *controller)
3782{
3783 enum mmagic_status status;
3784 const uint8_t stream_id = CONTROL_STREAM;
3785 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3786
3787 status = mmagic_controller_tx(controller,
3788 stream_id,
3791 0,
3792 NULL,
3793 0);
3794 if (status != MMAGIC_STATUS_OK)
3795 {
3796 return status;
3797 }
3798 return mmagic_controller_rx(controller,
3799 stream_id,
3802 0,
3803 NULL,
3804 0,
3805 response_timeout_ms);
3806 return status;
3807}
3808
3811{
3817 struct raw1536 vendor_ies;
3818};
3819
3834 const struct mmagic_wlan_beacon_rx_event_args *event_args,
3835 void *arg);
3836
3852 struct mmagic_controller *controller,
3854 void *arg);
3855
3858{
3861};
3862
3877 const struct mmagic_wlan_sta_event_event_args *event_args,
3878 void *arg);
3879
3895 struct mmagic_controller *controller,
3897 void *arg);
3898
3923 struct mmagic_controller *controller,
3924 struct struct_ip_addr *var)
3925{
3926 enum mmagic_status status;
3927 status = mmagic_controller_tx(controller,
3929 MMAGIC_IP,
3932 NULL,
3933 0);
3934 if (status != MMAGIC_STATUS_OK)
3935 {
3936 return status;
3937 }
3938 status = mmagic_controller_rx(controller,
3940 MMAGIC_IP,
3943 (uint8_t *)var,
3944 sizeof(*var),
3946 return status;
3947}
3948
3961 struct mmagic_controller *controller,
3962 struct struct_ip_addr *var)
3963{
3964 enum mmagic_status status;
3965 status = mmagic_controller_tx(controller,
3967 MMAGIC_IP,
3970 (uint8_t *)var,
3971 sizeof(*var));
3972 if (status != MMAGIC_STATUS_OK)
3973 {
3974 return status;
3975 }
3976 status = mmagic_controller_rx(controller,
3978 MMAGIC_IP,
3981 NULL,
3982 0,
3984 return status;
3985}
3986
3999 struct mmagic_controller *controller,
4000 struct struct_ip_addr *var)
4001{
4002 enum mmagic_status status;
4003 status = mmagic_controller_tx(controller,
4005 MMAGIC_IP,
4008 NULL,
4009 0);
4010 if (status != MMAGIC_STATUS_OK)
4011 {
4012 return status;
4013 }
4014 status = mmagic_controller_rx(controller,
4016 MMAGIC_IP,
4019 (uint8_t *)var,
4020 sizeof(*var),
4022 return status;
4023}
4024
4037 struct mmagic_controller *controller,
4038 struct struct_ip_addr *var)
4039{
4040 enum mmagic_status status;
4041 status = mmagic_controller_tx(controller,
4043 MMAGIC_IP,
4046 (uint8_t *)var,
4047 sizeof(*var));
4048 if (status != MMAGIC_STATUS_OK)
4049 {
4050 return status;
4051 }
4052 status = mmagic_controller_rx(controller,
4054 MMAGIC_IP,
4057 NULL,
4058 0,
4060 return status;
4061}
4062
4075 struct mmagic_controller *controller,
4076 struct struct_ip_addr *var)
4077{
4078 enum mmagic_status status;
4079 status = mmagic_controller_tx(controller,
4081 MMAGIC_IP,
4084 NULL,
4085 0);
4086 if (status != MMAGIC_STATUS_OK)
4087 {
4088 return status;
4089 }
4090 status = mmagic_controller_rx(controller,
4092 MMAGIC_IP,
4095 (uint8_t *)var,
4096 sizeof(*var),
4098 return status;
4099}
4100
4113 struct mmagic_controller *controller,
4114 struct struct_ip_addr *var)
4115{
4116 enum mmagic_status status;
4117 status = mmagic_controller_tx(controller,
4119 MMAGIC_IP,
4122 (uint8_t *)var,
4123 sizeof(*var));
4124 if (status != MMAGIC_STATUS_OK)
4125 {
4126 return status;
4127 }
4128 status = mmagic_controller_rx(controller,
4130 MMAGIC_IP,
4133 NULL,
4134 0,
4136 return status;
4137}
4138
4152 struct mmagic_controller *controller,
4153 struct struct_ip_addr *var)
4154{
4155 enum mmagic_status status;
4156 status = mmagic_controller_tx(controller,
4158 MMAGIC_IP,
4161 NULL,
4162 0);
4163 if (status != MMAGIC_STATUS_OK)
4164 {
4165 return status;
4166 }
4167 status = mmagic_controller_rx(controller,
4169 MMAGIC_IP,
4172 (uint8_t *)var,
4173 sizeof(*var),
4175 return status;
4176}
4177
4191 struct mmagic_controller *controller,
4192 struct struct_ip_addr *var)
4193{
4194 enum mmagic_status status;
4195 status = mmagic_controller_tx(controller,
4197 MMAGIC_IP,
4200 (uint8_t *)var,
4201 sizeof(*var));
4202 if (status != MMAGIC_STATUS_OK)
4203 {
4204 return status;
4205 }
4206 status = mmagic_controller_rx(controller,
4208 MMAGIC_IP,
4211 NULL,
4212 0,
4214 return status;
4215}
4216
4230 struct mmagic_controller *controller,
4231 struct struct_ip_addr *var)
4232{
4233 enum mmagic_status status;
4234 status = mmagic_controller_tx(controller,
4236 MMAGIC_IP,
4239 NULL,
4240 0);
4241 if (status != MMAGIC_STATUS_OK)
4242 {
4243 return status;
4244 }
4245 status = mmagic_controller_rx(controller,
4247 MMAGIC_IP,
4250 (uint8_t *)var,
4251 sizeof(*var),
4253 return status;
4254}
4255
4269 struct mmagic_controller *controller,
4270 struct struct_ip_addr *var)
4271{
4272 enum mmagic_status status;
4273 status = mmagic_controller_tx(controller,
4275 MMAGIC_IP,
4278 (uint8_t *)var,
4279 sizeof(*var));
4280 if (status != MMAGIC_STATUS_OK)
4281 {
4282 return status;
4283 }
4284 status = mmagic_controller_rx(controller,
4286 MMAGIC_IP,
4289 NULL,
4290 0,
4292 return status;
4293}
4294
4308 struct mmagic_controller *controller,
4309 bool *var)
4310{
4311 enum mmagic_status status;
4312 status = mmagic_controller_tx(controller,
4314 MMAGIC_IP,
4317 NULL,
4318 0);
4319 if (status != MMAGIC_STATUS_OK)
4320 {
4321 return status;
4322 }
4323 status = mmagic_controller_rx(controller,
4325 MMAGIC_IP,
4328 (uint8_t *)var,
4329 sizeof(*var),
4331 return status;
4332}
4333
4347 struct mmagic_controller *controller,
4348 bool var)
4349{
4350 enum mmagic_status status;
4351 status = mmagic_controller_tx(controller,
4353 MMAGIC_IP,
4356 (uint8_t *)&var,
4357 sizeof(var));
4358 if (status != MMAGIC_STATUS_OK)
4359 {
4360 return status;
4361 }
4362 status = mmagic_controller_rx(controller,
4364 MMAGIC_IP,
4367 NULL,
4368 0,
4370 return status;
4371}
4372
4385 struct mmagic_controller *controller,
4386 bool *var)
4387{
4388 enum mmagic_status status;
4389 status = mmagic_controller_tx(controller,
4391 MMAGIC_IP,
4394 NULL,
4395 0);
4396 if (status != MMAGIC_STATUS_OK)
4397 {
4398 return status;
4399 }
4400 status = mmagic_controller_rx(controller,
4402 MMAGIC_IP,
4405 (uint8_t *)var,
4406 sizeof(*var),
4408 return status;
4409}
4410
4423 struct mmagic_controller *controller,
4424 bool var)
4425{
4426 enum mmagic_status status;
4427 status = mmagic_controller_tx(controller,
4429 MMAGIC_IP,
4432 (uint8_t *)&var,
4433 sizeof(var));
4434 if (status != MMAGIC_STATUS_OK)
4435 {
4436 return status;
4437 }
4438 status = mmagic_controller_rx(controller,
4440 MMAGIC_IP,
4443 NULL,
4444 0,
4446 return status;
4447}
4448
4457 struct mmagic_controller *controller)
4458{
4459 enum mmagic_status status;
4460 status = mmagic_controller_tx(controller,
4462 MMAGIC_IP,
4464 0,
4465 NULL,
4466 0);
4467 if (status != MMAGIC_STATUS_OK)
4468 {
4469 return status;
4470 }
4471 status = mmagic_controller_rx(controller,
4473 MMAGIC_IP,
4475 0,
4476 NULL,
4477 0,
4479 return status;
4480}
4481
4486{
4488 struct struct_ip_status status;
4489};
4490
4502 struct mmagic_controller *controller,
4503 struct mmagic_core_ip_status_rsp_args *rsp_args)
4504{
4505 enum mmagic_status status;
4506 const uint8_t stream_id = CONTROL_STREAM;
4507 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4508
4509 status =
4510 mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_STATUS, 0, NULL, 0);
4511 if (status != MMAGIC_STATUS_OK)
4512 {
4513 return status;
4514 }
4515 status = mmagic_controller_rx(controller,
4516 stream_id,
4517 MMAGIC_IP,
4519 0,
4520 (uint8_t *)rsp_args,
4521 sizeof(*rsp_args),
4522 response_timeout_ms);
4523 return status;
4524}
4525
4533static inline enum mmagic_status mmagic_controller_ip_reload(struct mmagic_controller *controller)
4534{
4535 enum mmagic_status status;
4536 const uint8_t stream_id = CONTROL_STREAM;
4537 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4538
4539 status =
4540 mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_RELOAD, 0, NULL, 0);
4541 if (status != MMAGIC_STATUS_OK)
4542 {
4543 return status;
4544 }
4545 return mmagic_controller_rx(controller,
4546 stream_id,
4547 MMAGIC_IP,
4549 0,
4550 NULL,
4551 0,
4552 response_timeout_ms);
4553 return status;
4554}
4555
4558{
4561 struct struct_ip_status ip_link_status;
4562};
4563
4578 const struct mmagic_ip_link_status_event_args *event_args,
4579 void *arg);
4580
4596 struct mmagic_controller *controller,
4598 void *arg);
4599
4623 struct mmagic_controller *controller,
4624 struct struct_ip_addr *var)
4625{
4626 enum mmagic_status status;
4627 status = mmagic_controller_tx(controller,
4632 NULL,
4633 0);
4634 if (status != MMAGIC_STATUS_OK)
4635 {
4636 return status;
4637 }
4638 status = mmagic_controller_rx(controller,
4643 (uint8_t *)var,
4644 sizeof(*var),
4646 return status;
4647}
4648
4660 struct mmagic_controller *controller,
4661 struct struct_ip_addr *var)
4662{
4663 enum mmagic_status status;
4664 status = mmagic_controller_tx(controller,
4669 (uint8_t *)var,
4670 sizeof(*var));
4671 if (status != MMAGIC_STATUS_OK)
4672 {
4673 return status;
4674 }
4675 status = mmagic_controller_rx(controller,
4680 NULL,
4681 0,
4683 return status;
4684}
4685
4697 struct mmagic_controller *controller,
4698 uint32_t *var)
4699{
4700 enum mmagic_status status;
4701 status = mmagic_controller_tx(controller,
4706 NULL,
4707 0);
4708 if (status != MMAGIC_STATUS_OK)
4709 {
4710 return status;
4711 }
4712 status = mmagic_controller_rx(controller,
4717 (uint8_t *)var,
4718 sizeof(*var),
4720 return status;
4721}
4722
4734 struct mmagic_controller *controller,
4735 uint32_t var)
4736{
4737 enum mmagic_status status;
4738 status = mmagic_controller_tx(controller,
4743 (uint8_t *)&var,
4744 sizeof(var));
4745 if (status != MMAGIC_STATUS_OK)
4746 {
4747 return status;
4748 }
4749 status = mmagic_controller_rx(controller,
4754 NULL,
4755 0,
4757 return status;
4758}
4759
4772 struct mmagic_controller *controller,
4773 uint32_t *var)
4774{
4775 enum mmagic_status status;
4776 status = mmagic_controller_tx(controller,
4781 NULL,
4782 0);
4783 if (status != MMAGIC_STATUS_OK)
4784 {
4785 return status;
4786 }
4787 status = mmagic_controller_rx(controller,
4792 (uint8_t *)var,
4793 sizeof(*var),
4795 return status;
4796}
4797
4810 struct mmagic_controller *controller,
4811 uint32_t var)
4812{
4813 enum mmagic_status status;
4814 status = mmagic_controller_tx(controller,
4819 (uint8_t *)&var,
4820 sizeof(var));
4821 if (status != MMAGIC_STATUS_OK)
4822 {
4823 return status;
4824 }
4825 status = mmagic_controller_rx(controller,
4830 NULL,
4831 0,
4833 return status;
4834}
4835
4844 struct mmagic_controller *controller)
4845{
4846 enum mmagic_status status;
4847 status = mmagic_controller_tx(controller,
4851 0,
4852 NULL,
4853 0);
4854 if (status != MMAGIC_STATUS_OK)
4855 {
4856 return status;
4857 }
4858 status = mmagic_controller_rx(controller,
4862 0,
4863 NULL,
4864 0,
4866 return status;
4867}
4868
4873{
4875 struct struct_ping_status status;
4876};
4877
4889 struct mmagic_controller *controller,
4890 struct mmagic_core_ping_run_rsp_args *rsp_args)
4891{
4892 enum mmagic_status status;
4893 const uint8_t stream_id = CONTROL_STREAM;
4894 uint32_t response_timeout_ms = -1;
4895
4896 status =
4897 mmagic_controller_tx(controller, stream_id, MMAGIC_PING, MMAGIC_PING_CMD_RUN, 0, NULL, 0);
4898 if (status != MMAGIC_STATUS_OK)
4899 {
4900 return status;
4901 }
4902 status = mmagic_controller_rx(controller,
4903 stream_id,
4906 0,
4907 (uint8_t *)rsp_args,
4908 sizeof(*rsp_args),
4909 response_timeout_ms);
4910 return status;
4911}
4912
4937 struct mmagic_controller *controller,
4938 enum mmagic_iperf_mode *var)
4939{
4940 enum mmagic_status status;
4941 status = mmagic_controller_tx(controller,
4946 NULL,
4947 0);
4948 if (status != MMAGIC_STATUS_OK)
4949 {
4950 return status;
4951 }
4952 status = mmagic_controller_rx(controller,
4957 (uint8_t *)var,
4958 sizeof(*var),
4960 return status;
4961}
4962
4975 struct mmagic_controller *controller,
4976 enum mmagic_iperf_mode var)
4977{
4978 enum mmagic_status status;
4979 status = mmagic_controller_tx(controller,
4984 (uint8_t *)&var,
4985 sizeof(var));
4986 if (status != MMAGIC_STATUS_OK)
4987 {
4988 return status;
4989 }
4990 status = mmagic_controller_rx(controller,
4995 NULL,
4996 0,
4998 return status;
4999}
5000
5012 struct mmagic_controller *controller,
5013 struct struct_ip_addr *var)
5014{
5015 enum mmagic_status status;
5016 status = mmagic_controller_tx(controller,
5021 NULL,
5022 0);
5023 if (status != MMAGIC_STATUS_OK)
5024 {
5025 return status;
5026 }
5027 status = mmagic_controller_rx(controller,
5032 (uint8_t *)var,
5033 sizeof(*var),
5035 return status;
5036}
5037
5049 struct mmagic_controller *controller,
5050 struct struct_ip_addr *var)
5051{
5052 enum mmagic_status status;
5053 status = mmagic_controller_tx(controller,
5058 (uint8_t *)var,
5059 sizeof(*var));
5060 if (status != MMAGIC_STATUS_OK)
5061 {
5062 return status;
5063 }
5064 status = mmagic_controller_rx(controller,
5069 NULL,
5070 0,
5072 return status;
5073}
5074
5087 struct mmagic_controller *controller,
5088 uint16_t *var)
5089{
5090 enum mmagic_status status;
5091 status = mmagic_controller_tx(controller,
5096 NULL,
5097 0);
5098 if (status != MMAGIC_STATUS_OK)
5099 {
5100 return status;
5101 }
5102 status = mmagic_controller_rx(controller,
5107 (uint8_t *)var,
5108 sizeof(*var),
5110 return status;
5111}
5112
5125 struct mmagic_controller *controller,
5126 uint16_t var)
5127{
5128 enum mmagic_status status;
5129 status = mmagic_controller_tx(controller,
5134 (uint8_t *)&var,
5135 sizeof(var));
5136 if (status != MMAGIC_STATUS_OK)
5137 {
5138 return status;
5139 }
5140 status = mmagic_controller_rx(controller,
5145 NULL,
5146 0,
5148 return status;
5149}
5150
5164 struct mmagic_controller *controller,
5165 int32_t *var)
5166{
5167 enum mmagic_status status;
5168 status = mmagic_controller_tx(controller,
5173 NULL,
5174 0);
5175 if (status != MMAGIC_STATUS_OK)
5176 {
5177 return status;
5178 }
5179 status = mmagic_controller_rx(controller,
5184 (uint8_t *)var,
5185 sizeof(*var),
5187 return status;
5188}
5189
5203 struct mmagic_controller *controller,
5204 int32_t var)
5205{
5206 enum mmagic_status status;
5207 status = mmagic_controller_tx(controller,
5212 (uint8_t *)&var,
5213 sizeof(var));
5214 if (status != MMAGIC_STATUS_OK)
5215 {
5216 return status;
5217 }
5218 status = mmagic_controller_rx(controller,
5223 NULL,
5224 0,
5226 return status;
5227}
5228
5237 struct mmagic_controller *controller)
5238{
5239 enum mmagic_status status;
5240 status = mmagic_controller_tx(controller,
5244 0,
5245 NULL,
5246 0);
5247 if (status != MMAGIC_STATUS_OK)
5248 {
5249 return status;
5250 }
5251 status = mmagic_controller_rx(controller,
5255 0,
5256 NULL,
5257 0,
5259 return status;
5260}
5261
5266{
5268 struct struct_iperf_status status;
5269};
5270
5282 struct mmagic_controller *controller,
5283 struct mmagic_core_iperf_run_rsp_args *rsp_args)
5284{
5285 enum mmagic_status status;
5286 const uint8_t stream_id = CONTROL_STREAM;
5287 uint32_t response_timeout_ms = -1;
5288
5289 status =
5290 mmagic_controller_tx(controller, stream_id, MMAGIC_IPERF, MMAGIC_IPERF_CMD_RUN, 0, NULL, 0);
5291 if (status != MMAGIC_STATUS_OK)
5292 {
5293 return status;
5294 }
5295 status = mmagic_controller_rx(controller,
5296 stream_id,
5299 0,
5300 (uint8_t *)rsp_args,
5301 sizeof(*rsp_args),
5302 response_timeout_ms);
5303 return status;
5304}
5305
5320static inline enum mmagic_status mmagic_controller_sys_reset(struct mmagic_controller *controller)
5321{
5322 enum mmagic_status status;
5323 const uint8_t stream_id = CONTROL_STREAM;
5324 status =
5325 mmagic_controller_tx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_RESET, 0, NULL, 0);
5326 return status;
5327}
5328
5331{
5334};
5335
5345 struct mmagic_controller *controller,
5346 struct mmagic_core_sys_deep_sleep_cmd_args *cmd_args)
5347{
5348 enum mmagic_status status;
5349 const uint8_t stream_id = CONTROL_STREAM;
5350 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5351
5352 status = mmagic_controller_tx(controller,
5353 stream_id,
5354 MMAGIC_SYS,
5356 0,
5357 (uint8_t *)cmd_args,
5358 sizeof(*cmd_args));
5359 if (status != MMAGIC_STATUS_OK)
5360 {
5361 return status;
5362 }
5363 status = mmagic_controller_rx(controller,
5364 stream_id,
5365 MMAGIC_SYS,
5367 0,
5368 NULL,
5369 0,
5370 response_timeout_ms);
5371 return status;
5372}
5373
5376{
5378 struct struct_version_info results;
5379};
5380
5392 struct mmagic_controller *controller,
5393 struct mmagic_core_sys_get_version_rsp_args *rsp_args)
5394{
5395 enum mmagic_status status;
5396 const uint8_t stream_id = CONTROL_STREAM;
5397 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5398
5399 status = mmagic_controller_tx(controller,
5400 stream_id,
5401 MMAGIC_SYS,
5403 0,
5404 NULL,
5405 0);
5406 if (status != MMAGIC_STATUS_OK)
5407 {
5408 return status;
5409 }
5410 status = mmagic_controller_rx(controller,
5411 stream_id,
5412 MMAGIC_SYS,
5414 0,
5415 (uint8_t *)rsp_args,
5416 sizeof(*rsp_args),
5417 response_timeout_ms);
5418 return status;
5419}
5420
5423{
5427 bool reset;
5428};
5429
5432{
5434 struct raw1600 buffer;
5435};
5436
5449 struct mmagic_controller *controller,
5450 struct mmagic_core_sys_get_stats_cmd_args *cmd_args,
5451 struct mmagic_core_sys_get_stats_rsp_args *rsp_args)
5452{
5453 enum mmagic_status status;
5454 const uint8_t stream_id = CONTROL_STREAM;
5455 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5456
5457 status = mmagic_controller_tx(controller,
5458 stream_id,
5459 MMAGIC_SYS,
5461 0,
5462 (uint8_t *)cmd_args,
5463 sizeof(*cmd_args));
5464 if (status != MMAGIC_STATUS_OK)
5465 {
5466 return status;
5467 }
5468 status = mmagic_controller_rx(controller,
5469 stream_id,
5470 MMAGIC_SYS,
5472 0,
5473 (uint8_t *)rsp_args,
5474 sizeof(*rsp_args),
5475 response_timeout_ms);
5476 return status;
5477}
5478
5489{
5491 struct string254 url;
5493 uint16_t port;
5498};
5499
5502{
5504 uint8_t stream_id;
5505};
5506
5519 struct mmagic_controller *controller,
5520 struct mmagic_core_socket_connect_cmd_args *cmd_args,
5521 struct mmagic_core_socket_connect_rsp_args *rsp_args)
5522{
5523 enum mmagic_status status;
5524 const uint8_t stream_id = CONTROL_STREAM;
5525 uint32_t response_timeout_ms = 15000;
5526
5527 status = mmagic_controller_tx(controller,
5528 stream_id,
5531 0,
5532 (uint8_t *)cmd_args,
5533 sizeof(*cmd_args));
5534 if (status != MMAGIC_STATUS_OK)
5535 {
5536 return status;
5537 }
5538 status = mmagic_controller_rx(controller,
5539 stream_id,
5542 0,
5543 (uint8_t *)rsp_args,
5544 sizeof(*rsp_args),
5545 response_timeout_ms);
5546 return status;
5547}
5548
5551{
5553 uint16_t port;
5556};
5557
5560{
5562 uint8_t stream_id;
5563};
5564
5577 struct mmagic_controller *controller,
5578 struct mmagic_core_socket_bind_cmd_args *cmd_args,
5579 struct mmagic_core_socket_bind_rsp_args *rsp_args)
5580{
5581 enum mmagic_status status;
5582 const uint8_t stream_id = CONTROL_STREAM;
5583 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5584
5585 status = mmagic_controller_tx(controller,
5586 stream_id,
5589 0,
5590 (uint8_t *)cmd_args,
5591 sizeof(*cmd_args));
5592 if (status != MMAGIC_STATUS_OK)
5593 {
5594 return status;
5595 }
5596 status = mmagic_controller_rx(controller,
5597 stream_id,
5600 0,
5601 (uint8_t *)rsp_args,
5602 sizeof(*rsp_args),
5603 response_timeout_ms);
5604 return status;
5605}
5606
5609{
5611 uint8_t stream_id;
5613 uint16_t len;
5615 uint32_t timeout;
5616};
5617
5620{
5622 struct raw1536 buffer;
5623};
5624
5637 struct mmagic_controller *controller,
5638 struct mmagic_core_socket_recv_cmd_args *cmd_args,
5639 struct mmagic_core_socket_recv_rsp_args *rsp_args)
5640{
5641 enum mmagic_status status;
5642 const uint8_t stream_id = cmd_args->stream_id;
5643 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5644
5645 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
5646 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
5647 {
5648 response_timeout_ms += cmd_args->timeout;
5649 }
5650 else
5651 {
5652 response_timeout_ms = UINT32_MAX;
5653 }
5654
5655 status = mmagic_controller_tx(controller,
5656 stream_id,
5659 0,
5660 (uint8_t *)cmd_args,
5661 sizeof(*cmd_args));
5662 if (status != MMAGIC_STATUS_OK)
5663 {
5664 return status;
5665 }
5666 status = mmagic_controller_rx(controller,
5667 stream_id,
5670 0,
5671 (uint8_t *)rsp_args,
5672 sizeof(*rsp_args),
5673 response_timeout_ms);
5674 return status;
5675}
5676
5679{
5681 uint8_t stream_id;
5683 struct raw1536 buffer;
5684};
5685
5695 struct mmagic_controller *controller,
5696 struct mmagic_core_socket_send_cmd_args *cmd_args)
5697{
5698 enum mmagic_status status;
5699 const uint8_t stream_id = cmd_args->stream_id;
5700 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5701
5702 status = mmagic_controller_tx(controller,
5703 stream_id,
5706 0,
5707 (uint8_t *)cmd_args,
5708 sizeof(*cmd_args));
5709 if (status != MMAGIC_STATUS_OK)
5710 {
5711 return status;
5712 }
5713 status = mmagic_controller_rx(controller,
5714 stream_id,
5717 0,
5718 NULL,
5719 0,
5720 response_timeout_ms);
5721 return status;
5722}
5723
5726{
5728 uint8_t stream_id;
5730 uint32_t timeout;
5731};
5732
5742 struct mmagic_controller *controller,
5744{
5745 enum mmagic_status status;
5746 const uint8_t stream_id = cmd_args->stream_id;
5747 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5748
5749 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
5750 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
5751 {
5752 response_timeout_ms += cmd_args->timeout;
5753 }
5754 else
5755 {
5756 response_timeout_ms = UINT32_MAX;
5757 }
5758
5759 status = mmagic_controller_tx(controller,
5760 stream_id,
5763 0,
5764 (uint8_t *)cmd_args,
5765 sizeof(*cmd_args));
5766 if (status != MMAGIC_STATUS_OK)
5767 {
5768 return status;
5769 }
5770 status = mmagic_controller_rx(controller,
5771 stream_id,
5774 0,
5775 NULL,
5776 0,
5777 response_timeout_ms);
5778 return status;
5779}
5780
5783{
5785 uint8_t stream_id;
5787 uint32_t timeout;
5788};
5789
5799 struct mmagic_controller *controller,
5801{
5802 enum mmagic_status status;
5803 const uint8_t stream_id = cmd_args->stream_id;
5804 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5805
5806 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
5807 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
5808 {
5809 response_timeout_ms += cmd_args->timeout;
5810 }
5811 else
5812 {
5813 response_timeout_ms = UINT32_MAX;
5814 }
5815
5816 status = mmagic_controller_tx(controller,
5817 stream_id,
5820 0,
5821 (uint8_t *)cmd_args,
5822 sizeof(*cmd_args));
5823 if (status != MMAGIC_STATUS_OK)
5824 {
5825 return status;
5826 }
5827 status = mmagic_controller_rx(controller,
5828 stream_id,
5831 0,
5832 NULL,
5833 0,
5834 response_timeout_ms);
5835 return status;
5836}
5837
5840{
5842 uint8_t stream_id;
5843};
5844
5847{
5849 uint8_t stream_id;
5850};
5851
5864 struct mmagic_controller *controller,
5865 struct mmagic_core_socket_accept_cmd_args *cmd_args,
5866 struct mmagic_core_socket_accept_rsp_args *rsp_args)
5867{
5868 enum mmagic_status status;
5869 const uint8_t stream_id = cmd_args->stream_id;
5870 uint32_t response_timeout_ms = -1;
5871
5872 status = mmagic_controller_tx(controller,
5873 stream_id,
5876 0,
5877 (uint8_t *)cmd_args,
5878 sizeof(*cmd_args));
5879 if (status != MMAGIC_STATUS_OK)
5880 {
5881 return status;
5882 }
5883 status = mmagic_controller_rx(controller,
5884 stream_id,
5887 0,
5888 (uint8_t *)rsp_args,
5889 sizeof(*rsp_args),
5890 response_timeout_ms);
5891 return status;
5892}
5893
5896{
5898 uint8_t stream_id;
5899};
5900
5910 struct mmagic_controller *controller,
5911 struct mmagic_core_socket_close_cmd_args *cmd_args)
5912{
5913 enum mmagic_status status;
5914 const uint8_t stream_id = CONTROL_STREAM;
5915 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5916
5917 status = mmagic_controller_tx(controller,
5918 stream_id,
5921 0,
5922 (uint8_t *)cmd_args,
5923 sizeof(*cmd_args));
5924 if (status != MMAGIC_STATUS_OK)
5925 {
5926 return status;
5927 }
5928 status = mmagic_controller_rx(controller,
5929 stream_id,
5932 0,
5933 NULL,
5934 0,
5935 response_timeout_ms);
5936 return status;
5937}
5938
5941{
5943 uint8_t stream_id;
5946};
5947
5958 struct mmagic_controller *controller,
5960{
5961 enum mmagic_status status;
5962 const uint8_t stream_id = CONTROL_STREAM;
5963 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5964
5965 status = mmagic_controller_tx(controller,
5966 stream_id,
5969 0,
5970 (uint8_t *)cmd_args,
5971 sizeof(*cmd_args));
5972 if (status != MMAGIC_STATUS_OK)
5973 {
5974 return status;
5975 }
5976 status = mmagic_controller_rx(controller,
5977 stream_id,
5980 0,
5981 NULL,
5982 0,
5983 response_timeout_ms);
5984 return status;
5985}
5986
5989{
5991 uint8_t stream_id;
5992};
5993
6008 const struct mmagic_socket_rx_ready_event_args *event_args,
6009 void *arg);
6010
6026 struct mmagic_controller *controller,
6028 void *arg);
6029
6054 struct mmagic_controller *controller,
6055 struct raw1536 *var)
6056{
6057 enum mmagic_status status;
6058 status = mmagic_controller_tx(controller,
6060 MMAGIC_TLS,
6063 NULL,
6064 0);
6065 if (status != MMAGIC_STATUS_OK)
6066 {
6067 return status;
6068 }
6069 status = mmagic_controller_rx(controller,
6071 MMAGIC_TLS,
6074 (uint8_t *)var,
6075 sizeof(*var),
6077 return status;
6078}
6079
6092 struct mmagic_controller *controller,
6093 struct raw1536 *var)
6094{
6095 enum mmagic_status status;
6096 status = mmagic_controller_tx(controller,
6098 MMAGIC_TLS,
6101 (uint8_t *)var,
6102 sizeof(*var));
6103 if (status != MMAGIC_STATUS_OK)
6104 {
6105 return status;
6106 }
6107 status = mmagic_controller_rx(controller,
6109 MMAGIC_TLS,
6112 NULL,
6113 0,
6115 return status;
6116}
6117
6130 struct mmagic_controller *controller,
6131 struct raw1536 *var)
6132{
6133 enum mmagic_status status;
6134 status = mmagic_controller_tx(controller,
6136 MMAGIC_TLS,
6139 NULL,
6140 0);
6141 if (status != MMAGIC_STATUS_OK)
6142 {
6143 return status;
6144 }
6145 status = mmagic_controller_rx(controller,
6147 MMAGIC_TLS,
6150 (uint8_t *)var,
6151 sizeof(*var),
6153 return status;
6154}
6155
6168 struct mmagic_controller *controller,
6169 struct raw1536 *var)
6170{
6171 enum mmagic_status status;
6172 status = mmagic_controller_tx(controller,
6174 MMAGIC_TLS,
6177 (uint8_t *)var,
6178 sizeof(*var));
6179 if (status != MMAGIC_STATUS_OK)
6180 {
6181 return status;
6182 }
6183 status = mmagic_controller_rx(controller,
6185 MMAGIC_TLS,
6188 NULL,
6189 0,
6191 return status;
6192}
6193
6205 struct mmagic_controller *controller,
6206 struct raw1536 *var)
6207{
6208 enum mmagic_status status;
6209 status = mmagic_controller_tx(controller,
6211 MMAGIC_TLS,
6214 NULL,
6215 0);
6216 if (status != MMAGIC_STATUS_OK)
6217 {
6218 return status;
6219 }
6220 status = mmagic_controller_rx(controller,
6222 MMAGIC_TLS,
6225 (uint8_t *)var,
6226 sizeof(*var),
6228 return status;
6229}
6230
6242 struct mmagic_controller *controller,
6243 struct raw1536 *var)
6244{
6245 enum mmagic_status status;
6246 status = mmagic_controller_tx(controller,
6248 MMAGIC_TLS,
6251 (uint8_t *)var,
6252 sizeof(*var));
6253 if (status != MMAGIC_STATUS_OK)
6254 {
6255 return status;
6256 }
6257 status = mmagic_controller_rx(controller,
6259 MMAGIC_TLS,
6262 NULL,
6263 0,
6265 return status;
6266}
6267
6276 struct mmagic_controller *controller)
6277{
6278 enum mmagic_status status;
6279 status = mmagic_controller_tx(controller,
6281 MMAGIC_TLS,
6283 0,
6284 NULL,
6285 0);
6286 if (status != MMAGIC_STATUS_OK)
6287 {
6288 return status;
6289 }
6290 status = mmagic_controller_rx(controller,
6292 MMAGIC_TLS,
6294 0,
6295 NULL,
6296 0,
6298 return status;
6299}
6300
6326 struct mmagic_controller *controller,
6327 struct string254 *var)
6328{
6329 enum mmagic_status status;
6330 status = mmagic_controller_tx(controller,
6332 MMAGIC_NTP,
6335 NULL,
6336 0);
6337 if (status != MMAGIC_STATUS_OK)
6338 {
6339 return status;
6340 }
6341 status = mmagic_controller_rx(controller,
6343 MMAGIC_NTP,
6346 (uint8_t *)var,
6347 sizeof(*var),
6349 return status;
6350}
6351
6363 struct mmagic_controller *controller,
6364 const char *var)
6365{
6366 struct string254 var_val;
6367 enum mmagic_status status;
6368 var_val.len = strlen(var);
6369 if (var_val.len > sizeof(var_val.data) - 1)
6370 {
6371 return MMAGIC_STATUS_INVALID_ARG;
6372 }
6373 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
6374 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
6375 status = mmagic_controller_tx(controller,
6377 MMAGIC_NTP,
6380 (uint8_t *)&var_val,
6381 sizeof(var_val));
6382 if (status != MMAGIC_STATUS_OK)
6383 {
6384 return status;
6385 }
6386 status = mmagic_controller_rx(controller,
6388 MMAGIC_NTP,
6391 NULL,
6392 0,
6394 return status;
6395}
6396
6405 struct mmagic_controller *controller)
6406{
6407 enum mmagic_status status;
6408 status = mmagic_controller_tx(controller,
6410 MMAGIC_NTP,
6412 0,
6413 NULL,
6414 0);
6415 if (status != MMAGIC_STATUS_OK)
6416 {
6417 return status;
6418 }
6419 status = mmagic_controller_rx(controller,
6421 MMAGIC_NTP,
6423 0,
6424 NULL,
6425 0,
6427 return status;
6428}
6429
6439static inline enum mmagic_status mmagic_controller_ntp_sync(struct mmagic_controller *controller)
6440{
6441 enum mmagic_status status;
6442 const uint8_t stream_id = CONTROL_STREAM;
6443 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6444
6445 status =
6446 mmagic_controller_tx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_SYNC, 0, NULL, 0);
6447 if (status != MMAGIC_STATUS_OK)
6448 {
6449 return status;
6450 }
6451 return mmagic_controller_rx(controller,
6452 stream_id,
6453 MMAGIC_NTP,
6455 0,
6456 NULL,
6457 0,
6458 response_timeout_ms);
6459 return status;
6460}
6461
6464{
6466 uint64_t timestamp;
6467};
6468
6480 struct mmagic_controller *controller,
6481 struct mmagic_core_ntp_get_time_rsp_args *rsp_args)
6482{
6483 enum mmagic_status status;
6484 const uint8_t stream_id = CONTROL_STREAM;
6485 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6486
6487 status = mmagic_controller_tx(controller,
6488 stream_id,
6489 MMAGIC_NTP,
6491 0,
6492 NULL,
6493 0);
6494 if (status != MMAGIC_STATUS_OK)
6495 {
6496 return status;
6497 }
6498 status = mmagic_controller_rx(controller,
6499 stream_id,
6500 MMAGIC_NTP,
6502 0,
6503 (uint8_t *)rsp_args,
6504 sizeof(*rsp_args),
6505 response_timeout_ms);
6506 return status;
6507}
6508
6532 struct mmagic_controller *controller,
6533 uint16_t *var)
6534{
6535 enum mmagic_status status;
6536 status = mmagic_controller_tx(controller,
6541 NULL,
6542 0);
6543 if (status != MMAGIC_STATUS_OK)
6544 {
6545 return status;
6546 }
6547 status = mmagic_controller_rx(controller,
6552 (uint8_t *)var,
6553 sizeof(*var),
6555 return status;
6556}
6557
6569 struct mmagic_controller *controller,
6570 uint16_t var)
6571{
6572 enum mmagic_status status;
6573 status = mmagic_controller_tx(controller,
6578 (uint8_t *)&var,
6579 sizeof(var));
6580 if (status != MMAGIC_STATUS_OK)
6581 {
6582 return status;
6583 }
6584 status = mmagic_controller_rx(controller,
6589 NULL,
6590 0,
6592 return status;
6593}
6594
6603 struct mmagic_controller *controller)
6604{
6605 enum mmagic_status status;
6606 status = mmagic_controller_tx(controller,
6610 0,
6611 NULL,
6612 0);
6613 if (status != MMAGIC_STATUS_OK)
6614 {
6615 return status;
6616 }
6617 status = mmagic_controller_rx(controller,
6621 0,
6622 NULL,
6623 0,
6625 return status;
6626}
6627
6632{
6634 struct string254 url;
6636 uint16_t port;
6638 struct string100 username;
6640 struct string100 password;
6643};
6644
6647{
6649 uint8_t stream_id;
6650};
6651
6666 struct mmagic_controller *controller,
6669{
6670 enum mmagic_status status;
6671 const uint8_t stream_id = CONTROL_STREAM;
6672 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6673
6674 status = mmagic_controller_tx(controller,
6675 stream_id,
6678 0,
6679 (uint8_t *)cmd_args,
6680 sizeof(*cmd_args));
6681 if (status != MMAGIC_STATUS_OK)
6682 {
6683 return status;
6684 }
6685 status = mmagic_controller_rx(controller,
6686 stream_id,
6689 0,
6690 (uint8_t *)rsp_args,
6691 sizeof(*rsp_args),
6692 response_timeout_ms);
6693 return status;
6694}
6695
6698{
6700 uint8_t stream_id;
6702 struct string254 topic;
6704 struct raw1536 payload;
6706 uint8_t qos;
6707};
6708
6718 struct mmagic_controller *controller,
6719 struct mmagic_core_mqtt_publish_cmd_args *cmd_args)
6720{
6721 enum mmagic_status status;
6722 const uint8_t stream_id = CONTROL_STREAM;
6723 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6724
6725 status = mmagic_controller_tx(controller,
6726 stream_id,
6729 0,
6730 (uint8_t *)cmd_args,
6731 sizeof(*cmd_args));
6732 if (status != MMAGIC_STATUS_OK)
6733 {
6734 return status;
6735 }
6736 status = mmagic_controller_rx(controller,
6737 stream_id,
6740 0,
6741 NULL,
6742 0,
6743 response_timeout_ms);
6744 return status;
6745}
6746
6749{
6751 uint8_t stream_id;
6753 struct string254 topic;
6755 uint8_t qos;
6756};
6757
6767 struct mmagic_controller *controller,
6768 struct mmagic_core_mqtt_subscribe_cmd_args *cmd_args)
6769{
6770 enum mmagic_status status;
6771 const uint8_t stream_id = CONTROL_STREAM;
6772 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6773
6774 status = mmagic_controller_tx(controller,
6775 stream_id,
6778 0,
6779 (uint8_t *)cmd_args,
6780 sizeof(*cmd_args));
6781 if (status != MMAGIC_STATUS_OK)
6782 {
6783 return status;
6784 }
6785 status = mmagic_controller_rx(controller,
6786 stream_id,
6789 0,
6790 NULL,
6791 0,
6792 response_timeout_ms);
6793 return status;
6794}
6795
6798{
6800 uint8_t stream_id;
6801};
6802
6812 struct mmagic_controller *controller,
6813 struct mmagic_core_mqtt_stop_agent_cmd_args *cmd_args)
6814{
6815 enum mmagic_status status;
6816 const uint8_t stream_id = CONTROL_STREAM;
6817 uint32_t response_timeout_ms = 5000;
6818
6819 status = mmagic_controller_tx(controller,
6820 stream_id,
6823 0,
6824 (uint8_t *)cmd_args,
6825 sizeof(*cmd_args));
6826 if (status != MMAGIC_STATUS_OK)
6827 {
6828 return status;
6829 }
6830 status = mmagic_controller_rx(controller,
6831 stream_id,
6834 0,
6835 NULL,
6836 0,
6837 response_timeout_ms);
6838 return status;
6839}
6840
6843{
6845 uint8_t stream_id;
6847 struct string254 topic;
6849 struct raw1536 payload;
6850};
6851
6866 const struct mmagic_mqtt_message_received_event_args *event_args,
6867 void *arg);
6868
6884 struct mmagic_controller *controller,
6886 void *arg);
6887
6890{
6892 uint8_t stream_id;
6895};
6896
6911 const struct mmagic_mqtt_broker_connection_event_args *event_args,
6912 void *arg);
6913
6929 struct mmagic_controller *controller,
6931 void *arg);
6932
6935#ifdef __cplusplus
6936}
6937#endif
6938
enum MM_PACKED mmagic_pmf_mode
Protected management frame mode.
enum MM_PACKED mmagic_sta_state
Station states.
enum MM_PACKED mmagic_socket_proto
Enumeration of socket protocols.
enum MM_PACKED mmagic_iperf_mode
Mode to use when running the iperf.
enum MM_PACKED mmagic_status
Enumeration of return status codes.
enum MM_PACKED mmagic_subsystem_id
Morse subsystem identifiers.
enum MM_PACKED mmagic_power_save_mode
Enumeration of supported 802.11 power save modes.
enum MM_PACKED mmagic_deep_sleep_mode
Deep sleep modes for the agent MCU.
enum MM_PACKED mmagic_iperf_state
Current state of iperf session.
enum MM_PACKED mmagic_duty_cycle_mode
Enumeration of duty cycle modes.
enum MM_PACKED mmagic_security_type
Connection security type.
enum MM_PACKED mmagic_station_type
Enumeration of S1G non-AP STA types.
enum MM_PACKED mmagic_ip_link_state
Status of the IP link.
enum MM_PACKED mmagic_sta_event
Station connection events.
mmagic_subsystem
Subsytem IDs.
enum MM_PACKED mmagic_mcs10_mode
Enumeration of MCS10 modes.
@ MMAGIC_TLS
Subsystem ID for Module tls: TLS support..
@ MMAGIC_WLAN
Subsystem ID for Module wlan: Wireless LAN management..
@ MMAGIC_IP
Subsystem ID for Module ip: IP Stack Management.
@ MMAGIC_SOCKET
Subsystem ID for Module socket: Socket IO, supports secure connections using.
@ MMAGIC_IPERF
Subsystem ID for Module iperf: Iperf application..
@ MMAGIC_SYS
Subsystem ID for Module sys: System management..
@ MMAGIC_PING
Subsystem ID for Module ping: Ping application..
@ MMAGIC_NTP
Subsystem ID for Module ntp: Network Time Protocol..
@ MMAGIC_MQTT
Subsystem ID for Module mqtt: MQTT agent..
struct mmagic_controller * mmagic_controller_init(const struct mmagic_controller_init_args *args)
Initialize the Controller.
void mmagic_controller_deinit(struct mmagic_controller *controller)
Deinitialize the Controller.
void(* mmagic_controller_agent_start_cb_t)(struct mmagic_controller *controller, void *arg)
Prototype for callback function invoked whenever any time a event that the agent has started is recei...
mmagic_mqtt_var
mqtt configuration variable IDs
#define CONTROL_STREAM
The stream ID of the control stream.
enum mmagic_status mmagic_controller_rx(struct mmagic_controller *controller, uint8_t stream_id, uint8_t submodule_id, uint8_t command_id, uint8_t subcommand_id, uint8_t *buffer, size_t buffer_length, uint32_t timeout_ms)
Waits for a response from the agent.
mmagic_mqtt_cmd
mqtt configuration command IDs
mmagic_ip_var
ip configuration variable IDs
mmagic_ping_cmd
ping configuration command IDs
#define MMAGIC_CONTROLLER_DEFAULT_COMMIT_RESPONSE_TIMEOUT_MS
The default timeout when waiting for a response from a commit command sent to the agent in ms.
mmagic_wlan_var
wlan configuration variable IDs
mmagic_iperf_cmd
iperf configuration command IDs
mmagic_ntp_cmd
ntp configuration command IDs
mmagic_ping_var
ping configuration variable IDs
mmagic_iperf_var
iperf configuration variable IDs
mmagic_wlan_cmd
wlan configuration command IDs
enum mmagic_status mmagic_controller_agent_sync(struct mmagic_controller *controller, uint32_t timeout_ms)
Sends a sync request to the agent and waits for a sync response.
mmagic_tls_var
tls configuration variable IDs
enum mmagic_status mmagic_controller_request_agent_reset(struct mmagic_controller *controller)
Sends a reset request to the agent.
mmagic_ntp_var
ntp configuration variable IDs
enum mmagic_status mmagic_controller_tx(struct mmagic_controller *controller, uint8_t stream_id, uint8_t submodule_id, uint8_t command_id, uint8_t subcommand_id, const uint8_t *buffer, size_t buffer_length)
Sends a command to the agent.
mmagic_sys_cmd
sys configuration command IDs
mmagic_socket_cmd
socket configuration command IDs
#define MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS
The default timeout when waiting for a response from a command sent to the agent in ms.
mmagic_tls_cmd
tls configuration command IDs
mmagic_ip_cmd
ip configuration command IDs
@ MMAGIC_MQTT_VAR_KEEPALIVE_S
The period at which keep-alive messages are sent by the client.
@ MMAGIC_MQTT_CMD_PUBLISH
Publishes a message on a topic.
@ MMAGIC_MQTT_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_MQTT_CMD_START_AGENT
Starts the MQTT agent.
@ MMAGIC_MQTT_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_MQTT_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_MQTT_CMD_SUBSCRIBE
Subscribes to a topic.
@ MMAGIC_MQTT_CMD_STOP_AGENT
Stops the MQTT agent.
@ MMAGIC_MQTT_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_IP_VAR_NETMASK
Netmask to use for a static network connection.
@ MMAGIC_IP_VAR_DNS_SERVER0
Primary DNS server IP address.
@ MMAGIC_IP_VAR_IP_ADDR
IP address to use for a static network connection.
@ MMAGIC_IP_VAR_GATEWAY
Gateway to use for a static network connection.
@ MMAGIC_IP_VAR_DHCP_ENABLED
True to enable DHCP for IP address configuration, or false to use the static configuration given by i...
@ MMAGIC_IP_VAR_LINK_STATUS_EVT_EN
When set to true, IP link status notifications will be provided.
@ MMAGIC_IP_VAR_DNS_SERVER1
Secondary DNS server IP address.
@ MMAGIC_PING_CMD_RUN
Commences a ping session using the current values in the subsystem config.
@ MMAGIC_PING_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_PING_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_PING_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_PING_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_WLAN_VAR_BSSID
BSSID of the ap to associate to, all 0x00 for any.
@ MMAGIC_WLAN_VAR_QOS_2_PARAMS
The default QoS queue configuration for Access Category 2 (AC_VI) that is active while the station is...
@ MMAGIC_WLAN_VAR_COUNTRY_CODE
Two character country code used to identify the regulatory domain.
@ MMAGIC_WLAN_VAR_SECURITY
Security type to used when associating.
@ MMAGIC_WLAN_VAR_PASSWORD
Password used when associating, 1-100 characters long.
@ MMAGIC_WLAN_VAR_QOS_1_PARAMS
The default QoS queue configuration for Access Category 1 (AC_BK) that is active while the station is...
@ MMAGIC_WLAN_VAR_PMF_MODE
Protected Management Frame mode to use (802.11w).
@ MMAGIC_WLAN_VAR_MAX_HEALTH_CHECK_INTVL_MS
The maximum interval to wait after the last health check before triggering another.
@ MMAGIC_WLAN_VAR_SGI_ENABLED
Boolean value indicating whether SGI support should be enabled.
@ MMAGIC_WLAN_VAR_CONNECT_ON_BOOT
On boot attempt to connect immediately to the AP with the current parameters rather than waiting for ...
@ MMAGIC_WLAN_VAR_SUBBANDS_ENABLED
Boolean value indicating whether sub-band support should be enabled.
@ MMAGIC_WLAN_VAR_RAW_PRIORITY
Priority to request if raw is supported by the AP.
@ MMAGIC_WLAN_VAR_STATION_TYPE
S1G non-AP STA type.
@ MMAGIC_WLAN_VAR_MCS10_MODE
The currently configured MCS10 behavior.
@ MMAGIC_WLAN_VAR_FRAGMENT_THRESHOLD
Sets the 802.11 fragmentation threshold.
@ MMAGIC_WLAN_VAR_SSID
SSID of the AP to connect to, can be 1-32 characters long.
@ MMAGIC_WLAN_VAR_RTS_THRESHOLD
The RTS threshold (in octets) to set, or 0 to disable.
@ MMAGIC_WLAN_VAR_STA_SCAN_INTERVAL_LIMIT_S
The maximum interval between scan attempts when (re)connecting.
@ MMAGIC_WLAN_VAR_NDP_PROBE_ENABLED
Boolean value indicating whether NDP probe support should be enabled.
@ MMAGIC_WLAN_VAR_QOS_0_PARAMS
The default QoS queue configuration for Access Category 0 (AC_BE) that is active while the station is...
@ MMAGIC_WLAN_VAR_DUTY_CYCLE_MODE
The duty cycle air time distribution mode.
@ MMAGIC_WLAN_VAR_MIN_HEALTH_CHECK_INTVL_MS
The minimum interval to wait after the last health check before triggering another.
@ MMAGIC_WLAN_VAR_STA_SCAN_INTERVAL_BASE_S
The base scan interval (in seconds) to use when (re)connecting.
@ MMAGIC_WLAN_VAR_STA_EVT_EN
When set to true, STA event notifications will be provided.
@ MMAGIC_WLAN_VAR_CAC_ENABLED
Whether Centralized Authentication Controlled is enabled on the STA.
@ MMAGIC_WLAN_VAR_QOS_3_PARAMS
The default QoS queue configuration for Access Category 3 (AC_VO) that is active while the station is...
@ MMAGIC_WLAN_VAR_POWER_SAVE_MODE
Sets the 802.11 power save mode.
@ MMAGIC_WLAN_VAR_AMPDU_ENABLED
Boolean value indicating whether AMPDU support should be enabled.
@ MMAGIC_IPERF_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_IPERF_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_IPERF_CMD_RUN
Starts an iperf session using the current values in the subsystem config.
@ MMAGIC_IPERF_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_IPERF_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_NTP_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_NTP_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_NTP_CMD_SYNC
Synchronizes internal time using the NTP server.
@ MMAGIC_NTP_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_NTP_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_NTP_CMD_GET_TIME
Reads current internal time.
@ MMAGIC_PING_VAR_COUNT
This specifies the number of ping requests to send before terminating the session.
@ MMAGIC_PING_VAR_TARGET
The IP address of the ping target.
@ MMAGIC_PING_VAR_INTERVAL
The time interval between ping requests (in milliseconds).
@ MMAGIC_IPERF_VAR_SERVER
IP address of server to connect to when in client mode.
@ MMAGIC_IPERF_VAR_PORT
Specifies the local port to listen on when in server mode or the server port to send data to when in ...
@ MMAGIC_IPERF_VAR_MODE
The iperf mode to use.
@ MMAGIC_IPERF_VAR_AMOUNT
This specifies the duration for client transfers specified either in seconds or bytes.
@ MMAGIC_WLAN_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_WLAN_CMD_GET_MAC_ADDR
Retrieves the MAC address if the WLAN interface is up.
@ MMAGIC_WLAN_CMD_DPP_STOP
Instructs the WLAN device to abort the ongoing DPP session.
@ MMAGIC_WLAN_CMD_GET_STA_STATUS
Retrieves the STA status of the WLAN interface.
@ MMAGIC_WLAN_CMD_BEACON_MONITOR_ENABLE
Enable beacon monitoring with the given filter settings.
@ MMAGIC_WLAN_CMD_BEACON_MONITOR_DISABLE
Disable beacon monitoring.
@ MMAGIC_WLAN_CMD_GET_RSSI
Retrieves the RSSI if the WLAN interface is up, else 0.
@ MMAGIC_WLAN_CMD_WNM_SLEEP
Requests entry or exit from extended sleep (wnm sleep) if the WLAN interface is up.
@ MMAGIC_WLAN_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_WLAN_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_WLAN_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_WLAN_CMD_DISCONNECT
Disconnects and brings down the WLAN interface.
@ MMAGIC_WLAN_CMD_SCAN
Starts an undirected scan for available networks.
@ MMAGIC_WLAN_CMD_DPP_PUSH_BUTTON_START
Instructs the WLAN device to start the Device Provisioning Protocol (DPP) Push Button (PB) provisioni...
@ MMAGIC_WLAN_CMD_CONNECT
Brings up the WLAN interface and connects to the AP with configured parameters.
@ MMAGIC_TLS_VAR_ROOT_CA_CERTIFICATE
Root certificate authority certificate.
@ MMAGIC_TLS_VAR_CLIENT_CERTIFICATE
Certificate to identify the client.
@ MMAGIC_TLS_VAR_CLIENT_PRIVATE_KEY
Client private key.
@ MMAGIC_NTP_VAR_SERVER
The hostname or IP of the NTP server.
@ MMAGIC_SYS_CMD_DEEP_SLEEP
Enters deep sleep mode.
@ MMAGIC_SYS_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_SYS_CMD_RESET
Performs a soft reset.
@ MMAGIC_SYS_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_SYS_CMD_GET_VERSION
Gets the device firmware and hardware versions.
@ MMAGIC_SYS_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_SYS_CMD_GET_STATS
Retrieve subsystem statistics.
@ MMAGIC_SYS_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_SOCKET_CMD_CLOSE
Closes and frees the socket.
@ MMAGIC_SOCKET_CMD_BIND
Opens a server socket and returns its stream ID.
@ MMAGIC_SOCKET_CMD_WRITE_POLL
Polls the socket till it is ready for writing.
@ MMAGIC_SOCKET_CMD_CONNECT
Opens a client socket and returns its stream ID.
@ MMAGIC_SOCKET_CMD_ACCEPT
Waits for an incoming socket connection and returns a new stream ID.
@ MMAGIC_SOCKET_CMD_READ_POLL
Polls the socket till it is ready for reading.
@ MMAGIC_SOCKET_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_SOCKET_CMD_SEND
Writes to a socket.
@ MMAGIC_SOCKET_CMD_SET_RX_READY_EVT_ENABLED
Sets whether the RX ready event should be enabled for the given socket.
@ MMAGIC_SOCKET_CMD_RECV
Reads from a socket.
@ MMAGIC_SOCKET_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_SOCKET_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_SOCKET_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_TLS_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_TLS_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_TLS_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_TLS_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_IP_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_IP_CMD_STATUS
Gets the status of the IP stack.
@ MMAGIC_IP_CMD_LOAD
Load the current configuration from flash (NB will automatically load on boot)
@ MMAGIC_IP_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_IP_CMD_RELOAD
Reloads the IP stack network configuration based on the current values in the subsystem config.
@ MMAGIC_IP_CMD_COMMIT
Commit the current configuration to flash.
static enum mmagic_status mmagic_controller_set_iperf_amount(struct mmagic_controller *controller, int32_t var)
Sets amount setting for module iperf.
static enum mmagic_status mmagic_controller_set_iperf_server(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets server setting for module iperf.
static enum mmagic_status mmagic_controller_get_iperf_server(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets server setting for module iperf.
static enum mmagic_status mmagic_controller_set_iperf_mode(struct mmagic_controller *controller, enum mmagic_iperf_mode var)
Sets mode setting for module iperf.
static enum mmagic_status mmagic_controller_get_iperf_port(struct mmagic_controller *controller, uint16_t *var)
Gets port setting for module iperf.
static enum mmagic_status mmagic_controller_set_iperf_port(struct mmagic_controller *controller, uint16_t var)
Sets port setting for module iperf.
static enum mmagic_status mmagic_controller_iperf_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_iperf_mode(struct mmagic_controller *controller, enum mmagic_iperf_mode *var)
Gets mode setting for module iperf.
static enum mmagic_status mmagic_controller_get_iperf_amount(struct mmagic_controller *controller, int32_t *var)
Gets amount setting for module iperf.
static enum mmagic_status mmagic_controller_iperf_run(struct mmagic_controller *controller, struct mmagic_core_iperf_run_rsp_args *rsp_args)
Starts an iperf session using the current values in the subsystem config.
static enum mmagic_status mmagic_controller_get_ip_ip_addr(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets ip_addr setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_dhcp_enabled(struct mmagic_controller *controller, bool *var)
Gets dhcp_enabled setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dns_server1(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets dns_server1 setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_netmask(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets netmask setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_link_status_evt_en(struct mmagic_controller *controller, bool var)
Sets link_status_evt_en setting for module ip.
static enum mmagic_status mmagic_controller_ip_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_ip_gateway(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets gateway setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_link_status_evt_en(struct mmagic_controller *controller, bool *var)
Gets link_status_evt_en setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_netmask(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets netmask setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dhcp_enabled(struct mmagic_controller *controller, bool var)
Sets dhcp_enabled setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_ip_addr(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets ip_addr setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_dns_server1(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets dns_server1 setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_gateway(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets gateway setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dns_server0(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets dns_server0 setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_dns_server0(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets dns_server0 setting for module ip.
void mmagic_controller_register_ip_link_status_handler(struct mmagic_controller *controller, mmagic_ip_link_status_event_handler_t handler, void *arg)
Register a handler for the ip-link_status event.
static enum mmagic_status mmagic_controller_ip_reload(struct mmagic_controller *controller)
Reloads the IP stack network configuration based on the current values in the subsystem config.
void(* mmagic_ip_link_status_event_handler_t)(const struct mmagic_ip_link_status_event_args *event_args, void *arg)
Handler for the ip-link_status event.
static enum mmagic_status mmagic_controller_ip_status(struct mmagic_controller *controller, struct mmagic_core_ip_status_rsp_args *rsp_args)
Gets the status of the IP stack.
static enum mmagic_status mmagic_controller_mqtt_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_set_mqtt_keepalive_s(struct mmagic_controller *controller, uint16_t var)
Sets keepalive_s setting for module mqtt.
static enum mmagic_status mmagic_controller_get_mqtt_keepalive_s(struct mmagic_controller *controller, uint16_t *var)
Gets keepalive_s setting for module mqtt.
void(* mmagic_mqtt_broker_connection_event_handler_t)(const struct mmagic_mqtt_broker_connection_event_args *event_args, void *arg)
Handler for the mqtt-broker_connection event.
void mmagic_controller_register_mqtt_broker_connection_handler(struct mmagic_controller *controller, mmagic_mqtt_broker_connection_event_handler_t handler, void *arg)
Register a handler for the mqtt-broker_connection event.
void mmagic_controller_register_mqtt_message_received_handler(struct mmagic_controller *controller, mmagic_mqtt_message_received_event_handler_t handler, void *arg)
Register a handler for the mqtt-message_received event.
static enum mmagic_status mmagic_controller_mqtt_stop_agent(struct mmagic_controller *controller, struct mmagic_core_mqtt_stop_agent_cmd_args *cmd_args)
Stops the MQTT agent.
void(* mmagic_mqtt_message_received_event_handler_t)(const struct mmagic_mqtt_message_received_event_args *event_args, void *arg)
Handler for the mqtt-message_received event.
static enum mmagic_status mmagic_controller_mqtt_publish(struct mmagic_controller *controller, struct mmagic_core_mqtt_publish_cmd_args *cmd_args)
Publishes a message on a topic.
static enum mmagic_status mmagic_controller_mqtt_subscribe(struct mmagic_controller *controller, struct mmagic_core_mqtt_subscribe_cmd_args *cmd_args)
Subscribes to a topic.
static enum mmagic_status mmagic_controller_mqtt_start_agent(struct mmagic_controller *controller, struct mmagic_core_mqtt_start_agent_cmd_args *cmd_args, struct mmagic_core_mqtt_start_agent_rsp_args *rsp_args)
Starts the MQTT agent.
static enum mmagic_status mmagic_controller_ntp_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_ntp_server(struct mmagic_controller *controller, struct string254 *var)
Gets server setting for module ntp.
static enum mmagic_status mmagic_controller_set_ntp_server(struct mmagic_controller *controller, const char *var)
Sets server setting for module ntp.
static enum mmagic_status mmagic_controller_ntp_sync(struct mmagic_controller *controller)
Synchronizes internal time using the NTP server.
static enum mmagic_status mmagic_controller_ntp_get_time(struct mmagic_controller *controller, struct mmagic_core_ntp_get_time_rsp_args *rsp_args)
Reads current internal time.
static enum mmagic_status mmagic_controller_get_ping_target(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets target setting for module ping.
static enum mmagic_status mmagic_controller_get_ping_count(struct mmagic_controller *controller, uint32_t *var)
Gets count setting for module ping.
static enum mmagic_status mmagic_controller_set_ping_count(struct mmagic_controller *controller, uint32_t var)
Sets count setting for module ping.
static enum mmagic_status mmagic_controller_ping_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_set_ping_interval(struct mmagic_controller *controller, uint32_t var)
Sets interval setting for module ping.
static enum mmagic_status mmagic_controller_get_ping_interval(struct mmagic_controller *controller, uint32_t *var)
Gets interval setting for module ping.
static enum mmagic_status mmagic_controller_set_ping_target(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets target setting for module ping.
static enum mmagic_status mmagic_controller_ping_run(struct mmagic_controller *controller, struct mmagic_core_ping_run_rsp_args *rsp_args)
Commences a ping session using the current values in the subsystem config.
static enum mmagic_status mmagic_controller_socket_connect(struct mmagic_controller *controller, struct mmagic_core_socket_connect_cmd_args *cmd_args, struct mmagic_core_socket_connect_rsp_args *rsp_args)
Opens a client socket and returns its stream ID.
void(* mmagic_socket_rx_ready_event_handler_t)(const struct mmagic_socket_rx_ready_event_args *event_args, void *arg)
Handler for the socket-rx_ready event.
static enum mmagic_status mmagic_controller_socket_write_poll(struct mmagic_controller *controller, struct mmagic_core_socket_write_poll_cmd_args *cmd_args)
Polls the socket till it is ready for writing.
static enum mmagic_status mmagic_controller_socket_recv(struct mmagic_controller *controller, struct mmagic_core_socket_recv_cmd_args *cmd_args, struct mmagic_core_socket_recv_rsp_args *rsp_args)
Reads from a socket.
void mmagic_controller_register_socket_rx_ready_handler(struct mmagic_controller *controller, mmagic_socket_rx_ready_event_handler_t handler, void *arg)
Register a handler for the socket-rx_ready event.
static enum mmagic_status mmagic_controller_socket_close(struct mmagic_controller *controller, struct mmagic_core_socket_close_cmd_args *cmd_args)
Closes and frees the socket.
static enum mmagic_status mmagic_controller_socket_read_poll(struct mmagic_controller *controller, struct mmagic_core_socket_read_poll_cmd_args *cmd_args)
Polls the socket till it is ready for reading.
static enum mmagic_status mmagic_controller_socket_set_rx_ready_evt_enabled(struct mmagic_controller *controller, struct mmagic_core_socket_set_rx_ready_evt_enabled_cmd_args *cmd_args)
Sets whether the RX ready event should be enabled for the given socket.
static enum mmagic_status mmagic_controller_socket_accept(struct mmagic_controller *controller, struct mmagic_core_socket_accept_cmd_args *cmd_args, struct mmagic_core_socket_accept_rsp_args *rsp_args)
Waits for an incoming socket connection and returns a new stream ID.
static enum mmagic_status mmagic_controller_socket_send(struct mmagic_controller *controller, struct mmagic_core_socket_send_cmd_args *cmd_args)
Writes to a socket.
static enum mmagic_status mmagic_controller_socket_bind(struct mmagic_controller *controller, struct mmagic_core_socket_bind_cmd_args *cmd_args, struct mmagic_core_socket_bind_rsp_args *rsp_args)
Opens a server socket and returns its stream ID.
static enum mmagic_status mmagic_controller_sys_deep_sleep(struct mmagic_controller *controller, struct mmagic_core_sys_deep_sleep_cmd_args *cmd_args)
Enters deep sleep mode.
static enum mmagic_status mmagic_controller_sys_reset(struct mmagic_controller *controller)
Performs a soft reset.
static enum mmagic_status mmagic_controller_sys_get_version(struct mmagic_controller *controller, struct mmagic_core_sys_get_version_rsp_args *rsp_args)
Gets the device firmware and hardware versions.
static enum mmagic_status mmagic_controller_sys_get_stats(struct mmagic_controller *controller, struct mmagic_core_sys_get_stats_cmd_args *cmd_args, struct mmagic_core_sys_get_stats_rsp_args *rsp_args)
Retrieve subsystem statistics.
static enum mmagic_status mmagic_controller_set_tls_client_private_key(struct mmagic_controller *controller, struct raw1536 *var)
Sets client_private_key setting for module tls.
static enum mmagic_status mmagic_controller_tls_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_tls_client_certificate(struct mmagic_controller *controller, struct raw1536 *var)
Gets client_certificate setting for module tls.
static enum mmagic_status mmagic_controller_set_tls_root_ca_certificate(struct mmagic_controller *controller, struct raw1536 *var)
Sets root_ca_certificate setting for module tls.
static enum mmagic_status mmagic_controller_set_tls_client_certificate(struct mmagic_controller *controller, struct raw1536 *var)
Sets client_certificate setting for module tls.
static enum mmagic_status mmagic_controller_get_tls_root_ca_certificate(struct mmagic_controller *controller, struct raw1536 *var)
Gets root_ca_certificate setting for module tls.
static enum mmagic_status mmagic_controller_get_tls_client_private_key(struct mmagic_controller *controller, struct raw1536 *var)
Gets client_private_key setting for module tls.
static enum mmagic_status mmagic_controller_set_wlan_ampdu_enabled(struct mmagic_controller *controller, bool var)
Sets ampdu_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_qos_1_params(struct mmagic_controller *controller, const char *var)
Sets qos_1_params setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_sta_scan_interval_limit_s(struct mmagic_controller *controller, uint16_t *var)
Gets sta_scan_interval_limit_s setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_ampdu_enabled(struct mmagic_controller *controller, bool *var)
Gets ampdu_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_max_health_check_intvl_ms(struct mmagic_controller *controller, uint32_t var)
Sets max_health_check_intvl_ms setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_ssid(struct mmagic_controller *controller, const char *var)
Sets ssid setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_connect_on_boot(struct mmagic_controller *controller, bool var)
Sets connect_on_boot setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_power_save_mode(struct mmagic_controller *controller, enum mmagic_power_save_mode *var)
Gets power_save_mode setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_pmf_mode(struct mmagic_controller *controller, enum mmagic_pmf_mode *var)
Gets pmf_mode setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_cac_enabled(struct mmagic_controller *controller, bool *var)
Gets cac_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_password(struct mmagic_controller *controller, const char *var)
Sets password setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_qos_2_params(struct mmagic_controller *controller, struct string32 *var)
Gets qos_2_params setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_min_health_check_intvl_ms(struct mmagic_controller *controller, uint32_t var)
Sets min_health_check_intvl_ms setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_sta_scan_interval_base_s(struct mmagic_controller *controller, uint16_t var)
Sets sta_scan_interval_base_s setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_bssid(struct mmagic_controller *controller, struct struct_mac_addr *var)
Sets bssid setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_security(struct mmagic_controller *controller, enum mmagic_security_type *var)
Gets security setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_qos_2_params(struct mmagic_controller *controller, const char *var)
Sets qos_2_params setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_mcs10_mode(struct mmagic_controller *controller, enum mmagic_mcs10_mode *var)
Gets mcs10_mode setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_duty_cycle_mode(struct mmagic_controller *controller, enum mmagic_duty_cycle_mode *var)
Gets duty_cycle_mode setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_max_health_check_intvl_ms(struct mmagic_controller *controller, uint32_t *var)
Gets max_health_check_intvl_ms setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_sta_scan_interval_base_s(struct mmagic_controller *controller, uint16_t *var)
Gets sta_scan_interval_base_s setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_sta_evt_en(struct mmagic_controller *controller, bool *var)
Gets sta_evt_en setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_subbands_enabled(struct mmagic_controller *controller, bool var)
Sets subbands_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_pmf_mode(struct mmagic_controller *controller, enum mmagic_pmf_mode var)
Sets pmf_mode setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_qos_3_params(struct mmagic_controller *controller, struct string32 *var)
Gets qos_3_params setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_qos_1_params(struct mmagic_controller *controller, struct string32 *var)
Gets qos_1_params setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_raw_priority(struct mmagic_controller *controller, int16_t var)
Sets raw_priority setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_station_type(struct mmagic_controller *controller, enum mmagic_station_type *var)
Gets station_type setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_ssid(struct mmagic_controller *controller, struct string32 *var)
Gets ssid setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_fragment_threshold(struct mmagic_controller *controller, uint32_t *var)
Gets fragment_threshold setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_qos_0_params(struct mmagic_controller *controller, const char *var)
Sets qos_0_params setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_ndp_probe_enabled(struct mmagic_controller *controller, bool *var)
Gets ndp_probe_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_sgi_enabled(struct mmagic_controller *controller, bool var)
Sets sgi_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_rts_threshold(struct mmagic_controller *controller, uint32_t var)
Sets rts_threshold setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_sta_scan_interval_limit_s(struct mmagic_controller *controller, uint16_t var)
Sets sta_scan_interval_limit_s setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_duty_cycle_mode(struct mmagic_controller *controller, enum mmagic_duty_cycle_mode var)
Sets duty_cycle_mode setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_power_save_mode(struct mmagic_controller *controller, enum mmagic_power_save_mode var)
Sets power_save_mode setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_ndp_probe_enabled(struct mmagic_controller *controller, bool var)
Sets ndp_probe_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_raw_priority(struct mmagic_controller *controller, int16_t *var)
Gets raw_priority setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_cac_enabled(struct mmagic_controller *controller, bool var)
Sets cac_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_qos_0_params(struct mmagic_controller *controller, struct string32 *var)
Gets qos_0_params setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_fragment_threshold(struct mmagic_controller *controller, uint32_t var)
Sets fragment_threshold setting for module wlan.
static enum mmagic_status mmagic_controller_wlan_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_wlan_password(struct mmagic_controller *controller, struct string100 *var)
Gets password setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_mcs10_mode(struct mmagic_controller *controller, enum mmagic_mcs10_mode var)
Sets mcs10_mode setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_sta_evt_en(struct mmagic_controller *controller, bool var)
Sets sta_evt_en setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_rts_threshold(struct mmagic_controller *controller, uint32_t *var)
Gets rts_threshold setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_country_code(struct mmagic_controller *controller, struct struct_country_code *var)
Gets country_code setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_sgi_enabled(struct mmagic_controller *controller, bool *var)
Gets sgi_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_bssid(struct mmagic_controller *controller, struct struct_mac_addr *var)
Gets bssid setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_min_health_check_intvl_ms(struct mmagic_controller *controller, uint32_t *var)
Gets min_health_check_intvl_ms setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_subbands_enabled(struct mmagic_controller *controller, bool *var)
Gets subbands_enabled setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_station_type(struct mmagic_controller *controller, enum mmagic_station_type var)
Sets station_type setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_country_code(struct mmagic_controller *controller, struct struct_country_code *var)
Sets country_code setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_security(struct mmagic_controller *controller, enum mmagic_security_type var)
Sets security setting for module wlan.
static enum mmagic_status mmagic_controller_set_wlan_qos_3_params(struct mmagic_controller *controller, const char *var)
Sets qos_3_params setting for module wlan.
static enum mmagic_status mmagic_controller_get_wlan_connect_on_boot(struct mmagic_controller *controller, bool *var)
Gets connect_on_boot setting for module wlan.
static enum mmagic_status mmagic_controller_wlan_beacon_monitor_enable(struct mmagic_controller *controller, struct mmagic_core_wlan_beacon_monitor_enable_cmd_args *cmd_args)
Enable beacon monitoring with the given filter settings.
static enum mmagic_status mmagic_controller_wlan_dpp_push_button_start(struct mmagic_controller *controller)
Instructs the WLAN device to start the Device Provisioning Protocol (DPP) Push Button (PB) provisioni...
static enum mmagic_status mmagic_controller_wlan_get_rssi(struct mmagic_controller *controller, struct mmagic_core_wlan_get_rssi_rsp_args *rsp_args)
Retrieves the RSSI if the WLAN interface is up, else 0.
static enum mmagic_status mmagic_controller_wlan_disconnect(struct mmagic_controller *controller)
Disconnects and brings down the WLAN interface.
static enum mmagic_status mmagic_controller_wlan_get_sta_status(struct mmagic_controller *controller, struct mmagic_core_wlan_get_sta_status_rsp_args *rsp_args)
Retrieves the STA status of the WLAN interface.
static enum mmagic_status mmagic_controller_wlan_wnm_sleep(struct mmagic_controller *controller, struct mmagic_core_wlan_wnm_sleep_cmd_args *cmd_args)
Requests entry or exit from extended sleep (wnm sleep) if the WLAN interface is up.
void mmagic_controller_register_wlan_beacon_rx_handler(struct mmagic_controller *controller, mmagic_wlan_beacon_rx_event_handler_t handler, void *arg)
Register a handler for the wlan-beacon_rx event.
static enum mmagic_status mmagic_controller_wlan_get_mac_addr(struct mmagic_controller *controller, struct mmagic_core_wlan_get_mac_addr_rsp_args *rsp_args)
Retrieves the MAC address if the WLAN interface is up.
void mmagic_controller_register_wlan_sta_event_handler(struct mmagic_controller *controller, mmagic_wlan_sta_event_event_handler_t handler, void *arg)
Register a handler for the wlan-sta_event event.
static enum mmagic_status mmagic_controller_wlan_beacon_monitor_disable(struct mmagic_controller *controller)
Disable beacon monitoring.
static enum mmagic_status mmagic_controller_wlan_connect(struct mmagic_controller *controller, struct mmagic_core_wlan_connect_cmd_args *cmd_args)
Brings up the WLAN interface and connects to the AP with configured parameters.
static enum mmagic_status mmagic_controller_wlan_scan(struct mmagic_controller *controller, struct mmagic_core_wlan_scan_cmd_args *cmd_args, struct mmagic_core_wlan_scan_rsp_args *rsp_args)
Starts an undirected scan for available networks.
static enum mmagic_status mmagic_controller_wlan_dpp_stop(struct mmagic_controller *controller)
Instructs the WLAN device to abort the ongoing DPP session.
void(* mmagic_wlan_sta_event_event_handler_t)(const struct mmagic_wlan_sta_event_event_args *event_args, void *arg)
Handler for the wlan-sta_event event.
void(* mmagic_wlan_beacon_rx_event_handler_t)(const struct mmagic_wlan_beacon_rx_event_args *event_args, void *arg)
Handler for the wlan-beacon_rx event.
#define MM_PACKED
Macro for packed structs.
Initialization structure for mmagic_controller.
mmagic_controller_agent_start_cb_t agent_start_cb
Callback function to executed any time a event that the agent has started is received.
void * agent_start_arg
User argument that will be passed when the agent_start_cb is executed.
Response arguments structure for ip_status.
Response arguments structure for iperf_run.
Command arguments structure for mqtt_publish.
uint8_t stream_id
Stream ID of the MQTT connection.
uint8_t qos
MQTT quality of service (0-2).
Command arguments structure for mqtt_start_agent.
bool secure
Enables TLS for brokers that require it.
uint16_t port
Port of the broker to connect to.
Response arguments structure for mqtt_start_agent.
uint8_t stream_id
Stream ID of the opened socket.
Command arguments structure for mqtt_stop_agent.
uint8_t stream_id
Stream ID of the MQTT connection.
Command arguments structure for mqtt_subscribe.
uint8_t qos
MQTT quality of service (0-2).
uint8_t stream_id
Stream ID of the MQTT connection.
Response arguments structure for ntp_get_time.
uint64_t timestamp
Current internal time (Seconds since epoch, UTC).
Response arguments structure for ping_run.
Command arguments structure for socket_accept.
uint8_t stream_id
Stream ID of the bound socket.
Response arguments structure for socket_accept.
uint8_t stream_id
Stream ID of the new incoming connection.
Command arguments structure for socket_bind.
uint16_t port
Port to listen on.
enum mmagic_socket_proto protocol
Underlying protocol to be used.
Response arguments structure for socket_bind.
uint8_t stream_id
Stream ID of the opened socket.
Command arguments structure for socket_close.
uint8_t stream_id
Stream ID of the socket to close.
Command arguments structure for socket_connect.
enum mmagic_socket_proto protocol
Underlying protocol to be used.
uint16_t port
Port to connect to.
Response arguments structure for socket_connect.
uint8_t stream_id
Stream ID of the opened socket.
Command arguments structure for socket_read_poll.
uint8_t stream_id
Stream ID of the socket to wait on.
Command arguments structure for socket_recv.
uint16_t len
Maximum length of data.
uint8_t stream_id
Stream ID of the socket to receive from.
Response arguments structure for socket_recv.
Command arguments structure for socket_send.
uint8_t stream_id
Stream ID of the socket to send on.
Command arguments structure for socket_set_rx_ready_evt_enabled.
uint8_t stream_id
Stream ID of the socket to close.
bool enabled
Whether the RX ready event should be enabled.
Command arguments structure for socket_write_poll.
uint8_t stream_id
Stream ID of the socket to wait on.
Command arguments structure for sys_deep_sleep.
enum mmagic_deep_sleep_mode mode
Deep sleep mode to enter.
Command arguments structure for sys_get_stats.
bool reset
Reset the statistics after retrieving them where applicable.
enum mmagic_subsystem_id subsystem
Subsystem from which to retrieve statistics.
Response arguments structure for sys_get_stats.
Response arguments structure for sys_get_version.
Command arguments structure for wlan_beacon_monitor_enable.
Command arguments structure for wlan_connect.
uint32_t timeout
Duration in milliseconds to wait for connection establish, if connection does not get established an ...
Response arguments structure for wlan_get_mac_addr.
Response arguments structure for wlan_get_rssi.
Response arguments structure for wlan_get_sta_status.
enum mmagic_sta_state sta_status
The current STA status.
Command arguments structure for wlan_scan.
uint32_t timeout
Optional duration in milliseconds to wait for scan to complete, if scan does not complete by the time...
Response arguments structure for wlan_scan.
Command arguments structure for wlan_wnm_sleep.
bool wnm_sleep_enabled
Boolean indicating whether WNM sleep is enabled.
Event arguments structure for mqtt_broker_connection.
enum mmagic_status connection_state
Current state of the connection to the broker.
uint8_t stream_id
Stream ID of the MQTT connection.
Event arguments structure for mqtt_message_received.
uint8_t stream_id
Stream ID of the MQTT connection.
Event arguments structure for socket_rx_ready.
uint8_t stream_id
Stream ID of the socket this applies to.
Event arguments structure for wlan_beacon_rx.
Event arguments structure for wlan_sta_event.
enum mmagic_sta_event event
The reported WLAN STA evt.
Raw octet string type with maximum length of 1536.
uint16_t len
Length of data.
Raw octet string type with maximum length of 1600.
uint16_t len
Length of data.
Raw octet string type with maximum length of 255.
uint8_t len
Length of data.
String type with maximum length of 100 (excluding null terminator).
uint8_t len
Length of string contents (excluding null terminator).
char data[100+1]
The string contents.
String type with maximum length of 254 (excluding null terminator).
uint8_t len
Length of string contents (excluding null terminator).
char data[254+1]
The string contents.
String type with maximum length of 32 (excluding null terminator).
uint8_t len
Length of string contents (excluding null terminator).
char data[32+1]
The string contents.
Generic 64 byte buffer.
uint8_t len
Length of data in the buffer.
Data type to contain Two character country code (null-terminated) used to identify the regulatory dom...
Data type for a string representation of an IP address.
Structure to contain the current IP status.
bool dhcp_enabled
Whether or not dhcp is enabled.
enum mmagic_ip_link_state link_state
Current link state.
Data structure to store iperf results.
uint16_t local_port
Port number of the local device.
uint64_t bytes_transferred
The number of bytes of data transferred during the iperf test.
uint32_t bandwidth_kbitpsec
The average throughput in kbps.
uint16_t remote_port
Port number of the remote device.
uint32_t duration_ms
The duration of the iperf test in milliseconds.
Data type to contain mac address byte array.
Data type to contain a list of three octet OUIs.
uint8_t count
The number of OUIs in the list.
Data type to contain a three octet OUI.
Data structure to store ping results.
uint32_t min_time_ms
The minimum latency in ms between request sent and response received.
uint32_t total_count
Total number of requests sent.
uint16_t session_id
Stores non-zero session ID whilst ping session is running.
uint32_t avg_time_ms
The average latency in ms between request sent and response received.
uint32_t recv_count
The number of ping responses received.
uint32_t max_time_ms
The maximum latency in ms between request sent and response received.
Structure for holding a scan result.
uint16_t received_ies_len
Length of the ies field in the received frame.
uint8_t op_bw_mhz
Operating bandwidth, in MHz, of the access point.
uint16_t capability_info
Value of the Capability Information field.
uint32_t channel_freq_hz
Center frequency in Hz of the channel where the frame was received.
uint8_t bw_mhz
Bandwidth, in MHz, where the frame was received.
int32_t rssi
RSSI of the AP in dBm.
uint16_t beacon_interval
Value of the Beacon Interval field.
int16_t noise_dbm
Background noise measured by the chip on the channel at the time the probe response was received.
uint64_t tsf
TSF timestamp in the Probe Response frame.
Structure for returning the scan status.
uint8_t num
Number of results retrieved.
struct struct_scan_result results[10]
Array of scan results.
Structure for devise firmware and hardware versions.