-
Notifications
You must be signed in to change notification settings - Fork 27
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
Support for other transports (SPI, BLE, TCP/IP, RTT, ...) #26
Comments
Yep, on the PC side, #25 is starting to work towards this, and in the near future I plan to restore "UART + COBS" functionality. Likely, we will need some kind of similar "Wire" abstraction for the MCU side as well, and I'll need to rework the I'm open to PRs that make this happen, ideally starting with adding back UART+COBS, but also open to a PR that refactors this in a way where supporting two different transports (ideally without a lot of duplicated dispatcher code) is possible. |
It would be awesome if we could use any transport that implements embedded-io |
If anyone is following this, the changes between 0.7 and 0.10 have made it much easier to write a transport, including blanket ones like @okhsunrog suggested. I probably will not write this in the near future (as I don't need it), but if someone wants to take it on, I'm happy to chat or say how I would do it. |
In particular, if you can implement the postcard-rpc/source/postcard-rpc/src/server/mod.rs Lines 40 to 167 in d067d98
You should be able to support whatever interface you'd like. Please feel free to add an impl to |
Added RTT to the title because at some point I would like to have that. |
+1 for RTT transport support 👍 |
I'm using a cli terminal in a similar way, I implemented embedded-io for RTT and I can easily switch interfaces. I'm actually interested in trying postcard-rpc with RTT, but I'm not sure yet if it fits my task. |
one potential blocker to supporting RTT is we need some kind of async re: two embedded devices, see #37 - there isn't a no-std |
@jamesmunns I guess we can do something like this for now, polling in a loop:
|
@okhsunrog yep, I agree that is a reasonable "not great, not bad" solution, and is exactly what I had in mind :) |
I'm developing an embedded device that should be operable through multiple interfaces:
The goal is to make all device functionality accessible regardless of the available interface. This leads to two concerns with the current implementation:
Let me know if you'd like more details about either of these use cases. |
Hey @Dicklessgreat, so this issue is mostly for tracking the implementation of new
|
Noting here, I currently have two WIP transports, help welcome for getting them polished up and merged:
|
Thank you for the fantastic work on this library! It significantly reduces the effort to get RPC comms established between a host and embedded device.
Currently, the framework as a whole only supports transport over serial or USB, with the
target_server
side specifically relying on the embassy-usb driver. I am interested in what it would take to support other transports such as SPI, BLE (using thetrouble
lib, which abstracts over Bluetooth HCI and is thus more versatile than implementing support for a specific stack like the NRF SoftDevice), or TCP/IP viasmoltcp
. While I see a clear path to implementing SPI or BLE support on thehost_client
side, it is unclear how to extend this support to thetarget_server
embedded side. I've loosely been following your blog where it looks like you've been thinking about this on some level already. I hope this issue can serve as a log or discussion place for these implementations.The text was updated successfully, but these errors were encountered: