Morse Micro IoT SDK  2.9.7
mmagic_controller.h
1/*
2 * Copyright 2025 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 <memory.h>
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36#ifndef MM_PACKED
38#define MM_PACKED __attribute__((packed))
39#endif
40
49{
56};
57
60{
65};
66
69{
74};
75
78{
85};
86
89{
94};
95
98{
103};
104
107{
175};
176
179{
188};
189
192{
201};
202
205{
210};
211
214{
221};
222
225{
242};
243
246{
253};
254
257{
274};
275
278{
280 uint8_t len;
281
283 char data[32 + 1];
284};
285
288{
290 uint8_t len;
291
293 char data[100 + 1];
294};
295
298{
300 uint8_t len;
301
303 char data[254 + 1];
304};
305
308{
310 uint8_t len;
311
313 uint8_t data[255];
314};
315
318{
320 uint16_t len;
321
323 uint8_t data[1536];
324};
325
328{
330 uint8_t addr[6];
331};
332
336{
338 char country_code[3];
339};
340
343{
345 uint8_t oui[3];
346};
347
350{
352 uint8_t count;
354 struct struct_oui ouis[5];
355};
356
359{
361 struct string32 ssid;
363 struct struct_mac_addr bssid;
365 int32_t rssi;
367 struct raw255 ies;
378 uint8_t bw_mhz;
380 uint8_t op_bw_mhz;
382 uint64_t tsf;
383};
384
387{
389 struct string32 application_version;
391 struct string32 bootloader_version;
393 struct string32 user_hardware_version;
395 struct string32 morse_firmware_version;
397 struct string32 morselib_version;
399 struct string32 morse_hardware_version;
400};
401
404{
406 struct struct_scan_result results[10];
408 uint8_t num;
409};
410
414{
416 char addr[48];
417};
418
421{
427 struct struct_ip_addr ip_addr;
429 struct struct_ip_addr netmask;
431 struct struct_ip_addr gateway;
433 struct struct_ip_addr broadcast;
435 struct struct_ip_addr dns_servers[2];
436};
437
440{
442 struct struct_ip_addr receiver_addr;
444 uint32_t total_count;
446 uint32_t recv_count;
448 uint32_t min_time_ms;
450 uint32_t avg_time_ms;
452 uint32_t max_time_ms;
454 uint16_t session_id;
455};
456
459{
461 struct struct_ip_addr remote_addr;
463 uint16_t remote_port;
465 struct struct_ip_addr local_addr;
467 uint16_t local_port;
471 uint32_t duration_ms;
474};
475
478{
480 uint8_t buffer[64];
482 uint8_t len;
483};
484
489{
508};
509
521struct mmagic_controller;
522
532typedef void (*mmagic_controller_agent_start_cb_t)(struct mmagic_controller *controller, void *arg);
533
538{
543};
544
548#define MMAGIC_CONTROLLER_ARGS_INIT { 0 }
549
558struct mmagic_controller *mmagic_controller_init(const struct mmagic_controller_init_args *args);
559
565void mmagic_controller_deinit(struct mmagic_controller *controller);
566
578#define CONTROL_STREAM 0
579
581#define MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS 1000
582
598 struct mmagic_controller *controller, uint8_t stream_id,
599 uint8_t submodule_id, uint8_t command_id, uint8_t subcommand_id,
600 const uint8_t *buffer, size_t buffer_length);
601
618enum mmagic_status mmagic_controller_rx(struct mmagic_controller *controller, uint8_t stream_id,
619 uint8_t submodule_id,
620 uint8_t command_id, uint8_t subcommand_id,
621 uint8_t *buffer, size_t buffer_length, uint32_t timeout_ms);
622
634enum mmagic_status mmagic_controller_agent_sync(struct mmagic_controller *controller,
635 uint32_t timeout_ms);
636
654enum mmagic_status mmagic_controller_request_agent_reset(struct mmagic_controller *controller);
655
658{
756};
757
760{
812};
813
816{
845};
846
849{
875};
876
879{
887};
888
891{
902};
903
906{
919};
920
923{
934};
935
938{
953};
954
957{
982};
983
986{
996};
997
1000{
1009};
1010
1013{
1016};
1017
1020{
1033};
1034
1037{
1056};
1057
1081 struct mmagic_controller *controller, struct struct_country_code *var)
1082{
1083 enum mmagic_status status;
1086 if (status != MMAGIC_STATUS_OK)
1087 {
1088 return status;
1089 }
1091 MMAGIC_WLAN_VAR_COUNTRY_CODE, (uint8_t *)var, sizeof(*var),
1093 return status;
1094}
1095
1107 struct mmagic_controller *controller, struct struct_country_code *var)
1108{
1109 enum mmagic_status status;
1111 MMAGIC_WLAN_VAR_COUNTRY_CODE, (uint8_t *)var, sizeof(*var));
1112 if (status != MMAGIC_STATUS_OK)
1113 {
1114 return status;
1115 }
1119 return status;
1120}
1121
1133 struct mmagic_controller *controller, struct string32 *var)
1134{
1135 enum mmagic_status status;
1137 MMAGIC_WLAN_VAR_SSID, NULL, 0);
1138 if (status != MMAGIC_STATUS_OK)
1139 {
1140 return status;
1141 }
1143 MMAGIC_WLAN_VAR_SSID, (uint8_t *)var, sizeof(*var),
1145 return status;
1146}
1147
1159 struct mmagic_controller *controller, const char *var)
1160{
1161 struct string32 var_val;
1162 enum mmagic_status status;
1163 var_val.len = strlen(var);
1164 if (var_val.len > sizeof(var_val.data) - 1)
1165 {
1167 }
1168 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1169 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1171 MMAGIC_WLAN_VAR_SSID, (uint8_t *)&var_val, sizeof(var_val));
1172 if (status != MMAGIC_STATUS_OK)
1173 {
1174 return status;
1175 }
1177 MMAGIC_WLAN_VAR_SSID, NULL, 0,
1179 return status;
1180}
1181
1193 struct mmagic_controller *controller, struct string100 *var)
1194{
1195 enum mmagic_status status;
1197 MMAGIC_WLAN_VAR_PASSWORD, NULL, 0);
1198 if (status != MMAGIC_STATUS_OK)
1199 {
1200 return status;
1201 }
1203 MMAGIC_WLAN_VAR_PASSWORD, (uint8_t *)var, sizeof(*var),
1205 return status;
1206}
1207
1219 struct mmagic_controller *controller, const char *var)
1220{
1221 struct string100 var_val;
1222 enum mmagic_status status;
1223 var_val.len = strlen(var);
1224 if (var_val.len > sizeof(var_val.data) - 1)
1225 {
1227 }
1228 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
1229 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
1231 MMAGIC_WLAN_VAR_PASSWORD, (uint8_t *)&var_val, sizeof(var_val));
1232 if (status != MMAGIC_STATUS_OK)
1233 {
1234 return status;
1235 }
1237 MMAGIC_WLAN_VAR_PASSWORD, NULL, 0,
1239 return status;
1240}
1241
1253 struct mmagic_controller *controller, enum mmagic_security_type *var)
1254{
1255 enum mmagic_status status;
1257 MMAGIC_WLAN_VAR_SECURITY, NULL, 0);
1258 if (status != MMAGIC_STATUS_OK)
1259 {
1260 return status;
1261 }
1263 MMAGIC_WLAN_VAR_SECURITY, (uint8_t *)var, sizeof(*var),
1265 return status;
1266}
1267
1279 struct mmagic_controller *controller, enum mmagic_security_type var)
1280{
1281 enum mmagic_status status;
1283 MMAGIC_WLAN_VAR_SECURITY, (uint8_t *)&var, sizeof(var));
1284 if (status != MMAGIC_STATUS_OK)
1285 {
1286 return status;
1287 }
1289 MMAGIC_WLAN_VAR_SECURITY, NULL, 0,
1291 return status;
1292}
1293
1305 struct mmagic_controller *controller, int16_t *var)
1306{
1307 enum mmagic_status status;
1310 if (status != MMAGIC_STATUS_OK)
1311 {
1312 return status;
1313 }
1315 MMAGIC_WLAN_VAR_RAW_PRIORITY, (uint8_t *)var, sizeof(*var),
1317 return status;
1318}
1319
1331 struct mmagic_controller *controller, int16_t var)
1332{
1333 enum mmagic_status status;
1335 MMAGIC_WLAN_VAR_RAW_PRIORITY, (uint8_t *)&var, sizeof(var));
1336 if (status != MMAGIC_STATUS_OK)
1337 {
1338 return status;
1339 }
1343 return status;
1344}
1345
1357 struct mmagic_controller *controller, struct struct_mac_addr *var)
1358{
1359 enum mmagic_status status;
1361 MMAGIC_WLAN_VAR_BSSID, NULL, 0);
1362 if (status != MMAGIC_STATUS_OK)
1363 {
1364 return status;
1365 }
1367 MMAGIC_WLAN_VAR_BSSID, (uint8_t *)var, sizeof(*var),
1369 return status;
1370}
1371
1383 struct mmagic_controller *controller, struct struct_mac_addr *var)
1384{
1385 enum mmagic_status status;
1387 MMAGIC_WLAN_VAR_BSSID, (uint8_t *)var, sizeof(*var));
1388 if (status != MMAGIC_STATUS_OK)
1389 {
1390 return status;
1391 }
1393 MMAGIC_WLAN_VAR_BSSID, NULL, 0,
1395 return status;
1396}
1397
1409 struct mmagic_controller *controller, enum mmagic_pmf_mode *var)
1410{
1411 enum mmagic_status status;
1413 MMAGIC_WLAN_VAR_PMF_MODE, NULL, 0);
1414 if (status != MMAGIC_STATUS_OK)
1415 {
1416 return status;
1417 }
1419 MMAGIC_WLAN_VAR_PMF_MODE, (uint8_t *)var, sizeof(*var),
1421 return status;
1422}
1423
1435 struct mmagic_controller *controller, enum mmagic_pmf_mode var)
1436{
1437 enum mmagic_status status;
1439 MMAGIC_WLAN_VAR_PMF_MODE, (uint8_t *)&var, sizeof(var));
1440 if (status != MMAGIC_STATUS_OK)
1441 {
1442 return status;
1443 }
1445 MMAGIC_WLAN_VAR_PMF_MODE, NULL, 0,
1447 return status;
1448}
1449
1461 struct mmagic_controller *controller, enum mmagic_station_type *var)
1462{
1463 enum mmagic_status status;
1466 if (status != MMAGIC_STATUS_OK)
1467 {
1468 return status;
1469 }
1471 MMAGIC_WLAN_VAR_STATION_TYPE, (uint8_t *)var, sizeof(*var),
1473 return status;
1474}
1475
1487 struct mmagic_controller *controller, enum mmagic_station_type var)
1488{
1489 enum mmagic_status status;
1491 MMAGIC_WLAN_VAR_STATION_TYPE, (uint8_t *)&var, sizeof(var));
1492 if (status != MMAGIC_STATUS_OK)
1493 {
1494 return status;
1495 }
1499 return status;
1500}
1501
1513 struct mmagic_controller *controller, uint32_t *var)
1514{
1515 enum mmagic_status status;
1518 if (status != MMAGIC_STATUS_OK)
1519 {
1520 return status;
1521 }
1523 MMAGIC_WLAN_VAR_RTS_THRESHOLD, (uint8_t *)var, sizeof(*var),
1525 return status;
1526}
1527
1539 struct mmagic_controller *controller, uint32_t var)
1540{
1541 enum mmagic_status status;
1543 MMAGIC_WLAN_VAR_RTS_THRESHOLD, (uint8_t *)&var, sizeof(var));
1544 if (status != MMAGIC_STATUS_OK)
1545 {
1546 return status;
1547 }
1551 return status;
1552}
1553
1565 struct mmagic_controller *controller, bool *var)
1566{
1567 enum mmagic_status status;
1570 if (status != MMAGIC_STATUS_OK)
1571 {
1572 return status;
1573 }
1575 MMAGIC_WLAN_VAR_SGI_ENABLED, (uint8_t *)var, sizeof(*var),
1577 return status;
1578}
1579
1591 struct mmagic_controller *controller, bool var)
1592{
1593 enum mmagic_status status;
1595 MMAGIC_WLAN_VAR_SGI_ENABLED, (uint8_t *)&var, sizeof(var));
1596 if (status != MMAGIC_STATUS_OK)
1597 {
1598 return status;
1599 }
1603 return status;
1604}
1605
1617 struct mmagic_controller *controller, bool *var)
1618{
1619 enum mmagic_status status;
1622 if (status != MMAGIC_STATUS_OK)
1623 {
1624 return status;
1625 }
1627 MMAGIC_WLAN_VAR_SUBBANDS_ENABLED, (uint8_t *)var, sizeof(*var),
1629 return status;
1630}
1631
1643 struct mmagic_controller *controller, bool var)
1644{
1645 enum mmagic_status status;
1647 MMAGIC_WLAN_VAR_SUBBANDS_ENABLED, (uint8_t *)&var, sizeof(var));
1648 if (status != MMAGIC_STATUS_OK)
1649 {
1650 return status;
1651 }
1655 return status;
1656}
1657
1669 struct mmagic_controller *controller, bool *var)
1670{
1671 enum mmagic_status status;
1674 if (status != MMAGIC_STATUS_OK)
1675 {
1676 return status;
1677 }
1679 MMAGIC_WLAN_VAR_AMPDU_ENABLED, (uint8_t *)var, sizeof(*var),
1681 return status;
1682}
1683
1695 struct mmagic_controller *controller, bool var)
1696{
1697 enum mmagic_status status;
1699 MMAGIC_WLAN_VAR_AMPDU_ENABLED, (uint8_t *)&var, sizeof(var));
1700 if (status != MMAGIC_STATUS_OK)
1701 {
1702 return status;
1703 }
1707 return status;
1708}
1709
1721 struct mmagic_controller *controller, enum mmagic_power_save_mode *var)
1722{
1723 enum mmagic_status status;
1726 if (status != MMAGIC_STATUS_OK)
1727 {
1728 return status;
1729 }
1731 MMAGIC_WLAN_VAR_POWER_SAVE_MODE, (uint8_t *)var, sizeof(*var),
1733 return status;
1734}
1735
1747 struct mmagic_controller *controller, enum mmagic_power_save_mode var)
1748{
1749 enum mmagic_status status;
1751 MMAGIC_WLAN_VAR_POWER_SAVE_MODE, (uint8_t *)&var, sizeof(var));
1752 if (status != MMAGIC_STATUS_OK)
1753 {
1754 return status;
1755 }
1759 return status;
1760}
1761
1774 struct mmagic_controller *controller, uint32_t *var)
1775{
1776 enum mmagic_status status;
1779 if (status != MMAGIC_STATUS_OK)
1780 {
1781 return status;
1782 }
1784 MMAGIC_WLAN_VAR_FRAGMENT_THRESHOLD, (uint8_t *)var, sizeof(*var),
1786 return status;
1787}
1788
1801 struct mmagic_controller *controller, uint32_t var)
1802{
1803 enum mmagic_status status;
1805 MMAGIC_WLAN_VAR_FRAGMENT_THRESHOLD, (uint8_t *)&var, sizeof(var));
1806 if (status != MMAGIC_STATUS_OK)
1807 {
1808 return status;
1809 }
1813 return status;
1814}
1815
1827 struct mmagic_controller *controller, bool *var)
1828{
1829 enum mmagic_status status;
1832 if (status != MMAGIC_STATUS_OK)
1833 {
1834 return status;
1835 }
1837 MMAGIC_WLAN_VAR_CAC_ENABLED, (uint8_t *)var, sizeof(*var),
1839 return status;
1840}
1841
1853 struct mmagic_controller *controller, bool var)
1854{
1855 enum mmagic_status status;
1857 MMAGIC_WLAN_VAR_CAC_ENABLED, (uint8_t *)&var, sizeof(var));
1858 if (status != MMAGIC_STATUS_OK)
1859 {
1860 return status;
1861 }
1865 return status;
1866}
1867
1880 struct mmagic_controller *controller, bool *var)
1881{
1882 enum mmagic_status status;
1885 if (status != MMAGIC_STATUS_OK)
1886 {
1887 return status;
1888 }
1892 return status;
1893}
1894
1907 struct mmagic_controller *controller, bool var)
1908{
1909 enum mmagic_status status;
1911 MMAGIC_WLAN_VAR_OFFLOAD_ARP_RESPONSE, (uint8_t *)&var,
1912 sizeof(var));
1913 if (status != MMAGIC_STATUS_OK)
1914 {
1915 return status;
1916 }
1920 return status;
1921}
1922
1935 struct mmagic_controller *controller, uint32_t *var)
1936{
1937 enum mmagic_status status;
1940 if (status != MMAGIC_STATUS_OK)
1941 {
1942 return status;
1943 }
1947 return status;
1948}
1949
1962 struct mmagic_controller *controller, uint32_t var)
1963{
1964 enum mmagic_status status;
1967 sizeof(var));
1968 if (status != MMAGIC_STATUS_OK)
1969 {
1970 return status;
1971 }
1975 return status;
1976}
1977
1993 struct mmagic_controller *controller, uint32_t *var)
1994{
1995 enum mmagic_status status;
1998 if (status != MMAGIC_STATUS_OK)
1999 {
2000 return status;
2001 }
2005 return status;
2006}
2007
2023 struct mmagic_controller *controller, uint32_t var)
2024{
2025 enum mmagic_status status;
2028 sizeof(var));
2029 if (status != MMAGIC_STATUS_OK)
2030 {
2031 return status;
2032 }
2036 return status;
2037}
2038
2053 struct mmagic_controller *controller, uint32_t *var)
2054{
2055 enum mmagic_status status;
2058 if (status != MMAGIC_STATUS_OK)
2059 {
2060 return status;
2061 }
2065 return status;
2066}
2067
2082 struct mmagic_controller *controller, uint32_t var)
2083{
2084 enum mmagic_status status;
2087 sizeof(var));
2088 if (status != MMAGIC_STATUS_OK)
2089 {
2090 return status;
2091 }
2095 return status;
2096}
2097
2110 struct mmagic_controller *controller, bool *var)
2111{
2112 enum mmagic_status status;
2115 if (status != MMAGIC_STATUS_OK)
2116 {
2117 return status;
2118 }
2120 MMAGIC_WLAN_VAR_NDP_PROBE_ENABLED, (uint8_t *)var, sizeof(*var),
2122 return status;
2123}
2124
2137 struct mmagic_controller *controller, bool var)
2138{
2139 enum mmagic_status status;
2141 MMAGIC_WLAN_VAR_NDP_PROBE_ENABLED, (uint8_t *)&var, sizeof(var));
2142 if (status != MMAGIC_STATUS_OK)
2143 {
2144 return status;
2145 }
2149 return status;
2150}
2151
2165 struct mmagic_controller *controller, uint16_t *var)
2166{
2167 enum mmagic_status status;
2170 if (status != MMAGIC_STATUS_OK)
2171 {
2172 return status;
2173 }
2177 return status;
2178}
2179
2193 struct mmagic_controller *controller, uint16_t var)
2194{
2195 enum mmagic_status status;
2198 sizeof(var));
2199 if (status != MMAGIC_STATUS_OK)
2200 {
2201 return status;
2202 }
2206 return status;
2207}
2208
2222 struct mmagic_controller *controller, uint16_t *var)
2223{
2224 enum mmagic_status status;
2227 if (status != MMAGIC_STATUS_OK)
2228 {
2229 return status;
2230 }
2234 return status;
2235}
2236
2250 struct mmagic_controller *controller, uint16_t var)
2251{
2252 enum mmagic_status status;
2255 sizeof(var));
2256 if (status != MMAGIC_STATUS_OK)
2257 {
2258 return status;
2259 }
2263 return status;
2264}
2265
2281 struct mmagic_controller *controller, struct string32 *var)
2282{
2283 enum mmagic_status status;
2286 if (status != MMAGIC_STATUS_OK)
2287 {
2288 return status;
2289 }
2291 MMAGIC_WLAN_VAR_QOS_0_PARAMS, (uint8_t *)var, sizeof(*var),
2293 return status;
2294}
2295
2311 struct mmagic_controller *controller, const char *var)
2312{
2313 struct string32 var_val;
2314 enum mmagic_status status;
2315 var_val.len = strlen(var);
2316 if (var_val.len > sizeof(var_val.data) - 1)
2317 {
2319 }
2320 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2321 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2323 MMAGIC_WLAN_VAR_QOS_0_PARAMS, (uint8_t *)&var_val,
2324 sizeof(var_val));
2325 if (status != MMAGIC_STATUS_OK)
2326 {
2327 return status;
2328 }
2332 return status;
2333}
2334
2350 struct mmagic_controller *controller, struct string32 *var)
2351{
2352 enum mmagic_status status;
2355 if (status != MMAGIC_STATUS_OK)
2356 {
2357 return status;
2358 }
2360 MMAGIC_WLAN_VAR_QOS_1_PARAMS, (uint8_t *)var, sizeof(*var),
2362 return status;
2363}
2364
2380 struct mmagic_controller *controller, const char *var)
2381{
2382 struct string32 var_val;
2383 enum mmagic_status status;
2384 var_val.len = strlen(var);
2385 if (var_val.len > sizeof(var_val.data) - 1)
2386 {
2388 }
2389 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2390 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2392 MMAGIC_WLAN_VAR_QOS_1_PARAMS, (uint8_t *)&var_val,
2393 sizeof(var_val));
2394 if (status != MMAGIC_STATUS_OK)
2395 {
2396 return status;
2397 }
2401 return status;
2402}
2403
2419 struct mmagic_controller *controller, struct string32 *var)
2420{
2421 enum mmagic_status status;
2424 if (status != MMAGIC_STATUS_OK)
2425 {
2426 return status;
2427 }
2429 MMAGIC_WLAN_VAR_QOS_2_PARAMS, (uint8_t *)var, sizeof(*var),
2431 return status;
2432}
2433
2449 struct mmagic_controller *controller, const char *var)
2450{
2451 struct string32 var_val;
2452 enum mmagic_status status;
2453 var_val.len = strlen(var);
2454 if (var_val.len > sizeof(var_val.data) - 1)
2455 {
2457 }
2458 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2459 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2461 MMAGIC_WLAN_VAR_QOS_2_PARAMS, (uint8_t *)&var_val,
2462 sizeof(var_val));
2463 if (status != MMAGIC_STATUS_OK)
2464 {
2465 return status;
2466 }
2470 return status;
2471}
2472
2488 struct mmagic_controller *controller, struct string32 *var)
2489{
2490 enum mmagic_status status;
2493 if (status != MMAGIC_STATUS_OK)
2494 {
2495 return status;
2496 }
2498 MMAGIC_WLAN_VAR_QOS_3_PARAMS, (uint8_t *)var, sizeof(*var),
2500 return status;
2501}
2502
2518 struct mmagic_controller *controller, const char *var)
2519{
2520 struct string32 var_val;
2521 enum mmagic_status status;
2522 var_val.len = strlen(var);
2523 if (var_val.len > sizeof(var_val.data) - 1)
2524 {
2526 }
2527 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
2528 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
2530 MMAGIC_WLAN_VAR_QOS_3_PARAMS, (uint8_t *)&var_val,
2531 sizeof(var_val));
2532 if (status != MMAGIC_STATUS_OK)
2533 {
2534 return status;
2535 }
2539 return status;
2540}
2541
2556 struct mmagic_controller *controller, enum mmagic_mcs10_mode *var)
2557{
2558 enum mmagic_status status;
2561 if (status != MMAGIC_STATUS_OK)
2562 {
2563 return status;
2564 }
2566 MMAGIC_WLAN_VAR_MCS10_MODE, (uint8_t *)var, sizeof(*var),
2568 return status;
2569}
2570
2585 struct mmagic_controller *controller, enum mmagic_mcs10_mode var)
2586{
2587 enum mmagic_status status;
2589 MMAGIC_WLAN_VAR_MCS10_MODE, (uint8_t *)&var, sizeof(var));
2590 if (status != MMAGIC_STATUS_OK)
2591 {
2592 return status;
2593 }
2597 return status;
2598}
2599
2612 struct mmagic_controller *controller, bool *var)
2613{
2614 enum mmagic_status status;
2617 if (status != MMAGIC_STATUS_OK)
2618 {
2619 return status;
2620 }
2622 MMAGIC_WLAN_VAR_STA_EVT_EN, (uint8_t *)var, sizeof(*var),
2624 return status;
2625}
2626
2639 struct mmagic_controller *controller, bool var)
2640{
2641 enum mmagic_status status;
2643 MMAGIC_WLAN_VAR_STA_EVT_EN, (uint8_t *)&var, sizeof(var));
2644 if (status != MMAGIC_STATUS_OK)
2645 {
2646 return status;
2647 }
2651 return status;
2652}
2653
2667 struct mmagic_controller *controller, enum mmagic_duty_cycle_mode *var)
2668{
2669 enum mmagic_status status;
2672 if (status != MMAGIC_STATUS_OK)
2673 {
2674 return status;
2675 }
2677 MMAGIC_WLAN_VAR_DUTY_CYCLE_MODE, (uint8_t *)var, sizeof(*var),
2679 return status;
2680}
2681
2695 struct mmagic_controller *controller, enum mmagic_duty_cycle_mode var)
2696{
2697 enum mmagic_status status;
2699 MMAGIC_WLAN_VAR_DUTY_CYCLE_MODE, (uint8_t *)&var, sizeof(var));
2700 if (status != MMAGIC_STATUS_OK)
2701 {
2702 return status;
2703 }
2707 return status;
2708}
2709
2718 struct mmagic_controller *controller)
2719{
2720 enum mmagic_status status;
2722 0, NULL, 0);
2723 if (status != MMAGIC_STATUS_OK)
2724 {
2725 return status;
2726 }
2729 return status;
2730}
2731
2736{
2739 uint32_t timeout;
2740};
2741
2751 struct mmagic_controller *controller,
2752 struct
2754{
2755 enum mmagic_status status;
2756 const uint8_t stream_id = CONTROL_STREAM;
2757 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2758
2759 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
2760 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
2761 {
2762 response_timeout_ms += cmd_args->timeout;
2763 }
2764 else
2765 {
2766 response_timeout_ms = UINT32_MAX;
2767 }
2768
2769 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_CONNECT, 0,
2770 (uint8_t *)cmd_args, sizeof(*cmd_args));
2771 if (status != MMAGIC_STATUS_OK)
2772 {
2773 return status;
2774 }
2775 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_CONNECT, 0,
2776 NULL, 0, response_timeout_ms);
2777 return status;
2778}
2779
2788 struct mmagic_controller *controller)
2789{
2790 enum mmagic_status status;
2791 const uint8_t stream_id = CONTROL_STREAM;
2792 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2793
2794 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_DISCONNECT, 0,
2795 NULL, 0);
2796 if (status != MMAGIC_STATUS_OK)
2797 {
2798 return status;
2799 }
2800 return mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_DISCONNECT, 0,
2801 NULL, 0, response_timeout_ms);
2802 return status;
2803}
2804
2807{
2809 struct string32 ssid;
2812 uint32_t timeout;
2813};
2814
2817{
2820};
2821
2833static inline enum mmagic_status mmagic_controller_wlan_scan(struct mmagic_controller *controller,
2835 cmd_args,
2837 rsp_args)
2838{
2839 enum mmagic_status status;
2840 const uint8_t stream_id = CONTROL_STREAM;
2841 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2842
2843 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
2844 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
2845 {
2846 response_timeout_ms += cmd_args->timeout;
2847 }
2848 else
2849 {
2850 response_timeout_ms = UINT32_MAX;
2851 }
2852
2853 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_SCAN, 0,
2854 (uint8_t *)cmd_args, sizeof(*cmd_args));
2855 if (status != MMAGIC_STATUS_OK)
2856 {
2857 return status;
2858 }
2859 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_SCAN, 0,
2860 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
2861 return status;
2862}
2863
2866{
2868 int32_t rssi;
2869};
2870
2882 struct mmagic_controller *controller,
2883 struct
2885{
2886 enum mmagic_status status;
2887 const uint8_t stream_id = CONTROL_STREAM;
2888 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2889
2890 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_GET_RSSI, 0,
2891 NULL, 0);
2892 if (status != MMAGIC_STATUS_OK)
2893 {
2894 return status;
2895 }
2896 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_GET_RSSI, 0,
2897 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
2898 return status;
2899}
2900
2903{
2905 struct struct_mac_addr mac_addr;
2906};
2907
2919 struct mmagic_controller *controller,
2920 struct
2922{
2923 enum mmagic_status status;
2924 const uint8_t stream_id = CONTROL_STREAM;
2925 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2926
2927 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_GET_MAC_ADDR,
2928 0, NULL, 0);
2929 if (status != MMAGIC_STATUS_OK)
2930 {
2931 return status;
2932 }
2933 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_GET_MAC_ADDR,
2934 0, (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
2935 return status;
2936}
2937
2940{
2943};
2944
2954 struct mmagic_controller *controller,
2955 struct
2957{
2958 enum mmagic_status status;
2959 const uint8_t stream_id = CONTROL_STREAM;
2960 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2961
2962 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_WNM_SLEEP, 0,
2963 (uint8_t *)cmd_args, sizeof(*cmd_args));
2964 if (status != MMAGIC_STATUS_OK)
2965 {
2966 return status;
2967 }
2968 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_WNM_SLEEP, 0,
2969 NULL, 0, response_timeout_ms);
2970 return status;
2971}
2972
2975{
2977 struct struct_oui_list oui_filter;
2978};
2979
2990 struct mmagic_controller *controller,
2991 struct
2993{
2994 enum mmagic_status status;
2995 const uint8_t stream_id = CONTROL_STREAM;
2996 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
2997
2998 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
2999 MMAGIC_WLAN_CMD_BEACON_MONITOR_ENABLE, 0, (uint8_t *)cmd_args,
3000 sizeof(*cmd_args));
3001 if (status != MMAGIC_STATUS_OK)
3002 {
3003 return status;
3004 }
3005 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3007 response_timeout_ms);
3008 return status;
3009}
3010
3019 struct mmagic_controller *controller)
3020{
3021 enum mmagic_status status;
3022 const uint8_t stream_id = CONTROL_STREAM;
3023 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3024
3025 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
3027 if (status != MMAGIC_STATUS_OK)
3028 {
3029 return status;
3030 }
3031 return mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3033 response_timeout_ms);
3034 return status;
3035}
3036
3047 struct mmagic_controller *controller)
3048{
3049 enum mmagic_status status;
3050 const uint8_t stream_id = CONTROL_STREAM;
3051 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3052
3053 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_STANDBY_ENTER,
3054 0, NULL, 0);
3055 if (status != MMAGIC_STATUS_OK)
3056 {
3057 return status;
3058 }
3059 return mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_STANDBY_ENTER,
3060 0, NULL, 0, response_timeout_ms);
3061 return status;
3062}
3063
3075 struct mmagic_controller *controller)
3076{
3077 enum mmagic_status status;
3078 const uint8_t stream_id = CONTROL_STREAM;
3079 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3080
3081 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_STANDBY_EXIT,
3082 0, NULL, 0);
3083 if (status != MMAGIC_STATUS_OK)
3084 {
3085 return status;
3086 }
3087 return mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN, MMAGIC_WLAN_CMD_STANDBY_EXIT, 0,
3088 NULL, 0, response_timeout_ms);
3089 return status;
3090}
3091
3094{
3096 struct struct_buffer64 payload;
3097};
3098
3111 struct mmagic_controller *controller,
3112 struct
3114{
3115 enum mmagic_status status;
3116 const uint8_t stream_id = CONTROL_STREAM;
3117 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3118
3119 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
3121 (uint8_t *)cmd_args, sizeof(*cmd_args));
3122 if (status != MMAGIC_STATUS_OK)
3123 {
3124 return status;
3125 }
3126 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3128 response_timeout_ms);
3129 return status;
3130}
3131
3134{
3138 uint32_t offset;
3139};
3140
3154 struct mmagic_controller *controller,
3155 struct
3157{
3158 enum mmagic_status status;
3159 const uint8_t stream_id = CONTROL_STREAM;
3160 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3161
3162 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
3163 MMAGIC_WLAN_CMD_STANDBY_SET_WAKE_FILTER, 0, (uint8_t *)cmd_args,
3164 sizeof(*cmd_args));
3165 if (status != MMAGIC_STATUS_OK)
3166 {
3167 return status;
3168 }
3169 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3171 response_timeout_ms);
3172 return status;
3173}
3174
3177{
3181 struct struct_ip_addr src_ip;
3183 struct struct_ip_addr dst_ip;
3186 uint16_t dst_port;
3198};
3199
3210 struct mmagic_controller *controller,
3211 struct
3213{
3214 enum mmagic_status status;
3215 const uint8_t stream_id = CONTROL_STREAM;
3216 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3217
3218 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
3219 MMAGIC_WLAN_CMD_STANDBY_SET_CONFIG, 0, (uint8_t *)cmd_args,
3220 sizeof(*cmd_args));
3221 if (status != MMAGIC_STATUS_OK)
3222 {
3223 return status;
3224 }
3225 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3227 response_timeout_ms);
3228 return status;
3229}
3230
3233{
3236};
3237
3249 struct mmagic_controller *controller,
3250 struct
3252{
3253 enum mmagic_status status;
3254 const uint8_t stream_id = CONTROL_STREAM;
3255 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3256
3257 status = mmagic_controller_tx(controller, stream_id, MMAGIC_WLAN,
3258 MMAGIC_WLAN_CMD_GET_STA_STATUS, 0, NULL, 0);
3259 if (status != MMAGIC_STATUS_OK)
3260 {
3261 return status;
3262 }
3263 status = mmagic_controller_rx(controller, stream_id, MMAGIC_WLAN,
3264 MMAGIC_WLAN_CMD_GET_STA_STATUS, 0, (uint8_t *)rsp_args,
3265 sizeof(*rsp_args), response_timeout_ms);
3266 return status;
3267}
3268
3271{
3277 struct raw1536 vendor_ies;
3278};
3279
3294 const struct mmagic_wlan_beacon_rx_event_args *event_args, void *arg);
3295
3311 struct mmagic_controller *controller,
3312 mmagic_wlan_beacon_rx_event_handler_t handler, void *arg);
3313
3316{
3320};
3321
3336 const struct mmagic_wlan_standby_exit_event_args *event_args, void *arg);
3337
3353 struct mmagic_controller *controller,
3354 mmagic_wlan_standby_exit_event_handler_t handler, void *arg);
3355
3358{
3361};
3362
3377 const struct mmagic_wlan_sta_event_event_args *event_args, void *arg);
3378
3394 struct mmagic_controller *controller,
3395 mmagic_wlan_sta_event_event_handler_t handler, void *arg);
3396
3421 struct mmagic_controller *controller, struct struct_ip_addr *var)
3422{
3423 enum mmagic_status status;
3425 MMAGIC_IP_VAR_IP_ADDR, NULL, 0);
3426 if (status != MMAGIC_STATUS_OK)
3427 {
3428 return status;
3429 }
3431 MMAGIC_IP_VAR_IP_ADDR, (uint8_t *)var, sizeof(*var),
3433 return status;
3434}
3435
3448 struct mmagic_controller *controller, struct struct_ip_addr *var)
3449{
3450 enum mmagic_status status;
3452 MMAGIC_IP_VAR_IP_ADDR, (uint8_t *)var, sizeof(*var));
3453 if (status != MMAGIC_STATUS_OK)
3454 {
3455 return status;
3456 }
3458 MMAGIC_IP_VAR_IP_ADDR, NULL, 0,
3460 return status;
3461}
3462
3475 struct mmagic_controller *controller, struct struct_ip_addr *var)
3476{
3477 enum mmagic_status status;
3479 MMAGIC_IP_VAR_NETMASK, NULL, 0);
3480 if (status != MMAGIC_STATUS_OK)
3481 {
3482 return status;
3483 }
3485 MMAGIC_IP_VAR_NETMASK, (uint8_t *)var, sizeof(*var),
3487 return status;
3488}
3489
3502 struct mmagic_controller *controller, struct struct_ip_addr *var)
3503{
3504 enum mmagic_status status;
3506 MMAGIC_IP_VAR_NETMASK, (uint8_t *)var, sizeof(*var));
3507 if (status != MMAGIC_STATUS_OK)
3508 {
3509 return status;
3510 }
3512 MMAGIC_IP_VAR_NETMASK, NULL, 0,
3514 return status;
3515}
3516
3529 struct mmagic_controller *controller, struct struct_ip_addr *var)
3530{
3531 enum mmagic_status status;
3533 MMAGIC_IP_VAR_GATEWAY, NULL, 0);
3534 if (status != MMAGIC_STATUS_OK)
3535 {
3536 return status;
3537 }
3539 MMAGIC_IP_VAR_GATEWAY, (uint8_t *)var, sizeof(*var),
3541 return status;
3542}
3543
3556 struct mmagic_controller *controller, struct struct_ip_addr *var)
3557{
3558 enum mmagic_status status;
3560 MMAGIC_IP_VAR_GATEWAY, (uint8_t *)var, sizeof(*var));
3561 if (status != MMAGIC_STATUS_OK)
3562 {
3563 return status;
3564 }
3566 MMAGIC_IP_VAR_GATEWAY, NULL, 0,
3568 return status;
3569}
3570
3584 struct mmagic_controller *controller, struct struct_ip_addr *var)
3585{
3586 enum mmagic_status status;
3588 MMAGIC_IP_VAR_DNS_SERVER0, NULL, 0);
3589 if (status != MMAGIC_STATUS_OK)
3590 {
3591 return status;
3592 }
3594 MMAGIC_IP_VAR_DNS_SERVER0, (uint8_t *)var, sizeof(*var),
3596 return status;
3597}
3598
3612 struct mmagic_controller *controller, struct struct_ip_addr *var)
3613{
3614 enum mmagic_status status;
3616 MMAGIC_IP_VAR_DNS_SERVER0, (uint8_t *)var, sizeof(*var));
3617 if (status != MMAGIC_STATUS_OK)
3618 {
3619 return status;
3620 }
3624 return status;
3625}
3626
3640 struct mmagic_controller *controller, struct struct_ip_addr *var)
3641{
3642 enum mmagic_status status;
3644 MMAGIC_IP_VAR_DNS_SERVER1, NULL, 0);
3645 if (status != MMAGIC_STATUS_OK)
3646 {
3647 return status;
3648 }
3650 MMAGIC_IP_VAR_DNS_SERVER1, (uint8_t *)var, sizeof(*var),
3652 return status;
3653}
3654
3668 struct mmagic_controller *controller, struct struct_ip_addr *var)
3669{
3670 enum mmagic_status status;
3672 MMAGIC_IP_VAR_DNS_SERVER1, (uint8_t *)var, sizeof(*var));
3673 if (status != MMAGIC_STATUS_OK)
3674 {
3675 return status;
3676 }
3680 return status;
3681}
3682
3696 struct mmagic_controller *controller, bool *var)
3697{
3698 enum mmagic_status status;
3701 if (status != MMAGIC_STATUS_OK)
3702 {
3703 return status;
3704 }
3706 MMAGIC_IP_VAR_DHCP_ENABLED, (uint8_t *)var, sizeof(*var),
3708 return status;
3709}
3710
3724 struct mmagic_controller *controller, bool var)
3725{
3726 enum mmagic_status status;
3728 MMAGIC_IP_VAR_DHCP_ENABLED, (uint8_t *)&var, sizeof(var));
3729 if (status != MMAGIC_STATUS_OK)
3730 {
3731 return status;
3732 }
3736 return status;
3737}
3738
3752 struct mmagic_controller *controller, bool *var)
3753{
3754 enum mmagic_status status;
3757 if (status != MMAGIC_STATUS_OK)
3758 {
3759 return status;
3760 }
3762 MMAGIC_IP_VAR_DHCP_OFFLOAD, (uint8_t *)var, sizeof(*var),
3764 return status;
3765}
3766
3780 struct mmagic_controller *controller, bool var)
3781{
3782 enum mmagic_status status;
3784 MMAGIC_IP_VAR_DHCP_OFFLOAD, (uint8_t *)&var, sizeof(var));
3785 if (status != MMAGIC_STATUS_OK)
3786 {
3787 return status;
3788 }
3792 return status;
3793}
3794
3807 struct mmagic_controller *controller, bool *var)
3808{
3809 enum mmagic_status status;
3812 if (status != MMAGIC_STATUS_OK)
3813 {
3814 return status;
3815 }
3817 MMAGIC_IP_VAR_LINK_STATUS_EVT_EN, (uint8_t *)var, sizeof(*var),
3819 return status;
3820}
3821
3834 struct mmagic_controller *controller, bool var)
3835{
3836 enum mmagic_status status;
3838 MMAGIC_IP_VAR_LINK_STATUS_EVT_EN, (uint8_t *)&var, sizeof(var));
3839 if (status != MMAGIC_STATUS_OK)
3840 {
3841 return status;
3842 }
3846 return status;
3847}
3848
3857 struct mmagic_controller *controller)
3858{
3859 enum mmagic_status status;
3861 NULL, 0);
3862 if (status != MMAGIC_STATUS_OK)
3863 {
3864 return status;
3865 }
3868 return status;
3869}
3870
3875{
3877 struct struct_ip_status status;
3878};
3879
3890static inline enum mmagic_status mmagic_controller_ip_status(struct mmagic_controller *controller,
3892 rsp_args)
3893{
3894 enum mmagic_status status;
3895 const uint8_t stream_id = CONTROL_STREAM;
3896 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3897
3898 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_STATUS, 0, NULL,
3899 0);
3900 if (status != MMAGIC_STATUS_OK)
3901 {
3902 return status;
3903 }
3904 status = mmagic_controller_rx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_STATUS, 0,
3905 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
3906 return status;
3907}
3908
3916static inline enum mmagic_status mmagic_controller_ip_reload(struct mmagic_controller *controller)
3917{
3918 enum mmagic_status status;
3919 const uint8_t stream_id = CONTROL_STREAM;
3920 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3921
3922 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_RELOAD, 0, NULL,
3923 0);
3924 if (status != MMAGIC_STATUS_OK)
3925 {
3926 return status;
3927 }
3928 return mmagic_controller_rx(controller, stream_id, MMAGIC_IP, MMAGIC_IP_CMD_RELOAD, 0, NULL, 0,
3929 response_timeout_ms);
3930 return status;
3931}
3932
3935{
3937 uint16_t period_s;
3942};
3943
3956 struct mmagic_controller *controller,
3957 struct
3959{
3960 enum mmagic_status status;
3961 const uint8_t stream_id = CONTROL_STREAM;
3962 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3963
3964 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP,
3966 (uint8_t *)cmd_args, sizeof(*cmd_args));
3967 if (status != MMAGIC_STATUS_OK)
3968 {
3969 return status;
3970 }
3971 status = mmagic_controller_rx(controller, stream_id, MMAGIC_IP,
3973 response_timeout_ms);
3974 return status;
3975}
3976
3985 struct mmagic_controller *controller)
3986{
3987 enum mmagic_status status;
3988 const uint8_t stream_id = CONTROL_STREAM;
3989 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
3990
3991 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP,
3993 if (status != MMAGIC_STATUS_OK)
3994 {
3995 return status;
3996 }
3997 return mmagic_controller_rx(controller, stream_id, MMAGIC_IP,
3999 response_timeout_ms);
4000 return status;
4001}
4002
4005{
4007 struct struct_ip_addr src_ip;
4009 struct struct_ip_addr dest_ip;
4011 struct struct_ip_addr netmask;
4013 uint16_t src_port;
4015 uint16_t dest_port;
4021};
4022
4032 struct mmagic_controller *controller,
4033 struct
4035{
4036 enum mmagic_status status;
4037 const uint8_t stream_id = CONTROL_STREAM;
4038 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4039
4040 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP,
4041 MMAGIC_IP_CMD_SET_WHITELIST_FILTER, 0, (uint8_t *)cmd_args,
4042 sizeof(*cmd_args));
4043 if (status != MMAGIC_STATUS_OK)
4044 {
4045 return status;
4046 }
4047 status = mmagic_controller_rx(controller, stream_id, MMAGIC_IP,
4049 response_timeout_ms);
4050 return status;
4051}
4052
4061 struct mmagic_controller *controller)
4062{
4063 enum mmagic_status status;
4064 const uint8_t stream_id = CONTROL_STREAM;
4065 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4066
4067 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IP,
4069 if (status != MMAGIC_STATUS_OK)
4070 {
4071 return status;
4072 }
4073 return mmagic_controller_rx(controller, stream_id, MMAGIC_IP,
4075 response_timeout_ms);
4076 return status;
4077}
4078
4081{
4084 struct struct_ip_status ip_link_status;
4085};
4086
4101 const struct mmagic_ip_link_status_event_args *event_args, void *arg);
4102
4118 struct mmagic_controller *controller,
4119 mmagic_ip_link_status_event_handler_t handler, void *arg);
4120
4144 struct mmagic_controller *controller, struct struct_ip_addr *var)
4145{
4146 enum mmagic_status status;
4148 MMAGIC_PING_VAR_TARGET, NULL, 0);
4149 if (status != MMAGIC_STATUS_OK)
4150 {
4151 return status;
4152 }
4154 MMAGIC_PING_VAR_TARGET, (uint8_t *)var, sizeof(*var),
4156 return status;
4157}
4158
4170 struct mmagic_controller *controller, struct struct_ip_addr *var)
4171{
4172 enum mmagic_status status;
4174 MMAGIC_PING_VAR_TARGET, (uint8_t *)var, sizeof(*var));
4175 if (status != MMAGIC_STATUS_OK)
4176 {
4177 return status;
4178 }
4180 MMAGIC_PING_VAR_TARGET, NULL, 0,
4182 return status;
4183}
4184
4196 struct mmagic_controller *controller, uint32_t *var)
4197{
4198 enum mmagic_status status;
4200 MMAGIC_PING_VAR_INTERVAL, NULL, 0);
4201 if (status != MMAGIC_STATUS_OK)
4202 {
4203 return status;
4204 }
4206 MMAGIC_PING_VAR_INTERVAL, (uint8_t *)var, sizeof(*var),
4208 return status;
4209}
4210
4222 struct mmagic_controller *controller, uint32_t var)
4223{
4224 enum mmagic_status status;
4226 MMAGIC_PING_VAR_INTERVAL, (uint8_t *)&var, sizeof(var));
4227 if (status != MMAGIC_STATUS_OK)
4228 {
4229 return status;
4230 }
4232 MMAGIC_PING_VAR_INTERVAL, NULL, 0,
4234 return status;
4235}
4236
4249 struct mmagic_controller *controller, uint32_t *var)
4250{
4251 enum mmagic_status status;
4253 MMAGIC_PING_VAR_COUNT, NULL, 0);
4254 if (status != MMAGIC_STATUS_OK)
4255 {
4256 return status;
4257 }
4259 MMAGIC_PING_VAR_COUNT, (uint8_t *)var, sizeof(*var),
4261 return status;
4262}
4263
4276 struct mmagic_controller *controller, uint32_t var)
4277{
4278 enum mmagic_status status;
4280 MMAGIC_PING_VAR_COUNT, (uint8_t *)&var, sizeof(var));
4281 if (status != MMAGIC_STATUS_OK)
4282 {
4283 return status;
4284 }
4286 MMAGIC_PING_VAR_COUNT, NULL, 0,
4288 return status;
4289}
4290
4299 struct mmagic_controller *controller)
4300{
4301 enum mmagic_status status;
4303 0, NULL, 0);
4304 if (status != MMAGIC_STATUS_OK)
4305 {
4306 return status;
4307 }
4310 return status;
4311}
4312
4317{
4319 struct struct_ping_status status;
4320};
4321
4332static inline enum mmagic_status mmagic_controller_ping_run(struct mmagic_controller *controller,
4334 rsp_args)
4335{
4336 enum mmagic_status status;
4337 const uint8_t stream_id = CONTROL_STREAM;
4338 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4339
4340 status = mmagic_controller_tx(controller, stream_id, MMAGIC_PING, MMAGIC_PING_CMD_RUN, 0, NULL,
4341 0);
4342 if (status != MMAGIC_STATUS_OK)
4343 {
4344 return status;
4345 }
4346 status = mmagic_controller_rx(controller, stream_id, MMAGIC_PING, MMAGIC_PING_CMD_RUN, 0,
4347 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4348 return status;
4349}
4350
4375 struct mmagic_controller *controller, enum mmagic_iperf_mode *var)
4376{
4377 enum mmagic_status status;
4379 MMAGIC_IPERF_VAR_MODE, NULL, 0);
4380 if (status != MMAGIC_STATUS_OK)
4381 {
4382 return status;
4383 }
4385 MMAGIC_IPERF_VAR_MODE, (uint8_t *)var, sizeof(*var),
4387 return status;
4388}
4389
4402 struct mmagic_controller *controller, enum mmagic_iperf_mode var)
4403{
4404 enum mmagic_status status;
4406 MMAGIC_IPERF_VAR_MODE, (uint8_t *)&var, sizeof(var));
4407 if (status != MMAGIC_STATUS_OK)
4408 {
4409 return status;
4410 }
4412 MMAGIC_IPERF_VAR_MODE, NULL, 0,
4414 return status;
4415}
4416
4428 struct mmagic_controller *controller, struct struct_ip_addr *var)
4429{
4430 enum mmagic_status status;
4432 MMAGIC_IPERF_VAR_SERVER, NULL, 0);
4433 if (status != MMAGIC_STATUS_OK)
4434 {
4435 return status;
4436 }
4438 MMAGIC_IPERF_VAR_SERVER, (uint8_t *)var, sizeof(*var),
4440 return status;
4441}
4442
4454 struct mmagic_controller *controller, struct struct_ip_addr *var)
4455{
4456 enum mmagic_status status;
4458 MMAGIC_IPERF_VAR_SERVER, (uint8_t *)var, sizeof(*var));
4459 if (status != MMAGIC_STATUS_OK)
4460 {
4461 return status;
4462 }
4464 MMAGIC_IPERF_VAR_SERVER, NULL, 0,
4466 return status;
4467}
4468
4481 struct mmagic_controller *controller, uint16_t *var)
4482{
4483 enum mmagic_status status;
4485 MMAGIC_IPERF_VAR_PORT, NULL, 0);
4486 if (status != MMAGIC_STATUS_OK)
4487 {
4488 return status;
4489 }
4491 MMAGIC_IPERF_VAR_PORT, (uint8_t *)var, sizeof(*var),
4493 return status;
4494}
4495
4508 struct mmagic_controller *controller, uint16_t var)
4509{
4510 enum mmagic_status status;
4512 MMAGIC_IPERF_VAR_PORT, (uint8_t *)&var, sizeof(var));
4513 if (status != MMAGIC_STATUS_OK)
4514 {
4515 return status;
4516 }
4518 MMAGIC_IPERF_VAR_PORT, NULL, 0,
4520 return status;
4521}
4522
4536 struct mmagic_controller *controller, int32_t *var)
4537{
4538 enum mmagic_status status;
4540 MMAGIC_IPERF_VAR_AMOUNT, NULL, 0);
4541 if (status != MMAGIC_STATUS_OK)
4542 {
4543 return status;
4544 }
4546 MMAGIC_IPERF_VAR_AMOUNT, (uint8_t *)var, sizeof(*var),
4548 return status;
4549}
4550
4564 struct mmagic_controller *controller, int32_t var)
4565{
4566 enum mmagic_status status;
4568 MMAGIC_IPERF_VAR_AMOUNT, (uint8_t *)&var, sizeof(var));
4569 if (status != MMAGIC_STATUS_OK)
4570 {
4571 return status;
4572 }
4574 MMAGIC_IPERF_VAR_AMOUNT, NULL, 0,
4576 return status;
4577}
4578
4587 struct mmagic_controller *controller)
4588{
4589 enum mmagic_status status;
4591 0, NULL, 0);
4592 if (status != MMAGIC_STATUS_OK)
4593 {
4594 return status;
4595 }
4598 return status;
4599}
4600
4605{
4607 struct struct_iperf_status status;
4608};
4609
4620static inline enum mmagic_status mmagic_controller_iperf_run(struct mmagic_controller *controller,
4622 rsp_args)
4623{
4624 enum mmagic_status status;
4625 const uint8_t stream_id = CONTROL_STREAM;
4626 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4627
4628 status = mmagic_controller_tx(controller, stream_id, MMAGIC_IPERF, MMAGIC_IPERF_CMD_RUN, 0,
4629 NULL, 0);
4630 if (status != MMAGIC_STATUS_OK)
4631 {
4632 return status;
4633 }
4634 status = mmagic_controller_rx(controller, stream_id, MMAGIC_IPERF, MMAGIC_IPERF_CMD_RUN, 0,
4635 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4636 return status;
4637}
4638
4653static inline enum mmagic_status mmagic_controller_sys_reset(struct mmagic_controller *controller)
4654{
4655 enum mmagic_status status;
4656 const uint8_t stream_id = CONTROL_STREAM;
4657 status = mmagic_controller_tx(controller, stream_id, MMAGIC_SYS,
4658 MMAGIC_SYS_CMD_RESET, 0, NULL, 0);
4659 return status;
4660}
4661
4664{
4667};
4668
4678 struct mmagic_controller *controller,
4679 struct
4681{
4682 enum mmagic_status status;
4683 const uint8_t stream_id = CONTROL_STREAM;
4684 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4685
4686 status = mmagic_controller_tx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_DEEP_SLEEP, 0,
4687 (uint8_t *)cmd_args, sizeof(*cmd_args));
4688 if (status != MMAGIC_STATUS_OK)
4689 {
4690 return status;
4691 }
4692 status = mmagic_controller_rx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_DEEP_SLEEP, 0,
4693 NULL, 0, response_timeout_ms);
4694 return status;
4695}
4696
4699{
4701 struct struct_version_info results;
4702};
4703
4715 struct mmagic_controller *controller,
4716 struct
4718{
4719 enum mmagic_status status;
4720 const uint8_t stream_id = CONTROL_STREAM;
4721 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4722
4723 status = mmagic_controller_tx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_GET_VERSION, 0,
4724 NULL, 0);
4725 if (status != MMAGIC_STATUS_OK)
4726 {
4727 return status;
4728 }
4729 status = mmagic_controller_rx(controller, stream_id, MMAGIC_SYS, MMAGIC_SYS_CMD_GET_VERSION, 0,
4730 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4731 return status;
4732}
4733
4743{
4745 struct string254 url;
4747 uint16_t port;
4750};
4751
4754{
4756 uint8_t stream_id;
4757};
4758
4770static inline enum mmagic_status mmagic_controller_tcp_connect(struct mmagic_controller *controller,
4771 struct
4773 cmd_args,
4774 struct
4776 rsp_args)
4777{
4778 enum mmagic_status status;
4779 const uint8_t stream_id = CONTROL_STREAM;
4780 uint32_t response_timeout_ms = 15000;
4781
4782 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_CONNECT, 0,
4783 (uint8_t *)cmd_args, sizeof(*cmd_args));
4784 if (status != MMAGIC_STATUS_OK)
4785 {
4786 return status;
4787 }
4788 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_CONNECT, 0,
4789 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4790 return status;
4791}
4792
4795{
4797 uint16_t port;
4798};
4799
4802{
4804 uint8_t stream_id;
4805};
4806
4818static inline enum mmagic_status mmagic_controller_tcp_bind(struct mmagic_controller *controller,
4820 cmd_args,
4822 rsp_args)
4823{
4824 enum mmagic_status status;
4825 const uint8_t stream_id = CONTROL_STREAM;
4826 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4827
4828 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_BIND, 0,
4829 (uint8_t *)cmd_args, sizeof(*cmd_args));
4830 if (status != MMAGIC_STATUS_OK)
4831 {
4832 return status;
4833 }
4834 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_BIND, 0,
4835 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4836 return status;
4837}
4838
4841{
4843 uint8_t stream_id;
4845 uint16_t len;
4847 uint32_t timeout;
4848};
4849
4852{
4854 struct raw1536 buffer;
4855};
4856
4868static inline enum mmagic_status mmagic_controller_tcp_recv(struct mmagic_controller *controller,
4870 cmd_args,
4872 rsp_args)
4873{
4874 enum mmagic_status status;
4875 const uint8_t stream_id = cmd_args->stream_id;
4876 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4877
4878 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
4879 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
4880 {
4881 response_timeout_ms += cmd_args->timeout;
4882 }
4883 else
4884 {
4885 response_timeout_ms = UINT32_MAX;
4886 }
4887
4888 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_RECV, 0,
4889 (uint8_t *)cmd_args, sizeof(*cmd_args));
4890 if (status != MMAGIC_STATUS_OK)
4891 {
4892 return status;
4893 }
4894 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_RECV, 0,
4895 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
4896 return status;
4897}
4898
4901{
4903 uint8_t stream_id;
4905 struct raw1536 buffer;
4906};
4907
4916static inline enum mmagic_status mmagic_controller_tcp_send(struct mmagic_controller *controller,
4918 cmd_args)
4919{
4920 enum mmagic_status status;
4921 const uint8_t stream_id = cmd_args->stream_id;
4922 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4923
4924 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_SEND, 0,
4925 (uint8_t *)cmd_args, sizeof(*cmd_args));
4926 if (status != MMAGIC_STATUS_OK)
4927 {
4928 return status;
4929 }
4930 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_SEND, 0, NULL,
4931 0, response_timeout_ms);
4932 return status;
4933}
4934
4937{
4939 uint8_t stream_id;
4941 uint32_t timeout;
4942};
4943
4953 struct mmagic_controller *controller,
4954 struct
4956{
4957 enum mmagic_status status;
4958 const uint8_t stream_id = cmd_args->stream_id;
4959 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
4960
4961 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
4962 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
4963 {
4964 response_timeout_ms += cmd_args->timeout;
4965 }
4966 else
4967 {
4968 response_timeout_ms = UINT32_MAX;
4969 }
4970
4971 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_READ_POLL, 0,
4972 (uint8_t *)cmd_args, sizeof(*cmd_args));
4973 if (status != MMAGIC_STATUS_OK)
4974 {
4975 return status;
4976 }
4977 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_READ_POLL, 0,
4978 NULL, 0, response_timeout_ms);
4979 return status;
4980}
4981
4984{
4986 uint8_t stream_id;
4988 uint32_t timeout;
4989};
4990
5000 struct mmagic_controller *controller,
5001 struct
5003{
5004 enum mmagic_status status;
5005 const uint8_t stream_id = cmd_args->stream_id;
5006 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5007
5008 /* Account for the timeout argument when waiting for the response and make sure no overflow. */
5009 if (UINT32_MAX - response_timeout_ms >= cmd_args->timeout)
5010 {
5011 response_timeout_ms += cmd_args->timeout;
5012 }
5013 else
5014 {
5015 response_timeout_ms = UINT32_MAX;
5016 }
5017
5018 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_WRITE_POLL, 0,
5019 (uint8_t *)cmd_args, sizeof(*cmd_args));
5020 if (status != MMAGIC_STATUS_OK)
5021 {
5022 return status;
5023 }
5024 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_WRITE_POLL, 0,
5025 NULL, 0, response_timeout_ms);
5026 return status;
5027}
5028
5031{
5033 uint8_t stream_id;
5034};
5035
5038{
5040 uint8_t stream_id;
5041};
5042
5054static inline enum mmagic_status mmagic_controller_tcp_accept(struct mmagic_controller *controller,
5056 *cmd_args,
5058 *rsp_args)
5059{
5060 enum mmagic_status status;
5061 const uint8_t stream_id = cmd_args->stream_id;
5062 uint32_t response_timeout_ms = -1;
5063
5064 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_ACCEPT, 0,
5065 (uint8_t *)cmd_args, sizeof(*cmd_args));
5066 if (status != MMAGIC_STATUS_OK)
5067 {
5068 return status;
5069 }
5070 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_ACCEPT, 0,
5071 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
5072 return status;
5073}
5074
5077{
5079 uint8_t stream_id;
5080};
5081
5090static inline enum mmagic_status mmagic_controller_tcp_close(struct mmagic_controller *controller,
5092 cmd_args)
5093{
5094 enum mmagic_status status;
5095 const uint8_t stream_id = CONTROL_STREAM;
5096 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5097
5098 status = mmagic_controller_tx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_CLOSE, 0,
5099 (uint8_t *)cmd_args, sizeof(*cmd_args));
5100 if (status != MMAGIC_STATUS_OK)
5101 {
5102 return status;
5103 }
5104 status = mmagic_controller_rx(controller, stream_id, MMAGIC_TCP, MMAGIC_TCP_CMD_CLOSE, 0, NULL,
5105 0, response_timeout_ms);
5106 return status;
5107}
5108
5133 struct mmagic_controller *controller, struct raw1536 *var)
5134{
5135 enum mmagic_status status;
5138 if (status != MMAGIC_STATUS_OK)
5139 {
5140 return status;
5141 }
5143 MMAGIC_TLS_VAR_ROOT_CA_CERTIFICATE, (uint8_t *)var, sizeof(*var),
5145 return status;
5146}
5147
5160 struct mmagic_controller *controller, struct raw1536 *var)
5161{
5162 enum mmagic_status status;
5164 MMAGIC_TLS_VAR_ROOT_CA_CERTIFICATE, (uint8_t *)var, sizeof(*var));
5165 if (status != MMAGIC_STATUS_OK)
5166 {
5167 return status;
5168 }
5172 return status;
5173}
5174
5187 struct mmagic_controller *controller, struct raw1536 *var)
5188{
5189 enum mmagic_status status;
5192 if (status != MMAGIC_STATUS_OK)
5193 {
5194 return status;
5195 }
5197 MMAGIC_TLS_VAR_CLIENT_CERTIFICATE, (uint8_t *)var, sizeof(*var),
5199 return status;
5200}
5201
5214 struct mmagic_controller *controller, struct raw1536 *var)
5215{
5216 enum mmagic_status status;
5218 MMAGIC_TLS_VAR_CLIENT_CERTIFICATE, (uint8_t *)var, sizeof(*var));
5219 if (status != MMAGIC_STATUS_OK)
5220 {
5221 return status;
5222 }
5226 return status;
5227}
5228
5240 struct mmagic_controller *controller, struct raw1536 *var)
5241{
5242 enum mmagic_status status;
5245 if (status != MMAGIC_STATUS_OK)
5246 {
5247 return status;
5248 }
5250 MMAGIC_TLS_VAR_CLIENT_PRIVATE_KEY, (uint8_t *)var, sizeof(*var),
5252 return status;
5253}
5254
5266 struct mmagic_controller *controller, struct raw1536 *var)
5267{
5268 enum mmagic_status status;
5270 MMAGIC_TLS_VAR_CLIENT_PRIVATE_KEY, (uint8_t *)var, sizeof(*var));
5271 if (status != MMAGIC_STATUS_OK)
5272 {
5273 return status;
5274 }
5278 return status;
5279}
5280
5289 struct mmagic_controller *controller)
5290{
5291 enum mmagic_status status;
5293 NULL, 0);
5294 if (status != MMAGIC_STATUS_OK)
5295 {
5296 return status;
5297 }
5300 return status;
5301}
5302
5328 struct mmagic_controller *controller, struct string254 *var)
5329{
5330 enum mmagic_status status;
5332 MMAGIC_NTP_VAR_SERVER, NULL, 0);
5333 if (status != MMAGIC_STATUS_OK)
5334 {
5335 return status;
5336 }
5338 MMAGIC_NTP_VAR_SERVER, (uint8_t *)var, sizeof(*var),
5340 return status;
5341}
5342
5354 struct mmagic_controller *controller, const char *var)
5355{
5356 struct string254 var_val;
5357 enum mmagic_status status;
5358 var_val.len = strlen(var);
5359 if (var_val.len > sizeof(var_val.data) - 1)
5360 {
5362 }
5363 memcpy(var_val.data, (const uint8_t *)var, var_val.len);
5364 memset(var_val.data + var_val.len, 0, sizeof(var_val.data) - var_val.len);
5366 MMAGIC_NTP_VAR_SERVER, (uint8_t *)&var_val, sizeof(var_val));
5367 if (status != MMAGIC_STATUS_OK)
5368 {
5369 return status;
5370 }
5372 MMAGIC_NTP_VAR_SERVER, NULL, 0,
5374 return status;
5375}
5376
5385 struct mmagic_controller *controller)
5386{
5387 enum mmagic_status status;
5389 NULL, 0);
5390 if (status != MMAGIC_STATUS_OK)
5391 {
5392 return status;
5393 }
5396 return status;
5397}
5398
5408static inline enum mmagic_status mmagic_controller_ntp_sync(struct mmagic_controller *controller)
5409{
5410 enum mmagic_status status;
5411 const uint8_t stream_id = CONTROL_STREAM;
5412 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5413
5414 status = mmagic_controller_tx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_SYNC, 0, NULL,
5415 0);
5416 if (status != MMAGIC_STATUS_OK)
5417 {
5418 return status;
5419 }
5420 return mmagic_controller_rx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_SYNC, 0, NULL, 0,
5421 response_timeout_ms);
5422 return status;
5423}
5424
5427{
5429 uint64_t timestamp;
5430};
5431
5443 struct mmagic_controller *controller,
5444 struct
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 = mmagic_controller_tx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_GET_TIME, 0,
5452 NULL, 0);
5453 if (status != MMAGIC_STATUS_OK)
5454 {
5455 return status;
5456 }
5457 status = mmagic_controller_rx(controller, stream_id, MMAGIC_NTP, MMAGIC_NTP_CMD_GET_TIME, 0,
5458 (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
5459 return status;
5460}
5461
5471{
5473 struct string254 url;
5475 uint16_t port;
5477 struct string100 username;
5479 struct string100 password;
5482};
5483
5486{
5488 uint8_t stream_id;
5489};
5490
5505 struct mmagic_controller *controller,
5506 struct
5508 struct
5510{
5511 enum mmagic_status status;
5512 const uint8_t stream_id = CONTROL_STREAM;
5513 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5514
5515 status = mmagic_controller_tx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_START_AGENT,
5516 0, (uint8_t *)cmd_args, sizeof(*cmd_args));
5517 if (status != MMAGIC_STATUS_OK)
5518 {
5519 return status;
5520 }
5521 status = mmagic_controller_rx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_START_AGENT,
5522 0, (uint8_t *)rsp_args, sizeof(*rsp_args), response_timeout_ms);
5523 return status;
5524}
5525
5528{
5530 uint8_t stream_id;
5532 struct string254 topic;
5534 struct raw1536 payload;
5536 uint8_t qos;
5537};
5538
5548 struct mmagic_controller *controller,
5549 struct
5551{
5552 enum mmagic_status status;
5553 const uint8_t stream_id = CONTROL_STREAM;
5554 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5555
5556 status = mmagic_controller_tx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_PUBLISH, 0,
5557 (uint8_t *)cmd_args, sizeof(*cmd_args));
5558 if (status != MMAGIC_STATUS_OK)
5559 {
5560 return status;
5561 }
5562 status = mmagic_controller_rx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_PUBLISH, 0,
5563 NULL, 0, response_timeout_ms);
5564 return status;
5565}
5566
5569{
5571 uint8_t stream_id;
5573 struct string254 topic;
5575 uint8_t qos;
5576};
5577
5587 struct mmagic_controller *controller,
5588 struct
5590{
5591 enum mmagic_status status;
5592 const uint8_t stream_id = CONTROL_STREAM;
5593 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5594
5595 status = mmagic_controller_tx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_SUBSCRIBE, 0,
5596 (uint8_t *)cmd_args, sizeof(*cmd_args));
5597 if (status != MMAGIC_STATUS_OK)
5598 {
5599 return status;
5600 }
5601 status = mmagic_controller_rx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_SUBSCRIBE, 0,
5602 NULL, 0, response_timeout_ms);
5603 return status;
5604}
5605
5608{
5610 uint8_t stream_id;
5611};
5612
5622 struct mmagic_controller *controller,
5623 struct
5625{
5626 enum mmagic_status status;
5627 const uint8_t stream_id = CONTROL_STREAM;
5628 uint32_t response_timeout_ms = MMAGIC_CONTROLLER_DEFAULT_RESPONSE_TIMEOUT_MS;
5629
5630 status = mmagic_controller_tx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_STOP_AGENT, 0,
5631 (uint8_t *)cmd_args, sizeof(*cmd_args));
5632 if (status != MMAGIC_STATUS_OK)
5633 {
5634 return status;
5635 }
5636 status = mmagic_controller_rx(controller, stream_id, MMAGIC_MQTT, MMAGIC_MQTT_CMD_STOP_AGENT, 0,
5637 NULL, 0, response_timeout_ms);
5638 return status;
5639}
5640
5643{
5645 uint8_t stream_id;
5647 struct string254 topic;
5649 struct raw1536 payload;
5650};
5651
5666 const struct mmagic_mqtt_message_received_event_args *event_args, void *arg);
5667
5683 struct mmagic_controller *controller,
5685
5688{
5690 uint8_t stream_id;
5693};
5694
5709 const struct mmagic_mqtt_broker_connection_event_args *event_args, void *arg);
5710
5726 struct mmagic_controller *controller,
5728
5731#ifdef __cplusplus
5732}
5733#endif
5734
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_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_DHCP_OFFLOAD
If true, enables DHCP offload which allows the Morse chip to directly handle DHCP discovery and lease...
@ 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_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_OFFLOAD_ARP_RESPONSE
If true, enables ARP response offload which allows the Morse chip to directly respond to ARP requests...
@ MMAGIC_WLAN_VAR_MAX_HEALTH_CHECK_INTVL_MS
The maximum interval to wait after the last health check before triggering another.
@ MMAGIC_WLAN_VAR_OFFLOAD_ARP_REFRESH_S
If non zero, enables ARP refresh offload with the specified interval in seconds.
@ 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_netmask(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets netmask setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_link_status_evt_en(struct mmagic_controller *controller, bool var)
Sets link_status_evt_en setting for module ip.
static enum mmagic_status mmagic_controller_ip_commit_all(struct mmagic_controller *controller)
Saves all settings from persistent store.
static enum mmagic_status mmagic_controller_get_ip_gateway(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets gateway setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_link_status_evt_en(struct mmagic_controller *controller, bool *var)
Gets link_status_evt_en setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_netmask(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets netmask setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dhcp_enabled(struct mmagic_controller *controller, bool var)
Sets dhcp_enabled setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_ip_addr(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets ip_addr setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_dns_server1(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets dns_server1 setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_gateway(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets gateway setting for module ip.
static enum mmagic_status mmagic_controller_set_ip_dns_server0(struct mmagic_controller *controller, struct struct_ip_addr *var)
Sets dns_server0 setting for module ip.
static enum mmagic_status mmagic_controller_get_ip_dns_server0(struct mmagic_controller *controller, struct struct_ip_addr *var)
Gets dns_server0 setting for module ip.
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.
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.
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_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_set_wlan_offload_arp_response(struct mmagic_controller *controller, bool var)
Sets offload_arp_response 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_get_wlan_offload_arp_refresh_s(struct mmagic_controller *controller, uint32_t *var)
Gets offload_arp_refresh_s 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_set_wlan_offload_arp_refresh_s(struct mmagic_controller *controller, uint32_t var)
Sets offload_arp_refresh_s 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_offload_arp_response(struct mmagic_controller *controller, bool *var)
Gets offload_arp_response 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
TCP port to listen on.
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_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 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.
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.