LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
network.c
Go to the documentation of this file.
1#include <stdio.h>
2
3#include <ppc/timebase.h>
4
5#include "lwipopts.h"
6#include "lwip/debug.h"
7
8#include "lwip/timers.h"
9#include "lwip/mem.h"
10#include "lwip/memp.h"
11#include "lwip/sys.h"
12#include "lwip/init.h"
13#include "lwip/dhcp.h"
14#include "lwip/stats.h"
15
16#include "lwip/ip.h"
17#include "lwip/udp.h"
18#include "lwip/tcp.h"
19#include "lwip/tcp_impl.h"
20
21struct netif netif;
22
24static uint64_t now, last_tcp, last_dhcp_coarse, last_dhcp_fine, now2, dhcp_wait;
25
26#define NTOA(ip) (int)((ip.addr>>24)&0xff), (int)((ip.addr>>16)&0xff), (int)((ip.addr>>8)&0xff), (int)(ip.addr&0xff)
27
28extern void enet_poll(struct netif *netif);
29extern err_t enet_init(struct netif *netif);
30
31void network_poll();
32
33
35{
36
37#ifdef STATS
38 stats_init();
39#endif /* STATS */
40 printf(" * initializing lwip 1.4.1...\n");
41
42 last_tcp=mftb();
43 last_dhcp_fine=mftb();
44 last_dhcp_coarse=mftb();
45
46 //printf(" * configuring device for DHCP...\r\n");
47 /* Start Network with DHCP */
48 IP4_ADDR(&netmask, 255,255,255,255);
49 IP4_ADDR(&gateway, 0,0,0,0);
50 IP4_ADDR(&ipaddr, 0,0,0,0);
51
52 lwip_init(); //lwip 1.4.1
53
54 printf(" * initializing NIC\n");
56 printf(" ! netif_add failed!\n");
57 return;
58 }
60
61 printf(" * requesting dhcp...");
62 //dhcp_set_struct(&netif, &netif_dhcp);
63 dhcp_start(&netif);
64
65 dhcp_wait=mftb();
66 int i = 0;
67 while (netif.ip_addr.addr==0 && i < 60) {
69 now2=mftb();
70 if (tb_diff_msec(now2, dhcp_wait) >= 250){
71 dhcp_wait=mftb();
72 i++;
73 if (i % 2)
74 printf(".");
75 }
76 }
77
78 if (netif.ip_addr.addr) {
79 printf("success\n");
80 } else {
81 printf("failed\n");
82 printf(" * now assigning a static ip\n");
83
84 IP4_ADDR(&ipaddr, 192, 168, 1, 99);
85 IP4_ADDR(&gateway, 192, 168, 1, 1);
86 IP4_ADDR(&netmask, 255, 255, 255, 0);
89 }
90}
91
93{
94
95 // sys_check_timeouts();
96
97 now=mftb();
99
100 if (tb_diff_msec(now, last_tcp) >= TCP_TMR_INTERVAL)
101 {
102 last_tcp=mftb();
103 tcp_tmr();
104 }
105
106 if (tb_diff_msec(now, last_dhcp_fine) >= DHCP_FINE_TIMER_MSECS)
107 {
108 last_dhcp_fine=mftb();
109 dhcp_fine_tmr();
110 }
111
112 if (tb_diff_sec(now, last_dhcp_coarse) >= DHCP_COARSE_TIMER_SECS)
113 {
114 last_dhcp_coarse=mftb();
115 dhcp_coarse_tmr();
116 }
117}
118
120{
121 printf(" * network config: %d.%d.%d.%d / %d.%d.%d.%d\n",
123 printf(" MAC: %02X%02X%02X%02X%02X%02X\n\n",
124 netif.hwaddr[0], netif.hwaddr[1], netif.hwaddr[2],
125 netif.hwaddr[3], netif.hwaddr[4], netif.hwaddr[5]);
126}
127
128
#define NULL
Definition: def.h:47
s8_t err_t
Definition: err.h:47
void lwip_init(void)
Definition: init.c:289
err_t ip_input(struct pbuf *p, struct netif *inp)
Definition: ip.c:305
#define IP4_ADDR(ipaddr, a, b, c, d)
Definition: ip_addr.h:139
typedefPACK_STRUCT_END struct ip_addr ip_addr_t
Definition: ip_addr.h:64
u64 uint64_t
Definition: libfdt_env.h:12
void netif_set_addr(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw)
Definition: netif.c:221
struct netif * netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input)
Definition: netif.c:139
void netif_set_default(struct netif *netif)
Definition: netif.c:430
void netif_set_up(struct netif *netif)
Definition: netif.c:453
void enet_poll(struct netif *netif)
Definition: enet.c:412
err_t enet_init(struct netif *netif)
Definition: enet.c:158
void network_init()
Definition: network.c:34
ip_addr_t netmask
Definition: network.c:23
void network_poll()
Definition: network.c:92
ip_addr_t ipaddr
Definition: network.c:23
#define NTOA(ip)
Definition: network.c:26
ip_addr_t gateway
Definition: network.c:23
void network_print_config()
Definition: network.c:119
#define stats_init()
Definition: stats.h:161
Definition: netif.h:136
ip_addr_t netmask
Definition: netif.h:142
ip_addr_t ip_addr
Definition: netif.h:141
u8_t hwaddr[NETIF_MAX_HWADDR_LEN]
Definition: netif.h:190