23#if (MODULE_MEGAWIFI != 0)
26#define PACKED __attribute__((__packed__))
29#define MW_MSG_MAX_BUFLEN 512
32#define MW_CMD_HEADLEN (2 * sizeof(uint16_t))
35#define MW_CMD_MAX_BUFLEN (MW_MSG_MAX_BUFLEN - MW_CMD_HEADLEN)
38#define MW_SSID_MAXLEN 32
40#define MW_PASS_MAXLEN 64
43#define MW_GT_NICKNAME_MAX 32
45#define MW_GT_SECURITY_MAX 32
47#define MW_GT_TAGLINE_MAX 32
49#define MW_GT_AVATAR_WIDTH 32
51#define MW_GT_AVATAR_HEIGHT 48
53#define MW_GT_TG_TOKEN_MAX 64
56enum PACKED mw_command {
62 MW_CMD_AP_CFG_GET = 5,
63 MW_CMD_IP_CURRENT = 6,
66 MW_CMD_IP_CFG_GET = 9,
67 MW_CMD_DEF_AP_CFG = 10,
68 MW_CMD_DEF_AP_CFG_GET = 11,
77 MW_CMD_SOCK_STAT = 20,
80 MW_CMD_SNTP_CFG_GET = 23,
83 MW_CMD_FLASH_WRITE = 26,
84 MW_CMD_FLASH_READ = 27,
85 MW_CMD_FLASH_ERASE = 28,
88 MW_CMD_DEF_CFG_SET = 31,
90 MW_CMD_BSSID_GET = 33,
91 MW_CMD_GAMERTAG_SET = 34,
92 MW_CMD_GAMERTAG_GET = 35,
94 MW_CMD_FACTORY_RESET = 37,
96 MW_CMD_HTTP_URL_SET = 39,
97 MW_CMD_HTTP_METHOD_SET = 40,
98 MW_CMD_HTTP_CERT_QUERY = 41,
99 MW_CMD_HTTP_CERT_SET = 42,
100 MW_CMD_HTTP_HDR_ADD = 43,
101 MW_CMD_HTTP_HDR_DEL = 44,
102 MW_CMD_HTTP_OPEN = 45,
103 MW_CMD_HTTP_FINISH = 46,
104 MW_CMD_HTTP_CLEANUP = 47,
106 MW_CMD_SERVER_URL_GET = 49,
107 MW_CMD_SERVER_URL_SET = 50,
108 MW_CMD_WIFI_ADV_GET = 51,
109 MW_CMD_WIFI_ADV_SET = 52,
110 MW_CMD_NV_CFG_SAVE = 53,
111 MW_CMD_UPGRADE_LIST = 54,
112 MW_CMD_UPGRADE_PERFORM = 55,
113 MW_CMD_GAME_ENDPOINT_SET = 56,
114 MW_CMD_GAME_KEYVAL_ADD = 57,
115 MW_CMD_GAME_REQUEST = 58,
120enum PACKED mw_security {
130enum PACKED mw_phy_type {
143struct mw_msg_in_addr {
155 union ip_addr gateway;
164struct mw_msg_ap_cfg {
166 enum mw_phy_type phy_type;
172struct mw_msg_ip_cfg {
179struct mw_msg_sntp_cfg {
185 char servers[MW_CMD_MAX_BUFLEN - 4];
189struct mw_msg_date_time {
192 char dt_str[MW_CMD_MAX_BUFLEN - 2 *
sizeof(uint32_t)];
196struct mw_msg_flash_data {
199 uint8_t data[MW_CMD_MAX_BUFLEN -
sizeof(uint32_t)];
203struct mw_msg_flash_range {
216struct mw_wifi_adv_cfg {
218 uint8_t ampdu_rx_enable;
220 uint8_t rx_ampdu_buf_num;
221 uint32_t rx_ampdu_buf_len;
222 uint32_t rx_max_single_pkt_len;
224 uint8_t amsdu_rx_enable;
227 uint8_t left_continuous_rx_buf_num;
237 char nickname[MW_GT_NICKNAME_MAX];
239 char security[MW_GT_SECURITY_MAX];
241 char tagline[MW_GT_TAGLINE_MAX];
243 char tg_token[MW_GT_TG_TOKEN_MAX];
245 uint8_t avatar_tiles[MW_GT_AVATAR_WIDTH * MW_GT_AVATAR_HEIGHT / 2];
247 uint8_t avatar_pal[32];
251struct mw_gamertag_set_msg {
254 struct mw_gamertag gamertag;
277union mw_msg_sys_stat {
280#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
281 enum mw_state sys_stat:8;
295 enum mw_state sys_stat:8;
303 uint8_t manufacturer;
310 uint8_t num_kv_pairs;
314struct mw_ping_request{
319struct mw_ping_response{
320 uint32_t transmitted;
322 uint32_t total_time_ms;
325struct mw_upgrade_list_response{
332typedef union mw_cmd {
333 char packet[MW_CMD_MAX_BUFLEN + 2 *
sizeof(uint16_t)];
342 uint8_t data[MW_CMD_MAX_BUFLEN];
344 uint16_t w_data[MW_CMD_MAX_BUFLEN /
sizeof(uint16_t)];
346 uint32_t dw_data[MW_CMD_MAX_BUFLEN /
sizeof(uint32_t)];
347 struct mw_msg_in_addr in_addr;
348 struct mw_msg_ap_cfg ap_cfg;
349 struct mw_msg_ip_cfg ip_cfg;
350 struct mw_msg_sntp_cfg sntp_cfg;
351 struct mw_msg_date_time date_time;
352 struct mw_msg_flash_data fl_data;
353 struct mw_msg_flash_range fl_range;
354 struct mw_msg_bind bind;
355 struct mw_ping_request ping;
356 struct mw_ping_response ping_response;
357 struct mw_upgrade_list_response ug_list_response;
358 union mw_msg_sys_stat sys_stat;
359 struct mw_gamertag_set_msg gamertag_set;
360 struct mw_gamertag gamertag_get;
361 struct mw_wifi_adv_cfg wifi_adv_cfg;
362 struct mw_flash_id flash_id;
377struct mw_reuse_payload {
379 uint16_t remote_port;
381 char payload[MW_CMD_MAX_BUFLEN - 4 - 2];
#define MW_PASS_MAXLEN
Maximum password length (including '\0').
Definition megawifi.h:109
#define MW_SSID_MAXLEN
Maximum SSID length (including '\0').
Definition megawifi.h:107
int16_t mw_ga_request(enum mw_http_method method, const char **path, uint8_t num_paths, const char **key, const char **value, uint8_t num_kv_pairs, uint32_t *content_len, int16_t tout_frames)
Perform a GameAPI request, with the previously set endpoint and key/value pairs.