AntHalService - Release Notes
v3.1.0
2013-07-19

Copyright 2011 Dynastream Innovations

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and  
limitations under the License.

=============================================================
1. USAGE

The ANT HAL Service provides a transport from the ANT Radio Service (or 
any application which binds to IAntHal AIDL) through JNI to the native ANT 
stack code (libantradio.so).  It provides the basics of send/recieve Rx 
messages, enable, disable and get the enebaled state.

=============================================================
2. REVISION HISTORY

v3.1.0 : 2013-07-19 : Android_System_ANTHALService_3-1-0

Task
    [ANTDROID-2035] - Remove tabs from AntService
    [ANTDROID-1987] - Enable Bluetooth when ANT is enabled, if required by chip

v3.0.0 : 2013-01-17 : Android_System_ANTHALService_3-0-0

Bug

    [ANTDROID-1383] - Can not build for Android 4.2 [Delete integration with BluetoothService]
    [ANTDROID-1389] - onDestroy() starts new disable thread, when it should be ensuring there are no threads left running

-------------------------------------------------------------

v2.1.0 : 2012-07-20 : Android_System_ANTHALService_2-1-0

Bug

    [ANTDROID-992] - getEnabledState returns disabled while ANT is enabling in BT service
    [ANTDROID-1007] - if enable is called, and already enabled, ENABLED then ENABLING is sent out

Task

    [ANTDROID-1256] - Remove "DSI BlueZ" from name as service is generic
    [ANTDROID-1248] - Remove full path from repository
    [ANTDROID-1286] - Synchronise all updating of state

-------------------------------------------------------------

v2.0.0 : 2012-07-20 : Android_System_ANTHALService_2-0-0

Improvement

    * [ANTDROID-614] - Specify targetSdkVersion to let the system use compatibility behaviours for newer versions

New Feature

    * [ANTDROID-953] - Do ANT enable/disable through BluetoothService ANT methods if they exist

Task

    * [ANTDROID-938] - .classpath needs new entry for ADT Libraries

Sub-task

    * [ANTDROID-786] - Only include LICENCE and NOTICE in system-package_X directories

-------------------------------------------------------------

v1.3.2 : 2012-04-02 : Android_System_ANTHALService_1-3-2

Bug

    [ANTDROID-570] - Unregister callback does not work correctly

New Feature

    [ANTDROID-611] - Define meta-data to notify that this service provides a connection to built-in ANT hardware

-------------------------------------------------------------

v1.3.1 : 2012-03-20 : Android_System_ANTHALService_1-3-1

Bug

    [ANTDROID-533] - Document how to build in to Android with a single HOWTO for each platform type (not seperate steps per component)

-------------------------------------------------------------

v1.3.0 : 2012-02-22 : Android_System_AntHalService_1-3-0

Code Task

    * [ANTDROID-510] - Project has both proguard.cfg and proguard.flags files

Improvement

    * [ANTDROID-511] - Create Hard Reset call from ARS to native

New Feature

    * [ANTDROID-483] - configure ANT in Android build by chip

Sub-task

    * [ANTDROID-481] - create callback for native code so it can do state change intents


-------------------------------------------------------------

v1.2.0 : 2011-12-12 : Android_System_AntHalService_1-2-0

Bug

    * [ANTDROID-314] - An unsuccessful JAntJava.create() doesn't do anything
    * [ANTDROID-380] - Change target API to 7 for onStartCommand() support
    * [ANTDROID-382] - Service will not run for ever once restarted after being destroyed
    * [ANTDROID-384] - Nullpointer in disable thread if onDestroy was called

Code Task

    * [ANTDROID-126] - Ensure header/license is on all possibly released source files
    * [ANTDROID-331] - Update/Sync up documentation of AIDL system service interface
    * [ANTDROID-338] - Update projects for ADT r14 (naming and configuration)

Improvement

    * [ANTDROID-222] - Each component adding to/modifying Android framework should include full path within Android source

New Feature

    * [ANTDROID-7] - Check if "ant" is in Settings.System.AIRPLANE_MODE_RADIOS.

Task

    * [ANTDROID-197] - Individual "how to include in build" file for each component, and Vendors Package HOW TO just says what the components are and where to find HOW TO for each

-------------------------------------------------------------

v1.1.0 : 2011-10-14 : Android_System_AntHalService_1-1-0

Bug

    * [ANTDROID-198] - "Commented out mutex on tx message to test lower level mutex" commit, but change still exists
    * [ANTDROID-215] - Manifest does not point to correct location of BootCompletedReceiver class

Improvement

    * [ANTDROID-170] - ANT HAL Service should start at BOOT_COMPLETED and run forever
    * [ANTDROID-214] - Remove unnecessary Bluetooth and Vibrate permissions
    * [ANTDROID-223] - Put enable and disable on their own threads

Task

    * [ANTDROID-176] - Create ANT HAL Service Release Notes / Revision history / versioning

-------------------------------------------------------------

v1.0.0 : 2011-09-15 : Android_System_AntHalService_1-0-0

Bug

    * [ANTDROID-147] - Dead objects in AntService.java mCallbackList are not cleared
    * [ANTDROID-149] - AntService and JAntJava are able to register multiple callback functions

Improvement

    * [ANTDROID-232] - Use a single JAntJava instance across enable/disables
    * [ANTDROID-233] - Get state (enabled, enabling,...) of ANT chip from lowest layer
    * [ANTDROID-234] - ANT System Service as independent application (not a thread in system_process)

Task

    * [ANTDROID-243] - Treat each component as independent from others (ie stack library, service, command line app, bluedroid rework)

-------------------------------------------------------------

Previous versions were not a stand-alone component.

=============================================================
3. TODO

ANTDROID-685    Update to follow Android Code Style guidelines
ANTDROID-383    Allow multiple clients to register IAntHalCallback
ANTDROID-346    Create AntHalLib
ANTDROID-309    What is Version.java used for for AntHal?
ANTDROID-246    Store platform specific values in system settings
ANTDROID-244    Separate data and command paths

=============================================================
4. KNOWN ISSUES

ANTDROID-961    On a phone with no BluetoothService, ANT HAL will not work
ANTDROID-615    When debugging, registerCallback() doesn't check if callback is null before logging value
