-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Something looming on the horizon is to start getting assets and other files on the external memory and off the NRF52s internal memory is something we have wanted to accomplish for a while.
This brings the question of the best way to handle the FS access over BLE.
A few ideas have been talked about so far
- Adding FS access to the DFU process
- Adding the Adafruit simple (not fast) BLE FS
- Adding a fully custom implementation Filesystem over BLE #164 As implemented in this old PR
Questions:
- Are there other standards out there?
- Which one seems like it will be the most easy to have companion applications implement?
- Which ones might implement breaking changes to existing software?
I have looked into the DFU stuff done as including files as part of updates would be awesome...However doing so is likely to break compatibility with all current implementations of the DFU updater. This makes this not very well desired and FS updates will be much easier to handle through a separate channel. Which brings us to BLE FS in some form.
No matter what we have littlefs as a back end which makes this more of an exercise in how to expose the FS instead of implement one thankfully!
Updates
One of the major concerns here is handling updates. Once assets are not in internal flash anymore we have todo something to ensure they are available to the application. Modifying the DFU process would be ideal here for just that. However as above that is not the most convenient thing to do for anyone...
The current idea in my head is to make a new update package that just has the DFU zip internally, as well as the asset files. then gadgetbridge et al would just be updated to understand that package. Perform the DFU update then transfer the new files via BLE FS not ideal, but at least it would be transparent to the end users.
Lets discuss.
Obviously this is something that will have quite a few moving parts and effect how things are done internally for a while to come on this project. Lets discuss to make sure we pick something that will actually work for our needs now, And later.