I have rewritten python-ant by Martín Raúl Villalb in Java. There are presently two drivers: one is a wrapper around Dynastreams own ant library for Android and the other is a javax.usb driver for ANT+ usb sticks. This allows code to be be prototyped on a development machine before adding the android specific stuff.
Features:
- Most ANT messages have been mapped to a class, and if configurable, contain methods to adjust those configuration options.
- Easily add listeners to individual channels with message-type filtering
- Utility methods to wait for a response (with timeouts) to any message sent to the ant chip
- Burst message helper function (send bursts by simply passing a byte []) - will throw an exception if transmission fails
Grab it from : https://github.com/cowboy-coders/JFormica
Here is a code sample:
class Listener implements BroadcastListener{
@Override
public void receiveMessage(BroadcastDataMessage message) {
System.out.println("Heart rate: " + message.getData()[7]);
}
}
public void test_hrm() throws InterruptedException, TimeoutException {
// first usb ant-stick
AntTransceiver antchip = new AntTransceiver(0);
Node n = new Node(antchip);
NetworkKey key = new NetworkKey(0xB9,0xA5,0x21,0xFB,0xBD,0x72,0xC3,0x45);
key.setName("N:ANT+");
n.start();
n.reset();
// sets network key of network zero
n.setNetworkKey(0, key);
Channel c;
c = n.getFreeChannel();
c.setName("C:HRM");
ChannelType channelType = new SlaveChannelType();
c.assign("N:ANT+", channelType);
c.registerRxListener(new Listener(), BroadcastDataMessage.class);
c.setId(0, 120, 0, false);
c.setFrequency(57);
c.setPeriod(8070);
c.setSearchTimeout(255);
c.open();
Thread.sleep(10000);
c.close();
c.unassign();
//return the channel to the pool of available channels
n.freeChannel(c);
n.stop();
}