Your SlideShare is downloading. ×

Droidcon 2013 ant+ chin


Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Harrison Chin Applications
  • 2. Thank You!
  • 3. What is ANT or ANT+?• ANT is an ultra low power 2.4GHz wireless protocol – Shipped over 60+ Million devices so far – Can communicate for years using a single coin cell battery – Hundreds of transmitters can co-exist on the same RF channel without collision – Simple logical channels can be used separately or combined into complex topologies – Highly compact stack and common API across vendors – 8 byte Payload Broadcast and Acknowledged packets • Up to 24 byte Burst message packets• ANT+ is a set of mutually agreed upon definitions for what the information sent over ANT represents
  • 4. Building ANT Networks…Simply• Point-to-point M S
  • 5. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many M S S S
  • 6. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many
  • 7. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many S• Star M S S M M
  • 8. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many• Star
  • 9. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many• Star• Shared S S S M S S S
  • 10. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many• Star …• Shared M M M … M• Asynchronous Over the Air Scan Scan M M
  • 11. Building ANT Networks…Simply• Point-to-point• Broadcast one-to-many• Star• Shared• Asynchronous 1: Is 1: Is that that fun? fun? 2:No 2:No idea… idea…
  • 12. ANT Networks… Simple to Sophisticated• Point-to-point• Broadcast one-to-many• Star• Shared• Asynchronous• Beyond the star…
  • 13. Co-existence Management – Time Domain
  • 14. Background Scanning Channel • Background scanning channel is receive only • Allows independent channels to stay open on the same physical radio • Useful to create asynchronous topologies, monitor messages, RSSI pairing schemes, etcMASTER_1MASTER_2BackgroundScanning
  • 15. Continuous Scanning Mode • ‘Always on’ receiver: high power M M • Fully Bi-directional Communication Scan M – Channels can be responded to on-demand M M • Masters can transmit intermittently • Potentially hundreds of transmitters to one center nodeMASTER_1MASTER_2ScanningMode
  • 16. ANT+ Device Profiles• Open definitions for device-level interoperability – Channel configuration – Data format – Data exchange mechanisms
  • 17. ANT+ Device Profiles
  • 18. Control Bidirectional communication Sensor: status Display: control
  • 19. GeocacheHintNext locationVisitor count
  • 20. Bicycle Speed & Cadence Bicycle PowerCadenceSpeedPower
  • 21. Activity Monitor Access Searching… Point
  • 22. Continuous Glucose Monitor Authenticated sessions Intermittent transmission scheme Live and stored data
  • 23. ANT+ Interoperability
  • 24. Android ANT Layers App App App App App AppCreated by: Profiles ANT Radio Service For Connectivity Chip For ANT USB sticks ANT HAL Service ANT USB Service Applications ANT HALCreated by: ANT Transport Driver & Chip Physical Transport Driver Android USB Host Feature Vendor Vendor Specific Library Android System Android Android System ANT Firmware ANT Firmware Combo Connectivity Device ANT USB Stick
  • 25. Android ComponentsApp App App Profiles ANT+ Profile ANT+ Profile Plug-in Plug-in ANT Radio Service Applications ANT HAL Service ANT HAL Android System ANT Firmware Combo Connectivity Device
  • 26. ANT+ Profile Plug-ins Make Implementing ANT+ Applications Easier App App Heart Rate PCC Remote Control PCC ANT+ API Heart Rate Plug-in Control Plug-in Plug-insANT Channel Provider ANT Channel Channel API/ANT Radio Service
  • 27. Plug-in Communicator Class• A simple class which provides access to the ANT+ Plug-in• Methods include… public static void requestAccess(…) public String getDeviceName() public int getAntDeviceID() public int getCurrentDeviceState() public void subscribeTo<EventName>(...) public void releaseAccess()
  • 28. Request Accesspublic static void requestAccess( Activity userActivity, Context bindToContext, boolean skipPreferredSearch, IPluginAccessResultReceiver<AntPlusHeartRatePcc> resultReceiver, IDeviceStateChangeReceiver stateReceiver)
  • 29. Device Discovery UI
  • 30. Result Receiverpublic void onResultReceived(AntPlusHeartRatePcc result, int resultCode, int initialDeviceStateCode, Object asyncState){switch(resultCode){case AntPluginMsgDefines.MSG_REQACC_RESULT_whatSUCCESS: hrPcc = result; subscribeToEvents(); break;
  • 31. Result Receivercase AntPluginMsgDefines.MSG_REQACC_RESULT_whatDEPENDENCYNOTINSTALLED: AlertDialog.Builder adlgBldr; adlgBldr = new AlertDialog.Builder(Activity_HeartRateSampler.this); adlgBldr.setTitle("Missing Dependency"); adlgBldr.setMessage("The required applicationn"" + AntPlusHeartRatePcc.getMissingDependencyName() + “"n is not installed. Do you want to launch the Play Store to search for it?");...break;
  • 32. Subscribing to EventshrPcc.subscribeHeartRateDataEvent( new IHeartRateDataReceiver() { public void onNewHeartRateData( final int currentMessageCount, final int computedHeartRate, final int heartBeatCounter, final int timestampOfLastBeat_1024s) { //Use data... } } );
  • 33. State Change Receiverpublic void onDeviceStateChange(int newDeviceState){ //Handle state change: //(TRACKING, SEARCHING, CLOSED, DEAD)}
  • 34. Release Access public static void releaseAccess()• Releases the connection to the device (the plugin service will automatically shutdown when all apps have released access)
  • 35. Channel Interface• Used for non-ANT+ applications• Development of Beta ANT+ profiles• Provides channels from all connected chips• Gives full access to individual ANT channel capabilities – Background scanning – Shared channels – Decimated receive rates
  • 36. General Channel Flow1. Bind to the ANT Radio Service2. Get the ANT Channel Provider3. Acquire Channel(s)4. Configure Channel(s)5. Use Channel(s)6. Release the Channel(s) and Unbind
  • 37. Bind to the ANT Radio Serviceprivate AntService mAntRadioService = null;private AntChannelProvider mAntChannelProvider = null;private ServiceConnection mAntRadioServiceConnection =new ServiceConnection(){ @Override public void onServiceConnected(ComponentName name, IBinder service) { mAntRadioService = new AntService(service); mAntChannelProvider = mAntRadioService.getChannelProvider(); } …}
  • 38. Acquire a ChannelAntChannel acquireChannel() throws ChannelNotAvailableException{ AntChannel antChannel = null; if(null != mAntChannelProvider) { antChannel = AntChannelProvider.acquireChannel(this, PredefinedNetwork.PUBLIC); } return antChannel;}
  • 39. Configuring an ANT Channel…• setAdapterWideLibConfig(LibConfig libConfig)• setChannelId(ChannelId channelId)• setPeriod(int period_32768unitsPerSecond)• setTransmitPower(int outputPowerLevelSetting)• setProximityThreshold(int searchThreshold)• setRfFreqency(int radioFrequencyOffset)• setSearchTimeout (LowPrioritySearchTimeout lowPrioritySearchTimeout)• …and more representing standard ANT Message Commands
  • 40. Handling the Channelpublic class ChannelCallback implements AntChannelMessageHandler{ @Override public void handleMessage(AntMessageFromAnt antMessage) { switch(antMessage.getMessageType()) { case BROADCAST_DATA: case ACKNOWLEDGED_DATA: // Rx Data DataMessage rxMessage = (DataMessage)antMessage; processData(rxMessage.getPayload()); break; case CHANNEL_EVENT: … } }}
  • 41. Releasing the Channelpublic void close(){ if (null != mAntChannel) { mAntChannel.release(); mAntChannel = null; }}
  • 42. What could you do with…• Simplicity – ANT+ Android Plug-ins handle discovery and profile interpretation for the developer – Unified ANT API across multiple vendors minimizes support costs – Small stack size and TDMA style coexistence reduces memory and computational costs – Individual logical channels are easy to work with
  • 43. What could you do with…• Extreme network flexibility – Enables large scale networks for small, coin cell operated devices Over the running for years Air – Hubs, phones, access points, etc can gather data and communicate concurrently – Scatternets, meshes, trees, etc, can be dynamically created and closed – Simple channels are the building blocks
  • 44. Thank You!Have a Great Droidcon!