diff options
Diffstat (limited to 'Projects/Incomplete/Webserver')
-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.)
|