at45db erase fix: mark erased page invalid
at45db BlockWrite.erase fix: BlockWrite.erase will now erase the whole volume instead of just erasing the first page.
Fixed: npages returns full volume size instead of half
Reverted my initial fix, applied sallai suggested fix
Fix compiler warnings: signed/unsigned ints, unused variable, ADC12 TimerA.
Leave the TimerA warning in.
Revert the addition of BLIP_NO_RADIO

pound defines are ugly, and adding one for not using a radio in blip,
which is designed for doing wireless ip, is nonsensical. Therefore, I
removed it and added dummy files in the CoapPpp application that has the
same effect but doesn't munge up code for the sake of a single
application.
Blip cleanup

While looking over some details of blip I noticed that it could use a
cleanup pass. Mostly I added comments and reorganized component wiring.
I also deleted unused code and interfaces that were not wired to
anything in tinyos-main.

I did not change any functionality of BLIP.
cc2420xDriverLayer: remove bogus comment

there was a comment about turning on the SFD capture interrupt when turning the Radio OFF.   This makes no sense.   nuke it.
Drop IRQs while the radio is turning off. Fixes #236, submitted by @ucolesanti
BLIP no longer starts itself.

The way IPDispatchP was calling its own SplitControl meant that in a top
level app SplitControl.done() would be called twice: once when it was
triggered from IPDispatch and once when the top level app called
SplitControl.start().

Since BLIP provides a SplitControl interface, components that want to
use blip should be able to call start whenever they want and not have
IPDispatch automagically doing it for them.
BLIP: Better handing of address modes

BLIP has relied on the magical IN6_PREFIX #define to determine if it
should use DHCP or static addresses. While this still works (to try not
to break existing code), application writers are encouraged to explicitely
declare by what mechanism they would like their application to aquire
an IPv6 address.

To use a static address based on a #define prefix (IN6_PREFIX) add:

    components StaticIPAddressC;

to your application. To use DHCP, add:

	components Dhcp6C;

to your application.

I changed the name from NoDhcpC to StaticIpAddressC because I hope to
implement SLAAC, and in that case there are two alternatives to
a static IP, and a more descriptive name is needed.

I updated the BLIP apps slightly to better select how addressing happens
while not greatly chaning it.
BLIP: pack_address() better supports hdr comp.

RFC6282 allows a node to completely elide the src address of the ipv6
header if the prefix matches the global prefix and the lower 64 bits can
be determined from other parts of the packet. This patch adds that
support by checking to see if the EUI64 that is sent in the 15.4 header
matches the lower 64 bits of the address to be packed.

It also fixes a bunch of errant whitespace.
BLIP: Added UDP checksum recalculation

In the case that a transmitting node sends a UDP packet and uses
stateful address compression, the UDP checksum it calculates is "wrong".
That is, it calculates it when it doesn't know its full address.
Therefore, when its address gets expanded and the UDP packet makes it to
the end host, the checksum is invalid.

This patch checks for when stateful address uncompression is used and
rechecks the checksum in that case.

This patch could be expanded to handle more headers and other checksums,
as well as a check to verify the old checksum is still correct before
creating a new one (on incorrect data at that point).
BLIP: uncompression now checks buffer lengths

The lib6lowpan code was assuming it had a well formed incoming packet.
It returned errors if it got unexpected bits, but never if it didn't get
enough bits, even though the valid length of the buffer was passed to
the unpack function. This would occasionally cause errors much later
because invalid packets were being processed and the length was invalid.

This commit adds length checking throughout the entire unpack stack to
make sure that the incoming packet is long enough for each part being
unpacked.

Without this patch the stack works fine if all nodes on the channel are
sending valid 6LoWPAN packets. However, if a node is just sending random
data which happens to match 6LoWPAN packets, receiving nodes segfault.
BLIP: Updated lib6lowpan tests

The tests now work with the changed lib6lowpan code.
BLIP: Fixed warnings

I fixed a couple little nits that caused compiler warnings.
BLIP: Fix issue with length byte in ext. headers

6lowpan compression specifies that the length byte of a compressed
extension header is the number of bytes that follow the length byte.
Therefore it should not include the header type nor the length byte in
the total.

This commit fixes that and reworks how the extension header compression
functions work so that keeping track of buffers isn't spread to multiple
functions. Also, I fixed one of the tests so that it now compressess,
uncompresses, and recompresses a series of headers to verify that it is
working.
BLIP: Check uncompressed ipv6 packets length

If a stray packet happens to come in with a first data byte that matches
that of an uncompressed IPv6 packet, the code was just taking that at
face value and passing it up the stack. Now it at least checks that it
is long enought to contain a ipv6 header. This prevents the length of
the packet from becoming screwed up when the payload length is
calculated later on.
BLIP: Improved printf() debugging

I improved the routing table printing to be well formatted.