Open Source µracoli Zigduino/ATmega128RFA1 Radio Library

I have a huge interest in using the ATmega128RFA1, and rocketgeek made the Zigduino http://arduino.cc/forum/index.php/topic,65232.0.html

One major problem is that Atmel's MAC is not open source so it's really inconvenient to use since you can't redistribute it.

The µracoli project intends to demonstrate capabilities and usage of Atmel’s IEEE-802.15.4 radio transceivers (AT86RF230, AT86RF231, AT86RF212) in combination with AVR 8 bit microcontrollers (e.g. ATmega16, ATmega1281, ATtiny84, …).

µracoli is open source, and the source code can be freely distributed.

It appears that version 0.1.0rc1 of µracoli has support for ATmega128RFA1

I purchased two Zigduinos, and created a library for them based on µracoli, and since it's open source, I can share it with you: Google Code Archive - Long-term storage for Google Code Project Hosting.

The library is created in the style of HardwareSerial and also the Wire library, except it doesn't use Stream or Print (this is because I don't want to include any core files, if you want streaming, go use stdio.h instead). The receiving functions (like read, available, peek) work like HardwareSerial, while the sending functions work like Wire (beginTransmission, send, endTransmission). Event handlers can be attached similar to how Wire does it.

There are also wrapper functions for µracoli's "radio.h", this is enough for you to switch between channels

Right now there's no real documentation apart from µracoli's own documentation, but I think the function names and parameters are very self-documenting, so if you understand C/C++ syntax, you should be fine.

Included is two test sketches, one sketch for the transmitting Zigduino, one for the receiving Zigdunio. You type into the serial port of the transmitter, and the receiver will output stuff to the other serial port. This works beautifully.

I actually have no idea how real 802.15.4 works, but this library will let you transmit data back and forth really easily, and all you need to do is copy this library into your libraries folder (as opposed to installing the Atmel MAC)

So please tell me what you think and give me suggestions.

This is really cool. I just got your email this morning, so I haven't had a chance to have a more detailed look yet. Did you use the Zigduinosupport already in uracoli (http://web.archiveorange.com/archive/v/XiCFnGTqTvTuzseDOnT5) or did you roll your own? I'm a fan of how you duplicated the interface of existing Arduino libraries. That really lowers the bar for other people.

Do you have a github or other version controlled repository yet?

I did define "zigduino" for the board, and included all the relevant RFA files instead of the RF230 files

I am most familiar with Google Code and SVN, so I put it up here Google Code Archive - Long-term storage for Google Code Project Hosting.

I spent some time documenting it, and changed the example from a unidirectional demo to a half-duplex demo