32typedef struct pbuf PBuf;
33typedef struct netif NetIF;
36static struct netif NIF;
37static struct pbuf *TxHead, *TxTail;
39int ps2ip_getconfig(
char* pszName,
t_ip_info* pInfo)
46 memset(pInfo,0,
sizeof(*pInfo));
49 strcpy(pInfo->netif_name,pszName);
50 pInfo->ipaddr.s_addr=pNetIF->
ip_addr.addr;
51 pInfo->netmask.s_addr=pNetIF->netmask.addr;
52 pInfo->gw.s_addr=pNetIF->gw.addr;
54 memcpy(pInfo->hw_addr,pNetIF->
hwaddr,
sizeof(pInfo->hw_addr));
57 struct dhcp *dhcp = netif_dhcp_data(pNetIF);
59 if ((dhcp != NULL) && (dhcp->state != DHCP_STATE_OFF))
61 pInfo->dhcp_enabled=1;
62 pInfo->dhcp_status=dhcp->state;
66 pInfo->dhcp_enabled=0;
67 pInfo->dhcp_status=DHCP_STATE_OFF;
71 pInfo->dhcp_enabled=0;
77int ps2ip_setconfig(
const t_ip_info* pInfo)
87 struct dhcp *dhcp = netif_dhcp_data(pNetIF);
91 if (pInfo->dhcp_enabled)
93 if ((dhcp == NULL) || (dhcp->state == DHCP_STATE_OFF))
96 netif_set_ipaddr(pNetIF,(IPAddr*)&pInfo->ipaddr);
97 netif_set_netmask(pNetIF,(IPAddr*)&pInfo->netmask);
98 netif_set_gw(pNetIF,(IPAddr*)&pInfo->gw);
106 if ((dhcp != NULL) && (dhcp->state != DHCP_STATE_OFF))
109 dhcp_release(pNetIF);
115 netif_set_ipaddr(pNetIF,(IPAddr*)&pInfo->ipaddr);
116 netif_set_netmask(pNetIF,(IPAddr*)&pInfo->netmask);
117 netif_set_gw(pNetIF,(IPAddr*)&pInfo->gw);
121 netif_set_ipaddr(pNetIF,(IPAddr*)&pInfo->ipaddr);
122 netif_set_netmask(pNetIF,(IPAddr*)&pInfo->netmask);
123 netif_set_gw(pNetIF,(IPAddr*)&pInfo->gw);
129static void EnQTxPacket(
struct pbuf *tx)
145static err_t SMapLowLevelOutput(
struct netif* pNetIF,
struct pbuf* pOutput)
165 EnQTxPacket(pOutput);
172static void LinkStateUp(
void)
177static void LinkStateDown(
void)
182static void *AllocRxPacket(
unsigned int size,
void **
payload)
192static void ReallocRxPacket(
void *packet,
unsigned int size)
194 pbuf_realloc((
struct pbuf *)packet, size);
197static void FreeRxPacket(
void *packet)
202static void EnQRxPacket(
void *packet)
204 ps2ip_input(packet, &NIF);
207static int NextTxPacket(
void **
payload)
221static void DeQTxPacket(
void)
232 if(TxTail == TxHead) {
237 TxTail = TxTail->
next;
249static int AfterTxPacket(
void **
payload)
253 if(TxTail != NULL && TxTail->
next != NULL)
263static void InitDone(
void* pvArg)
265 dbgprintf(
"InitDone: TCPIP initialized\n");
270static err_t SMapIFInit(
struct netif* pNetIF)
277 pNetIF->
output=ðarp_output;
285 dbgprintf(
"MAC address : %02d:%02d:%02d:%02d:%02d:%02d\n",pNetIF->
hwaddr[0],pNetIF->
hwaddr[1],pNetIF->
hwaddr[2],
291err_t ps2ip_input(PBuf* pInput, NetIF* pNetIF)
295 if((result = pNetIF->
input(pInput, pNetIF)) !=
ERR_OK)
301static inline void InitializeLWIP(
void)
305 dbgprintf(
"PS2IP: Module Loaded.\n");
308 dbgprintf(
"PS2IP: Calling tcpip_init\n");
314 dbgprintf(
"PS2IP: System Initialised\n");
318extern void _ps2sdk_ps2ipee_init(
void);
319extern void _ps2sdk_ps2ipee_deinit(
void);
341 NetManRegisterNetworkStack(&stack);
344 _ps2sdk_ps2ipee_init();
349void ps2ipDeinit(
void){
350 _ps2sdk_ps2ipee_deinit();
352 NetManUnregisterNetworkStack();
#define NETIF_MAX_HWADDR_LEN
void tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg)
err_t tcpip_callback(tcpip_callback_fn function, void *ctx)
err_t tcpip_input(struct pbuf *p, struct netif *inp)
#define NETIF_FLAG_ETHARP
#define NETIF_FLAG_BROADCAST
void netif_set_link_down(struct netif *netif)
struct netif * netif_find(const char *name)
struct netif * netif_add(struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
void netif_set_default(struct netif *netif)
void netif_set_link_up(struct netif *netif)
void netif_set_up(struct netif *netif)
struct pbuf * pbuf_coalesce(struct pbuf *p, pbuf_layer layer)
void pbuf_ref(struct pbuf *p)
u8 pbuf_free(struct pbuf *p)
void sys_sem_free(sys_sem_t *sem)
u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout)
void sys_sem_signal(sys_sem_t *sem)
err_t sys_sem_new(sys_sem_t *sem, u8_t count)
@ NETMAN_NETIF_IOCTL_ETH_GET_MAC
int ps2ipInit(struct ip4_addr *ip_address, struct ip4_addr *subnet_mask, struct ip4_addr *gateway)
void ps2ipSetHsyncTicksPerMSec(unsigned char ticks)
u8 hwaddr[NETIF_MAX_HWADDR_LEN]
netif_linkoutput_fn linkoutput