When a device goes out of range and then comes back into range DeviceCommunicationService disposes DeviceSupport while trying to re-establish a connection.
This causes race conditions as there are multiple for path for reconnections that can be executed in parallel.
The DeviceService.ACTION_CONNECT path kills everything abruptly potential leaving the gadget with a broken connection.
partial backport from PR #4916
If both PROPERTY_WRITE and PROPERTY_WRITE_NO_RESPONSE are supported by a BluetoothGattCharacteristic Android defaults to WRITE_TYPE_NO_RESPONSE.
This then may cause early BluetoothGattCallback.onCharacteristicWrite calls when the write has been queued on the mobile but potentially not yet actually completely reached the gadget.
Depending on the queued BtLEAction(s) and timing details this is often harmless but may sporadically cause inconsistencies.
Must be explicitly enabled in the device specific developer settings.
Add support for:
- Charging status
- Battery level of the case
- Fetching Serial Number
- Parsing hardware information from serial number
- Add Hard Reset button
- Toggle for device level debug logging
- Bug Fix: kill heartbeat worker on disconnect
- Weather
- Toggle for 12H/24H time
- Set the dashboard to minimal on connection
This change adds in a toggle for "silent mode" which turns the displays
off and makes the glasses act like normal glasses.
This change also adds the following configuration settings:
- Screen Location/height
- Screen Depth Effect
- Head Tilt Activation Angle
- Toggle Auto Brightness
- Brightness Level
- Wear Detection
Also refactored Communications file to have a consistent naming style.
This change switches G1DeviceSupport from managing to individual devices
to using AbstractBTLEMultiDeviceSupport which allows it to manage both
BLE connections under a single support class. This also updates the
Pairing activity to make it much more reliable at bonding and pairing
both devices.