-
Notifications
You must be signed in to change notification settings - Fork 8
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
UARTService and Client #1
Comments
IMHO a With streaming people will most probably want to transfer continous sensor data with high sampling rate (eg. gyroscope data, etc.) or maybe even logfiles in which cases packet loss would render the stream almost useless...and that is why guarantee of delivery would make a huge difference. |
@AGlass0fMilk What would be the Bluetooth target for service ? I think BT4.x using characteristics would be the most appropriates for a start as it is present everywhere. However for performance reasons, connection oriented channel would be more appropriate for data transfer. As a second step we can add CoC support in Mbed OS (there's not much to add here!) and amend the service and client to take advantage of the feature of the feature if CoC is supported. In general, I think it would be valuable to have building blocks for data transfer that address the common concerns: Throughput, reliability, power, real time streaming, ... These building blocks could then be reused in services that requires transfer of a large amount of data (DFU, UART, ...). @idea--list A new type of channel is used to transfer BLE audio: Isochronous channels. A good summary of the technology is available in the BT5.2 feature overview document. It seems to be well suited for that type of use cases but the current availability in silicons and stack would prevent usage on most setup.
We also wouldn't need different classes for Reliable and Unreliable data transfer, this can be configured by the client and offer in the service. |
That one is tricky, BLE require processing and it is often made inside the main thread. It can be made with a proxy that calls into the service running with BLE in a different thread. It should be possible to verify thread IDs to provide debug information if the application is blocking from the same thread that is processing BLE. |
I can imagine people using this future UART service for streaming sensor data.
|
BLE Standard Service: No
Proposed UUID(s):
A commonly-requested service for BLE is a UARTService.
Requirements (please comment below to discuss and add yours):
FileHandle
-- similar toBufferedSerial
A buffered GattCharacteristic class can be made to encapsulate code that can be used for other "streaming" characteristics.
See working implementation here: https://github.com/EmbeddedPlanet/ep-oc-mcu/tree/ble-uart-service
Most implementations use unreliable BLE transport mechanisms, ie: write w/o response and notifications. Another, similar class,
GuaranteedUARTService
can be created to use reliable BLE transport mechanisms, ie: normal write (w/ response) and indications. A correspondingGuaranteedUARTServiceClient
can be also be implemented.The text was updated successfully, but these errors were encountered: