The CC2420 radio on the iMote 2 can be accessed using the usual AMStandard, AMBroadcast, and AMPromiscuous interfaces.
However, to change the output power, or the channel or frequency the CC2420ControlM interface needs to be wired into your module.
Once wired, the CC2420ControlM module provides the following command calls
- command result_t CC2420ControlM.TunePreset( uint8_t channel )
- command result_t CC2420ControlM.TuneManual( uint16_t freqency )
- command result_t CC2420ControlM.SetRFPower( uint8_t power)
Broadcasting data using AMStandard
Achieving this proved rather simple, as all that is required is to set the destination address for packets to 0xFFFF and the data will be received on -all- devices in range.
However, how it manages this at the hardware level is currently unknown – as the AMStandard system should use ACK messages, which -cannot- work during a broadcast, as all receipients would have to return an ACK, causing enourmous packet delays as CSMA forces all of the conflicting ‘motes to back off exponentially.
I’ll look into this presently.
Update – Broadcast ACKs
The ACKs that you would expect to appear in this setup DO NOT happen, as ACK messages are handled directly in software on the ‘mote, so the messages are just omitted for broadcast addresses. (See ‘AM.h for your ‘mote for the TOS_BCAST_ADDR enum for your platform, or just use the constant directly).