371ra8_ipc_send_burst(uint8_t channel,
const uint32_t* data, uint32_t count, uint32_t* out_written);
459ra8_ipc_recv_burst(uint8_t channel, uint32_t* out_data, uint32_t capacity, uint32_t* out_read);
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Inter-Processor Communication (IPC) register layout for the RA8D2.
ra8_ipc_core_id_t
Logical CPU core identifiers used by attribution helpers.
ra8_ipc_sem_attr_group_t
IPCSEMn attribution-group selector (HUM Ch 3.3.1 p 227-228).
Inter-Processor Communication (IPC) HAL driver – public types.
ra8_ipc_irq_event_id_t
Index of an IRQ event line within a channel (0..7).
ra8_err_t ra8_ipc_recv_message(uint8_t channel, uint32_t *out_msg)
Pop one 32-bit word from the channel RX FIFO.
ra8_err_t ra8_ipc_send_message_retry(uint8_t channel, uint32_t message, uint16_t max_retries)
Bounded-retry variant of ra8_ipc_send_message.
ra8_err_t ra8_ipc_clear_errors(uint8_t channel)
Clear RERR + FERR on the channel.
ra8_err_t ra8_ipc_send_message(uint8_t channel, uint32_t message)
Push one 32-bit word into the channel TX FIFO.
ra8_err_t ra8_ipc_channel_for_recv(ra8_ipc_core_id_t core, uint8_t pair, uint8_t *out_channel)
Pick the channel id this core reads from.
ra8_err_t ra8_ipc_get_attribution(uint8_t channel, ra8_ipc_attr_t *out_attr)
Read the security / privilege attribution for one channel.
ra8_err_t ra8_ipc_has_data(uint8_t channel, bool *out_has_data)
Predicate: would ra8_ipc_recv_message succeed right now?
ra8_err_t ra8_ipc_init(const ra8_ipc_config_t *cfg)
Initialise one IPC channel.
ra8_err_t ra8_ipc_clear_event(uint8_t channel, ra8_ipc_irq_event_id_t event_id)
Clear one received IRQ event line on the local core.
ra8_err_t ra8_ipc_set_event_mask(uint8_t channel, uint32_t mask)
Update the event-mask filter for an already-initialized channel.
ra8_err_t ra8_ipc_get_status(uint8_t channel, uint32_t *out_sta)
Read the raw channel status register.
ra8_err_t ra8_ipc_can_access(uint8_t channel, ra8_ipc_attr_t const *required, bool *out_can_access)
Predicate: does this core's attribution allow writing the channel?
ra8_err_t ra8_ipc_channel_for_send(ra8_ipc_core_id_t core, uint8_t pair, uint8_t *out_channel)
Pick the channel id this core writes to.
ra8_err_t ra8_ipc_clear_status(uint8_t channel, uint32_t mask)
Clear selected status bits on a channel.
ra8_err_t ra8_ipc_get_nmi_attribution(uint8_t unit, ra8_ipc_attr_t *out_attr)
Read the attribution for one NMI unit.
ra8_err_t ra8_ipc_send_burst(uint8_t channel, const uint32_t *data, uint32_t count, uint32_t *out_written)
Push up to count words into the channel TX FIFO.
ra8_err_t ra8_ipc_reset_fifo(uint8_t channel)
Issue a CLR.RST on one channel without altering callbacks.
ra8_err_t ra8_ipc_get_sem_attribution(ra8_ipc_sem_attr_group_t group, ra8_ipc_attr_t *out_attr)
Read the attribution for an IPCSEM group.
ra8_err_t ra8_ipc_send_event(uint8_t channel, ra8_ipc_irq_event_id_t event_id)
Generate a maskable IRQ event on the peer core.
ra8_err_t ra8_ipc_can_send(uint8_t channel, bool *out_can_send)
Predicate: would ra8_ipc_send_message succeed right now?
ra8_err_t ra8_ipc_recv_message_retry(uint8_t channel, uint32_t *out_msg, uint16_t max_retries)
Bounded-retry variant of ra8_ipc_recv_message.
ra8_err_t ra8_ipc_recv_burst(uint8_t channel, uint32_t *out_data, uint32_t capacity, uint32_t *out_read)
Drain up to capacity words from the channel RX FIFO.
ra8_err_t ra8_ipc_deinit(uint8_t channel)
Tear down one IPC channel.
Snapshot of the security / privilege attribution for one IPC channel, decoded from IPCSAR / IPCPAR.
Per-channel configuration descriptor passed to ra8_ipc_init.