ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_c6link_transport.h File Reference

The one seam between ra8_c6link and the wire that reaches the C6. More...

#include <stdint.h>
#include "ra8_err.h"
Include dependency graph for ra8_c6link_transport.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

 Function-pointer seam a backend fills so the facade can reach the C6. More...

Typedefs

typedef struct ra8_c6link_transport ra8_c6link_transport_t

Detailed Description

The one seam between ra8_c6link and the wire that reaches the C6.

Tag
[Ring 4 / PAL] {World: NS}

Everything ra8_c6link knows about hardware is these three function pointers. The facade above them frames, checksums, encodes protobuf and correlates responses; none of that changes if the C6 is reached over full-duplex SPI today and over something else tomorrow, so none of it is allowed to name a peripheral.

Two implementations exist and are interchangeable (Liskov):

  • port/esp-hosted/ binds the seam to the ported esp-hosted OS-abstraction vtable, which is what drives the SCI Simple-SPI channel on the board;
  • tests/wireless/src/test_ra8_c6link.c binds it to a co-processor model that speaks the real wire protocol back at the facade, which is how every layer above this file is proven with no board attached.
Why the seam is exactly three rows
A transaction on this link is: wait until the co-processor says it is armed, then clock a fixed-size buffer out and another one in, then let something else run. There is no read-only or write-only direction to express – the bus is full duplex and every transaction moves k_ra8_c6link_frame_bytes in both directions whether or not either side had anything to say.

DATA_READY is deliberately absent. The board routes it and the port reads it, but no first-party evidence yet describes how the co-processor drives it under load, and a facade that gated transactions on an unproven signal would be guessing. Until #492 measures it, this link discovers pending receive data by clocking a transaction, which is what the bench-proven bring-up did.

Since
0.1.0

Definition in file ra8_c6link_transport.h.

Typedef Documentation

◆ ra8_c6link_transport_t