Improve GATT Serial Transport message handling #15
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.
BLE characteristics transport mechanism limits message length to max 20 bytes. This, in combination with GATT Serial Transport message format of BLE Bean, provides sufficient space for max. 15 characters in one single serial message (in an non-fragmented GST buffer, as implemented by the current algorithm). Attempts to transport longer messages not only fail (as expected), but such malformed messages also appear to trigger bugs in the Bean firmware (so that, ultimately, an affected Bean needs to be cold-restarted).
The modification updates algorithm to the desired state: message payload is split to 19-byte chunks, which are then sent in a sequence as defined by the Bean GST protocol specification.
lib/Bean.js - Bean.prototype.send