Release information is given in reverse chronological order.
R. Reese: No plans except to help integrate ports of others.
Rostislav Spinar [Rostislav.Spinar@cit.ie] has created a MSP430 + CC2420 port using the TMote hardware platform, and this code is released in the V0.2.6 code.
Michel Weber [weber_michel@yahoo.com] is also working on a MSP430 + CC2420 port and has the ping-pong test application working (Feb 2007).
Christian Cier-Zniewski is working a linux-phy target, where the coordinator code runs under Linux, and a RS232 serial layer connects the PHY of the linux side to the HAL of the target board. This will allow for a big coordinator (i.e., one that is not memory constrained). Once Christian is finished with this, Reese will port this capability to the WIN32 platform. Christian is also adding support for an ATMega32 + CC2420 platform (last status given Sept. 2006)
1. I got the following email from some researchers using the stack; I have not had time to track this down, but please be aware of it (I have removed the identifying name/email address since I did not ask for permission to release that).
We are using your stack in Chipcon CC2430/1 sensors. Now
we are testing the interoperability of your stack with FreeScale official
stack.
We have found some errors in MAC layer in the Beacon's
functions: formatBeacon() and parseBeacon(). You have used whole byte when it's
necessary just one bit, so the result is a beacon too long! We report the new
function, so you can update your official version! For more details please
contact us!
First of all add these two #define in ieee_lrwpan_defs.h
in BEACON defs:
#define LRWPAN_BEACON_PAYLOAD_DEV_CAP (1<<7)
#define LRWPAN_BEACON_PAYLOAD_ROUT_CAP (1<<2)
Now copy & paste the new two functions (see attaches)
I have not had a chance to check this out, but will as time permits. This requires modifications to the function macFormatBeacon(void) and static void macParseBeacon(void) which the researchers also provided.
If somebody verifies this and wants the changed functions, then let me know. I will not put this fix into the code until I have a chance to verify it myself or get other confirmation.
2. For the CC2430 platform, De Ben Dries reports that in halstack.c{halSleep(UINT32} that he was only able to get stable operation over a long period of time by using POWER_MODE_2 and not POWER_MODE_1. If POWER_MODE_1 was used, then after a few minutes the radio began failing to restart.
Changed license header in stack source files to release code under GNU public license V2 or higher.
Added Rostislav Spinar’s MSP430+CC2420 port for the Tmote platform; updated documentation.
Updated list of contributors, added ‘Known Bugs or Incompatibilities’ section.
a. Fixed bug in neighbor.c { ntFindBySADDR} where the pointer variable was being incremented twice (found by Dan Shone).
b. Added HEAPSEGMENT and NEIGHBORSEGMENT #defines to target/picdemz/evbConfig.h so that the memory usage by the stack on MCC18/PIC18 targets can be tied to the evaluation board. Also moved the configuration bit settings in target/picdemz/evboard.c so that these macros do not interfere with macros defined in other .h files.
a. All files are now under SVN; this has reduced the amount of cruft in the zip archive considerably.
b. Fixed problems related to using dynamic PANIDs (LRWPAN_USE_STATIC_PANID is not defined). This involved improving the psuedo-random number generation both the PIC18/CC2430 targets, and reading the PANID returned by the beacon (thanks to Steve Jones for trying this feature out, and finding the problems, and submitting fixes). Affected files are:
stack/mac.c - macInitRadio() now generates a random PANID if dynamic PANIDs are used.
stack/aps.h – removed PANID from aplFormNetwork(), aplJoinNetwork() macros as the current mac PANID is used as set by macInitRadio; previously the code was always using the static PANID.
stack/nwk.c – removed setting of
panid from aplFormNetwork() call
target/iar51/cc2430_31/halStack.c – improved random byte generation
mcc18/pic18/halstack.c, picdemz/evboard.c – moved random byte generation from halStack.c to evboard.c, improved the random seeding a bit. Also fixed halInitRadio() to accept all beacon frames when dynamic PANIDs are used.
c. Updated .NET applications VirtualBoard() and the binding demo application to Visual Studio 2005. The project files are now incompatible with Visual Studio 2003.
src/stack/target/mcc18/picdemz/evboard.c- changed halSendPacket() to address problem with TXFIFO underflow on Atmel+CC2420 platform
src/stack/mac.c- now retries correctly if PHY TX fails to start; previous only did retry correctly if packet was actually sent.
Fixed problem with CRC result of a received packet being checked incorrectly for both the CC2420 and CC2430 (thanks to Christian Cier-Zniewski for reporting this problem). Modified files src/stack/target/mcc18/picdemz/evboard.c, src/stack/target/iar51/cc2430_31/halstack.c
Fixed problem with parent long address not being updated corrected if an RFD moved between parents (thanks to Anvesh Manne for reporting this problem).
Fixed problem where the network radius byte was being copied incorrectly by a router.
Fixed welcome information to print the correct version number (thanks to Christian Cier-Zniewski for reporting this problem).
Added aplPingNode(SADDR dst) allows ping to any node
aplSendEndDeviceAnnounce(saddr) now requires a destination node so that this mapping information can be sent to any node.
Added aplSendNodeInfo(saddr) that is used to send this node’s key information (short address, long address, cap info, endpoints etc) to the Zero Endpoint of another node. This is used in the pcbind.c application to send this information to the coordinator, which then forwards this to .NET bindingdemo application on the PC.
Added aplSendAlarm(saddr,mde) which sends an alarm to the Zero Endpoint of remote node. A non-zero mde turns on the alarm, a zero mode turns off the mde. The alarm is currently a flashing LED.
Added aplRegisterEndPoint(BYTE epNum) which is used to register a node’s endpoint with the APS layer. This allows endpoints to be reported as part of the node’s information sent by aplSendNodeInfo(saddr).
Callback functions LRWPAN_STATUS_ENUM usrZepRxCallback(void) and LRWPAN_STATUS_ENUM usrRxPacketCallback(void) must now return a status code. This affects APS acks for these callbacks. If anything other than LRWPAN_STATUS_SUCCESS and an APS ack is requested for the packet that triggered this callback, then the APS ack is not sent. This is useful in case your endpoint has to reject the data for some reason, the lack of the APS ack can be used to signal this condition.
Reworked internals of the zep.c/h code to provide better functionality.
Added .NET application (bindingdemo) for tracking network status, storing binding tables on a PC client.
Added void halRawPut(char c) for sending raw bytes (no linefeed translation) across the serial port. Any HAL target must support this new call.
Added LRWPAN_ASYNC_INTIO which determines if interrupt IO is used for serial receive, and LRWPAN_ASYNC_RX_BUFSIZE that sets the buffer size used for the receive interrupt FIFO buffer.
Added test max_msg_test.c to test maximum-sized user payloads. Fixed timeout problem with maximum sized payloads.
There is a KNOWN problem with max_msg_test.c for a PICDEMZ node receiving a maximum sized user payload of 93 bytes; the PICDEMZ node will reject the packet (a CC2430 node will accept it). A 92-byte user payload will be received without problem by the PICDEMZ node. This is due to a mistake in how the CC2420 overflow condition is being checked on the PICDEMZ node; this has been corrected in the development code and this fix will be in the next release.
Made changes to support the HI-TECH C51 (8051) compiler for the CC2430; tested only with the demo compiler.
Changed the beacon payload format sent in response to a beacon request to be Zigbee compatible.