![]() |
Contiki-NG
|
Shared memory layout between the application core and the network core. More...
#include <arch/cpu/nrf/net/nrf-ipc.h>
Data Fields | ||
| uint32_t | version | |
| Protocol version for compatibility checking. | ||
| volatile uint32_t | net_ready | |
| Set to 1 by the net core when it has initialized the radio. | ||
| struct nrf_ipc_msg | cmd | |
| Command mailbox (app -> net). | ||
| volatile uint8_t | cmd_seq | |
| Sequence number set by app core. | ||
| struct nrf_ipc_msg | rsp | |
| Response mailbox (net -> app). | ||
| volatile uint8_t | rsp_seq | |
| Echoed from cmd_seq by net core. | ||
| struct { | ||
| } | rx | |
| Received data frame (net -> app, asynchronous). | ||
| struct { | ||
| } | rx_ack | |
| Received ACK frame (net -> app, asynchronous). | ||
| volatile uint32_t | heartbeat | |
| Heartbeat counter (used as IPC MAC RX frame counter). | ||
| struct { | ||
| volatile uint16_t head | ||
| Written by net core. | ||
| volatile uint16_t tail | ||
| Written by app core. | ||
| volatile uint32_t overflow | ||
| Characters dropped due to full buffer. | ||
| } | log | |
| Log ring buffer (net -> app). | ||
Shared memory layout between the application core and the network core.
The command/response mailbox is used for synchronous operations: the app core writes a command, signals the net core, and busy-waits for the response.
The RX area is used for asynchronous frame reception: the net core writes a received frame and signals the app core.
| struct { ... } nrf_ipc_shared_mem::log |
Log ring buffer (net -> app).
Single-producer, single-consumer.
| struct { ... } nrf_ipc_shared_mem::rx |
Received data frame (net -> app, asynchronous).
Used for non-ACK frames delivered via the process thread.
Referenced by packet_input().
| struct { ... } nrf_ipc_shared_mem::rx_ack |
Received ACK frame (net -> app, asynchronous).
Separate from rx to avoid CSMA's ACK detection loop consuming data frames. Only 3-byte 802.15.4 ACK frames go here.
Referenced by packet_input().