MegaWiFi 1.5
MegaWiFi API documentation
megawifi.h File Reference

MegaWiFi API implementation. More...

#include "16c550.h"
#include "mw-msg.h"
#include "lsd.h"

Go to the source code of this file.

Data Structures

struct  mw_ap_data
 Access Point data. More...
 

Macros

#define MW_API_VERSION_MAJOR   1
 API version implemented, major number. More...
 
#define MW_API_VERSION_MINOR   5
 API version implemented, minor number. More...
 
#define MW_COMMAND_TOUT_MS   1000
 Timeout for standard commands in milliseconds. More...
 
#define MW_CONNECT_TOUT_MS   10000
 Timeout for TCP connections. More...
 
#define MW_HTTP_OPEN_TOUT_MS   10000
 Timeout for HTTP open command in milliseconds. More...
 
#define MW_SCAN_TOUT_MS   10000
 Timeout for the AP scan command in milliseconds. More...
 
#define MW_ASSOC_TOUT_MS   20000
 Timeout for the AP associate command in milliseconds. More...
 
#define MW_ASSOC_WAIT_SLEEP_MS   5000
 Time to sleep before waiting for assoc in milliseconds. More...
 
#define MW_UPGRADE_TOUT_MS   180000
 Timeout for upgrade command in milliseconds. More...
 
#define MW_STAT_POLL_MS   250
 Milliseconds between status polls while in wm_ap_assoc_wait() More...
 
#define MW__RESET   UART_MCR__OUT1
 Reset out. More...
 
#define MW__PRG   UART_MCR__OUT2
 Program out. More...
 
#define MW__PD   UART_MCR__DTR
 Power Down out. More...
 
#define MW__DAT   UART_MSR__DSR
 Data request in. More...
 
#define MW_SSID_MAXLEN   32
 Maximum SSID length (including '\0'). More...
 
#define MW_PASS_MAXLEN   64
 Maximum password length (including '\0'). More...
 
#define MW_NTP_POOL_MAXLEN   80
 Maximum length of an NTP pool URI (including '\0'). More...
 
#define MW_NUM_CFG_SLOTS   3
 Number of AP configurations stored to nvflash. More...
 
#define MW_NUM_DNS_SERVERS   2
 Number of DSN servers supported per AP configuration. More...
 
#define MW_FSM_QUEUE_LEN   8
 Length of the FSM queue. More...
 
#define MW_MAX_SOCK   3
 Maximum number of simultaneous TCP connections. More...
 
#define MW_CTRL_CH   0
 Control channel used for LSD protocol. More...
 
#define MW_HTTP_CH   LSD_MAX_CH - 1
 Channel used for HTTP requests and cert sets. More...
 
#define MW_CMD_MIN_BUFLEN   168
 
#define mw_tcp_disconnect(ch)   mw_close(ch)
 Closes a TCP socket. This is an alias of mw_close(). More...
 
#define mw_udp_unset(ch)   mw_close(ch)
 Frees a UDP socket. This is an alias of mw_close(). More...
 
#define mw_module_reset()   do{uart_set_bits(MCR, MW__RESET);}while(0)
 Puts the WiFi module in reset state. More...
 
#define mw_module_start()   do{uart_clr_bits(MCR, MW__RESET);}while(0)
 Releases the module from reset state. More...
 

Enumerations

enum  mw_err
 Error codes for MegaWiFi API functions. More...
 
enum  mw_http_method
 Supported HTTP methods. More...
 
enum  mw_if_type
 Interface type for the mw_bssid_get() function. More...
 

Functions

int16_t mw_init (char *cmd_buf, uint16_t buf_len)
 Module initialization. Must be called once before using any other function. It also initializes de UART. More...
 
static void mw_process (void)
 Processes sends/receives pending data. More...
 
void mw_cmd_data_cb_set (lsd_recv_cb cmd_recv_cb)
 Sets the callback function to be run when network data is received while waiting for a command reply. More...
 
enum mw_err mw_detect (uint8_t *major, uint8_t *minor, char **variant)
 Performs the startup sequence for the WiFi module, and tries detecting it by requesting the version data. More...
 
enum mw_err mw_version_get (uint8_t version[3], char **variant)
 Obtain module version numbers and string. More...
 
uint8_t * mw_bssid_get (enum mw_if_type interface_type)
 Gets the module BSSID (the MAC address) for the specified interface. More...
 
enum mw_err mw_default_cfg_set (void)
 Set default module configuration (AKA factory settings). More...
 
enum mw_err mw_ap_cfg_set (uint8_t slot, const char *ssid, const char *pass, enum mw_phy_type phy_type)
 Set access point configuration (SSID and password). More...
 
enum mw_err mw_ap_cfg_get (uint8_t slot, char **ssid, char **pass, enum mw_phy_type *phy_type)
 Gets access point configuration (SSID and password). More...
 
enum mw_err mw_ip_cfg_set (uint8_t slot, const struct mw_ip_cfg *ip)
 Set IPv4 configuration. More...
 
enum mw_err mw_ip_cfg_get (uint8_t slot, struct mw_ip_cfg **ip)
 Get IPv4 configuration. More...
 
enum mw_err mw_wifi_adv_cfg_set (const struct mw_wifi_adv_cfg *wifi)
 Set advanced WiFi configuration. More...
 
struct mw_wifi_adv_cfgmw_wifi_adv_cfg_get (void)
 Get advanced WiFi configuration. More...
 
enum mw_err mw_cfg_save (void)
 Saves changed configuration parameters to non-volatile memory. More...
 
enum mw_err mw_ip_current (struct mw_ip_cfg **ip)
 Get current IP configuration, of the joined AP. More...
 
int16_t mw_ap_scan (enum mw_phy_type phy_type, char **ap_data, uint8_t *aps)
 Scan for access points. More...
 
int16_t mw_ap_fill_next (const char *ap_data, uint16_t pos, struct mw_ap_data *apd, uint16_t data_len)
 Parses received AP data and fills information of the AP at "pos". Useful to extract AP information from the data obtained by calling mw_ap_scan() function. More...
 
enum mw_err mw_ap_assoc (uint8_t slot)
 Tries associating to an AP. If successful, also configures IPv4. More...
 
enum mw_err mw_ap_assoc_wait (int16_t tout_frames)
 Polls the module status until it reports device is associated to AP or timeout occurs. More...
 
enum mw_err mw_def_ap_cfg (uint8_t slot)
 Sets default AP/IP configuration. More...
 
enum mw_err mw_ap_disassoc (void)
 Dissasociates from a previously associated AP. More...
 
int16_t mw_def_ap_cfg_get (void)
 Gets default AP/IP configuration slot. More...
 
enum mw_err mw_tcp_connect (uint8_t ch, const char *dst_addr, const char *dst_port, const char *src_port)
 Tries establishing a TCP connection with specified server. More...
 
enum mw_err mw_close (uint8_t ch)
 Closes and disconnects a socket from specified channel. More...
 
enum mw_err mw_udp_set (uint8_t ch, const char *dst_addr, const char *dst_port, const char *src_port)
 Configures a UDP socket to send/receive data. More...
 
enum mw_err mw_tcp_bind (uint8_t ch, uint16_t port)
 Binds a socket to a port, and listens to connections on the port. If a connection request is received, it will be automatically accepted. More...
 
enum mw_err mw_sock_conn_wait (uint8_t ch, int16_t tout_frames)
 Polls a socket until it is ready to transfer data. Typical use of this function is after a successful mw_tcp_bind(). More...
 
static enum lsd_status mw_recv (char *buf, int16_t len, void *ctx, lsd_recv_cb recv_cb)
 Receive data, asyncrhonous interface. More...
 
static enum lsd_status mw_udp_reuse_recv (struct mw_reuse_payload *data, int16_t len, void *ctx, lsd_recv_cb recv_cb)
 Receive data using an UDP socket in reuse mode. More...
 
static enum lsd_status mw_udp_reuse_send (uint8_t ch, const struct mw_reuse_payload *data, int16_t len, void *ctx, lsd_send_cb send_cb)
 Send data using a UDP socket in reuse mode. More...
 
static enum lsd_status mw_send (uint8_t ch, const char *data, int16_t len, void *ctx, lsd_send_cb send_cb)
 Sends data through a socket, using a previously allocated channel. Asynchronous interface. More...
 
enum mw_err mw_recv_sync (uint8_t *ch, char *buf, int16_t *buf_len, int16_t tout_frames)
 Receive data, syncrhonous interface. More...
 
enum mw_err mw_send_sync (uint8_t ch, const char *data, uint16_t len, int16_t tout_frames)
 Sends data through a socket, using a previously allocated channel. Synchronous interface. More...
 
union mw_msg_sys_statmw_sys_stat_get (void)
 Get system status. More...
 
enum mw_sock_stat mw_sock_stat_get (uint8_t ch)
 Get socket status. More...
 
enum mw_err mw_sntp_cfg_set (const char *tz_str, const char *server[3])
 Configure SNTP parameters and timezone. More...
 
enum mw_err mw_sntp_cfg_get (char **tz_str, char *server[3])
 Get SNTP parameters and timezone configuration. More...
 
char * mw_date_time_get (uint32_t dt_bin[2])
 Get date and time. More...
 
enum mw_err mw_flash_id_get (uint8_t *man_id, uint16_t *dev_id)
 Get the identifiers of the flash chip in the WiFi module. More...
 
enum mw_err mw_flash_sector_erase (uint16_t sect)
 Erase a 4 KiB Flash sector. Every byte of an erased sector will be read as 0xFF. More...
 
enum mw_err mw_flash_write (uint32_t addr, uint8_t *data, uint16_t data_len)
 Write data to specified flash address. More...
 
uint8_t * mw_flash_read (uint32_t addr, uint16_t data_len)
 Read data from specified flash address. More...
 
enum mw_err mw_gamertag_set (uint8_t slot, const struct mw_gamertag *gamertag)
 Set gamertag information for one slot. More...
 
struct mw_gamertagmw_gamertag_get (uint8_t slot)
 Get gamertag information for one slot. More...
 
enum mw_err mw_log (const char *msg)
 Write a message to the WiFi module log trace. More...
 
enum mw_err mw_factory_settings (void)
 Set factory default configuration. More...
 
void mw_power_off (void)
 Powers off the WiFi module. More...
 
void mw_sleep (int16_t frames)
 Sleep the specified amount of frames. More...
 
enum mw_err mw_http_url_set (const char *url)
 Set URL for HTTP requests. More...
 
enum mw_err mw_http_method_set (enum mw_http_method method)
 Set method for HTTP requests. More...
 
enum mw_err mw_http_header_add (const char *key, const char *value)
 Add an HTTP header. More...
 
enum mw_err mw_http_header_del (const char *key)
 Delete a previously added HTTP header. More...
 
enum mw_err mw_http_open (uint32_t content_len)
 Open HTTP connection. More...
 
int16_t mw_http_finish (uint32_t *content_len, int16_t tout_frames)
 Finish an opened HTTP request. More...
 
uint32_t mw_http_cert_query (void)
 Query the X.509 hash of the installed PEM certificate. More...
 
enum mw_err mw_http_cert_set (uint32_t cert_hash, const char *cert, uint16_t cert_len)
 Set the PEM certificate to use on HTTPS requests. More...
 
int16_t mw_http_cleanup (void)
 Clean-up an HTTP request, freeing associated resources. More...
 
char * mw_def_server_get (void)
 Get the default server used for MegaWiFi connections. More...
 
enum mw_err mw_def_server_set (const char *server_url)
 Set the default server used for MegaWiFi connections. More...
 
uint8_t * mw_hrng_get (uint16_t rnd_len)
 Get random numbers. More...
 
enum mw_err mw_ga_endpoint_set (const char *endpoint, const char *priv_key)
 Set endpoint for Game API. More...
 
enum mw_err mw_ga_key_value_add (const char **key, const char **value, uint16_t num_pairs)
 Add parameters to the Game API request in key/value format. More...
 
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. More...
 
enum mw_err mw_fw_upgrade (const char *name)
 Over-The-Air upgrade WiFi module firmware. More...
 
static enum lsd_status mw_cmd_send (mw_cmd *cmd, void *ctx, lsd_send_cb send_cb)
 Send a command to the WiFi module. More...
 
static enum lsd_status mw_cmd_recv (mw_cmd *rep, void *ctx, lsd_recv_cb recv_cb)
 Try obtaining a reply to a command. More...
 

Detailed Description

MegaWiFi API implementation.

Definition in file megawifi.h.