Morse Micro IoT SDK  2.10.4
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{
58};
59
62{
67};
68
71{
76};
77
80{
87};
88
91{
96};
97
100{
105};
106
109{
179};
180
183{
192};
193
196{
205};
206
209{
214};
215
218{
225};
226
229{
246};
247
250{
257};
258
261{
278};
279
282{
284 uint8_t len;
285
287 char data[32 + 1];
288};
289
292{
294 uint8_t len;
295
297 char data[100 + 1];
298};
299
302{
304 uint8_t len;
305
307 char data[254 + 1];
308};
309
312{
314 uint8_t len;
315
317 uint8_t data[255];
318};
319
322{
324 uint16_t len;
325
327 uint8_t data[1536];
328};
329
332{
334 uint8_t addr[6];
335};
336
340{
342 char country_code[3];
343};
344
347{
349 uint8_t oui[3];
350};
351
354{
356 uint8_t count;
358 struct struct_oui ouis[5];
359};
360
363{
365 struct string32 ssid;
367 struct struct_mac_addr bssid;
369 int32_t rssi;
371 struct raw255 ies;
382 uint8_t bw_mhz;
384 uint8_t op_bw_mhz;
387 int16_t noise_dbm;
389 uint64_t tsf;
390};
391
394{
396 struct string32 application_version;
398 struct string32 bootloader_version;
400 struct string32 user_hardware_version;
402 struct string32 morse_firmware_version;
404 struct string32 morselib_version;
406 struct string32 morse_hardware_version;
407};
408
411{
413 struct struct_scan_result results[10];
415 uint8_t num;
416};
417
421{
423 char addr[48];
424};
425
428{
434 struct struct_ip_addr ip_addr;
436 struct struct_ip_addr netmask;
438 struct struct_ip_addr gateway;
440 struct struct_ip_addr broadcast;
442 struct struct_ip_addr dns_servers[2];
443};
444
447{
449 struct struct_ip_addr receiver_addr;
451 uint32_t total_count;
453 uint32_t recv_count;
455 uint32_t min_time_ms;
457 uint32_t avg_time_ms;
459 uint32_t max_time_ms;
461 uint16_t session_id;
462};
463
466{
468 struct struct_ip_addr remote_addr;
470 uint16_t remote_port;
472 struct struct_ip_addr local_addr;
474 uint16_t local_port;
478 uint32_t duration_ms;
481};
482
485{
487 uint8_t buffer[64];
489 uint8_t len;
490};
491
496{
515};
516
528struct mmagic_controller;
529
539typedef void (*mmagic_controller_agent_start_cb_t)(struct mmagic_controller *controller, void *arg);
540
545{
550};
551
555#define MMAGIC_CONTROLLER_ARGS_INIT { 0 }
556
565struct mmagic_controller *mmagic_controller_init(const struct mmagic_controller_init_args *args);
566
572void mmagic_controller_deinit(struct mmagic_controller *controller);
573
585#define CONTROL_STREAM 0
586
588#define MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS 1000
589
604enum mmagic_status mmagic_controller_tx(struct mmagic_controller *controller,
605 uint8_t stream_id,
606 uint8_t submodule_id,
607 uint8_t command_id,
608 uint8_t subcommand_id,
609 const uint8_t *buffer,
610 size_t buffer_length);
611
628enum mmagic_status mmagic_controller_rx(struct mmagic_controller *controller,
629 uint8_t stream_id,
630 uint8_t submodule_id,
631 uint8_t command_id,
632 uint8_t subcommand_id,
633 uint8_t *buffer,
634 size_t buffer_length,
635 uint32_t timeout_ms);
636
648enum mmagic_status mmagic_controller_agent_sync(struct mmagic_controller *controller,
649 uint32_t timeout_ms);
650
668enum mmagic_status mmagic_controller_request_agent_reset(struct mmagic_controller *controller);
669
672{
764};
765
768{
820};
821
824{
859};
860
863{
889};
890
893{
901};
902
905{
916};
917
920{
933};
934
937{
948};
949
952{
967};
968
971{
1000};
1001
1004{
1014};
1015
1018{
1027};
1028
1031{
1034};
1035
1038{
1051};
1052
1055{
1074};
1075
1099 struct mmagic_controller *controller,
1100 struct struct_country_code *var)
1101{
1102 enum mmagic_status status;
1103 status = mmagic_controller_tx(controller,
1108 NULL,
1109 0);
1110 if (status != MMAGIC_STATUS_OK)
1111 {
1112 return status;
1113 }
1114 status = mmagic_controller_rx(controller,
1119 (uint8_t *)var,
1120 sizeof(*var),
1122 return status;
1123}
1124
1136 struct mmagic_controller *controller,
1137 struct struct_country_code *var)
1138{
1139 enum mmagic_status status;
1140 status = mmagic_controller_tx(controller,
1145 (uint8_t *)var,
1146 sizeof(*var));
1147 if (status != MMAGIC_STATUS_OK)
1148 {
1149 return status;
1150 }
1151 status = mmagic_controller_rx(controller,
1156 NULL,
1157 0,
1159 return status;
1160}
1161
1173 struct mmagic_controller *controller,
1174 struct string32 *var)
1175{
1176 enum mmagic_status status;
1177 status = mmagic_controller_tx(controller,
1182 NULL,
1183 0);
1184 if (status != MMAGIC_STATUS_OK)
1185 {
1186 return status;
1187 }
1188 status = mmagic_controller_rx(controller,
1193 (uint8_t *)var,
1194 sizeof(*var),
1196 return status;
1197}
1198
1210 struct mmagic_controller *controller,
1211 const char *var)
1212{
1213 struct string32 var_val;
1214 enum mmagic_status status;
1215 var_val.len = strlen(var);
1216 if (var_val.len > sizeof(var_val.data) - 1)
1217 {
1219 }
1220 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1221 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1222 status = mmagic_controller_tx(controller,
1227 (uint8_t *)&var_val,
1228 sizeof(var_val));
1229 if (status != MMAGIC_STATUS_OK)
1230 {
1231 return status;
1232 }
1233 status = mmagic_controller_rx(controller,
1238 NULL,
1239 0,
1241 return status;
1242}
1243
1255 struct mmagic_controller *controller,
1256 struct string100 *var)
1257{
1258 enum mmagic_status status;
1259 status = mmagic_controller_tx(controller,
1264 NULL,
1265 0);
1266 if (status != MMAGIC_STATUS_OK)
1267 {
1268 return status;
1269 }
1270 status = mmagic_controller_rx(controller,
1275 (uint8_t *)var,
1276 sizeof(*var),
1278 return status;
1279}
1280
1292 struct mmagic_controller *controller,
1293 const char *var)
1294{
1295 struct string100 var_val;
1296 enum mmagic_status status;
1297 var_val.len = strlen(var);
1298 if (var_val.len > sizeof(var_val.data) - 1)
1299 {
1301 }
1302 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1303 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1304 status = mmagic_controller_tx(controller,
1309 (uint8_t *)&var_val,
1310 sizeof(var_val));
1311 if (status != MMAGIC_STATUS_OK)
1312 {
1313 return status;
1314 }
1315 status = mmagic_controller_rx(controller,
1320 NULL,
1321 0,
1323 return status;
1324}
1325
1337 struct mmagic_controller *controller,
1338 enum mmagic_security_type *var)
1339{
1340 enum mmagic_status status;
1341 status = mmagic_controller_tx(controller,
1346 NULL,
1347 0);
1348 if (status != MMAGIC_STATUS_OK)
1349 {
1350 return status;
1351 }
1352 status = mmagic_controller_rx(controller,
1357 (uint8_t *)var,
1358 sizeof(*var),
1360 return status;
1361}
1362
1374 struct mmagic_controller *controller,
1375 enum mmagic_security_type var)
1376{
1377 enum mmagic_status status;
1378 status = mmagic_controller_tx(controller,
1383 (uint8_t *)&var,
1384 sizeof(var));
1385 if (status != MMAGIC_STATUS_OK)
1386 {
1387 return status;
1388 }
1389 status = mmagic_controller_rx(controller,
1394 NULL,
1395 0,
1397 return status;
1398}
1399
1411 struct mmagic_controller *controller,
1412 int16_t *var)
1413{
1414 enum mmagic_status status;
1415 status = mmagic_controller_tx(controller,
1420 NULL,
1421 0);
1422 if (status != MMAGIC_STATUS_OK)
1423 {
1424 return status;
1425 }
1426 status = mmagic_controller_rx(controller,
1431 (uint8_t *)var,
1432 sizeof(*var),
1434 return status;
1435}
1436
1448 struct mmagic_controller *controller,
1449 int16_t var)
1450{
1451 enum mmagic_status status;
1452 status = mmagic_controller_tx(controller,
1457 (uint8_t *)&var,
1458 sizeof(var));
1459 if (status != MMAGIC_STATUS_OK)
1460 {
1461 return status;
1462 }
1463 status = mmagic_controller_rx(controller,
1468 NULL,
1469 0,
1471 return status;
1472}
1473
1485 struct mmagic_controller *controller,
1486 struct struct_mac_addr *var)
1487{
1488 enum mmagic_status status;
1489 status = mmagic_controller_tx(controller,
1494 NULL,
1495 0);
1496 if (status != MMAGIC_STATUS_OK)
1497 {
1498 return status;
1499 }
1500 status = mmagic_controller_rx(controller,
1505 (uint8_t *)var,
1506 sizeof(*var),
1508 return status;
1509}
1510
1522 struct mmagic_controller *controller,
1523 struct struct_mac_addr *var)
1524{
1525 enum mmagic_status status;
1526 status = mmagic_controller_tx(controller,
1531 (uint8_t *)var,
1532 sizeof(*var));
1533 if (status != MMAGIC_STATUS_OK)
1534 {
1535 return status;
1536 }
1537 status = mmagic_controller_rx(controller,
1542 NULL,
1543 0,
1545 return status;
1546}
1547
1559 struct mmagic_controller *controller,
1560 enum mmagic_pmf_mode *var)
1561{
1562 enum mmagic_status status;
1563 status = mmagic_controller_tx(controller,
1568 NULL,
1569 0);
1570 if (status != MMAGIC_STATUS_OK)
1571 {
1572 return status;
1573 }
1574 status = mmagic_controller_rx(controller,
1579 (uint8_t *)var,
1580 sizeof(*var),
1582 return status;
1583}
1584
1596 struct mmagic_controller *controller,
1597 enum mmagic_pmf_mode var)
1598{
1599 enum mmagic_status status;
1600 status = mmagic_controller_tx(controller,
1605 (uint8_t *)&var,
1606 sizeof(var));
1607 if (status != MMAGIC_STATUS_OK)
1608 {
1609 return status;
1610 }
1611 status = mmagic_controller_rx(controller,
1616 NULL,
1617 0,
1619 return status;
1620}
1621
1633 struct mmagic_controller *controller,
1634 enum mmagic_station_type *var)
1635{
1636 enum mmagic_status status;
1637 status = mmagic_controller_tx(controller,
1642 NULL,
1643 0);
1644 if (status != MMAGIC_STATUS_OK)
1645 {
1646 return status;
1647 }
1648 status = mmagic_controller_rx(controller,
1653 (uint8_t *)var,
1654 sizeof(*var),
1656 return status;
1657}
1658
1670 struct mmagic_controller *controller,
1671 enum mmagic_station_type var)
1672{
1673 enum mmagic_status status;
1674 status = mmagic_controller_tx(controller,
1679 (uint8_t *)&var,
1680 sizeof(var));
1681 if (status != MMAGIC_STATUS_OK)
1682 {
1683 return status;
1684 }
1685 status = mmagic_controller_rx(controller,
1690 NULL,
1691 0,
1693 return status;
1694}
1695
1707 struct mmagic_controller *controller,
1708 uint32_t *var)
1709{
1710 enum mmagic_status status;
1711 status = mmagic_controller_tx(controller,
1716 NULL,
1717 0);
1718 if (status != MMAGIC_STATUS_OK)
1719 {
1720 return status;
1721 }
1722 status = mmagic_controller_rx(controller,
1727 (uint8_t *)var,
1728 sizeof(*var),
1730 return status;
1731}
1732
1744 struct mmagic_controller *controller,
1745 uint32_t var)
1746{
1747 enum mmagic_status status;
1748 status = mmagic_controller_tx(controller,
1753 (uint8_t *)&var,
1754 sizeof(var));
1755 if (status != MMAGIC_STATUS_OK)
1756 {
1757 return status;
1758 }
1759 status = mmagic_controller_rx(controller,
1764 NULL,
1765 0,
1767 return status;
1768}
1769
1781 struct mmagic_controller *controller,
1782 bool *var)
1783{
1784 enum mmagic_status status;
1785 status = mmagic_controller_tx(controller,
1790 NULL,
1791 0);
1792 if (status != MMAGIC_STATUS_OK)
1793 {
1794 return status;
1795 }
1796 status = mmagic_controller_rx(controller,
1801 (uint8_t *)var,
1802 sizeof(*var),
1804 return status;
1805}
1806
1818 struct mmagic_controller *controller,
1819 bool var)
1820{
1821 enum mmagic_status status;
1822 status = mmagic_controller_tx(controller,
1827 (uint8_t *)&var,
1828 sizeof(var));
1829 if (status != MMAGIC_STATUS_OK)
1830 {
1831 return status;
1832 }
1833 status = mmagic_controller_rx(controller,
1838 NULL,
1839 0,
1841 return status;
1842}
1843
1855 struct mmagic_controller *controller,
1856 bool *var)
1857{
1858 enum mmagic_status status;
1859 status = mmagic_controller_tx(controller,
1864 NULL,
1865 0);
1866 if (status != MMAGIC_STATUS_OK)
1867 {
1868 return status;
1869 }
1870 status = mmagic_controller_rx(controller,
1875 (uint8_t *)var,
1876 sizeof(*var),
1878 return status;
1879}
1880
1892 struct mmagic_controller *controller,
1893 bool var)
1894{
1895 enum mmagic_status status;
1896 status = mmagic_controller_tx(controller,
1901 (uint8_t *)&var,
1902 sizeof(var));
1903 if (status != MMAGIC_STATUS_OK)
1904 {
1905 return status;
1906 }
1907 status = mmagic_controller_rx(controller,
1912 NULL,
1913 0,
1915 return status;
1916}
1917
1929 struct mmagic_controller *controller,
1930 bool *var)
1931{
1932 enum mmagic_status status;
1933 status = mmagic_controller_tx(controller,
1938 NULL,
1939 0);
1940 if (status != MMAGIC_STATUS_OK)
1941 {
1942 return status;
1943 }
1944 status = mmagic_controller_rx(controller,
1949 (uint8_t *)var,
1950 sizeof(*var),
1952 return status;
1953}
1954
1966 struct mmagic_controller *controller,
1967 bool var)
1968{
1969 enum mmagic_status status;
1970 status = mmagic_controller_tx(controller,
1975 (uint8_t *)&var,
1976 sizeof(var));
1977 if (status != MMAGIC_STATUS_OK)
1978 {
1979 return status;
1980 }
1981 status = mmagic_controller_rx(controller,
1986 NULL,
1987 0,
1989 return status;
1990}
1991
2003 struct mmagic_controller *controller,
2004 enum mmagic_power_save_mode *var)
2005{
2006 enum mmagic_status status;
2007 status = mmagic_controller_tx(controller,
2012 NULL,
2013 0);
2014 if (status != MMAGIC_STATUS_OK)
2015 {
2016 return status;
2017 }
2018 status = mmagic_controller_rx(controller,
2023 (uint8_t *)var,
2024 sizeof(*var),
2026 return status;
2027}
2028
2040 struct mmagic_controller *controller,
2041 enum mmagic_power_save_mode var)
2042{
2043 enum mmagic_status status;
2044 status = mmagic_controller_tx(controller,
2049 (uint8_t *)&var,
2050 sizeof(var));
2051 if (status != MMAGIC_STATUS_OK)
2052 {
2053 return status;
2054 }
2055 status = mmagic_controller_rx(controller,
2060 NULL,
2061 0,
2063 return status;
2064}
2065
2078 struct mmagic_controller *controller,
2079 uint32_t *var)
2080{
2081 enum mmagic_status status;
2082 status = mmagic_controller_tx(controller,
2087 NULL,
2088 0);
2089 if (status != MMAGIC_STATUS_OK)
2090 {
2091 return status;
2092 }
2093 status = mmagic_controller_rx(controller,
2098 (uint8_t *)var,
2099 sizeof(*var),
2101 return status;
2102}
2103
2116 struct mmagic_controller *controller,
2117 uint32_t var)
2118{
2119 enum mmagic_status status;
2120 status = mmagic_controller_tx(controller,
2125 (uint8_t *)&var,
2126 sizeof(var));
2127 if (status != MMAGIC_STATUS_OK)
2128 {
2129 return status;
2130 }
2131 status = mmagic_controller_rx(controller,
2136 NULL,
2137 0,
2139 return status;
2140}
2141
2153 struct mmagic_controller *controller,
2154 bool *var)
2155{
2156 enum mmagic_status status;
2157 status = mmagic_controller_tx(controller,
2162 NULL,
2163 0);
2164 if (status != MMAGIC_STATUS_OK)
2165 {
2166 return status;
2167 }
2168 status = mmagic_controller_rx(controller,
2173 (uint8_t *)var,
2174 sizeof(*var),
2176 return status;
2177}
2178
2190 struct mmagic_controller *controller,
2191 bool var)
2192{
2193 enum mmagic_status status;
2194 status = mmagic_controller_tx(controller,
2199 (uint8_t *)&var,
2200 sizeof(var));
2201 if (status != MMAGIC_STATUS_OK)
2202 {
2203 return status;
2204 }
2205 status = mmagic_controller_rx(controller,
2210 NULL,
2211 0,
2213 return status;
2214}
2215
2231 struct mmagic_controller *controller,
2232 uint32_t *var)
2233{
2234 enum mmagic_status status;
2235 status = mmagic_controller_tx(controller,
2240 NULL,
2241 0);
2242 if (status != MMAGIC_STATUS_OK)
2243 {
2244 return status;
2245 }
2246 status = mmagic_controller_rx(controller,
2251 (uint8_t *)var,
2252 sizeof(*var),
2254 return status;
2255}
2256
2272 struct mmagic_controller *controller,
2273 uint32_t var)
2274{
2275 enum mmagic_status status;
2276 status = mmagic_controller_tx(controller,
2281 (uint8_t *)&var,
2282 sizeof(var));
2283 if (status != MMAGIC_STATUS_OK)
2284 {
2285 return status;
2286 }
2287 status = mmagic_controller_rx(controller,
2292 NULL,
2293 0,
2295 return status;
2296}
2297
2312 struct mmagic_controller *controller,
2313 uint32_t *var)
2314{
2315 enum mmagic_status status;
2316 status = mmagic_controller_tx(controller,
2321 NULL,
2322 0);
2323 if (status != MMAGIC_STATUS_OK)
2324 {
2325 return status;
2326 }
2327 status = mmagic_controller_rx(controller,
2332 (uint8_t *)var,
2333 sizeof(*var),
2335 return status;
2336}
2337
2352 struct mmagic_controller *controller,
2353 uint32_t var)
2354{
2355 enum mmagic_status status;
2356 status = mmagic_controller_tx(controller,
2361 (uint8_t *)&var,
2362 sizeof(var));
2363 if (status != MMAGIC_STATUS_OK)
2364 {
2365 return status;
2366 }
2367 status = mmagic_controller_rx(controller,
2372 NULL,
2373 0,
2375 return status;
2376}
2377
2390 struct mmagic_controller *controller,
2391 bool *var)
2392{
2393 enum mmagic_status status;
2394 status = mmagic_controller_tx(controller,
2399 NULL,
2400 0);
2401 if (status != MMAGIC_STATUS_OK)
2402 {
2403 return status;
2404 }
2405 status = mmagic_controller_rx(controller,
2410 (uint8_t *)var,
2411 sizeof(*var),
2413 return status;
2414}
2415
2428 struct mmagic_controller *controller,
2429 bool var)
2430{
2431 enum mmagic_status status;
2432 status = mmagic_controller_tx(controller,
2437 (uint8_t *)&var,
2438 sizeof(var));
2439 if (status != MMAGIC_STATUS_OK)
2440 {
2441 return status;
2442 }
2443 status = mmagic_controller_rx(controller,
2448 NULL,
2449 0,
2451 return status;
2452}
2453
2467 struct mmagic_controller *controller,
2468 uint16_t *var)
2469{
2470 enum mmagic_status status;
2471 status = mmagic_controller_tx(controller,
2476 NULL,
2477 0);
2478 if (status != MMAGIC_STATUS_OK)
2479 {
2480 return status;
2481 }
2482 status = mmagic_controller_rx(controller,
2487 (uint8_t *)var,
2488 sizeof(*var),
2490 return status;
2491}
2492
2506 struct mmagic_controller *controller,
2507 uint16_t var)
2508{
2509 enum mmagic_status status;
2510 status = mmagic_controller_tx(controller,
2515 (uint8_t *)&var,
2516 sizeof(var));
2517 if (status != MMAGIC_STATUS_OK)
2518 {
2519 return status;
2520 }
2521 status = mmagic_controller_rx(controller,
2526 NULL,
2527 0,
2529 return status;
2530}
2531
2545 struct mmagic_controller *controller,
2546 uint16_t *var)
2547{
2548 enum mmagic_status status;
2549 status = mmagic_controller_tx(controller,
2554 NULL,
2555 0);
2556 if (status != MMAGIC_STATUS_OK)
2557 {
2558 return status;
2559 }
2560 status = mmagic_controller_rx(controller,
2565 (uint8_t *)var,
2566 sizeof(*var),
2568 return status;
2569}
2570
2584 struct mmagic_controller *controller,
2585 uint16_t var)
2586{
2587 enum mmagic_status status;
2588 status = mmagic_controller_tx(controller,
2593 (uint8_t *)&var,
2594 sizeof(var));
2595 if (status != MMAGIC_STATUS_OK)
2596 {
2597 return status;
2598 }
2599 status = mmagic_controller_rx(controller,
2604 NULL,
2605 0,
2607 return status;
2608}
2609
2625 struct mmagic_controller *controller,
2626 struct string32 *var)
2627{
2628 enum mmagic_status status;
2629 status = mmagic_controller_tx(controller,
2634 NULL,
2635 0);
2636 if (status != MMAGIC_STATUS_OK)
2637 {
2638 return status;
2639 }
2640 status = mmagic_controller_rx(controller,
2645 (uint8_t *)var,
2646 sizeof(*var),
2648 return status;
2649}
2650
2666 struct mmagic_controller *controller,
2667 const char *var)
2668{
2669 struct string32 var_val;
2670 enum mmagic_status status;
2671 var_val.len = strlen(var);
2672 if (var_val.len > sizeof(var_val.data) - 1)
2673 {
2675 }
2676 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2677 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2678 status = mmagic_controller_tx(controller,
2683 (uint8_t *)&var_val,
2684 sizeof(var_val));
2685 if (status != MMAGIC_STATUS_OK)
2686 {
2687 return status;
2688 }
2689 status = mmagic_controller_rx(controller,
2694 NULL,
2695 0,
2697 return status;
2698}
2699
2715 struct mmagic_controller *controller,
2716 struct string32 *var)
2717{
2718 enum mmagic_status status;
2719 status = mmagic_controller_tx(controller,
2724 NULL,
2725 0);
2726 if (status != MMAGIC_STATUS_OK)
2727 {
2728 return status;
2729 }
2730 status = mmagic_controller_rx(controller,
2735 (uint8_t *)var,
2736 sizeof(*var),
2738 return status;
2739}
2740
2756 struct mmagic_controller *controller,
2757 const char *var)
2758{
2759 struct string32 var_val;
2760 enum mmagic_status status;
2761 var_val.len = strlen(var);
2762 if (var_val.len > sizeof(var_val.data) - 1)
2763 {
2765 }
2766 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2767 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2768 status = mmagic_controller_tx(controller,
2773 (uint8_t *)&var_val,
2774 sizeof(var_val));
2775 if (status != MMAGIC_STATUS_OK)
2776 {
2777 return status;
2778 }
2779 status = mmagic_controller_rx(controller,
2784 NULL,
2785 0,
2787 return status;
2788}
2789
2805 struct mmagic_controller *controller,
2806 struct string32 *var)
2807{
2808 enum mmagic_status status;
2809 status = mmagic_controller_tx(controller,
2814 NULL,
2815 0);
2816 if (status != MMAGIC_STATUS_OK)
2817 {
2818 return status;
2819 }
2820 status = mmagic_controller_rx(controller,
2825 (uint8_t *)var,
2826 sizeof(*var),
2828 return status;
2829}
2830
2846 struct mmagic_controller *controller,
2847 const char *var)
2848{
2849 struct string32 var_val;
2850 enum mmagic_status status;
2851 var_val.len = strlen(var);
2852 if (var_val.len > sizeof(var_val.data) - 1)
2853 {
2855 }
2856 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2857 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2858 status = mmagic_controller_tx(controller,
2863 (uint8_t *)&var_val,
2864 sizeof(var_val));
2865 if (status != MMAGIC_STATUS_OK)
2866 {
2867 return status;
2868 }
2869 status = mmagic_controller_rx(controller,
2874 NULL,
2875 0,
2877 return status;
2878}
2879
2895 struct mmagic_controller *controller,
2896 struct string32 *var)
2897{
2898 enum mmagic_status status;
2899 status = mmagic_controller_tx(controller,
2904 NULL,
2905 0);
2906 if (status != MMAGIC_STATUS_OK)
2907 {
2908 return status;
2909 }
2910 status = mmagic_controller_rx(controller,
2915 (uint8_t *)var,
2916 sizeof(*var),
2918 return status;
2919}
2920
2936 struct mmagic_controller *controller,
2937 const char *var)
2938{
2939 struct string32 var_val;
2940 enum mmagic_status status;
2941 var_val.len = strlen(var);
2942 if (var_val.len > sizeof(var_val.data) - 1)
2943 {
2945 }
2946 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2947 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2948 status = mmagic_controller_tx(controller,
2953 (uint8_t *)&var_val,
2954 sizeof(var_val));
2955 if (status != MMAGIC_STATUS_OK)
2956 {
2957 return status;
2958 }
2959 status = mmagic_controller_rx(controller,
2964 NULL,
2965 0,
2967 return status;
2968}
2969
2984 struct mmagic_controller *controller,
2985 enum mmagic_mcs10_mode *var)
2986{
2987 enum mmagic_status status;
2988 status = mmagic_controller_tx(controller,
2993 NULL,
2994 0);
2995 if (status != MMAGIC_STATUS_OK)
2996 {
2997 return status;
2998 }
2999 status = mmagic_controller_rx(controller,
3004 (uint8_t *)var,
3005 sizeof(*var),
3007 return status;
3008}
3009
3024 struct mmagic_controller *controller,
3025 enum mmagic_mcs10_mode var)
3026{
3027 enum mmagic_status status;
3028 status = mmagic_controller_tx(controller,
3033 (uint8_t *)&var,
3034 sizeof(var));
3035 if (status != MMAGIC_STATUS_OK)
3036 {
3037 return status;
3038 }
3039 status = mmagic_controller_rx(controller,
3044 NULL,
3045 0,
3047 return status;
3048}
3049
3062 struct mmagic_controller *controller,
3063 bool *var)
3064{
3065 enum mmagic_status status;
3066 status = mmagic_controller_tx(controller,
3071 NULL,
3072 0);
3073 if (status != MMAGIC_STATUS_OK)
3074 {
3075 return status;
3076 }
3077 status = mmagic_controller_rx(controller,
3082 (uint8_t *)var,
3083 sizeof(*var),
3085 return status;
3086}
3087
3100 struct mmagic_controller *controller,
3101 bool var)
3102{
3103 enum mmagic_status status;
3104 status = mmagic_controller_tx(controller,
3109 (uint8_t *)&var,
3110 sizeof(var));
3111 if (status != MMAGIC_STATUS_OK)
3112 {
3113 return status;
3114 }
3115 status = mmagic_controller_rx(controller,
3120 NULL,
3121 0,
3123 return status;
3124}
3125
3139 struct mmagic_controller *controller,
3140 enum mmagic_duty_cycle_mode *var)
3141{
3142 enum mmagic_status status;
3143 status = mmagic_controller_tx(controller,
3148 NULL,
3149 0);
3150 if (status != MMAGIC_STATUS_OK)
3151 {
3152 return status;
3153 }
3154 status = mmagic_controller_rx(controller,
3159 (uint8_t *)var,
3160 sizeof(*var),
3162 return status;
3163}
3164
3178 struct mmagic_controller *controller,
3179 enum mmagic_duty_cycle_mode var)
3180{
3181 enum mmagic_status status;
3182 status = mmagic_controller_tx(controller,
3187 (uint8_t *)&var,
3188 sizeof(var));
3189 if (status != MMAGIC_STATUS_OK)
3190 {
3191 return status;
3192 }
3193 status = mmagic_controller_rx(controller,
3198 NULL,
3199 0,
3201 return status;
3202}
3203
3212 struct mmagic_controller *controller)
3213{
3214 enum mmagic_status status;
3215 status = mmagic_controller_tx(controller,
3219 0,
3220 NULL,
3221 0);
3222 if (status != MMAGIC_STATUS_OK)
3223 {
3224 return status;
3225 }
3226 status = mmagic_controller_rx(controller,
3230 0,
3231 NULL,
3232 0,
3234 return status;
3235}
3236
3241{
3244 uint32_t timeout;
3245};
3246
3256 struct mmagic_controller *controller,
3257 struct mmagic_core_wlan_connect_cmd_args *cmd_args)
3258{
3259 enum mmagic_status status;
3260 const uint8_t stream_id = CONTROL_STREAM;
3261 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3262
3263 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
3264 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
3265 {
3266 response_timeout_ms += cmd_args->timeout;
3267 }
3268 else
3269 {
3270 response_timeout_ms = UINT32_MAX;
3271 }
3272
3273 status = mmagic_controller_tx(controller,
3274 stream_id,
3277 0,
3278 (uint8_t *)cmd_args,
3279 sizeof(*cmd_args));
3280 if (status != MMAGIC_STATUS_OK)
3281 {
3282 return status;
3283 }
3284 status = mmagic_controller_rx(controller,
3285 stream_id,
3288 0,
3289 NULL,
3290 0,
3291 response_timeout_ms);
3292 return status;
3293}
3294
3303 struct mmagic_controller *controller)
3304{
3305 enum mmagic_status status;
3306 const uint8_t stream_id = CONTROL_STREAM;
3307 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3308
3309 status = mmagic_controller_tx(controller,
3310 stream_id,
3313 0,
3314 NULL,
3315 0);
3316 if (status != MMAGIC_STATUS_OK)
3317 {
3318 return status;
3319 }
3320 return mmagic_controller_rx(controller,
3321 stream_id,
3324 0,
3325 NULL,
3326 0,
3327 response_timeout_ms);
3328 return status;
3329}
3330
3333{
3335 struct string32 ssid;
3338 uint32_t timeout;
3339};
3340
3343{
3346};
3347
3360 struct mmagic_controller *controller,
3361 struct mmagic_core_wlan_scan_cmd_args *cmd_args,
3362 struct mmagic_core_wlan_scan_rsp_args *rsp_args)
3363{
3364 enum mmagic_status status;
3365 const uint8_t stream_id = CONTROL_STREAM;
3366 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3367
3368 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
3369 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
3370 {
3371 response_timeout_ms += cmd_args->timeout;
3372 }
3373 else
3374 {
3375 response_timeout_ms = UINT32_MAX;
3376 }
3377
3378 status = mmagic_controller_tx(controller,
3379 stream_id,
3382 0,
3383 (uint8_t *)cmd_args,
3384 sizeof(*cmd_args));
3385 if (status != MMAGIC_STATUS_OK)
3386 {
3387 return status;
3388 }
3389 status = mmagic_controller_rx(controller,
3390 stream_id,
3393 0,
3394 (uint8_t *)rsp_args,
3395 sizeof(*rsp_args),
3396 response_timeout_ms);
3397 return status;
3398}
3399
3402{
3404 int32_t rssi;
3405};
3406
3418 struct mmagic_controller *controller,
3419 struct mmagic_core_wlan_get_rssi_rsp_args *rsp_args)
3420{
3421 enum mmagic_status status;
3422 const uint8_t stream_id = CONTROL_STREAM;
3423 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3424
3425 status = mmagic_controller_tx(controller,
3426 stream_id,
3429 0,
3430 NULL,
3431 0);
3432 if (status != MMAGIC_STATUS_OK)
3433 {
3434 return status;
3435 }
3436 status = mmagic_controller_rx(controller,
3437 stream_id,
3440 0,
3441 (uint8_t *)rsp_args,
3442 sizeof(*rsp_args),
3443 response_timeout_ms);
3444 return status;
3445}
3446
3449{
3451 struct struct_mac_addr mac_addr;
3452};
3453
3465 struct mmagic_controller *controller,
3467{
3468 enum mmagic_status status;
3469 const uint8_t stream_id = CONTROL_STREAM;
3470 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3471
3472 status = mmagic_controller_tx(controller,
3473 stream_id,
3476 0,
3477 NULL,
3478 0);
3479 if (status != MMAGIC_STATUS_OK)
3480 {
3481 return status;
3482 }
3483 status = mmagic_controller_rx(controller,
3484 stream_id,
3487 0,
3488 (uint8_t *)rsp_args,
3489 sizeof(*rsp_args),
3490 response_timeout_ms);
3491 return status;
3492}
3493
3496{
3499};
3500
3510 struct mmagic_controller *controller,
3511 struct mmagic_core_wlan_wnm_sleep_cmd_args *cmd_args)
3512{
3513 enum mmagic_status status;
3514 const uint8_t stream_id = CONTROL_STREAM;
3515 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3516
3517 status = mmagic_controller_tx(controller,
3518 stream_id,
3521 0,
3522 (uint8_t *)cmd_args,
3523 sizeof(*cmd_args));
3524 if (status != MMAGIC_STATUS_OK)
3525 {
3526 return status;
3527 }
3528 status = mmagic_controller_rx(controller,
3529 stream_id,
3532 0,
3533 NULL,
3534 0,
3535 response_timeout_ms);
3536 return status;
3537}
3538
3541{
3543 struct struct_oui_list oui_filter;
3544};
3545
3556 struct mmagic_controller *controller,
3558{
3559 enum mmagic_status status;
3560 const uint8_t stream_id = CONTROL_STREAM;
3561 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3562
3563 status = mmagic_controller_tx(controller,
3564 stream_id,
3567 0,
3568 (uint8_t *)cmd_args,
3569 sizeof(*cmd_args));
3570 if (status != MMAGIC_STATUS_OK)
3571 {
3572 return status;
3573 }
3574 status = mmagic_controller_rx(controller,
3575 stream_id,
3578 0,
3579 NULL,
3580 0,
3581 response_timeout_ms);
3582 return status;
3583}
3584
3593 struct mmagic_controller *controller)
3594{
3595 enum mmagic_status status;
3596 const uint8_t stream_id = CONTROL_STREAM;
3597 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3598
3599 status = mmagic_controller_tx(controller,
3600 stream_id,
3603 0,
3604 NULL,
3605 0);
3606 if (status != MMAGIC_STATUS_OK)
3607 {
3608 return status;
3609 }
3610 return mmagic_controller_rx(controller,
3611 stream_id,
3614 0,
3615 NULL,
3616 0,
3617 response_timeout_ms);
3618 return status;
3619}
3620
3631 struct mmagic_controller *controller)
3632{
3633 enum mmagic_status status;
3634 const uint8_t stream_id = CONTROL_STREAM;
3635 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3636
3637 status = mmagic_controller_tx(controller,
3638 stream_id,
3641 0,
3642 NULL,
3643 0);
3644 if (status != MMAGIC_STATUS_OK)
3645 {
3646 return status;
3647 }
3648 return mmagic_controller_rx(controller,
3649 stream_id,
3652 0,
3653 NULL,
3654 0,
3655 response_timeout_ms);
3656 return status;
3657}
3658
3670 struct mmagic_controller *controller)
3671{
3672 enum mmagic_status status;
3673 const uint8_t stream_id = CONTROL_STREAM;
3674 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3675
3676 status = mmagic_controller_tx(controller,
3677 stream_id,
3680 0,
3681 NULL,
3682 0);
3683 if (status != MMAGIC_STATUS_OK)
3684 {
3685 return status;
3686 }
3687 return mmagic_controller_rx(controller,
3688 stream_id,
3691 0,
3692 NULL,
3693 0,
3694 response_timeout_ms);
3695 return status;
3696}
3697
3700{
3702 struct struct_buffer64 payload;
3703};
3704
3717 struct mmagic_controller *controller,
3719{
3720 enum mmagic_status status;
3721 const uint8_t stream_id = CONTROL_STREAM;
3722 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3723
3724 status = mmagic_controller_tx(controller,
3725 stream_id,
3728 0,
3729 (uint8_t *)cmd_args,
3730 sizeof(*cmd_args));
3731 if (status != MMAGIC_STATUS_OK)
3732 {
3733 return status;
3734 }
3735 status = mmagic_controller_rx(controller,
3736 stream_id,
3739 0,
3740 NULL,
3741 0,
3742 response_timeout_ms);
3743 return status;
3744}
3745
3748{
3752 uint32_t offset;
3753};
3754
3768 struct mmagic_controller *controller,
3770{
3771 enum mmagic_status status;
3772 const uint8_t stream_id = CONTROL_STREAM;
3773 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3774
3775 status = mmagic_controller_tx(controller,
3776 stream_id,
3779 0,
3780 (uint8_t *)cmd_args,
3781 sizeof(*cmd_args));
3782 if (status != MMAGIC_STATUS_OK)
3783 {
3784 return status;
3785 }
3786 status = mmagic_controller_rx(controller,
3787 stream_id,
3790 0,
3791 NULL,
3792 0,
3793 response_timeout_ms);
3794 return status;
3795}
3796
3799{
3803 struct struct_ip_addr src_ip;
3805 struct struct_ip_addr dst_ip;
3808 uint16_t dst_port;
3820};
3821
3832 struct mmagic_controller *controller,
3834{
3835 enum mmagic_status status;
3836 const uint8_t stream_id = CONTROL_STREAM;
3837 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3838
3839 status = mmagic_controller_tx(controller,
3840 stream_id,
3843 0,
3844 (uint8_t *)cmd_args,
3845 sizeof(*cmd_args));
3846 if (status != MMAGIC_STATUS_OK)
3847 {
3848 return status;
3849 }
3850 status = mmagic_controller_rx(controller,
3851 stream_id,
3854 0,
3855 NULL,
3856 0,
3857 response_timeout_ms);
3858 return status;
3859}
3860
3863{
3866};
3867
3879 struct mmagic_controller *controller,
3881{
3882 enum mmagic_status status;
3883 const uint8_t stream_id = CONTROL_STREAM;
3884 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3885
3886 status = mmagic_controller_tx(controller,
3887 stream_id,
3890 0,
3891 NULL,
3892 0);
3893 if (status != MMAGIC_STATUS_OK)
3894 {
3895 return status;
3896 }
3897 status = mmagic_controller_rx(controller,
3898 stream_id,
3901 0,
3902 (uint8_t *)rsp_args,
3903 sizeof(*rsp_args),
3904 response_timeout_ms);
3905 return status;
3906}
3907
3910{
3916 struct raw1536 vendor_ies;
3917};
3918
3933 const struct mmagic_wlan_beacon_rx_event_args *event_args,
3934 void *arg);
3935
3951 struct mmagic_controller *controller,
3953 void *arg);
3954
3957{
3961};
3962
3977 const struct mmagic_wlan_standby_exit_event_args *event_args,
3978 void *arg);
3979
3995 struct mmagic_controller *controller,
3997 void *arg);
3998
4001{
4004};
4005
4020 const struct mmagic_wlan_sta_event_event_args *event_args,
4021 void *arg);
4022
4038 struct mmagic_controller *controller,
4040 void *arg);
4041
4066 struct mmagic_controller *controller,
4067 struct struct_ip_addr *var)
4068{
4069 enum mmagic_status status;
4070 status = mmagic_controller_tx(controller,
4072 MMAGIC_IP,
4075 NULL,
4076 0);
4077 if (status != MMAGIC_STATUS_OK)
4078 {
4079 return status;
4080 }
4081 status = mmagic_controller_rx(controller,
4083 MMAGIC_IP,
4086 (uint8_t *)var,
4087 sizeof(*var),
4089 return status;
4090}
4091
4104 struct mmagic_controller *controller,
4105 struct struct_ip_addr *var)
4106{
4107 enum mmagic_status status;
4108 status = mmagic_controller_tx(controller,
4110 MMAGIC_IP,
4113 (uint8_t *)var,
4114 sizeof(*var));
4115 if (status != MMAGIC_STATUS_OK)
4116 {
4117 return status;
4118 }
4119 status = mmagic_controller_rx(controller,
4121 MMAGIC_IP,
4124 NULL,
4125 0,
4127 return status;
4128}
4129
4142 struct mmagic_controller *controller,
4143 struct struct_ip_addr *var)
4144{
4145 enum mmagic_status status;
4146 status = mmagic_controller_tx(controller,
4148 MMAGIC_IP,
4151 NULL,
4152 0);
4153 if (status != MMAGIC_STATUS_OK)
4154 {
4155 return status;
4156 }
4157 status = mmagic_controller_rx(controller,
4159 MMAGIC_IP,
4162 (uint8_t *)var,
4163 sizeof(*var),
4165 return status;
4166}
4167
4180 struct mmagic_controller *controller,
4181 struct struct_ip_addr *var)
4182{
4183 enum mmagic_status status;
4184 status = mmagic_controller_tx(controller,
4186 MMAGIC_IP,
4189 (uint8_t *)var,
4190 sizeof(*var));
4191 if (status != MMAGIC_STATUS_OK)
4192 {
4193 return status;
4194 }
4195 status = mmagic_controller_rx(controller,
4197 MMAGIC_IP,
4200 NULL,
4201 0,
4203 return status;
4204}
4205
4218 struct mmagic_controller *controller,
4219 struct struct_ip_addr *var)
4220{
4221 enum mmagic_status status;
4222 status = mmagic_controller_tx(controller,
4224 MMAGIC_IP,
4227 NULL,
4228 0);
4229 if (status != MMAGIC_STATUS_OK)
4230 {
4231 return status;
4232 }
4233 status = mmagic_controller_rx(controller,
4235 MMAGIC_IP,
4238 (uint8_t *)var,
4239 sizeof(*var),
4241 return status;
4242}
4243
4256 struct mmagic_controller *controller,
4257 struct struct_ip_addr *var)
4258{
4259 enum mmagic_status status;
4260 status = mmagic_controller_tx(controller,
4262 MMAGIC_IP,
4265 (uint8_t *)var,
4266 sizeof(*var));
4267 if (status != MMAGIC_STATUS_OK)
4268 {
4269 return status;
4270 }
4271 status = mmagic_controller_rx(controller,
4273 MMAGIC_IP,
4276 NULL,
4277 0,
4279 return status;
4280}
4281
4295 struct mmagic_controller *controller,
4296 struct struct_ip_addr *var)
4297{
4298 enum mmagic_status status;
4299 status = mmagic_controller_tx(controller,
4301 MMAGIC_IP,
4304 NULL,
4305 0);
4306 if (status != MMAGIC_STATUS_OK)
4307 {
4308 return status;
4309 }
4310 status = mmagic_controller_rx(controller,
4312 MMAGIC_IP,
4315 (uint8_t *)var,
4316 sizeof(*var),
4318 return status;
4319}
4320
4334 struct mmagic_controller *controller,
4335 struct struct_ip_addr *var)
4336{
4337 enum mmagic_status status;
4338 status = mmagic_controller_tx(controller,
4340 MMAGIC_IP,
4343 (uint8_t *)var,
4344 sizeof(*var));
4345 if (status != MMAGIC_STATUS_OK)
4346 {
4347 return status;
4348 }
4349 status = mmagic_controller_rx(controller,
4351 MMAGIC_IP,
4354 NULL,
4355 0,
4357 return status;
4358}
4359
4373 struct mmagic_controller *controller,
4374 struct struct_ip_addr *var)
4375{
4376 enum mmagic_status status;
4377 status = mmagic_controller_tx(controller,
4379 MMAGIC_IP,
4382 NULL,
4383 0);
4384 if (status != MMAGIC_STATUS_OK)
4385 {
4386 return status;
4387 }
4388 status = mmagic_controller_rx(controller,
4390 MMAGIC_IP,
4393 (uint8_t *)var,
4394 sizeof(*var),
4396 return status;
4397}
4398
4412 struct mmagic_controller *controller,
4413 struct struct_ip_addr *var)
4414{
4415 enum mmagic_status status;
4416 status = mmagic_controller_tx(controller,
4418 MMAGIC_IP,
4421 (uint8_t *)var,
4422 sizeof(*var));
4423 if (status != MMAGIC_STATUS_OK)
4424 {
4425 return status;
4426 }
4427 status = mmagic_controller_rx(controller,
4429 MMAGIC_IP,
4432 NULL,
4433 0,
4435 return status;
4436}
4437
4451 struct mmagic_controller *controller,
4452 bool *var)
4453{
4454 enum mmagic_status status;
4455 status = mmagic_controller_tx(controller,
4457 MMAGIC_IP,
4460 NULL,
4461 0);
4462 if (status != MMAGIC_STATUS_OK)
4463 {
4464 return status;
4465 }
4466 status = mmagic_controller_rx(controller,
4468 MMAGIC_IP,
4471 (uint8_t *)var,
4472 sizeof(*var),
4474 return status;
4475}
4476
4490 struct mmagic_controller *controller,
4491 bool var)
4492{
4493 enum mmagic_status status;
4494 status = mmagic_controller_tx(controller,
4496 MMAGIC_IP,
4499 (uint8_t *)&var,
4500 sizeof(var));
4501 if (status != MMAGIC_STATUS_OK)
4502 {
4503 return status;
4504 }
4505 status = mmagic_controller_rx(controller,
4507 MMAGIC_IP,
4510 NULL,
4511 0,
4513 return status;
4514}
4515
4529 struct mmagic_controller *controller,
4530 bool *var)
4531{
4532 enum mmagic_status status;
4533 status = mmagic_controller_tx(controller,
4535 MMAGIC_IP,
4538 NULL,
4539 0);
4540 if (status != MMAGIC_STATUS_OK)
4541 {
4542 return status;
4543 }
4544 status = mmagic_controller_rx(controller,
4546 MMAGIC_IP,
4549 (uint8_t *)var,
4550 sizeof(*var),
4552 return status;
4553}
4554
4568 struct mmagic_controller *controller,
4569 bool var)
4570{
4571 enum mmagic_status status;
4572 status = mmagic_controller_tx(controller,
4574 MMAGIC_IP,
4577 (uint8_t *)&var,
4578 sizeof(var));
4579 if (status != MMAGIC_STATUS_OK)
4580 {
4581 return status;
4582 }
4583 status = mmagic_controller_rx(controller,
4585 MMAGIC_IP,
4588 NULL,
4589 0,
4591 return status;
4592}
4593
4606 struct mmagic_controller *controller,
4607 bool *var)
4608{
4609 enum mmagic_status status;
4610 status = mmagic_controller_tx(controller,
4612 MMAGIC_IP,
4615 NULL,
4616 0);
4617 if (status != MMAGIC_STATUS_OK)
4618 {
4619 return status;
4620 }
4621 status = mmagic_controller_rx(controller,
4623 MMAGIC_IP,
4626 (uint8_t *)var,
4627 sizeof(*var),
4629 return status;
4630}
4631
4644 struct mmagic_controller *controller,
4645 bool var)
4646{
4647 enum mmagic_status status;
4648 status = mmagic_controller_tx(controller,
4650 MMAGIC_IP,
4653 (uint8_t *)&var,
4654 sizeof(var));
4655 if (status != MMAGIC_STATUS_OK)
4656 {
4657 return status;
4658 }
4659 status = mmagic_controller_rx(controller,
4661 MMAGIC_IP,
4664 NULL,
4665 0,
4667 return status;
4668}
4669
4682 struct mmagic_controller *controller,
4683 bool *var)
4684{
4685 enum mmagic_status status;
4686 status = mmagic_controller_tx(controller,
4688 MMAGIC_IP,
4691 NULL,
4692 0);
4693 if (status != MMAGIC_STATUS_OK)
4694 {
4695 return status;
4696 }
4697 status = mmagic_controller_rx(controller,
4699 MMAGIC_IP,
4702 (uint8_t *)var,
4703 sizeof(*var),
4705 return status;
4706}
4707
4720 struct mmagic_controller *controller,
4721 bool var)
4722{
4723 enum mmagic_status status;
4724 status = mmagic_controller_tx(controller,
4726 MMAGIC_IP,
4729 (uint8_t *)&var,
4730 sizeof(var));
4731 if (status != MMAGIC_STATUS_OK)
4732 {
4733 return status;
4734 }
4735 status = mmagic_controller_rx(controller,
4737 MMAGIC_IP,
4740 NULL,
4741 0,
4743 return status;
4744}
4745
4758 struct mmagic_controller *controller,
4759 uint32_t *var)
4760{
4761 enum mmagic_status status;
4762 status = mmagic_controller_tx(controller,
4764 MMAGIC_IP,
4767 NULL,
4768 0);
4769 if (status != MMAGIC_STATUS_OK)
4770 {
4771 return status;
4772 }
4773 status = mmagic_controller_rx(controller,
4775 MMAGIC_IP,
4778 (uint8_t *)var,
4779 sizeof(*var),
4781 return status;
4782}
4783
4796 struct mmagic_controller *controller,
4797 uint32_t var)
4798{
4799 enum mmagic_status status;
4800 status = mmagic_controller_tx(controller,
4802 MMAGIC_IP,
4805 (uint8_t *)&var,
4806 sizeof(var));
4807 if (status != MMAGIC_STATUS_OK)
4808 {
4809 return status;
4810 }
4811 status = mmagic_controller_rx(controller,
4813 MMAGIC_IP,
4816 NULL,
4817 0,
4819 return status;
4820}
4821
4830 struct mmagic_controller *controller)
4831{
4832 enum mmagic_status status;
4833 status = mmagic_controller_tx(controller,
4835 MMAGIC_IP,
4837 0,
4838 NULL,
4839 0);
4840 if (status != MMAGIC_STATUS_OK)
4841 {
4842 return status;
4843 }
4844 status = mmagic_controller_rx(controller,
4846 MMAGIC_IP,
4848 0,
4849 NULL,
4850 0,
4852 return status;
4853}
4854
4859{
4861 struct struct_ip_status status;
4862};
4863
4875 struct mmagic_controller *controller,
4876 struct mmagic_core_ip_status_rsp_args *rsp_args)
4877{
4878 enum mmagic_status status;
4879 const uint8_t stream_id = CONTROL_STREAM;
4880 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4881
4882 status =
4883 mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_STATUS, 0, NULL, 0);
4884 if (status != MMAGIC_STATUS_OK)
4885 {
4886 return status;
4887 }
4888 status = mmagic_controller_rx(controller,
4889 stream_id,
4890 MMAGIC_IP,
4892 0,
4893 (uint8_t *)rsp_args,
4894 sizeof(*rsp_args),
4895 response_timeout_ms);
4896 return status;
4897}
4898
4906static inline enum mmagic_status mmagic_controller_ip_reload(struct mmagic_controller *controller)
4907{
4908 enum mmagic_status status;
4909 const uint8_t stream_id = CONTROL_STREAM;
4910 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4911
4912 status =
4913 mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_RELOAD, 0, NULL, 0);
4914 if (status != MMAGIC_STATUS_OK)
4915 {
4916 return status;
4917 }
4918 return mmagic_controller_rx(controller,
4919 stream_id,
4920 MMAGIC_IP,
4922 0,
4923 NULL,
4924 0,
4925 response_timeout_ms);
4926 return status;
4927}
4928
4931{
4933 uint16_t period_s;
4938};
4939
4952 struct mmagic_controller *controller,
4954{
4955 enum mmagic_status status;
4956 const uint8_t stream_id = CONTROL_STREAM;
4957 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4958
4959 status = mmagic_controller_tx(controller,
4960 stream_id,
4961 MMAGIC_IP,
4963 0,
4964 (uint8_t *)cmd_args,
4965 sizeof(*cmd_args));
4966 if (status != MMAGIC_STATUS_OK)
4967 {
4968 return status;
4969 }
4970 status = mmagic_controller_rx(controller,
4971 stream_id,
4972 MMAGIC_IP,
4974 0,
4975 NULL,
4976 0,
4977 response_timeout_ms);
4978 return status;
4979}
4980
4989 struct mmagic_controller *controller)
4990{
4991 enum mmagic_status status;
4992 const uint8_t stream_id = CONTROL_STREAM;
4993 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4994
4995 status = mmagic_controller_tx(controller,
4996 stream_id,
4997 MMAGIC_IP,
4999 0,
5000 NULL,
5001 0);
5002 if (status != MMAGIC_STATUS_OK)
5003 {
5004 return status;
5005 }
5006 return mmagic_controller_rx(controller,
5007 stream_id,
5008 MMAGIC_IP,
5010 0,
5011 NULL,
5012 0,
5013 response_timeout_ms);
5014 return status;
5015}
5016
5019{
5021 struct struct_ip_addr src_ip;
5023 struct struct_ip_addr dest_ip;
5025 struct struct_ip_addr netmask;
5027 uint16_t src_port;
5029 uint16_t dest_port;
5035};
5036
5046 struct mmagic_controller *controller,
5048{
5049 enum mmagic_status status;
5050 const uint8_t stream_id = CONTROL_STREAM;
5051 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5052
5053 status = mmagic_controller_tx(controller,
5054 stream_id,
5055 MMAGIC_IP,
5057 0,
5058 (uint8_t *)cmd_args,
5059 sizeof(*cmd_args));
5060 if (status != MMAGIC_STATUS_OK)
5061 {
5062 return status;
5063 }
5064 status = mmagic_controller_rx(controller,
5065 stream_id,
5066 MMAGIC_IP,
5068 0,
5069 NULL,
5070 0,
5071 response_timeout_ms);
5072 return status;
5073}
5074
5083 struct mmagic_controller *controller)
5084{
5085 enum mmagic_status status;
5086 const uint8_t stream_id = CONTROL_STREAM;
5087 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5088
5089 status = mmagic_controller_tx(controller,
5090 stream_id,
5091 MMAGIC_IP,
5093 0,
5094 NULL,
5095 0);
5096 if (status != MMAGIC_STATUS_OK)
5097 {
5098 return status;
5099 }
5100 return mmagic_controller_rx(controller,
5101 stream_id,
5102 MMAGIC_IP,
5104 0,
5105 NULL,
5106 0,
5107 response_timeout_ms);
5108 return status;
5109}
5110
5113{
5116 struct struct_ip_status ip_link_status;
5117};
5118
5133 const struct mmagic_ip_link_status_event_args *event_args,
5134 void *arg);
5135
5151 struct mmagic_controller *controller,
5153 void *arg);
5154
5178 struct mmagic_controller *controller,
5179 struct struct_ip_addr *var)
5180{
5181 enum mmagic_status status;
5182 status = mmagic_controller_tx(controller,
5187 NULL,
5188 0);
5189 if (status != MMAGIC_STATUS_OK)
5190 {
5191 return status;
5192 }
5193 status = mmagic_controller_rx(controller,
5198 (uint8_t *)var,
5199 sizeof(*var),
5201 return status;
5202}
5203
5215 struct mmagic_controller *controller,
5216 struct struct_ip_addr *var)
5217{
5218 enum mmagic_status status;
5219 status = mmagic_controller_tx(controller,
5224 (uint8_t *)var,
5225 sizeof(*var));
5226 if (status != MMAGIC_STATUS_OK)
5227 {
5228 return status;
5229 }
5230 status = mmagic_controller_rx(controller,
5235 NULL,
5236 0,
5238 return status;
5239}
5240
5252 struct mmagic_controller *controller,
5253 uint32_t *var)
5254{
5255 enum mmagic_status status;
5256 status = mmagic_controller_tx(controller,
5261 NULL,
5262 0);
5263 if (status != MMAGIC_STATUS_OK)
5264 {
5265 return status;
5266 }
5267 status = mmagic_controller_rx(controller,
5272 (uint8_t *)var,
5273 sizeof(*var),
5275 return status;
5276}
5277
5289 struct mmagic_controller *controller,
5290 uint32_t var)
5291{
5292 enum mmagic_status status;
5293 status = mmagic_controller_tx(controller,
5298 (uint8_t *)&var,
5299 sizeof(var));
5300 if (status != MMAGIC_STATUS_OK)
5301 {
5302 return status;
5303 }
5304 status = mmagic_controller_rx(controller,
5309 NULL,
5310 0,
5312 return status;
5313}
5314
5327 struct mmagic_controller *controller,
5328 uint32_t *var)
5329{
5330 enum mmagic_status status;
5331 status = mmagic_controller_tx(controller,
5336 NULL,
5337 0);
5338 if (status != MMAGIC_STATUS_OK)
5339 {
5340 return status;
5341 }
5342 status = mmagic_controller_rx(controller,
5347 (uint8_t *)var,
5348 sizeof(*var),
5350 return status;
5351}
5352
5365 struct mmagic_controller *controller,
5366 uint32_t var)
5367{
5368 enum mmagic_status status;
5369 status = mmagic_controller_tx(controller,
5374 (uint8_t *)&var,
5375 sizeof(var));
5376 if (status != MMAGIC_STATUS_OK)
5377 {
5378 return status;
5379 }
5380 status = mmagic_controller_rx(controller,
5385 NULL,
5386 0,
5388 return status;
5389}
5390
5399 struct mmagic_controller *controller)
5400{
5401 enum mmagic_status status;
5402 status = mmagic_controller_tx(controller,
5406 0,
5407 NULL,
5408 0);
5409 if (status != MMAGIC_STATUS_OK)
5410 {
5411 return status;
5412 }
5413 status = mmagic_controller_rx(controller,
5417 0,
5418 NULL,
5419 0,
5421 return status;
5422}
5423
5428{
5430 struct struct_ping_status status;
5431};
5432
5444 struct mmagic_controller *controller,
5445 struct mmagic_core_ping_run_rsp_args *rsp_args)
5446{
5447 enum mmagic_status status;
5448 const uint8_t stream_id = CONTROL_STREAM;
5449 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5450
5451 status =
5452 mmagic_controller_tx(controller, stream_id, MMAGIC_PING, MMAGIC_PING_CMD_RUN, 0, NULL, 0);
5453 if (status != MMAGIC_STATUS_OK)
5454 {
5455 return status;
5456 }
5457 status = mmagic_controller_rx(controller,
5458 stream_id,
5461 0,
5462 (uint8_t *)rsp_args,
5463 sizeof(*rsp_args),
5464 response_timeout_ms);
5465 return status;
5466}
5467
5492 struct mmagic_controller *controller,
5493 enum mmagic_iperf_mode *var)
5494{
5495 enum mmagic_status status;
5496 status = mmagic_controller_tx(controller,
5501 NULL,
5502 0);
5503 if (status != MMAGIC_STATUS_OK)
5504 {
5505 return status;
5506 }
5507 status = mmagic_controller_rx(controller,
5512 (uint8_t *)var,
5513 sizeof(*var),
5515 return status;
5516}
5517
5530 struct mmagic_controller *controller,
5531 enum mmagic_iperf_mode var)
5532{
5533 enum mmagic_status status;
5534 status = mmagic_controller_tx(controller,
5539 (uint8_t *)&var,
5540 sizeof(var));
5541 if (status != MMAGIC_STATUS_OK)
5542 {
5543 return status;
5544 }
5545 status = mmagic_controller_rx(controller,
5550 NULL,
5551 0,
5553 return status;
5554}
5555
5567 struct mmagic_controller *controller,
5568 struct struct_ip_addr *var)
5569{
5570 enum mmagic_status status;
5571 status = mmagic_controller_tx(controller,
5576 NULL,
5577 0);
5578 if (status != MMAGIC_STATUS_OK)
5579 {
5580 return status;
5581 }
5582 status = mmagic_controller_rx(controller,
5587 (uint8_t *)var,
5588 sizeof(*var),
5590 return status;
5591}
5592
5604 struct mmagic_controller *controller,
5605 struct struct_ip_addr *var)
5606{
5607 enum mmagic_status status;
5608 status = mmagic_controller_tx(controller,
5613 (uint8_t *)var,
5614 sizeof(*var));
5615 if (status != MMAGIC_STATUS_OK)
5616 {
5617 return status;
5618 }
5619 status = mmagic_controller_rx(controller,
5624 NULL,
5625 0,
5627 return status;
5628}
5629
5642 struct mmagic_controller *controller,
5643 uint16_t *var)
5644{
5645 enum mmagic_status status;
5646 status = mmagic_controller_tx(controller,
5651 NULL,
5652 0);
5653 if (status != MMAGIC_STATUS_OK)
5654 {
5655 return status;
5656 }
5657 status = mmagic_controller_rx(controller,
5662 (uint8_t *)var,
5663 sizeof(*var),
5665 return status;
5666}
5667
5680 struct mmagic_controller *controller,
5681 uint16_t var)
5682{
5683 enum mmagic_status status;
5684 status = mmagic_controller_tx(controller,
5689 (uint8_t *)&var,
5690 sizeof(var));
5691 if (status != MMAGIC_STATUS_OK)
5692 {
5693 return status;
5694 }
5695 status = mmagic_controller_rx(controller,
5700 NULL,
5701 0,
5703 return status;
5704}
5705
5719 struct mmagic_controller *controller,
5720 int32_t *var)
5721{
5722 enum mmagic_status status;
5723 status = mmagic_controller_tx(controller,
5728 NULL,
5729 0);
5730 if (status != MMAGIC_STATUS_OK)
5731 {
5732 return status;
5733 }
5734 status = mmagic_controller_rx(controller,
5739 (uint8_t *)var,
5740 sizeof(*var),
5742 return status;
5743}
5744
5758 struct mmagic_controller *controller,
5759 int32_t var)
5760{
5761 enum mmagic_status status;
5762 status = mmagic_controller_tx(controller,
5767 (uint8_t *)&var,
5768 sizeof(var));
5769 if (status != MMAGIC_STATUS_OK)
5770 {
5771 return status;
5772 }
5773 status = mmagic_controller_rx(controller,
5778 NULL,
5779 0,
5781 return status;
5782}
5783
5792 struct mmagic_controller *controller)
5793{
5794 enum mmagic_status status;
5795 status = mmagic_controller_tx(controller,
5799 0,
5800 NULL,
5801 0);
5802 if (status != MMAGIC_STATUS_OK)
5803 {
5804 return status;
5805 }
5806 status = mmagic_controller_rx(controller,
5810 0,
5811 NULL,
5812 0,
5814 return status;
5815}
5816
5821{
5823 struct struct_iperf_status status;
5824};
5825
5837 struct mmagic_controller *controller,
5838 struct mmagic_core_iperf_run_rsp_args *rsp_args)
5839{
5840 enum mmagic_status status;
5841 const uint8_t stream_id = CONTROL_STREAM;
5842 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5843
5844 status =
5845 mmagic_controller_tx(controller, stream_id, MMAGIC_IPERF, MMAGIC_IPERF_CMD_RUN, 0, NULL, 0);
5846 if (status != MMAGIC_STATUS_OK)
5847 {
5848 return status;
5849 }
5850 status = mmagic_controller_rx(controller,
5851 stream_id,
5854 0,
5855 (uint8_t *)rsp_args,
5856 sizeof(*rsp_args),
5857 response_timeout_ms);
5858 return status;
5859}
5860
5875static inline enum mmagic_status mmagic_controller_sys_reset(struct mmagic_controller *controller)
5876{
5877 enum mmagic_status status;
5878 const uint8_t stream_id = CONTROL_STREAM;
5879 status =
5880 mmagic_controller_tx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_RESET, 0, NULL, 0);
5881 return status;
5882}
5883
5886{
5889};
5890
5900 struct mmagic_controller *controller,
5901 struct mmagic_core_sys_deep_sleep_cmd_args *cmd_args)
5902{
5903 enum mmagic_status status;
5904 const uint8_t stream_id = CONTROL_STREAM;
5905 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5906
5907 status = mmagic_controller_tx(controller,
5908 stream_id,
5909 MMAGIC_SYS,
5911 0,
5912 (uint8_t *)cmd_args,
5913 sizeof(*cmd_args));
5914 if (status != MMAGIC_STATUS_OK)
5915 {
5916 return status;
5917 }
5918 status = mmagic_controller_rx(controller,
5919 stream_id,
5920 MMAGIC_SYS,
5922 0,
5923 NULL,
5924 0,
5925 response_timeout_ms);
5926 return status;
5927}
5928
5931{
5933 struct struct_version_info results;
5934};
5935
5947 struct mmagic_controller *controller,
5948 struct mmagic_core_sys_get_version_rsp_args *rsp_args)
5949{
5950 enum mmagic_status status;
5951 const uint8_t stream_id = CONTROL_STREAM;
5952 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5953
5954 status = mmagic_controller_tx(controller,
5955 stream_id,
5956 MMAGIC_SYS,
5958 0,
5959 NULL,
5960 0);
5961 if (status != MMAGIC_STATUS_OK)
5962 {
5963 return status;
5964 }
5965 status = mmagic_controller_rx(controller,
5966 stream_id,
5967 MMAGIC_SYS,
5969 0,
5970 (uint8_t *)rsp_args,
5971 sizeof(*rsp_args),
5972 response_timeout_ms);
5973 return status;
5974}
5975
5985{
5987 struct string254 url;
5989 uint16_t port;
5992};
5993
5996{
5998 uint8_t stream_id;
5999};
6000
6013 struct mmagic_controller *controller,
6014 struct mmagic_core_tcp_connect_cmd_args *cmd_args,
6015 struct mmagic_core_tcp_connect_rsp_args *rsp_args)
6016{
6017 enum mmagic_status status;
6018 const uint8_t stream_id = CONTROL_STREAM;
6019 uint32_t response_timeout_ms = 15000;
6020
6021 status = mmagic_controller_tx(controller,
6022 stream_id,
6023 MMAGIC_TCP,
6025 0,
6026 (uint8_t *)cmd_args,
6027 sizeof(*cmd_args));
6028 if (status != MMAGIC_STATUS_OK)
6029 {
6030 return status;
6031 }
6032 status = mmagic_controller_rx(controller,
6033 stream_id,
6034 MMAGIC_TCP,
6036 0,
6037 (uint8_t *)rsp_args,
6038 sizeof(*rsp_args),
6039 response_timeout_ms);
6040 return status;
6041}
6042
6045{
6047 uint16_t port;
6048};
6049
6052{
6054 uint8_t stream_id;
6055};
6056
6069 struct mmagic_controller *controller,
6070 struct mmagic_core_tcp_bind_cmd_args *cmd_args,
6071 struct mmagic_core_tcp_bind_rsp_args *rsp_args)
6072{
6073 enum mmagic_status status;
6074 const uint8_t stream_id = CONTROL_STREAM;
6075 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6076
6077 status = mmagic_controller_tx(controller,
6078 stream_id,
6079 MMAGIC_TCP,
6081 0,
6082 (uint8_t *)cmd_args,
6083 sizeof(*cmd_args));
6084 if (status != MMAGIC_STATUS_OK)
6085 {
6086 return status;
6087 }
6088 status = mmagic_controller_rx(controller,
6089 stream_id,
6090 MMAGIC_TCP,
6092 0,
6093 (uint8_t *)rsp_args,
6094 sizeof(*rsp_args),
6095 response_timeout_ms);
6096 return status;
6097}
6098
6101{
6103 uint8_t stream_id;
6105 uint16_t len;
6107 uint32_t timeout;
6108};
6109
6112{
6114 struct raw1536 buffer;
6115};
6116
6129 struct mmagic_controller *controller,
6130 struct mmagic_core_tcp_recv_cmd_args *cmd_args,
6131 struct mmagic_core_tcp_recv_rsp_args *rsp_args)
6132{
6133 enum mmagic_status status;
6134 const uint8_t stream_id = cmd_args->stream_id;
6135 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6136
6137 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
6138 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
6139 {
6140 response_timeout_ms += cmd_args->timeout;
6141 }
6142 else
6143 {
6144 response_timeout_ms = UINT32_MAX;
6145 }
6146
6147 status = mmagic_controller_tx(controller,
6148 stream_id,
6149 MMAGIC_TCP,
6151 0,
6152 (uint8_t *)cmd_args,
6153 sizeof(*cmd_args));
6154 if (status != MMAGIC_STATUS_OK)
6155 {
6156 return status;
6157 }
6158 status = mmagic_controller_rx(controller,
6159 stream_id,
6160 MMAGIC_TCP,
6162 0,
6163 (uint8_t *)rsp_args,
6164 sizeof(*rsp_args),
6165 response_timeout_ms);
6166 return status;
6167}
6168
6171{
6173 uint8_t stream_id;
6175 struct raw1536 buffer;
6176};
6177
6187 struct mmagic_controller *controller,
6188 struct mmagic_core_tcp_send_cmd_args *cmd_args)
6189{
6190 enum mmagic_status status;
6191 const uint8_t stream_id = cmd_args->stream_id;
6192 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6193
6194 status = mmagic_controller_tx(controller,
6195 stream_id,
6196 MMAGIC_TCP,
6198 0,
6199 (uint8_t *)cmd_args,
6200 sizeof(*cmd_args));
6201 if (status != MMAGIC_STATUS_OK)
6202 {
6203 return status;
6204 }
6205 status = mmagic_controller_rx(controller,
6206 stream_id,
6207 MMAGIC_TCP,
6209 0,
6210 NULL,
6211 0,
6212 response_timeout_ms);
6213 return status;
6214}
6215
6218{
6220 uint8_t stream_id;
6222 uint32_t timeout;
6223};
6224
6234 struct mmagic_controller *controller,
6235 struct mmagic_core_tcp_read_poll_cmd_args *cmd_args)
6236{
6237 enum mmagic_status status;
6238 const uint8_t stream_id = cmd_args->stream_id;
6239 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6240
6241 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
6242 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
6243 {
6244 response_timeout_ms += cmd_args->timeout;
6245 }
6246 else
6247 {
6248 response_timeout_ms = UINT32_MAX;
6249 }
6250
6251 status = mmagic_controller_tx(controller,
6252 stream_id,
6253 MMAGIC_TCP,
6255 0,
6256 (uint8_t *)cmd_args,
6257 sizeof(*cmd_args));
6258 if (status != MMAGIC_STATUS_OK)
6259 {
6260 return status;
6261 }
6262 status = mmagic_controller_rx(controller,
6263 stream_id,
6264 MMAGIC_TCP,
6266 0,
6267 NULL,
6268 0,
6269 response_timeout_ms);
6270 return status;
6271}
6272
6275{
6277 uint8_t stream_id;
6279 uint32_t timeout;
6280};
6281
6291 struct mmagic_controller *controller,
6292 struct mmagic_core_tcp_write_poll_cmd_args *cmd_args)
6293{
6294 enum mmagic_status status;
6295 const uint8_t stream_id = cmd_args->stream_id;
6296 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6297
6298 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
6299 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
6300 {
6301 response_timeout_ms += cmd_args->timeout;
6302 }
6303 else
6304 {
6305 response_timeout_ms = UINT32_MAX;
6306 }
6307
6308 status = mmagic_controller_tx(controller,
6309 stream_id,
6310 MMAGIC_TCP,
6312 0,
6313 (uint8_t *)cmd_args,
6314 sizeof(*cmd_args));
6315 if (status != MMAGIC_STATUS_OK)
6316 {
6317 return status;
6318 }
6319 status = mmagic_controller_rx(controller,
6320 stream_id,
6321 MMAGIC_TCP,
6323 0,
6324 NULL,
6325 0,
6326 response_timeout_ms);
6327 return status;
6328}
6329
6332{
6334 uint8_t stream_id;
6335};
6336
6339{
6341 uint8_t stream_id;
6342};
6343
6356 struct mmagic_controller *controller,
6357 struct mmagic_core_tcp_accept_cmd_args *cmd_args,
6358 struct mmagic_core_tcp_accept_rsp_args *rsp_args)
6359{
6360 enum mmagic_status status;
6361 const uint8_t stream_id = cmd_args->stream_id;
6362 uint32_t response_timeout_ms = -1;
6363
6364 status = mmagic_controller_tx(controller,
6365 stream_id,
6366 MMAGIC_TCP,
6368 0,
6369 (uint8_t *)cmd_args,
6370 sizeof(*cmd_args));
6371 if (status != MMAGIC_STATUS_OK)
6372 {
6373 return status;
6374 }
6375 status = mmagic_controller_rx(controller,
6376 stream_id,
6377 MMAGIC_TCP,
6379 0,
6380 (uint8_t *)rsp_args,
6381 sizeof(*rsp_args),
6382 response_timeout_ms);
6383 return status;
6384}
6385
6388{
6390 uint8_t stream_id;
6391};
6392
6402 struct mmagic_controller *controller,
6403 struct mmagic_core_tcp_close_cmd_args *cmd_args)
6404{
6405 enum mmagic_status status;
6406 const uint8_t stream_id = CONTROL_STREAM;
6407 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6408
6409 status = mmagic_controller_tx(controller,
6410 stream_id,
6411 MMAGIC_TCP,
6413 0,
6414 (uint8_t *)cmd_args,
6415 sizeof(*cmd_args));
6416 if (status != MMAGIC_STATUS_OK)
6417 {
6418 return status;
6419 }
6420 status = mmagic_controller_rx(controller,
6421 stream_id,
6422 MMAGIC_TCP,
6424 0,
6425 NULL,
6426 0,
6427 response_timeout_ms);
6428 return status;
6429}
6430
6433{
6435 uint8_t stream_id;
6438};
6439
6450 struct mmagic_controller *controller,
6452{
6453 enum mmagic_status status;
6454 const uint8_t stream_id = CONTROL_STREAM;
6455 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6456
6457 status = mmagic_controller_tx(controller,
6458 stream_id,
6459 MMAGIC_TCP,
6461 0,
6462 (uint8_t *)cmd_args,
6463 sizeof(*cmd_args));
6464 if (status != MMAGIC_STATUS_OK)
6465 {
6466 return status;
6467 }
6468 status = mmagic_controller_rx(controller,
6469 stream_id,
6470 MMAGIC_TCP,
6472 0,
6473 NULL,
6474 0,
6475 response_timeout_ms);
6476 return status;
6477}
6478
6481{
6483 uint8_t stream_id;
6484};
6485
6500 const struct mmagic_tcp_rx_ready_event_args *event_args,
6501 void *arg);
6502
6517void mmagic_controller_register_tcp_rx_ready_handler(struct mmagic_controller *controller,
6519 void *arg);
6520
6545 struct mmagic_controller *controller,
6546 struct raw1536 *var)
6547{
6548 enum mmagic_status status;
6549 status = mmagic_controller_tx(controller,
6551 MMAGIC_TLS,
6554 NULL,
6555 0);
6556 if (status != MMAGIC_STATUS_OK)
6557 {
6558 return status;
6559 }
6560 status = mmagic_controller_rx(controller,
6562 MMAGIC_TLS,
6565 (uint8_t *)var,
6566 sizeof(*var),
6568 return status;
6569}
6570
6583 struct mmagic_controller *controller,
6584 struct raw1536 *var)
6585{
6586 enum mmagic_status status;
6587 status = mmagic_controller_tx(controller,
6589 MMAGIC_TLS,
6592 (uint8_t *)var,
6593 sizeof(*var));
6594 if (status != MMAGIC_STATUS_OK)
6595 {
6596 return status;
6597 }
6598 status = mmagic_controller_rx(controller,
6600 MMAGIC_TLS,
6603 NULL,
6604 0,
6606 return status;
6607}
6608
6621 struct mmagic_controller *controller,
6622 struct raw1536 *var)
6623{
6624 enum mmagic_status status;
6625 status = mmagic_controller_tx(controller,
6627 MMAGIC_TLS,
6630 NULL,
6631 0);
6632 if (status != MMAGIC_STATUS_OK)
6633 {
6634 return status;
6635 }
6636 status = mmagic_controller_rx(controller,
6638 MMAGIC_TLS,
6641 (uint8_t *)var,
6642 sizeof(*var),
6644 return status;
6645}
6646
6659 struct mmagic_controller *controller,
6660 struct raw1536 *var)
6661{
6662 enum mmagic_status status;
6663 status = mmagic_controller_tx(controller,
6665 MMAGIC_TLS,
6668 (uint8_t *)var,
6669 sizeof(*var));
6670 if (status != MMAGIC_STATUS_OK)
6671 {
6672 return status;
6673 }
6674 status = mmagic_controller_rx(controller,
6676 MMAGIC_TLS,
6679 NULL,
6680 0,
6682 return status;
6683}
6684
6696 struct mmagic_controller *controller,
6697 struct raw1536 *var)
6698{
6699 enum mmagic_status status;
6700 status = mmagic_controller_tx(controller,
6702 MMAGIC_TLS,
6705 NULL,
6706 0);
6707 if (status != MMAGIC_STATUS_OK)
6708 {
6709 return status;
6710 }
6711 status = mmagic_controller_rx(controller,
6713 MMAGIC_TLS,
6716 (uint8_t *)var,
6717 sizeof(*var),
6719 return status;
6720}
6721
6733 struct mmagic_controller *controller,
6734 struct raw1536 *var)
6735{
6736 enum mmagic_status status;
6737 status = mmagic_controller_tx(controller,
6739 MMAGIC_TLS,
6742 (uint8_t *)var,
6743 sizeof(*var));
6744 if (status != MMAGIC_STATUS_OK)
6745 {
6746 return status;
6747 }
6748 status = mmagic_controller_rx(controller,
6750 MMAGIC_TLS,
6753 NULL,
6754 0,
6756 return status;
6757}
6758
6767 struct mmagic_controller *controller)
6768{
6769 enum mmagic_status status;
6770 status = mmagic_controller_tx(controller,
6772 MMAGIC_TLS,
6774 0,
6775 NULL,
6776 0);
6777 if (status != MMAGIC_STATUS_OK)
6778 {
6779 return status;
6780 }
6781 status = mmagic_controller_rx(controller,
6783 MMAGIC_TLS,
6785 0,
6786 NULL,
6787 0,
6789 return status;
6790}
6791
6817 struct mmagic_controller *controller,
6818 struct string254 *var)
6819{
6820 enum mmagic_status status;
6821 status = mmagic_controller_tx(controller,
6823 MMAGIC_NTP,
6826 NULL,
6827 0);
6828 if (status != MMAGIC_STATUS_OK)
6829 {
6830 return status;
6831 }
6832 status = mmagic_controller_rx(controller,
6834 MMAGIC_NTP,
6837 (uint8_t *)var,
6838 sizeof(*var),
6840 return status;
6841}
6842
6854 struct mmagic_controller *controller,
6855 const char *var)
6856{
6857 struct string254 var_val;
6858 enum mmagic_status status;
6859 var_val.len = strlen(var);
6860 if (var_val.len > sizeof(var_val.data) - 1)
6861 {
6863 }
6864 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
6865 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
6866 status = mmagic_controller_tx(controller,
6868 MMAGIC_NTP,
6871 (uint8_t *)&var_val,
6872 sizeof(var_val));
6873 if (status != MMAGIC_STATUS_OK)
6874 {
6875 return status;
6876 }
6877 status = mmagic_controller_rx(controller,
6879 MMAGIC_NTP,
6882 NULL,
6883 0,
6885 return status;
6886}
6887
6896 struct mmagic_controller *controller)
6897{
6898 enum mmagic_status status;
6899 status = mmagic_controller_tx(controller,
6901 MMAGIC_NTP,
6903 0,
6904 NULL,
6905 0);
6906 if (status != MMAGIC_STATUS_OK)
6907 {
6908 return status;
6909 }
6910 status = mmagic_controller_rx(controller,
6912 MMAGIC_NTP,
6914 0,
6915 NULL,
6916 0,
6918 return status;
6919}
6920
6930static inline enum mmagic_status mmagic_controller_ntp_sync(struct mmagic_controller *controller)
6931{
6932 enum mmagic_status status;
6933 const uint8_t stream_id = CONTROL_STREAM;
6934 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6935
6936 status =
6937 mmagic_controller_tx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_SYNC, 0, NULL, 0);
6938 if (status != MMAGIC_STATUS_OK)
6939 {
6940 return status;
6941 }
6942 return mmagic_controller_rx(controller,
6943 stream_id,
6944 MMAGIC_NTP,
6946 0,
6947 NULL,
6948 0,
6949 response_timeout_ms);
6950 return status;
6951}
6952
6955{
6957 uint64_t timestamp;
6958};
6959
6971 struct mmagic_controller *controller,
6972 struct mmagic_core_ntp_get_time_rsp_args *rsp_args)
6973{
6974 enum mmagic_status status;
6975 const uint8_t stream_id = CONTROL_STREAM;
6976 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
6977
6978 status = mmagic_controller_tx(controller,
6979 stream_id,
6980 MMAGIC_NTP,
6982 0,
6983 NULL,
6984 0);
6985 if (status != MMAGIC_STATUS_OK)
6986 {
6987 return status;
6988 }
6989 status = mmagic_controller_rx(controller,
6990 stream_id,
6991 MMAGIC_NTP,
6993 0,
6994 (uint8_t *)rsp_args,
6995 sizeof(*rsp_args),
6996 response_timeout_ms);
6997 return status;
6998}
6999
7009{
7011 struct string254 url;
7013 uint16_t port;
7015 struct string100 username;
7017 struct string100 password;
7020};
7021
7024{
7026 uint8_t stream_id;
7027};
7028
7043 struct mmagic_controller *controller,
7046{
7047 enum mmagic_status status;
7048 const uint8_t stream_id = CONTROL_STREAM;
7049 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
7050
7051 status = mmagic_controller_tx(controller,
7052 stream_id,
7055 0,
7056 (uint8_t *)cmd_args,
7057 sizeof(*cmd_args));
7058 if (status != MMAGIC_STATUS_OK)
7059 {
7060 return status;
7061 }
7062 status = mmagic_controller_rx(controller,
7063 stream_id,
7066 0,
7067 (uint8_t *)rsp_args,
7068 sizeof(*rsp_args),
7069 response_timeout_ms);
7070 return status;
7071}
7072
7075{
7077 uint8_t stream_id;
7079 struct string254 topic;
7081 struct raw1536 payload;
7083 uint8_t qos;
7084};
7085
7095 struct mmagic_controller *controller,
7096 struct mmagic_core_mqtt_publish_cmd_args *cmd_args)
7097{
7098 enum mmagic_status status;
7099 const uint8_t stream_id = CONTROL_STREAM;
7100 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
7101
7102 status = mmagic_controller_tx(controller,
7103 stream_id,
7106 0,
7107 (uint8_t *)cmd_args,
7108 sizeof(*cmd_args));
7109 if (status != MMAGIC_STATUS_OK)
7110 {
7111 return status;
7112 }
7113 status = mmagic_controller_rx(controller,
7114 stream_id,
7117 0,
7118 NULL,
7119 0,
7120 response_timeout_ms);
7121 return status;
7122}
7123
7126{
7128 uint8_t stream_id;
7130 struct string254 topic;
7132 uint8_t qos;
7133};
7134
7144 struct mmagic_controller *controller,
7145 struct mmagic_core_mqtt_subscribe_cmd_args *cmd_args)
7146{
7147 enum mmagic_status status;
7148 const uint8_t stream_id = CONTROL_STREAM;
7149 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
7150
7151 status = mmagic_controller_tx(controller,
7152 stream_id,
7155 0,
7156 (uint8_t *)cmd_args,
7157 sizeof(*cmd_args));
7158 if (status != MMAGIC_STATUS_OK)
7159 {
7160 return status;
7161 }
7162 status = mmagic_controller_rx(controller,
7163 stream_id,
7166 0,
7167 NULL,
7168 0,
7169 response_timeout_ms);
7170 return status;
7171}
7172
7175{
7177 uint8_t stream_id;
7178};
7179
7189 struct mmagic_controller *controller,
7190 struct mmagic_core_mqtt_stop_agent_cmd_args *cmd_args)
7191{
7192 enum mmagic_status status;
7193 const uint8_t stream_id = CONTROL_STREAM;
7194 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
7195
7196 status = mmagic_controller_tx(controller,
7197 stream_id,
7200 0,
7201 (uint8_t *)cmd_args,
7202 sizeof(*cmd_args));
7203 if (status != MMAGIC_STATUS_OK)
7204 {
7205 return status;
7206 }
7207 status = mmagic_controller_rx(controller,
7208 stream_id,
7211 0,
7212 NULL,
7213 0,
7214 response_timeout_ms);
7215 return status;
7216}
7217
7220{
7222 uint8_t stream_id;
7224 struct string254 topic;
7226 struct raw1536 payload;
7227};
7228
7243 const struct mmagic_mqtt_message_received_event_args *event_args,
7244 void *arg);
7245
7261 struct mmagic_controller *controller,
7263 void *arg);
7264
7267{
7269 uint8_t stream_id;
7272};
7273
7288 const struct mmagic_mqtt_broker_connection_event_args *event_args,
7289 void *arg);
7290
7306 struct mmagic_controller *controller,
7308 void *arg);
7309
7312#ifdef __cplusplus
7313}
7314#endif
7315
struct mmwlan_beacon_vendor_ie_filter filter
Filter structure used when calling mmwlan_update_beacon_vendor_ie_filter().
mmagic_ip_link_state
Status of the IP link.
mmagic_iperf_state
Current state of iperf session.
mmagic_station_type
Enumeration of S1G non-AP STA types.
mmagic_sta_event
Station connection events.
mmagic_deep_sleep_mode
Deep sleep modes for the agent MCU.
mmagic_sta_state
Station states.
mmagic_duty_cycle_mode
Enumeration of duty cycle modes.
mmagic_standby_mode_exit_reason
Reasons for exiting standby mode.
mmagic_power_save_mode
Enumeration of supported 802.11 power save modes.
mmagic_security_type
Connection security type.
mmagic_mcs10_mode
Enumeration of MCS10 modes.
mmagic_status
Enumeration of return status codes.
mmagic_iperf_mode
Mode to use when running the iperf.
mmagic_subsystem
Subsytem IDs.
mmagic_pmf_mode
Protected management frame mode.
@ MMAGIC_IP_LINK_STATE_DOWN
Link is down because the interface is down or DHCP has not yet completed.
@ MMAGIC_IP_LINK_STATE_UP
Link is up.
@ MMAGIC_IPERF_STATE_RUNNING
Iperf session is in progress.
@ MMAGIC_IPERF_STATE_NOT_STARTED
Iperf session not started.
@ MMAGIC_IPERF_STATE_FINISHED
Iperf session has completed.
@ MMAGIC_IPERF_STATE_ABORTED
Iperf session has been aborted.
@ MMAGIC_STATION_TYPE_NON_SENSOR
Non-Sensor type.
@ MMAGIC_STATION_TYPE_SENSOR
Sensor type.
@ MMAGIC_STA_EVENT_SCAN_COMPLETE
The STA has finished a scan.
@ MMAGIC_STA_EVENT_CTRL_PORT_OPEN
The Supplicant IEEE 802.1X Controlled Port is now open.
@ MMAGIC_STA_EVENT_SCAN_ABORT
The STA has aborted a scan early.
@ MMAGIC_STA_EVENT_AUTH_REQUEST
The STA is sending an authentication request to the AP.
@ MMAGIC_STA_EVENT_SCAN_REQUEST
The STA is starting a scan.
@ MMAGIC_STA_EVENT_ASSOC_REQUEST
The STA is sending an association request to the AP.
@ MMAGIC_STA_EVENT_CTRL_PORT_CLOSED
The Supplicant IEEE 802.1X Controlled Port is now closed.
@ MMAGIC_STA_EVENT_DEAUTH_TX
The STA is sending an de-authorization request to the AP.
@ MMAGIC_DEEP_SLEEP_MODE_HARDWARE
The datalink layer is responsible for waking the agent.
@ MMAGIC_DEEP_SLEEP_MODE_ONE_SHOT
Deep sleep is enabled until activity occurs on the datalink.
@ MMAGIC_DEEP_SLEEP_MODE_DISABLED
Deep sleep is disabled.
@ MMAGIC_STA_STATE_CONNECTING
Connecting to the AP.
@ MMAGIC_STA_STATE_DISCONNECTED
Disconnected from the AP.
@ MMAGIC_STA_STATE_CONNECTED
Connected to the AP.
@ MMAGIC_DUTY_CYCLE_MODE_SPREAD
Duty cycle air time is evenly spread.
@ MMAGIC_DUTY_CYCLE_MODE_BURST
Duty cycle air time available in burst.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_EXT_INPUT
We were woken up by an external input trigger.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_TCP_CONNECTION_LOST
An open TCP connection was lost.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_ASSOCIATE
We just reassociated with the AP.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_HW_SCAN_FAILED_TO_START
Hardware scan failed to start.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_WAKEUP_FRAME
We were woken up by a wakeup frame.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_WHITELIST_PKT
We received a packet from a whitelist source.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_NONE
Standby mode was exited manually through a call to standby_exit.
@ MMAGIC_STANDBY_MODE_EXIT_REASON_STANDBY_EXIT_HW_SCAN_NOT_ENABLED
Hardware scan was not enabled.
@ MMAGIC_POWER_SAVE_MODE_ENABLED
Power save enabled.
@ MMAGIC_POWER_SAVE_MODE_DISABLED
Power save disabled.
@ MMAGIC_SECURITY_TYPE_OPEN
No security enabled at all.
@ MMAGIC_SECURITY_TYPE_SAE
Simultaneous Authentication of Equals (password-based authentication).
@ MMAGIC_SECURITY_TYPE_OWE
Opportunistic Wireless Encryption (encrypted, passwordless).
@ MMAGIC_MCS10_MODE_AUTO
MCS10 is used on retries instead of MCS0 when the bandwidth is 1 MHz.
@ MMAGIC_MCS10_MODE_FORCED
MCS10 is always used instead of MCS0 when the bandwidth is 1 MHz.
@ MMAGIC_MCS10_MODE_DISABLED
MCS10 is not used.
@ MMAGIC_STATUS_CHANNEL_LIST_NOT_SET
WLAN operation failed because the channel list has not been set.
@ MMAGIC_STATUS_NOT_FOUND
Specified operation was not found.
@ MMAGIC_STATUS_MQTT_KEEPALIVE_TIMEOUT
Timed out while waiting for PINGRESP.
@ MMAGIC_STATUS_OK
Operation was successful.
@ MMAGIC_STATUS_SOCKET_LISTEN_FAILED
Socket listen failed.
@ MMAGIC_STATUS_TIMEOUT
The operation timed out.
@ MMAGIC_STATUS_SOCKET_BIND_FAILED
Socket bind failed.
@ MMAGIC_STATUS_NO_LINK
Operation failed because the link was not up.
@ MMAGIC_STATUS_TIME_NOT_SYNCHRONIZED
Internal time has not been synchronized.
@ MMAGIC_STATUS_NOT_INITIALIZED
Operation failed because the MMWLAN subsystem was not initialized.
@ MMAGIC_STATUS_AUTHENTICATION_FAILED
Credentials provided by the server were not valid.
@ MMAGIC_STATUS_MISSING_CREDENTIALS
Missing certificate or key to open TLS connection.
@ MMAGIC_STATUS_CHANNEL_INVALID
Attempted to tune to a channel that was not available.
@ MMAGIC_STATUS_ERROR
The operation failed with an unspecified error.
@ MMAGIC_STATUS_NTP_KOD_RECEIVED
NTP server returned Kiss-o'-Death.
@ MMAGIC_STATUS_NOT_SUPPORTED
Specified operation is not supported.
@ MMAGIC_STATUS_UNKNOWN_HOST
Failed to get an IP address for the given hostname.
@ MMAGIC_STATUS_TX_ERROR
An error occured during transmission.
@ MMAGIC_STATUS_SOCKET_SEND_FAILED
Socket send failed.
@ MMAGIC_STATUS_INVALID_STREAM
An invalid stream was specified.
@ MMAGIC_STATUS_CLOSED
Failed due to stream being closed from the other side.
@ MMAGIC_STATUS_UNAVAILABLE
Functionality is temporarily unavailable.
@ MMAGIC_STATUS_MQTT_REFUSED
The server refused a CONNECT or SUBSCRIBE.
@ MMAGIC_STATUS_SOCKET_CONNECT_FAILED
Socket connection failed.
@ MMAGIC_STATUS_NOT_RUNNING
Operation failed because the WLAN device was not booted.
@ MMAGIC_STATUS_NO_MEM
Failed due to memory allocation failure.
@ MMAGIC_STATUS_HANDSHAKE_FAILED
Error during TLS handshake.
@ MMAGIC_STATUS_NTP_KOD_BACKOFF_RECEIVED
NTP server returned Kiss-o'-Death with rate code.
@ MMAGIC_STATUS_SOCKET_FAILED
Failed to open the socket.
@ MMAGIC_STATUS_INVALID_CREDENTIALS
Credentials provided were invalid.
@ MMAGIC_STATUS_SHUTDOWN_BLOCKED
WLAN shutdown failed.
@ MMAGIC_STATUS_INVALID_ARG
The operation failed due to an invalid argument.
@ MMAGIC_STATUS_BAD_VERSION
Operation failed due to a version mismatch.
@ MMAGIC_IPERF_MODE_TCP_CLIENT
Iperf TCP client (TX).
@ MMAGIC_IPERF_MODE_UDP_CLIENT
Iperf UDP client (TX).
@ MMAGIC_IPERF_MODE_TCP_SERVER
Iperf TCP server (RX).
@ MMAGIC_IPERF_MODE_UDP_SERVER
Iperf UDP server (RX).
@ 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_IPERF
Subsystem ID for Module iperf: Iperf application..
@ MMAGIC_SYS
Subsystem ID for Module sys: System management..
@ MMAGIC_TCP
Subsystem ID for Module tcp: TCP Socket IO, supports secure connections using TLS....
@ 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..
@ MMAGIC_PMF_MODE_DISABLED
No protected management frames.
@ MMAGIC_PMF_MODE_REQUIRED
Protected management frames must be used.
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...
#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
mmagic_tcp_cmd
tcp configuration command IDs
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
#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_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
Reserved (unused)
@ 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_OFFLOAD_ARP_REFRESH_S
If non zero, enables ARP refresh offload with the specified interval in seconds.
@ MMAGIC_IP_VAR_DHCP_OFFLOAD
If true, enables DHCP offload which allows the Morse chip to directly handle DHCP discovery and lease...
@ MMAGIC_IP_VAR_OFFLOAD_ARP_RESPONSE
If true, enables ARP response offload which allows the Morse chip to directly respond to ARP requests...
@ 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 the subsystem config.
@ MMAGIC_PING_CMD_LOAD
Reserved (unused)
@ 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_TCP_CMD_GET
Retrieve the value of a configuration variable.
@ MMAGIC_TCP_CMD_ACCEPT
Waits for an incoming socket connection and returns a new stream ID.
@ MMAGIC_TCP_CMD_COMMIT
Commit the current configuration to flash.
@ MMAGIC_TCP_CMD_LOAD
Reserved (unused)
@ MMAGIC_TCP_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_TCP_CMD_WRITE_POLL
Polls the socket till it is ready for writing.
@ MMAGIC_TCP_CMD_SET_RX_READY_EVT_ENABLED
Sets whether the RX ready event should be enabled for the given socket.
@ MMAGIC_TCP_CMD_READ_POLL
Polls the socket till it is ready for reading.
@ MMAGIC_TCP_CMD_BIND
Opens a server TCP socket and returns its stream ID.
@ MMAGIC_TCP_CMD_SEND
Writes to a socket.
@ MMAGIC_TCP_CMD_CONNECT
Opens a client TCP socket and returns its stream ID.
@ MMAGIC_TCP_CMD_CLOSE
Closes and frees the socket.
@ MMAGIC_TCP_CMD_RECV
Reads from a socket.
@ 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_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 the subsystem config.
@ MMAGIC_IPERF_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_IPERF_CMD_LOAD
Reserved (unused)
@ 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
Reserved (unused)
@ 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
Reserved (unused)
@ MMAGIC_WLAN_CMD_GET_MAC_ADDR
Retrieves the MAC address if the WLAN interface is up.
@ MMAGIC_WLAN_CMD_STANDBY_ENTER
This puts the Morse chip into standby mode allowing the host processor to go to sleep while the Morse...
@ 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_STANDBY_SET_STATUS_PAYLOAD
Sets the user payload for the standby status packet.
@ MMAGIC_WLAN_CMD_STANDBY_SET_WAKE_FILTER
Configures the standby mode UDP wake packet filter.
@ MMAGIC_WLAN_CMD_STANDBY_SET_CONFIG
Sets the standby mode configuration parameters.
@ 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_CONNECT
Brings up the WLAN interface and connects to the AP with configured parameters.
@ MMAGIC_WLAN_CMD_STANDBY_EXIT
Forces the Morse chip to exit standby mode.
@ 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_LOAD
Reserved (unused)
@ MMAGIC_TLS_CMD_LOAD
Reserved (unused)
@ 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_ENABLE_TCP_KEEPALIVE_OFFLOAD
Enables sending periodic TCP keep-alive packets by the morse chip allowing the TCP connection to be m...
@ MMAGIC_IP_CMD_SET
Set the value of a configuration variable.
@ MMAGIC_IP_CMD_DISABLE_TCP_KEEPALIVE_OFFLOAD
Disables sending of TCP keepalive packets.
@ MMAGIC_IP_CMD_STATUS
Gets the status of the IP stack.
@ MMAGIC_IP_CMD_LOAD
Reserved (unused)
@ MMAGIC_IP_CMD_CLEAR_WHITELIST_FILTER
Clears any applied whitelist filters.
@ MMAGIC_IP_CMD_SET_WHITELIST_FILTER
Sets the whitelist filter specifing which incoming packets can wake the system from standby mode.
@ 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 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_get_ip_dhcp_offload(struct mmagic_controller *controller, bool *var)
Gets dhcp_offload setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dhcp_offload(struct mmagic_controller *controller, bool var)
Sets dhcp_offload 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_offload_arp_response(struct mmagic_controller *controller, bool *var)
Gets offload_arp_response 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_set_ip_offload_arp_refresh_s(struct mmagic_controller *controller, uint32_t var)
Sets offload_arp_refresh_s 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_get_ip_offload_arp_refresh_s(struct mmagic_controller *controller, uint32_t *var)
Gets offload_arp_refresh_s setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_offload_arp_response(struct mmagic_controller *controller, bool var)
Sets offload_arp_response 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.
static enum mmagic_status mmagic_controller_ip_clear_whitelist_filter(struct mmagic_controller *controller)
Clears any applied whitelist filters.
static enum mmagic_status mmagic_controller_ip_disable_tcp_keepalive_offload(struct mmagic_controller *controller)
Disables sending of TCP keepalive packets.
static enum mmagic_status mmagic_controller_ip_enable_tcp_keepalive_offload(struct mmagic_controller *controller, struct mmagic_core_ip_enable_tcp_keepalive_offload_cmd_args *cmd_args)
Enables sending periodic TCP keep-alive packets by the morse chip allowing the TCP connection to be m...
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_ip_set_whitelist_filter(struct mmagic_controller *controller, struct mmagic_core_ip_set_whitelist_filter_cmd_args *cmd_args)
Sets the whitelist filter specifing which incoming packets can wake the system from standby mode.
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 the subsystem config.
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_tcp_connect(struct mmagic_controller *controller, struct mmagic_core_tcp_connect_cmd_args *cmd_args, struct mmagic_core_tcp_connect_rsp_args *rsp_args)
Opens a client TCP socket and returns its stream ID.
static enum mmagic_status mmagic_controller_tcp_accept(struct mmagic_controller *controller, struct mmagic_core_tcp_accept_cmd_args *cmd_args, struct mmagic_core_tcp_accept_rsp_args *rsp_args)
Waits for an incoming socket connection and returns a new stream ID.
static enum mmagic_status mmagic_controller_tcp_recv(struct mmagic_controller *controller, struct mmagic_core_tcp_recv_cmd_args *cmd_args, struct mmagic_core_tcp_recv_rsp_args *rsp_args)
Reads from a socket.
void mmagic_controller_register_tcp_rx_ready_handler(struct mmagic_controller *controller, mmagic_tcp_rx_ready_event_handler_t handler, void *arg)
Register a handler for the tcp-rx_ready event.
static enum mmagic_status mmagic_controller_tcp_write_poll(struct mmagic_controller *controller, struct mmagic_core_tcp_write_poll_cmd_args *cmd_args)
Polls the socket till it is ready for writing.
static enum mmagic_status mmagic_controller_tcp_read_poll(struct mmagic_controller *controller, struct mmagic_core_tcp_read_poll_cmd_args *cmd_args)
Polls the socket till it is ready for reading.
void(* mmagic_tcp_rx_ready_event_handler_t)(const struct mmagic_tcp_rx_ready_event_args *event_args, void *arg)
Handler for the tcp-rx_ready event.
static enum mmagic_status mmagic_controller_tcp_bind(struct mmagic_controller *controller, struct mmagic_core_tcp_bind_cmd_args *cmd_args, struct mmagic_core_tcp_bind_rsp_args *rsp_args)
Opens a server TCP socket and returns its stream ID.
static enum mmagic_status mmagic_controller_tcp_set_rx_ready_evt_enabled(struct mmagic_controller *controller, struct mmagic_core_tcp_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_tcp_send(struct mmagic_controller *controller, struct mmagic_core_tcp_send_cmd_args *cmd_args)
Writes to a socket.
static enum mmagic_status mmagic_controller_tcp_close(struct mmagic_controller *controller, struct mmagic_core_tcp_close_cmd_args *cmd_args)
Closes and frees the socket.
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_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_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_standby_enter(struct mmagic_controller *controller)
This puts the Morse chip into standby mode allowing the host processor to go to sleep while the Morse...
void(* mmagic_wlan_standby_exit_event_handler_t)(const struct mmagic_wlan_standby_exit_event_args *event_args, void *arg)
Handler for the wlan-standby_exit event.
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_standby_exit(struct mmagic_controller *controller)
Forces the Morse chip to exit standby mode.
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_standby_set_config(struct mmagic_controller *controller, struct mmagic_core_wlan_standby_set_config_cmd_args *cmd_args)
Sets the standby mode configuration parameters.
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_standby_set_status_payload(struct mmagic_controller *controller, struct mmagic_core_wlan_standby_set_status_payload_cmd_args *cmd_args)
Sets the user payload for the standby status packet.
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_standby_set_wake_filter(struct mmagic_controller *controller, struct mmagic_core_wlan_standby_set_wake_filter_cmd_args *cmd_args)
Configures the standby mode UDP wake packet filter.
void mmagic_controller_register_wlan_standby_exit_handler(struct mmagic_controller *controller, mmagic_wlan_standby_exit_event_handler_t handler, void *arg)
Register a handler for the wlan-standby_exit event.
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.
Command arguments structure for ip_enable_tcp_keepalive_offload.
uint8_t retry_count
The number of times to retry before giving up.
uint8_t retry_interval_s
The interval in seconds to wait between retries.
uint16_t period_s
Interval in seconds to send the keep-alive packets in.
Command arguments structure for ip_set_whitelist_filter.
uint16_t src_port
The source port to match, 0 for any.
uint16_t llc_protocol
The LLC protocol (or EtherType) to match - 0x0800 for IPv4 and 0x86DD for IPv6, 0 for any.
uint16_t dest_port
The destination port to match, 0 for any.
uint8_t ip_protocol
The IPv4 protocol number to match - 6 for TCP, 17 for UDP, 0 for any.
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 sys_deep_sleep.
enum mmagic_deep_sleep_mode mode
Deep sleep mode to enter.
Response arguments structure for sys_get_version.
Command arguments structure for tcp_accept.
uint8_t stream_id
Stream ID of the bound socket.
Response arguments structure for tcp_accept.
uint8_t stream_id
Stream ID of the new incoming connection.
Command arguments structure for tcp_bind.
uint16_t port
TCP port to listen on.
Response arguments structure for tcp_bind.
uint8_t stream_id
Stream ID of the opened socket.
Command arguments structure for tcp_close.
uint8_t stream_id
Stream ID of the socket to close.
Command arguments structure for tcp_connect.
uint16_t port
TCP port to connect to.
Response arguments structure for tcp_connect.
uint8_t stream_id
Stream ID of the opened socket.
Command arguments structure for tcp_read_poll.
uint8_t stream_id
Stream ID of the socket to wait on.
Command arguments structure for tcp_recv.
uint32_t timeout
Timeout in ms.
uint8_t stream_id
Stream ID of the socket to receive from.
uint16_t len
Maximum length of data.
Response arguments structure for tcp_recv.
Command arguments structure for tcp_send.
uint8_t stream_id
Stream ID of the socket to send on.
Command arguments structure for tcp_set_rx_ready_evt_enabled.
bool enabled
Whether the RX ready event should be enabled.
uint8_t stream_id
Stream ID of the socket to close.
Command arguments structure for tcp_write_poll.
uint8_t stream_id
Stream ID of the socket to wait on.
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_standby_set_config.
uint32_t snooze_max_s
The maximum time in seconds to snooze for after increments (Default unlimited).
uint16_t dst_port
Destination UDP Port for the standby status packets, also used the source port for outgoing UDP port ...
uint32_t snooze_period_s
The interval in seconds to wake periodically from snooze mode and check for beacons.
uint32_t notify_period_s
Interval in seconds for transmitting Standby status packets (Default 15s).
uint32_t snooze_increment_s
The amount in seconds to increase successive snooze intervals.
Command arguments structure for wlan_standby_set_status_payload.
Command arguments structure for wlan_standby_set_wake_filter.
uint32_t offset
Offset within wake packet payload to apply the filter.
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 tcp_rx_ready.
uint8_t stream_id
Stream ID of the TCP 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.
Event arguments structure for wlan_standby_exit.
enum mmagic_standby_mode_exit_reason reason
Reason why we exited standby mode.
Raw octet string type with maximum length of 1536.
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.