Hone Developer Information

Note: this page is in draft status and some details may be inaccurate. 


Hone in general provides the following services:

Battery Info Service:
<https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245138>
Device Info Service:
<https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=244369>
Immediate Alert Service:
<https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=239390>

Notes:
The battery service provides the raw voltage value that is presented by the builtin bond gap ADC. That means that the reading will drop significantly during usage and recover afterwards. It also means that that the percentages read off the device are non-linear and should be mapped to a linear form before being presented to the user (see <http://data.energizer.com/PDFs/cr2032.pdf>).

Additionally Hone provides a custom service (HONE_SERVICE_UUID) used for managing the devices bluetooth bonding information. By default Hone boots up in a non-bonded mode, and will accept connections and allow full functionality from any device. In order to bond with the device attempt to read from the HONE_BONDING_DOORBELL_UDID. Hone will send an insufficient auth error back, at which point the host device you are using will initiate bonding and present a dialog to the user. This will only work if the device is currently unbonded, or if you place it in a bondable state by pressing the button on the device. Once the device is bonded most operations (making the device buzz, reset, etc) will only work with a bonded device.

You can inspect the current bonding status by reading the HONE_BONDING_CONNECTION_STATUS_UDID. 0 indicates that the link is
unbonded. 1 indicates that the link is bonded.

You can check the number of bonded device by reading the HONE_BONDING_COUNT_UDID. Hone supports a maximum of 10 bonded devices.

You can reset the Hone by pressing and holding the button. The LED will light green solid green, then after 10 seconds it will start
blinking. Once it starts blinking you can let go, when it stops blinking the device will be rebooted and all bondings will be erased.
You can also reset the hone by writing any value to the HONE_DEVICE_RESET_UUID

Hone will time out and disconnect from any connection that has not issued a command for more than ~30 seconds unless it is actively
running the buzzer or LEDs. While connected Hone uses substantially more power than while advertising, it best to connect to Hone briefly, issue commands, and then disconnect. You can force the device to disconnect by writing to HONE_DEVICE_DISCONNECT_UUID.

HONE_SERVICE_UUID 8DBC5C8B-5165-4B43-8DA7-DF39C5FF8FE3
HONE_BONDING_CONNECTION_STATUS_UDID 577FE739-2AE6-46A7-8493-C0B5198E25F9
HONE_BONDING_COUNT_UDID C3601366-B701-4F70-9BA5-B05F5103A2FB
HONE_DEVICE_RESET_UUID DAB15407-51E9-465D-AA06-DBBFFD0D50DD
HONE_DEVICE_DISCONNECT_UUID EE5A026A-BF3A-4BA4-B070-D315F7D3ABC2
HONE_BONDING_DOORBELL_UDID C5AF9583-2553-4802-9B5C-4347BB025F39

There may be additional services and characteristics presented by the Hone device. Some of these are used for factory testing, other are there to support future features we may eventually support, but should be considered untested.