26/11/2014: Fix warning in icmp.c from overflow detection code. Add User-Agent: to HTTP request to fix failure to work with my ISPs updated web-server. Set PSH when the HTTP header has been sent. Fix some PC simulation bugs. Use M_EventSet() where possible. Fix some typos and spellings in code. 27/07/2008: Nest interrupts when enabling/disabling interrupt handling. Disable interrupts around timer API to protect non-atomic access to timersEnLs. Correct sleep mode determination and set SE when powering down. 08/12/2007: Correct double calling of skipReadWebCmd() when a TCP connection times out. 01/12/2007: Make main.elf instead of main.out so the file loads into AVR Studio slightly more easily. Double buffer command sequences; fetch into one buffer, then copy and run from another if the fetch is successful. This makes HTTP fetching more reliable. Add -Wshadow to build and remove warnings. Change command format; first byte now gives length of the command sequence, providing futher resiliance to HTTP fetches. (Update cmdforge, heartbeat and Java ColourChooser to send new byte, as well as weather CGI). 11/11/2007: Add timer to abort HTTP fetch if no result received within 30 seconds. Read TCP header options so that checksum verification passes on packets with lots of header options (e.g. MS telnet). Implement TCP reset generation for packets recieved where no TCB exists. 04/10/2007: Stop DHCP timers, TCP connections and clear IP address when Ethernet cable is unplugged. 10/09/2007: Correct Doxygen comments for M_SeqCmdReadWeb() macro. 04/09/2007: Add memdump to allow SRAM image to be retrieved via UDP request to port 8890. The UDP packed must contain 4 bytes, the first pair giving a uint16_t that gives the first address to return, the second pair giving a uint16_t providing the number of bytes to retrieve. Such a packet can be constructed by memdump_read.c and sent to the target using Bash redirection. The response can be captured in Ethereal, saved as raw binary, padded with 256 bytes then converted into a hex file. The hex file can then be loaded into a simulation in AVR Studio to allow inspection of all RAM variables. e.g. $ memdump_read 0 1024 > /dev/udp/lightbulb/8890 $ # Produce RAM.bin via Ethereal byte export $ dd if=/dev/zero of=padding.bin bs=256 count=1 $ cat padding.bin RAM.bin > RAMpadded.bin $ avr-objcopy -I binary RAMpadded.bin -O ihex RAM.hex $ # Load RAM.hex into AVR Studio NOTE: Conditional on ENABLE_MEMDUMP being defined in the build. 16/08/2007: Add partial parsing of HTTP header to reject non-2xx response codes or non-HTTP responses. 09/08/2007: Close connection and declare connection reset unconditionally in TCP_STATE_ESTABLISHED after retransAttempts expires. Spell check TCP. 21/07/2007: Switch off SPI block via PRR before sleeping to save power. Add extended commands for random number generation and sleep. Split stack monitoring into separate module. 19/07/2007: First release. END OF FILE