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#include "lwip/timers.h"
8#include "lwip/mem.h"
9#include "lwip/memp.h"
10#include "lwip/sys.h"
11#include "lwip/init.h"
12#include "lwip/dhcp.h"
13#include "lwip/stats.h"
14#include "lwip/ip.h"
15#include "lwip/udp.h"
16#include "lwip/tcp.h"
17#include "lwip/tcp_impl.h"
18
19#include "network.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");
58 }
60
61 printf(" * requesting dhcp...");
62 //dhcp_set_struct(&netif, &netif_dhcp);
63 dhcp_start(&netif);
64
65 // Don't timeout for as long if the link is down.
66 int timeout = 60;
68 timeout = 10;
69
70 dhcp_wait=mftb();
71 int i = 0;
72 while (netif.ip_addr.addr==0 && i < timeout) {
74 now2=mftb();
75 if (tb_diff_msec(now2, dhcp_wait) >= 250){
76 dhcp_wait=mftb();
77 i++;
78 if (i % 2)
79 printf(".");
80 }
81 }
82
83 if (netif.ip_addr.addr) {
84 printf("success\n");
85 } else {
86 printf("failed\n");
87 printf(" * now assigning a static ip\n");
88
89 IP4_ADDR(&ipaddr, 192, 168, 1, 99);
90 IP4_ADDR(&gateway, 192, 168, 1, 1);
91 IP4_ADDR(&netmask, 255, 255, 255, 0);
95 }
96
98}
99
101{
102
103 // sys_check_timeouts();
104
105 now=mftb();
107
108 if (tb_diff_msec(now, last_tcp) >= TCP_TMR_INTERVAL)
109 {
110 last_tcp=mftb();
111 tcp_tmr();
112 }
113
114 if (tb_diff_msec(now, last_dhcp_fine) >= DHCP_FINE_TIMER_MSECS)
115 {
116 last_dhcp_fine=mftb();
117 dhcp_fine_tmr();
118 }
119
120 if (tb_diff_sec(now, last_dhcp_coarse) >= DHCP_COARSE_TIMER_SECS)
121 {
122 last_dhcp_coarse=mftb();
123 dhcp_coarse_tmr();
124 }
125}
126
128{
129 printf(" * network config: %d.%d.%d.%d / %d.%d.%d.%d\n",
131 printf(" MAC: %02X%02X%02X%02X%02X%02X\n\n",
132 netif.hwaddr[0], netif.hwaddr[1], netif.hwaddr[2],
133 netif.hwaddr[3], netif.hwaddr[4], netif.hwaddr[5]);
134}
135
136
#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
#define NETIF_FLAG_LINK_UP
Definition: netif.h:84
void enet_poll(struct netif *netif)
Definition: enet.c:415
err_t enet_init(struct netif *netif)
Definition: enet.c:158
ip_addr_t netmask
Definition: network.c:23
int network_init()
Definition: network.c:34
void network_poll()
Definition: network.c:100
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:127
#define NETWORK_INIT_DHCP_FAILURE
Definition: network.h:12
#define NETWORK_INIT_FAILURE
Definition: network.h:13
#define NETWORK_INIT_SUCCESS
Definition: network.h:11
#define stats_init()
Definition: stats.h:161
Definition: netif.h:136
u8_t flags
Definition: netif.h:192
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