Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds an optional Bluetooth Medic class that can be used to look for crashes in the Bluetooth stack, and optionally power cycle bluetooth to attempt to recover when crashes are found. This has been proven to be effective in testing with the the Samsung J3 and the Huawei P9 Lite.
The medic performs two optionally configurable tests, one that does a brief bluetooth scan and one that transmits over bluetooth. Both can detect a bluetooth stack crash based on the error codes returned if there are failures.
The Medic can be run in three modes: passive manual and automatic. Automatic mode uses a Scheduled Job to run the configured tests every 15 minutes. Manual mode allows the user to run the tests manually at a time of their choosing. Passive mode simply looks for failures on the library's regular scanning, for which local broadcast events have been added in the event of failures.
By default, the medic does nothing.
To start the medic passively to recover from crashes:
To start the medic manually to recover from crashes:
To start the medic to automatically run tests and recover from crashes: