Droidcon 2013 ant+ chin

  • 1,447 views
Uploaded on

 

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,447
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Harrison Chin Applications Engineerharrison.chin@thisisant.com
  • 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!