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

Inter-Processor Communication (IPC) HAL driver – public types. More...

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

Go to the source code of this file.

Data Structures

struct  ra8_ipc_attr_t
 Snapshot of the security / privilege attribution for one IPC channel, decoded from IPCSAR / IPCPAR. More...
struct  ra8_ipc_config_t
 Per-channel configuration descriptor passed to ra8_ipc_init. More...
struct  ra8_ipc_ring_t
 Shared-memory ring-buffer descriptor used by the producer / consumer protocol primitives. More...

Typedefs

typedef void(* ra8_ipc_event_fn_t) (void *ctx, uint8_t channel, uint32_t event_mask, uint32_t message)
 IPC event callback signature.
typedef void(* ra8_ipc_irq_fn_t) (void *ctx, uint8_t channel, ra8_ipc_irq_event_id_t event_id)
 Per-IRQ-event-line callback signature.
typedef void(* ra8_ipc_nmi_fn_t) (void *ctx, uint8_t unit)
 NMI dispatch callback signature.

Enumerations

enum  ra8_ipc_event_t : uint32_t {
  k_ra8_ipc_event_none = 0x00000000U ,
  k_ra8_ipc_event_irq0 = 0x00000001U ,
  k_ra8_ipc_event_irq1 = 0x00000002U ,
  k_ra8_ipc_event_irq2 = 0x00000004U ,
  k_ra8_ipc_event_irq3 = 0x00000008U ,
  k_ra8_ipc_event_irq4 = 0x00000010U ,
  k_ra8_ipc_event_irq5 = 0x00000020U ,
  k_ra8_ipc_event_irq6 = 0x00000040U ,
  k_ra8_ipc_event_irq7 = 0x00000080U ,
  k_ra8_ipc_event_irq_all = 0x000000FFU ,
  k_ra8_ipc_event_msg_ready = 0x00010000U ,
  k_ra8_ipc_event_fifo_full = 0x00020000U ,
  k_ra8_ipc_event_err_empty = 0x01000000U ,
  k_ra8_ipc_event_err_full = 0x02000000U
}
 Bitmask reported to the user callback during dispatch. More...
enum  ra8_ipc_irq_event_id_t : uint8_t {
  k_ra8_ipc_irq_event_0 = 0U ,
  k_ra8_ipc_irq_event_1 = 1U ,
  k_ra8_ipc_irq_event_2 = 2U ,
  k_ra8_ipc_irq_event_3 = 3U ,
  k_ra8_ipc_irq_event_4 = 4U ,
  k_ra8_ipc_irq_event_5 = 5U ,
  k_ra8_ipc_irq_event_6 = 6U ,
  k_ra8_ipc_irq_event_7 = 7U
}
 Index of an IRQ event line within a channel (0..7). More...
enum  ra8_ipc_retry_limits_t : uint16_t {
  k_ra8_ipc_retry_default = 16U ,
  k_ra8_ipc_retry_max = 1024U ,
  k_ra8_ipc_sem_take_max = 1024U
}
 Retry-loop bounds used by the bounded-wait helpers. More...

Detailed Description

Inter-Processor Communication (IPC) HAL driver – public types.

Tag
[Ring 3 / HAL] {World: NS}

Public typed enums, structures, and callback typedefs for the RA8D2 IPC mailbox driver. Split out of ra8_ipc.h so each header stays within the repository file-size budget; ra8_ipc.h re-includes this header so existing consumers are unaffected.

Since
0.1.0

Definition in file ra8_ipc_types.h.

Typedef Documentation

◆ ra8_ipc_event_fn_t

typedef void(* ra8_ipc_event_fn_t) (void *ctx, uint8_t channel, uint32_t event_mask, uint32_t message)

IPC event callback signature.

Parameters
[in]ctxContext pointer captured at attach time.
[in]channelChannel id 0..3 that fired the event.
[in]event_maskBitwise OR of ra8_ipc_event_t flags.
[in]messageMessage word read from RXD when the event set k_ra8_ipc_event_msg_ready; 0 otherwise.

Definition at line 127 of file ra8_ipc_types.h.

◆ ra8_ipc_irq_fn_t

typedef void(* ra8_ipc_irq_fn_t) (void *ctx, uint8_t channel, ra8_ipc_irq_event_id_t event_id)

Per-IRQ-event-line callback signature.

Parameters
[in]ctxContext pointer captured at attach time.
[in]channelChannel id 0..3.
[in]event_idIRQ event id 0..7 that fired.

Definition at line 140 of file ra8_ipc_types.h.

◆ ra8_ipc_nmi_fn_t

typedef void(* ra8_ipc_nmi_fn_t) (void *ctx, uint8_t unit)

NMI dispatch callback signature.

Parameters
[in]ctxContext pointer captured at attach time.
[in]unitNMI unit id 0..1 (k_ra8_ipc_unit_ipc0 / ipc1).

Definition at line 149 of file ra8_ipc_types.h.

Enumeration Type Documentation

◆ ra8_ipc_event_t

enum ra8_ipc_event_t : uint32_t

Bitmask reported to the user callback during dispatch.

Mirrors the IPCnSTAm bit layout from HUM Ch 3.2.10 p 214 in a form suitable for the public API. Multiple flags can coexist in a single dispatch – e.g. RDY + IRQ0 if a peer wrote a message and signalled an event in the same window.

Enumerator
k_ra8_ipc_event_none 

No event pending.

k_ra8_ipc_event_irq0 

Maskable IRQ event line 0.

k_ra8_ipc_event_irq1 

Maskable IRQ event line 1.

k_ra8_ipc_event_irq2 

Maskable IRQ event line 2.

k_ra8_ipc_event_irq3 

Maskable IRQ event line 3.

k_ra8_ipc_event_irq4 

Maskable IRQ event line 4.

k_ra8_ipc_event_irq5 

Maskable IRQ event line 5.

k_ra8_ipc_event_irq6 

Maskable IRQ event line 6.

k_ra8_ipc_event_irq7 

Maskable IRQ event line 7.

k_ra8_ipc_event_irq_all 

IRQ7..IRQ0 union mask.

k_ra8_ipc_event_msg_ready 

RDY: receive FIFO non-empty.

k_ra8_ipc_event_fifo_full 

FULL: send FIFO is full.

k_ra8_ipc_event_err_empty 

RERR: read-while-empty.

k_ra8_ipc_event_err_full 

FERR: write-while-full.

Definition at line 42 of file ra8_ipc_types.h.

◆ ra8_ipc_irq_event_id_t

enum ra8_ipc_irq_event_id_t : uint8_t

Index of an IRQ event line within a channel (0..7).

Enumerator
k_ra8_ipc_irq_event_0 

RA8 ipc IRQ event 0.

k_ra8_ipc_irq_event_1 

RA8 ipc IRQ event 1.

k_ra8_ipc_irq_event_2 

RA8 ipc IRQ event 2.

k_ra8_ipc_irq_event_3 

RA8 ipc IRQ event 3.

k_ra8_ipc_irq_event_4 

RA8 ipc IRQ event 4.

k_ra8_ipc_irq_event_5 

RA8 ipc IRQ event 5.

k_ra8_ipc_irq_event_6 

RA8 ipc IRQ event 6.

k_ra8_ipc_irq_event_7 

RA8 ipc IRQ event 7.

Definition at line 63 of file ra8_ipc_types.h.

◆ ra8_ipc_retry_limits_t

enum ra8_ipc_retry_limits_t : uint16_t

Retry-loop bounds used by the bounded-wait helpers.

NASA Power of 10 Rule 2 demands all loops have statically-provable upper bounds. ra8_ipc_send_message_retry and ra8_ipc_recv_message_retry use these enums so the loop bound is a compile-time constant, not a magic number.

Enumerator
k_ra8_ipc_retry_default 

Default poll bound for FIFO retry.

k_ra8_ipc_retry_max 

Hard cap accepted by the API.

k_ra8_ipc_sem_take_max 

Hard cap on semaphore-take spins.

Definition at line 84 of file ra8_ipc_types.h.