diff options
Diffstat (limited to 'Projects/Incomplete')
| -rw-r--r-- | Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c | 14 | ||||
| -rw-r--r-- | Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h | 2 | ||||
| -rw-r--r-- | Projects/Incomplete/Webserver/Webserver.c | 44 | ||||
| -rw-r--r-- | Projects/Incomplete/Webserver/Webserver.h | 1 | ||||
| -rw-r--r-- | Projects/Incomplete/Webserver/makefile | 1 | 
5 files changed, 31 insertions, 31 deletions
| diff --git a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c index c3e281ebd..8363d96e0 100644 --- a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c +++ b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.c @@ -12,7 +12,7 @@  volatile clock_time_t clock_datetime = 0;  //Overflow interrupt -ISR(TIMER0_OVF_vect) +ISR(TIMER1_COMPA_vect)  {
  	clock_datetime += 1;  } @@ -20,14 +20,10 @@ ISR(TIMER0_OVF_vect)  //Initialise the clock  void clock_init()
  {
 -	//Activate overflow interrupt for timer0 -	TIMSK0 |= (1<<TOIE0); - -	//Use prescaler 1024 -	TCCR0B |= ((1<<CS12)|(1<<CS10)); - -	//Activate interrupts -	sei(); +	OCR1A  = ((F_CPU / 1024) / 100); +	TCCR1A = (1 << WGM12); +	TCCR1B = ((1 << CS12) | (1 << CS10)); +	TIMSK1 = (1 << OCIE1A);  }  //Return time diff --git a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h index c759d01a3..9c895e56d 100644 --- a/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h +++ b/Projects/Incomplete/Webserver/Lib/uip/conf/clock-arch.h @@ -5,7 +5,7 @@  #include <stdint.h>
  typedef uint16_t clock_time_t;
 -#define CLOCK_CONF_SECOND (F_CPU / 1024 / 255)  //Freqency divided prescaler and counter register size
 +#define CLOCK_CONF_SECOND 100
  void clock_init(void);
  clock_time_t clock_time(void);
 diff --git a/Projects/Incomplete/Webserver/Webserver.c b/Projects/Incomplete/Webserver/Webserver.c index e6ef9f018..97c35d783 100644 --- a/Projects/Incomplete/Webserver/Webserver.c +++ b/Projects/Incomplete/Webserver/Webserver.c @@ -57,13 +57,13 @@ USB_ClassInfo_RNDIS_Host_t Ethernet_RNDIS_Interface =  			},
  	};
 -volatile uint8_t uIPManagementTimeout;
 +struct timer ConnectionTimer, ARPTimer;
 +uint16_t MillisecondTickCount;
  /** ISR for the management of the connection management timeout counter */
  ISR(TIMER0_COMPA_vect, ISR_BLOCK)
  {
 -	if (uIPManagementTimeout)
 -	  uIPManagementTimeout--;
 +	MillisecondTickCount++;
  }
  void TCPCallback(void)
 @@ -186,9 +186,8 @@ void ProcessIncommingPacket(void)  		  printf("0x%02X ", uip_buf[i]);
  		printf("\r\n\r\n");
 -		#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
 -
 -		if (BUF->type == HTONS(UIP_ETHTYPE_IP))
 +		struct uip_eth_hdr* EthernetHeader = (struct uip_eth_hdr*)&uip_buf[0];
 +		if (EthernetHeader->type == HTONS(UIP_ETHTYPE_IP))
  		{
  			/* Filter packet by MAC destination */
  			uip_arp_ipin();
 @@ -200,7 +199,7 @@ void ProcessIncommingPacket(void)  			if (uip_len > 0)
  			  uip_arp_out();
  		}
 -		else if (BUF->type == HTONS(UIP_ETHTYPE_ARP))
 +		else if (EthernetHeader->type == HTONS(UIP_ETHTYPE_ARP))
  		{
  			/* Process ARP packet */
  			uip_arp_arpin();
 @@ -221,8 +220,10 @@ void ProcessIncommingPacket(void)  void ManageConnections(void)
  {
 -	if (!(uIPManagementTimeout))
 +	if (timer_expired(&ConnectionTimer))
  	{
 +		timer_reset(&ConnectionTimer);
 +
  		LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
  		for (uint8_t i = 0; i < UIP_CONNS; i++)
 @@ -235,12 +236,14 @@ void ManageConnections(void)  			  RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, &uip_buf, uip_len);
  		}
 -		uip_arp_timer();
 -		
 -		uIPManagementTimeout = 250;
 -
  		LEDs_SetAllLEDs(LEDMASK_USB_READY);
  	}
 +
 +	if (timer_expired(&ARPTimer))
 +	{
 +		timer_reset(&ARPTimer);
 +		uip_arp_timer();
 +	}
  }
  /** Configures the board hardware and chip peripherals for the demo's functionality. */
 @@ -258,22 +261,21 @@ void SetupHardware(void)  	LEDs_Init();
  	USB_Init();
 -	/* Millisecond timer initialization for managing the command timeout counter */
 -	OCR0A  = ((F_CPU / 64) / 1000);
 -	TCCR0A = (1 << WGM01);
 -	TCCR0B = ((1 << CS01) | (1 << CS00));
 -	
 +	/* uIP Timing Initialization */
 +	clock_init();
 +	timer_set(&ConnectionTimer, CLOCK_SECOND / 2);
 +	timer_set(&ARPTimer, CLOCK_SECOND * 10);	
 +
  	/* uIP Stack Initialization */
  	uip_init();
 -
  	uip_ipaddr_t IPAddress, Netmask, GatewayIPAddress;
 -	uip_ipaddr(&IPAddress, 192, 168, 1, 10);
 -	uip_ipaddr(&Netmask, 0xFF, 0xFF, 0xFF, 0x00);
 +	uip_ipaddr(&IPAddress,        192, 168, 1, 10);
 +	uip_ipaddr(&Netmask,          255, 255, 255, 0);
  	uip_ipaddr(&GatewayIPAddress, 192, 168, 1, 1);
  	uip_sethostaddr(&IPAddress);
  	uip_setnetmask(&Netmask);
  	uip_setdraddr(&GatewayIPAddress);
 -	
 +		
  	/* HTTP Webserver Initialization */
  	uip_listen(HTONS(80));
  }
 diff --git a/Projects/Incomplete/Webserver/Webserver.h b/Projects/Incomplete/Webserver/Webserver.h index 9da29d605..ef17d4c87 100644 --- a/Projects/Incomplete/Webserver/Webserver.h +++ b/Projects/Incomplete/Webserver/Webserver.h @@ -52,6 +52,7 @@  		#include <uip.h>
  		#include <uip_arp.h>
 +		#include <timer.h>
  	/* Macros: */
  		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 diff --git a/Projects/Incomplete/Webserver/makefile b/Projects/Incomplete/Webserver/makefile index 6a6e4c92a..b51e510b6 100644 --- a/Projects/Incomplete/Webserver/makefile +++ b/Projects/Incomplete/Webserver/makefile @@ -142,6 +142,7 @@ SRC = $(TARGET).c                                                 \  	  Lib/uip/psock.c                                             \
  	  Lib/uip/timer.c                                             \
  	  Lib/uip/uip-neighbor.c                                      \
 +	  Lib/uip/conf/clock-arch.c                                   \
  # List C++ source files here. (C dependencies are automatically generated.)
 | 
