seeed-erpc

Crates.ioseeed-erpc
lib.rsseeed-erpc
version0.1.1
sourcesrc
created_at2020-12-02 04:55:38.951866
updated_at2020-12-31 07:04:39.597893
descriptionDriver crate for interacting with seeed-studio eRPC Wifi devices.
homepage
repositoryhttps://github.com/twitchyliquid64/seeed-erpc-rs
max_upload_size
id318804
size37,467
Twitch (twitchyliquid64)

documentation

https://docs.rs/seeed-erpc/

README

seeed-erpc-rs

Crates.io usbd-hid

An embedded / no-std implementation of Seeed Studio's eRPC protocol, which is used to communicate with their RTL8720 firmware.

Most notably, this is the main firmware for the wifi chip in their Wio Terminal product.

WIP - most RPCs are not yet implemented.

Usage

Have a look at the Wio terminal BSP implementation for an example of how to use this.

To summarize:

  1. Generate the request bytes by combining the bytes generated by RPC::header(sequence_number) with the bytes extended from RPC::args(&mut buff).
  2. Transmit FrameHeader::new_from_msg(request_bytes) followed by request_bytes itself.
  3. Receive 4 bytes from the remote end (the frame header), and parse them using FrameHeader::parse().
  4. Receive the response payload by reading the next frame_header.msg_length bytes.
  5. Verify the CRC by calling frame_header.check_crc(&payload_bytes).
  6. Finally, get the result of the RPC by calling RPC::parse(&payload_bytes).

Handling 'callback' messages

Sometimes the remote end will send you data even if you didn't ask for it. These are the 'callback' service 'oneway' RPCs. Handling these is a little annoying. The trick is to repeat steps 3-6 above if you get the error Err::NotOurs back from RPC::parse().

Commit count: 7

cargo fmt