Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve GATT Serial Transport message handling #15

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

janklabacka
Copy link

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

  • CRC part of GST buffer (gstBuffer)
  • gstBuffer sliced to 19-byte chunks (->gstChunk[])
  • the chunks then sent via SERIAL_UUID BLE characteristics

lib/Bean.js - Bean.prototype.send
 - CRC part of GST buffer (gstBuffer)
 - gstBuffer sliced to 19-byte chunks (->gstChunk[])
 - the chunks then sent via SERIAL_UUID BLE characteristics
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant