#include <nitroWiFi/soc.h>
#define SOC_VENDOR_NINTENDO 0x0000 // Nintendo TCP/IP stack
#define SOC_VERSION 0x0100 // Version 1.0
// Name for SOCConfig.alloc() and SOCConfig.free()
#define SOC_MEM_TCP_INFO 0
#define SOC_MEM_TCP_SENDBUF 1
#define SOC_MEM_TCP_RECVBUF 2
#define SOC_MEM_UDP_INFO 3
#define SOC_MEM_UDP_RECVBUF 4
#define SOC_MEM_TIMEWAITBUF 5
#define SOC_MEM_REASSEMBLYBUF 6
// Flags for SOCConfig{}.flag
#define SOC_FLAG_DHCP 0x0001 // Use DHCP
#define SOC_FLAG_PPPoE 0x0002 // Use PPPoE
typedef struct SOCConfig
{
u16 vendor; // SOC_VENDOR_NINTENDO
u16 version; // SOC_VERSION
//
// vendor-specific section
//
void* (* alloc )(u32 name, s32 size);
void (* free ) (u32 name, void* ptr, s32 size);
u32 flag; // ORed SOC_FLAG_*
SOCInAddr addr;
SOCInAddr netmask;
SOCInAddr router;
SOCInAddr dns1;
SOCInAddr dns2;
s32 timeWaitBuffer; // time wait buffer size
s32 reassemblyBuffer; // reassembly buffer size
s32 mtu; // maximum transmission unit size
// TCP
s32 rwin; // default TCP receive window size (default 2 x MSS)
SOCTime r2; // default TCP total retransmit timeout value
// PPP
const char* peerid;
const char* passwd;
// PPPoE
const char* serviceName; // UTF-8 string
// DHCP
const char* hostName; // DHCP host name
s32 rdhcp; // DHCP retransmit times
// UDP
s32 udpSendBuff; // default UDP send buffer size
s32 udpRecvBuff; // defualt UDP receive buffer size
} SOCConfig;
SOC_VENDOR_NINTENDO
implementation: When the socket layer requests a new memory block, the alloc
function is called. The name
argument is one of SOC_MEM_*
that indicates the memory block type used. The alloc
function must allocate a memory block of size
bytes and return a pointer to the allocated memory block. If the stack layer can free the allocated memory block, the free
function is called. The free
function must release the memory block pointed to by the ptr
argument. The other arguments (name
and size
) are the same as those in the alloc
function. Mutual exclusion between threads must be implemented in the alloc
and free
functions. alloc
functions and free
functions are not called directly from callback functions, so a thread-level synchronous primitive such as OS_LockMutex()
can be used.
Member | Description | ||
---|---|---|---|
vendor |
Designates the vendor name. This member is included for compatibility issues, but it is ignored in actual use of the function. | ||
version |
Designates the version. This member is included for compatibility issues, but it is ignored in actual use of the function. | ||
alloc |
This function allocates memory for use inside the project. | ||
free |
This function deallocates memory used inside the project. | ||
flags |
Designates the host configuration method.
|
dns1 |
Designates a DNS server address to a structure member. This structure members is used by SOC_GetHostByAddr() and SOC_GetHostByName() . |
dns2 |
Designates a DNS server address to a structure member. This structure members is used by SOC_GetHostByAddr() and SOC_GetHostByName() . |
||
timeWaitBuffer |
Designates the size of the time wait buffer. This member is included for compatibility, but is ignored. | ||
reassemblyBuffer |
Designates the size of the fragment packet reassembly buffer. This member is included for compatibility, but is ignored. |
||
mtu |
Designates the default interface MTU size. If a 0 is designated here, the default interface MTU size is set. Also, when the host is configured with DHCP, the host will communicate with the DHCP server to adjust the MTU size. In this case, an MTU size that is smaller than the specified size could be used. The actual MTU size can be found with SOC_GetMtu() . |
||
rwin |
Designates the size of the default TCP reception window. If 0 is specified, it will be set to 2x MSS (the maximum segment size). | ||
r2 |
Designates the default total retransfer timeout time after the TCP connection is established. This member is included for compatibility, but is ignored. |
||
serviceName |
Designates the service name to be used when connecting with PPPoE. This member is included for compatibility, but is ignored. |
||
hostName |
Designates the host name of the client to be used when connecting with DHCP. This member is included for compatibility, but is ignored. |
||
rdhcp |
Configures the number of times to resend a DHCP packet. This member is included for compatibility, but is ignored. |
||
udpSendBuff |
Designates the default UDP send buffer size. This member is included for compatibility, but is ignored. |
||
udpRecvBuff |
Designates the default UDP receive buffer size. This member is included for compatibility, but is ignored. |
SOC_GetHostByAddr
, SOC_GetHostByName
, SOC_GetMtu
, SOC_Startup
, SOCInAddr
09/13/2005 Initial version.