SGDK
A free and open development kit for the Sega Mega Drive
Loading...
Searching...
No Matches
mw-msg.h
Go to the documentation of this file.
1/************************************************************************/
18#ifndef _MW_MSG_H_
19#define _MW_MSG_H_
20
21#include "types.h"
22#include "sys.h"
23
25#define MW_MSG_MAX_BUFLEN 512
26
28#define MW_CMD_HEADLEN (2 * sizeof(uint16_t))
29
31#define MW_CMD_MAX_BUFLEN (MW_MSG_MAX_BUFLEN - MW_CMD_HEADLEN)
32
34#define MW_SSID_MAXLEN 32
36#define MW_PASS_MAXLEN 64
37
39#define MW_GT_NICKNAME_MAX 32
41#define MW_GT_SECURITY_MAX 32
43#define MW_GT_TAGLINE_MAX 32
45#define MW_GT_AVATAR_WIDTH 32
47#define MW_GT_AVATAR_HEIGHT 48
49#define MW_GT_TG_TOKEN_MAX 64
50
60// Reserved
69// Reserved
72// Reserved (for setting socket options)
101// Reserved
112 MW_CMD_ERROR = 255
113};
114
130
135 MW_PHY_11BGN = 7
136};
137
139union ip_addr {
140 uint32_t addr;
141 uint8_t byte[4];
142};
143
146 char dst_port[6];
147 char src_port[6];
148 uint8_t channel;
150 char dst_addr[];
151};
152
154struct mw_ip_cfg {
155 union ip_addr addr;
156 union ip_addr mask;
158 union ip_addr dns1;
159 union ip_addr dns2;
160};
161
165// string will not be NULL terminated.
172
175 uint8_t cfg_slot;
176 uint8_t reserved[3];
177 struct mw_ip_cfg ip;
178};
179
182 uint16_t up_delay;
183 int8_t tz;
184 uint8_t dst;
188};
189
192 uint32_t dt_bin[2];
194 char dt_str[MW_CMD_MAX_BUFLEN - 2 * sizeof(uint32_t)];
195};
196
199 uint32_t addr;
201 uint8_t data[MW_CMD_MAX_BUFLEN - sizeof(uint32_t)];
202};
203
206 uint32_t addr;
207 uint16_t len;
208};
209
212 uint32_t reserved;
213 uint16_t port;
214 uint8_t channel;
215};
216
233
251
254 uint8_t slot;
255 uint8_t reserved[3];
257};
258
269
277
280 uint32_t st_flags;
281 struct {
282#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
284 uint8_t online:1;
285 uint8_t cfg_ok:1;
286 uint8_t dt_ok:1;
287 uint8_t cfg:2;
288 uint16_t reserved:3;
289 uint16_t ch_ev:16;
290#else
291 uint16_t ch_ev:16;
292 uint16_t reserved:3;
293 uint8_t cfg:2;
294 uint8_t dt_ok:1;
295 uint8_t cfg_ok:1;
296 uint8_t online:1;
297 enum mw_state sys_stat:8;
298#endif
299 };
300};
301
304 uint16_t device;
305 uint8_t manufacturer;
306};
307
310 uint8_t method;
311 uint8_t num_paths;
312 uint8_t num_kv_pairs;
313 char req[];
314};
315
317 uint8_t retries;
318 char domain[64];
319};
320
322 uint32_t transmitted;
323 uint32_t received;
324 uint32_t total_time_ms;
325};
326
328 uint16_t total;
329 uint16_t len;
330 char *payload;
331};
332
334typedef union mw_cmd {
335 char packet[MW_CMD_MAX_BUFLEN + 2 * sizeof(uint16_t)];
336 struct {
337 uint16_t cmd;
338 uint16_t data_len;
339 // If datalen is nonzero, additional command data goes here until
340 // filling datalen bytes.
341 union {
342 uint8_t ch;
346 uint16_t w_data[MW_CMD_MAX_BUFLEN / sizeof(uint16_t)];
348 uint32_t dw_data[MW_CMD_MAX_BUFLEN / sizeof(uint32_t)];
366 uint16_t fl_sect;
367 uint32_t fl_id;
368 uint16_t rnd_len;
369 };
370 };
372
380 uint32_t remote_ip;
381 uint16_t remote_port;
384};
385
386#endif //_MW_MSG_H_
387
389
mw_sock_stat
Socket status.
Definition mw-msg.h:271
#define MW_CMD_MAX_BUFLEN
Maximum data length contained inside command buffer.
Definition mw-msg.h:31
enum PACKED mw_command
Supported commands.
Definition mw-msg.h:52
#define MW_GT_AVATAR_HEIGHT
Gamertag avatar graphick height in pixels.
Definition mw-msg.h:47
#define MW_PASS_MAXLEN
Maximum password length (including '\0').
Definition mw-msg.h:36
#define MW_GT_TAGLINE_MAX
Gamertag tagline maximum length.
Definition mw-msg.h:43
#define MW_GT_SECURITY_MAX
Gamertag security maximum length.
Definition mw-msg.h:41
#define MW_GT_AVATAR_WIDTH
Gamertag avatar graphick width in pixels.
Definition mw-msg.h:45
#define MW_SSID_MAXLEN
Maximum SSID length (including '\0').
Definition mw-msg.h:34
#define MW_GT_NICKNAME_MAX
Gamertag nickname maximum length.
Definition mw-msg.h:39
#define MW_GT_TG_TOKEN_MAX
Telegram token maximum length.
Definition mw-msg.h:49
enum PACKED mw_phy_type
WiFi PHY configuration for the connection to the AP.
Definition mw-msg.h:132
mw_state
MwState Possible states of the system state machine.
Definition mw-msg.h:260
enum PACKED mw_security
Supported security protocols.
Definition mw-msg.h:116
@ MW_SOCK_NONE
Unused socket.
Definition mw-msg.h:272
@ MW_SOCK_TCP_EST
TCP socket, connection established.
Definition mw-msg.h:274
@ MW_SOCK_UDP_READY
UDP socket ready for sending/receiving.
Definition mw-msg.h:275
@ MW_SOCK_TCP_LISTEN
Socket bound and listening.
Definition mw-msg.h:273
@ MW_ST_INIT
Initialization state.
Definition mw-msg.h:261
@ MW_ST_AP_JOIN
Trying to join an access point.
Definition mw-msg.h:263
@ MW_ST_IDLE
Idle state, until connected to an AP.
Definition mw-msg.h:262
@ MW_ST_MAX
Limit number for state machine.
Definition mw-msg.h:267
@ MW_ST_READY
Connected to The Internet.
Definition mw-msg.h:265
@ MW_ST_SCAN
Scanning access points.
Definition mw-msg.h:264
@ MW_ST_TRANSPARENT
Transparent communication state.
Definition mw-msg.h:266
MW_CMD_GAME_ENDPOINT_SET
Set game API endpoint.
Definition mw-msg.h:109
MW_CMD_WIFI_ADV_SET
Set advanced WiFi parameters.
Definition mw-msg.h:105
MW_CMD_GAMERTAG_SET
Configures a gamertag.
Definition mw-msg.h:87
MW_SEC_OPEN
Open WiFi network.
Definition mw-msg.h:117
MW_CMD_HTTP_CLEANUP
Clean request data.
Definition mw-msg.h:100
MW_CMD_ECHO
Echo data.
Definition mw-msg.h:55
MW_CMD_SERVER_URL_SET
Set the main server URL.
Definition mw-msg.h:103
MW_SEC_WEP
WEP security.
Definition mw-msg.h:118
MW_CMD_IP_CFG
Configure IPv4.
Definition mw-msg.h:61
MW_CMD_HTTP_METHOD_SET
Set HTTP request method.
Definition mw-msg.h:93
MW_CMD_UPGRADE_LIST
Get firmware upgrade versions.
Definition mw-msg.h:107
MW_SEC_WPA2_WPA3_PSK
WPA2 or WPA3 security.
Definition mw-msg.h:124
MW_CMD_DEF_AP_CFG
Set default AP configuration.
Definition mw-msg.h:63
MW_SEC_OWE
OWE security.
Definition mw-msg.h:126
MW_CMD_GAME_REQUEST
Perform a game API request.
Definition mw-msg.h:111
MW_SEC_WPA3_PSK
WPA3 PSK security.
Definition mw-msg.h:123
MW_CMD_HTTP_OPEN
Open HTTP request.
Definition mw-msg.h:98
MW_CMD_SLEEP
Set the module to sleep mode.
Definition mw-msg.h:91
MW_CMD_OK
OK command reply.
Definition mw-msg.h:53
MW_CMD_UPGRADE_PERFORM
Start firmware upgrade.
Definition mw-msg.h:108
MW_CMD_GAMERTAG_GET
Gets a stored gamertag.
Definition mw-msg.h:88
MW_CMD_LOG
Write a message to log trace.
Definition mw-msg.h:89
MW_CMD_SNTP_CFG
Configure SNTP service.
Definition mw-msg.h:75
MW_CMD_BSSID_GET
Gets the WiFi BSSID.
Definition mw-msg.h:86
MW_CMD_NV_CFG_SAVE
Save non-volatile config.
Definition mw-msg.h:106
MW_SEC_WPA2_ENTERPRISE
WPA2 Enterprise security.
Definition mw-msg.h:122
MW_SEC_WPA2_PSK
WPA2 PSK security.
Definition mw-msg.h:120
MW_CMD_PING
Ping host.
Definition mw-msg.h:74
MW_CMD_HTTP_CERT_QUERY
Query the X.509 hash of cert.
Definition mw-msg.h:94
MW_CMD_UDP_SET
Configure UDP socket.
Definition mw-msg.h:71
MW_PHY_11B
Legacy, do not use unless necessary.
Definition mw-msg.h:133
MW_CMD_SERVER_URL_GET
Get the main server URL.
Definition mw-msg.h:102
MW_CMD_HTTP_URL_SET
Set HTTP URL for request.
Definition mw-msg.h:92
MW_SEC_WPA_PSK
WPA PSK security.
Definition mw-msg.h:119
MW_CMD_AP_CFG
Configure access point.
Definition mw-msg.h:57
MW_CMD_TCP_BIND
Bind TCP socket to port.
Definition mw-msg.h:68
MW_CMD_WIFI_ADV_GET
Get advanced WiFi parameters.
Definition mw-msg.h:104
MW_CMD_HTTP_HDR_ADD
Add HTTP request header.
Definition mw-msg.h:96
MW_CMD_TCP_CON
Connect TCP socket.
Definition mw-msg.h:67
MW_CMD_SNTP_CFG_GET
Get SNTP configuration.
Definition mw-msg.h:76
MW_CMD_GAME_KEYVAL_ADD
Add key/value appended to requests.
Definition mw-msg.h:110
MW_CMD_FLASH_ID
Get WiFi flash chip identifiers.
Definition mw-msg.h:82
MW_CMD_DT_SET
Set date and time.
Definition mw-msg.h:78
MW_CMD_DEF_CFG_SET
Set default configuration.
Definition mw-msg.h:84
MW_CMD_AP_LEAVE
Leave previously joined AP.
Definition mw-msg.h:66
MW_CMD_SOCK_STAT
Get socket status.
Definition mw-msg.h:73
MW_CMD_FLASH_READ
Read from WiFi module flash.
Definition mw-msg.h:80
MW_CMD_HTTP_CERT_SET
Set HTTPS certificate.
Definition mw-msg.h:95
MW_SEC_WPA_WPA2_PSK
WPA or WPA2 security.
Definition mw-msg.h:121
MW_CMD_CLOSE
Disconnect and free TCP/UDP socket.
Definition mw-msg.h:70
MW_CMD_FLASH_WRITE
Write to WiFi module flash.
Definition mw-msg.h:79
MW_PHY_11BG
No 802.11n compatibility.
Definition mw-msg.h:134
MW_CMD_HTTP_FINISH
Finish HTTP request.
Definition mw-msg.h:99
MW_CMD_AP_SCAN
Scan for access points.
Definition mw-msg.h:56
MW_CMD_SYS_STAT
Get system status.
Definition mw-msg.h:83
MW_CMD_IP_CFG_GET
Get IPv4 configuration.
Definition mw-msg.h:62
MW_CMD_FLASH_ERASE
Erase sector from WiFi flash.
Definition mw-msg.h:81
MW_CMD_VERSION
Get firmware version.
Definition mw-msg.h:54
MW_SEC_WAPI_PSK
WAPI PSK security.
Definition mw-msg.h:125
MW_CMD_FACTORY_RESET
Set default configuratioSet default configuration.
Definition mw-msg.h:90
MW_CMD_DEF_AP_CFG_GET
Get default AP configuration.
Definition mw-msg.h:64
MW_CMD_DATETIME
Get date and time.
Definition mw-msg.h:77
MW_CMD_AP_JOIN
Join access point.
Definition mw-msg.h:65
MW_SEC_UNKNOWN
Unknown security.
Definition mw-msg.h:127
MW_CMD_IP_CURRENT
Get current IPv4 configuration.
Definition mw-msg.h:59
MW_CMD_HTTP_HDR_DEL
Delete HTTP request header.
Definition mw-msg.h:97
MW_CMD_HRNG_GET
Gets random numbers.
Definition mw-msg.h:85
MW_CMD_AP_CFG_GET
Get access point configuration.
Definition mw-msg.h:58
Flash chip identifiers.
Definition mw-msg.h:303
uint8_t manufacturer
Manufacturer ID.
Definition mw-msg.h:305
uint16_t device
Device ID.
Definition mw-msg.h:304
Game API request.
Definition mw-msg.h:309
uint8_t num_paths
Number of paths.
Definition mw-msg.h:311
char req[]
Request data.
Definition mw-msg.h:313
uint8_t num_kv_pairs
Number of key/value pairs.
Definition mw-msg.h:312
uint8_t method
Request method.
Definition mw-msg.h:310
Gamertag set message data.
Definition mw-msg.h:253
uint8_t reserved[3]
Reserved, set to 0.
Definition mw-msg.h:255
uint8_t slot
Slot to store gamertag (0 to 2)
Definition mw-msg.h:254
struct mw_gamertag gamertag
Gamertag to set.
Definition mw-msg.h:256
Gamertag data.
Definition mw-msg.h:235
uint8_t avatar_pal[32]
Avatar image palette.
Definition mw-msg.h:249
int id
Unique gamertag id.
Definition mw-msg.h:237
char tg_token[MW_GT_TG_TOKEN_MAX]
Telegram token.
Definition mw-msg.h:245
char security[MW_GT_SECURITY_MAX]
User security string.
Definition mw-msg.h:241
char nickname[MW_GT_NICKNAME_MAX]
User nickname.
Definition mw-msg.h:239
char tagline[MW_GT_TAGLINE_MAX]
User defined text tag.
Definition mw-msg.h:243
uint8_t avatar_tiles[MW_GT_AVATAR_WIDTH *MW_GT_AVATAR_HEIGHT/2]
Avatar image tiles.
Definition mw-msg.h:247
IP configuration parameters.
Definition mw-msg.h:154
union ip_addr gateway
Gateway IP address in binary format.
Definition mw-msg.h:157
union ip_addr dns2
DNS server 2 IP address in binary format.
Definition mw-msg.h:159
union ip_addr mask
Subnet mask in binary IP format.
Definition mw-msg.h:156
union ip_addr addr
Host IP address in binary format.
Definition mw-msg.h:155
union ip_addr dns1
DNS server 1 IP address in binary format.
Definition mw-msg.h:158
AP configuration message.
Definition mw-msg.h:166
enum mw_phy_type phy_type
PHY type bitmask.
Definition mw-msg.h:168
uint8_t cfg_num
Configuration number.
Definition mw-msg.h:167
char ssid[MW_SSID_MAXLEN]
SSID string.
Definition mw-msg.h:169
char pass[MW_PASS_MAXLEN]
Password string.
Definition mw-msg.h:170
Bind message data.
Definition mw-msg.h:211
uint32_t reserved
Reserved, set to 0.
Definition mw-msg.h:212
uint16_t port
Port to bind to.
Definition mw-msg.h:213
uint8_t channel
Channel used for the socket bound to port.
Definition mw-msg.h:214
Date and time message.
Definition mw-msg.h:191
char dt_str[MW_CMD_MAX_BUFLEN - 2 *sizeof(uint32_t)]
Date and time in textual format.
Definition mw-msg.h:194
uint32_t dt_bin[2]
Definition mw-msg.h:192
Flash memory address and data.
Definition mw-msg.h:198
uint8_t data[MW_CMD_MAX_BUFLEN - sizeof(uint32_t)]
Data associated to the address.
Definition mw-msg.h:201
uint32_t addr
Definition mw-msg.h:199
Flash memory block.
Definition mw-msg.h:205
uint16_t len
Length of the block.
Definition mw-msg.h:207
uint32_t addr
Start address.
Definition mw-msg.h:206
TCP/UDP address message.
Definition mw-msg.h:145
uint8_t channel
Definition mw-msg.h:148
char dst_port[6]
TCP destination port string.
Definition mw-msg.h:146
char src_port[6]
TCP source port string.
Definition mw-msg.h:147
char dst_addr[]
Data payload.
Definition mw-msg.h:150
IP configuration message.
Definition mw-msg.h:174
uint8_t cfg_slot
Configuration slot.
Definition mw-msg.h:175
uint8_t reserved[3]
Reserved (set to 0)
Definition mw-msg.h:176
struct mw_ip_cfg ip
IPv4 configuration data.
Definition mw-msg.h:177
SNTP and timezone configuration.
Definition mw-msg.h:181
uint16_t up_delay
Update delay in seconds (min: 15)
Definition mw-msg.h:182
int8_t tz
Timezone (from -11 to 13)
Definition mw-msg.h:183
char servers[MW_CMD_MAX_BUFLEN - 4]
Definition mw-msg.h:187
uint8_t dst
Definition mw-msg.h:184
Definition mw-msg.h:316
Definition mw-msg.h:321
Payload with remote IP and port.
Definition mw-msg.h:379
uint32_t remote_ip
IP of the remote end.
Definition mw-msg.h:380
uint16_t remote_port
Definition mw-msg.h:381
char payload[MW_CMD_MAX_BUFLEN - 4 - 2]
Data payload.
Definition mw-msg.h:383
Definition mw-msg.h:327
Advanced WiFi configuration.
Definition mw-msg.h:218
uint32_t rx_max_single_pkt_len
WiFi RX max single packet size.
Definition mw-msg.h:224
uint8_t reserved[3]
Unused, set to 0.
Definition mw-msg.h:231
uint8_t ampdu_rx_enable
WiFi AMPDU RX feature enable flag.
Definition mw-msg.h:220
uint8_t rx_buf_num
WiFi RX buffer number.
Definition mw-msg.h:227
uint32_t rx_buf_len
WiFi RX buffer size.
Definition mw-msg.h:225
uint8_t left_continuous_rx_buf_num
WiFi Rx left continuous rx buffer number.
Definition mw-msg.h:229
uint32_t rx_ampdu_buf_len
WiFi AMPDU RX buffer length.
Definition mw-msg.h:223
uint8_t amsdu_rx_enable
WiFi AMSDU RX feature enable flag.
Definition mw-msg.h:226
uint8_t qos_enable
WiFi QOS feature enable flag.
Definition mw-msg.h:219
uint8_t rx_pkt_num
WiFi RX packet number.
Definition mw-msg.h:228
uint8_t rx_ba_win
WiFi Block Ack RX window size.
Definition mw-msg.h:221
uint8_t rx_ampdu_buf_num
WiFi AMPDU RX buffer number.
Definition mw-msg.h:222
uint8_t tx_buf_num
WiFi TX buffer number.
Definition mw-msg.h:230
Entry point unit / Interrupt callback / System.
#define PACKED
Macro for packing structures and enumerates.
Definition sys.h:56
Types definition.
IPv4 address.
Definition mw-msg.h:139
uint32_t addr
IP address in 32 bit form.
Definition mw-msg.h:140
Command sent to system FSM.
Definition mw-msg.h:334
struct mw_msg_flash_range fl_range
Flash memory range.
Definition mw-msg.h:355
struct mw_gamertag_set_msg gamertag_set
Gamertag set.
Definition mw-msg.h:361
struct mw_msg_date_time date_time
Date and time message.
Definition mw-msg.h:353
struct mw_msg_sntp_cfg sntp_cfg
SNTP client configuration.
Definition mw-msg.h:352
struct mw_ping_request ping
Ping message.
Definition mw-msg.h:357
uint16_t rnd_len
Length of the random buffer to fill.
Definition mw-msg.h:368
uint16_t fl_sect
Flash sector.
Definition mw-msg.h:366
struct mw_msg_in_addr in_addr
Internet address.
Definition mw-msg.h:349
uint32_t fl_id
Flash IDs.
Definition mw-msg.h:367
uint16_t w_data[MW_CMD_MAX_BUFLEN/sizeof(uint16_t)]
RAW data in uint16_t format.
Definition mw-msg.h:346
struct mw_wifi_adv_cfg wifi_adv_cfg
Advanced WiFi configuration.
Definition mw-msg.h:363
struct mw_gamertag gamertag_get
Gamertag get.
Definition mw-msg.h:362
struct mw_flash_id flash_id
Flash chip identifiers.
Definition mw-msg.h:364
uint8_t ch
Definition mw-msg.h:342
struct mw_msg_flash_data fl_data
Flash memory data.
Definition mw-msg.h:354
struct mw_msg_bind bind
Bind message.
Definition mw-msg.h:356
uint16_t data_len
Data length.
Definition mw-msg.h:338
uint16_t cmd
Command code.
Definition mw-msg.h:337
char packet[MW_CMD_MAX_BUFLEN+2 *sizeof(uint16_t)]
Packet raw data.
Definition mw-msg.h:335
struct mw_msg_ip_cfg ip_cfg
IP configuration.
Definition mw-msg.h:351
uint32_t dw_data[MW_CMD_MAX_BUFLEN/sizeof(uint32_t)]
RAW data in uint32_t format.
Definition mw-msg.h:348
struct mw_ping_response ping_response
Ping message.
Definition mw-msg.h:358
struct mw_ga_request ga_request
Game API request.
Definition mw-msg.h:365
union mw_msg_sys_stat sys_stat
System status.
Definition mw-msg.h:360
uint8_t data[MW_CMD_MAX_BUFLEN]
RAW data in uint8_t format.
Definition mw-msg.h:344
struct mw_upgrade_list_response ug_list_response
Ping message.
Definition mw-msg.h:359
struct mw_msg_ap_cfg ap_cfg
Access Point configuration.
Definition mw-msg.h:350
System status.
Definition mw-msg.h:279
enum mw_state sys_stat
System status.
Definition mw-msg.h:283
uint16_t reserved
Reserved flags.
Definition mw-msg.h:288
uint8_t dt_ok
Date and time synchronized at least once.
Definition mw-msg.h:286
uint8_t online
Module is connected to the Internet.
Definition mw-msg.h:284
uint16_t ch_ev
Channel flags with the pending event.
Definition mw-msg.h:289
uint8_t cfg
Default network configuration.
Definition mw-msg.h:287
uint32_t st_flags
Accesses all the flags at once.
Definition mw-msg.h:280
uint8_t cfg_ok
Configuration OK.
Definition mw-msg.h:285