33#if (MODULE_MEGAWIFI != 0)
37#define MW_API_VERSION_MAJOR 1
40#define MW_API_VERSION_MINOR 5
43#define MW_COMMAND_TOUT_MS 1000
45#define MW_CONNECT_TOUT_MS 10000
47#define MW_HTTP_OPEN_TOUT_MS 10000
49#define MW_SCAN_TOUT_MS 10000
51#define MW_ASSOC_TOUT_MS 20000
53#define MW_ASSOC_WAIT_SLEEP_MS 5000
55#define MW_UPGRADE_TOUT_MS 180000
57#define MW_STAT_POLL_MS 250
64 MW_ERR_BUFFER_TOO_SHORT,
72 MW_HTTP_METHOD_GET = 0,
76 MW_HTTP_METHOD_DELETE,
78 MW_HTTP_METHOD_NOTIFY,
79 MW_HTTP_METHOD_SUBSCRIBE,
80 MW_HTTP_METHOD_UNSUBSCRIBE,
81 MW_HTTP_METHOD_OPTIONS,
88#define MW__RESET UART_MCR__OUT1
89#define MW__PRG UART_MCR__OUT2
90#define MW__PD UART_MCR__DTR
91#define MW__DAT UART_MSR__DSR
95#define MW_SSID_MAXLEN 32
97#define MW_PASS_MAXLEN 64
99#define MW_NTP_POOL_MAXLEN 80
101#define MW_NUM_CFG_SLOTS 3
103#define MW_NUM_DNS_SERVERS 2
105#define MW_FSM_QUEUE_LEN 8
111#define MW_HTTP_CH LSD_MAX_CH - 1
116#define MW_CMD_MIN_BUFLEN 168
120 enum mw_security auth;
143int16_t mw_init(uint16_t *cmd_buf, uint16_t buf_len);
153static inline void mw_process(
void) {lsd_process();}
165void mw_cmd_data_cb_set(lsd_recv_cb cmd_recv_cb);
177enum mw_err mw_detect(uint8_t *major, uint8_t *minor,
char **variant);
187enum mw_err mw_version_get(uint8_t version[3],
char **variant);
196uint8_t *mw_bssid_get(
enum mw_if_type interface_type);
206enum mw_err mw_default_cfg_set(
void);
223enum mw_err mw_ap_cfg_set(uint8_t slot,
const char *ssid,
const char *pass,
224 enum mw_phy_type phy_type);
240enum mw_err mw_ap_cfg_get(uint8_t slot,
char **ssid,
char **pass,
241 enum mw_phy_type *phy_type);
254enum mw_err mw_ip_cfg_set(uint8_t slot,
const struct mw_ip_cfg *ip);
264enum mw_err mw_ip_cfg_get(uint8_t slot,
struct mw_ip_cfg **ip);
282enum mw_err mw_wifi_adv_cfg_set(
const struct mw_wifi_adv_cfg *wifi);
289struct mw_wifi_adv_cfg *mw_wifi_adv_cfg_get(
void);
296enum mw_err mw_cfg_save(
void);
305enum mw_err mw_ip_current(
struct mw_ip_cfg **ip);
318int16_t mw_ap_scan(
enum mw_phy_type phy_type,
char **ap_data, uint8_t *aps);
336int16_t mw_ap_fill_next(
const char *ap_data, uint16_t pos,
337 struct mw_ap_data *apd, uint16_t data_len);
346enum mw_err mw_ap_assoc(uint8_t slot);
358enum mw_err mw_ap_assoc_wait(int16_t tout_frames);
370enum mw_err mw_def_ap_cfg(uint8_t slot);
377enum mw_err mw_ap_disassoc(
void);
384int16_t mw_def_ap_cfg_get(
void);
397enum mw_err mw_tcp_connect(uint8_t ch,
const char *dst_addr,
398 const char *dst_port,
const char *src_port);
410enum mw_err mw_close(uint8_t ch);
413#define mw_tcp_disconnect(ch) mw_close(ch)
427enum mw_err mw_udp_set(uint8_t ch,
const char *dst_addr,
const char *dst_port,
428 const char *src_port);
431#define mw_udp_unset(ch) mw_close(ch)
443enum mw_err mw_tcp_bind(uint8_t ch, uint16_t port);
455enum mw_err mw_sock_conn_wait(uint8_t ch, int16_t tout_frames);
467static inline enum lsd_status mw_recv(
char *buf, int16_t len,
void *ctx,
470 return lsd_recv(buf, len, ctx, recv_cb);
484static inline enum lsd_status mw_udp_reuse_recv(
struct mw_reuse_payload *data,
485 int16_t len,
void *ctx, lsd_recv_cb recv_cb)
487 return lsd_recv((
char*)data, len, ctx, recv_cb);
502static inline enum lsd_status mw_udp_reuse_send(uint8_t ch,
503 const struct mw_reuse_payload *data, int16_t len,
void *ctx,
506 return lsd_send(ch, (
const char*)data, len, ctx, send_cb);
527static inline enum lsd_status mw_send(uint8_t ch,
const char *data, int16_t len,
528 void *ctx, lsd_send_cb send_cb)
530 return lsd_send(ch, data, len, ctx, send_cb);
547enum mw_err mw_recv_sync(uint8_t *ch,
char *buf, int16_t *buf_len,
548 int16_t tout_frames);
565enum mw_err mw_send_sync(uint8_t ch,
const char *data, uint16_t len,
566 int16_t tout_frames);
573union mw_msg_sys_stat *mw_sys_stat_get(
void);
582enum mw_sock_stat mw_sock_stat_get(uint8_t ch);
596enum mw_err mw_sntp_cfg_set(
const char *tz_str,
const char *server[3]);
607enum mw_err mw_sntp_cfg_get(
char **tz_str,
char *server[3]);
619char *mw_date_time_get(uint32_t dt_bin[2]);
629enum mw_err mw_flash_id_get(uint8_t *man_id, uint16_t *dev_id);
639enum mw_err mw_flash_sector_erase(uint16_t sect);
650enum mw_err mw_flash_write(uint32_t addr, uint8_t *data, uint16_t data_len);
660uint8_t *mw_flash_read(uint32_t addr, uint16_t data_len);
665#define mw_module_reset() do{uart_set_bits(MCR, MW__RESET);}while(0)
670#define mw_module_start() do{uart_clr_bits(MCR, MW__RESET);}while(0)
683enum mw_err mw_gamertag_set(uint8_t slot,
const struct mw_gamertag *gamertag);
692struct mw_gamertag *mw_gamertag_get(uint8_t slot);
701enum mw_err mw_log(
const char *msg);
709enum mw_err mw_factory_settings(
void);
717void mw_power_off(
void);
724void mw_sleep(int16_t frames);
733enum mw_err mw_http_url_set(
const char *url);
742enum mw_err mw_http_method_set(
enum mw_http_method method);
752enum mw_err mw_http_header_add(
const char *key,
const char *value);
761enum mw_err mw_http_header_del(
const char *key);
775enum mw_err mw_http_open(uint32_t content_len);
795int16_t mw_http_finish(uint32_t *content_len, int16_t tout_frames);
803uint32_t mw_http_cert_query(
void);
822enum mw_err mw_http_cert_set(uint32_t cert_hash,
const char *cert,
830int16_t mw_http_cleanup(
void);
837char *mw_def_server_get(
void);
849enum mw_err mw_def_server_set(
const char *server_url);
859uint8_t *mw_hrng_get(uint16_t rnd_len);
873enum mw_err mw_ga_endpoint_set(
const char *endpoint,
const char *priv_key);
893enum mw_err mw_ga_key_value_add(
const char **key,
const char **value,
926int16_t mw_ga_request(
enum mw_http_method method,
const char **path,
927 uint8_t num_paths,
const char **key,
const char **value,
928 uint8_t num_kv_pairs, uint32_t *content_len,
929 int16_t tout_frames);
939enum mw_err mw_fw_upgrade(
const char *name);
952static inline enum lsd_status mw_cmd_send(mw_cmd *cmd,
void *ctx,
956 return lsd_send(MW_CTRL_CH, cmd->packet, cmd->data_len + 4,
969static inline enum lsd_status mw_cmd_recv(mw_cmd *rep,
void *ctx,
970 lsd_recv_cb recv_cb) {
971 return lsd_recv(rep->packet,
sizeof(mw_cmd), ctx, recv_cb);
MegaWiFi command message definitions.