1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "uip.h"
- #include "uip_arp.h"
- #include "network-device.h"
- #include "httpd.h"
- #include "timer.h"
- #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
- /*---------------------------------------------------------------------------*/
- int
- main(void)
- {
- int i;
- uip_ipaddr_t ipaddr;
- struct timer periodic_timer, arp_timer;
-
- timer_set(&periodic_timer, CLOCK_SECOND / 2);
- timer_set(&arp_timer, CLOCK_SECOND * 10);
-
- network_device_init();
- uip_init();
- uip_ipaddr(ipaddr, 192,168,0,2);
- uip_sethostaddr(ipaddr);
- httpd_init();
-
- while(1) {
- uip_len = network_device_read();
- if(uip_len > 0) {
- if(BUF->type == htons(UIP_ETHTYPE_IP)) {
- uip_arp_ipin();
- uip_input();
- /* If the above function invocation resulted in data that
- should be sent out on the network, the global variable
- uip_len is set to a value > 0. */
- if(uip_len > 0) {
- uip_arp_out();
- network_device_send();
- }
- } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) {
- uip_arp_arpin();
- /* If the above function invocation resulted in data that
- should be sent out on the network, the global variable
- uip_len is set to a value > 0. */
- if(uip_len > 0) {
- network_device_send();
- }
- }
- } else if(timer_expired(&periodic_timer)) {
- timer_reset(&periodic_timer);
- for(i = 0; i < UIP_CONNS; i++) {
- uip_periodic(i);
- /* If the above function invocation resulted in data that
- should be sent out on the network, the global variable
- uip_len is set to a value > 0. */
- if(uip_len > 0) {
- uip_arp_out();
- network_device_send();
- }
- }
- #if UIP_UDP
- for(i = 0; i < UIP_UDP_CONNS; i++) {
- uip_udp_periodic(i);
- /* If the above function invocation resulted in data that
- should be sent out on the network, the global variable
- uip_len is set to a value > 0. */
- if(uip_len > 0) {
- uip_arp_out();
- network_device_send();
- }
- }
- #endif /* UIP_UDP */
-
- /* Call the ARP timer function every 10 seconds. */
- if(timer_expired(&arp_timer)) {
- timer_reset(&arp_timer);
- uip_arp_timer();
- }
- }
- }
- return 0;
- }
- /*---------------------------------------------------------------------------*/
|