Minicraft3DS/source/Network.h

63 lines
1.5 KiB
C

#pragma once
#include <3ds.h>
#define NETWORK_WLANCOMMID 0x11441850
#define NETWORK_PASSPHRASE "Minicraft3DS localplay passphrase"
#define NETWORK_CHANNEL 1
#define NETWORK_RECVBUFSIZE UDS_DEFAULT_RECVBUFSIZE
#define NETWORK_MAXPLAYERS UDS_MAXNODES
//packet type ids
#define PACKET_REQUEST_MAPDATA 1
#define PACKET_MAPDATA 2
//TODO: Every other packet struct should start with a u8 type to match this
typedef struct {
u8 type;
} packetAnalyze;
typedef struct {
u8 type;
u8 level;
} packetRequestMapData;
typedef struct {
u8 type;
u8 level;
u8 offset; //-> data is at offset*128 to offset*128+127
u8 map[128];
u8 data[128];
} packetMapData;
typedef struct {
union {
packetAnalyze analyze;
packetRequestMapData requestMapData;
packetMapData mapData;
};
} networkPacket;
void networkInit();
void networkExit();
bool networkAvailable();
bool networkHost();
void networkScan();
int networkGetScanCount();
bool networkGetScanName(char *name, int pos); //TODO: Name should be long enough to handle all allowed names (char[256])
bool networkConnect(int pos);
void networkDisconnect();
bool networkConnected();
bool networkIsServer();
void networkSend(networkPacket *packet, size_t size); //TODO: Should this be a pointer? Calling function needs to cleanup itself
void networkSendTo(networkPacket *packet, size_t size, u16 reciever); //TODO: Should this be a pointer? Calling function needs to cleanup itself
void networkRecieve(); //TODO: Should recieve actually handle all the packets or just return them?