# /space/home/slher/rel/Beken/v6_4_5/macsw/plf/refip/src/driver/ipc/ipc_emb.c File Reference

IPC module. More...

`#include <string.h>`
`#include "rwnx_config.h"`
`#include "dbg_assert.h"`
`#include "co_math.h"`
`#include "ke_mem.h"`
`#include "ke_msg.h"`
`#include "ke_task.h"`
`#include "ke_event.h"`
`#include "tx_swdesc.h"`
`#include "rxl_cntrl.h"`
`#include "txl_buffer.h"`
`#include "dma.h"`
`#include "ipc_emb.h"`
`#include "ipc_shared.h"`
`#include "sysctrl.h"`
`#include "dbg.h"`
`#include "txl_cntrl.h"`
`#include "txl_agg.h"`
`#include "txu_cntrl.h"`

Go to the source code of this file.

## Defines
#define | MSG_LLICTRL(irqenable) ( (irqenable)?(IPC_DMA_LLI_IRQ_EN|(IPC_DMA_LLI_MSG << IPC_DMA_LLI_IRQ_POS)) : 0)
| Configure the DMA control field for a kernel message upload.
#define | DBG_LLICTRL(irqenable) ( (irqenable)?(IPC_DMA_LLI_IRQ_EN|(IPC_DMA_LLI_DBG << IPC_DMA_LLI_IRQ_POS)) : 0)
| Configure the DMA control field for a debug message upload.
#define | ALL_EVENTS_TX
| Bit field containing all IPC TX event bits.
#define | HIGH_PRIO_EVT (KE_EVT_RXREADY_BIT | KE_EVT_PRIMARY_TBTT_BIT | KE_EVT_MACIF_TXDESC_BCN_BIT)
| High priority kernel that should interrupt the IPC TX event.
## Functions
__INLINE void | ipc_emb_txdesc_copy (struct txdesc *dst_local, volatile struct txdesc_host *src_shared)
| Copy a TX descriptor from its shared RAM location to the CPU data memory.
uint8_t | ipc_emb_tx_q_len (int queue_idx, int vif_idx)
| Check how many tx descriptors are available on the requested queue for a VIF.
void | ipc_emb_init (void)
| Initialize the IPC on the embedded side.
void | ipc_emb_tx_flow_off (void)
| Stop the TX flow between the upper layers and the LMAC software.
void | ipc_emb_tx_flow_on (void)
| Restart the TX flow between the upper layers and the LMAC software.
void | ipc_emb_tx_irq (void)
| Handle Tx packet interrupt on the emb side.
void | ipc_emb_tx_evt (int queue_idx)
| Kernel event handler for the handling of the TX descriptor pushed by the host.
void | ipc_emb_cfmback_irq (void)
| IRQ handler.
static uint32_t | ipc_emb_hostmsgbuf_get (void)
| Retrieve a hostbuf address for future DMA transfer of a MSG.
static uint32_t | ipc_emb_hostdbgbuf_get (void)
| Retrieve a hostbuf address for future DMA transfer of a debug buffer.
uint32_t | ipc_emb_hostdbgdumpbuf_get (void)
| Retrieve a hostbuf address for debug dump transfer.
bool | ipc_emb_hostrxbuf_check (void)
| Checks if a host buffer is currently available.
uint32_t | ipc_emb_hostrxbuf_get (uint32_t *host_id)
| Retrieve a hostbuf address for future DMA transfer.
bool | ipc_emb_hostrxdesc_check (void)
| Check if a RX descriptor is available.
uint32_t | ipc_emb_hostrxdesc_get (void)
| Retrieve a host RX descriptor address for future DMA transfer.
uint32_t | ipc_emb_hostradarbuf_get (void)
| Retrieve a hostbuf address for future radar event DMA transfer.
void | ipc_emb_rxdata_ind (void)
| Sends an Data Reception Indication to the upper layer.
void | ipc_emb_radar_event_ind (void)
| Indicate to the upper side that at least one radar event is pending.
void | ipc_emb_txcfm_ind (uint32_t queue_bits)
| Indicate to the upper side that at least on confirmation is pending.
void | ipc_emb_prim_tbtt_ind (void)
| Indicate to the upper side that the primary TBTT is pending.
void | ipc_emb_sec_tbtt_ind (void)
| Indicate to the upper side that the secondary TBTT is pending.
static void | ipc_emb_kmsg_hdlr (struct ke_msg *kmsg_ipc)
| Copy and forward kernel messages received from the IPC to the destination task.
void | ipc_emb_msg_irq (void)
| IRQ handler.
void | ipc_emb_msg_evt (int dummy)
| EVT handler.
void | ipc_emb_kmsg_fwd (const struct ke_msg *ke_msg)
| Forward a kernel message to the host side (emb side).
void | ipc_emb_msg_dma_int_handler (void)
| Handles the DMA interrupt generated when the MSG from Embedded side to Application has been transferred.
void | ipc_emb_print_fwd (bool poll, const uint32_t len, char *string)
| Send an EMB string to the APP - IPC API function.
void | ipc_emb_dbg_dma_int_handler (void)
| Handles the DMA interrupt generated when the Debug message from Embedded side to Application has been transferred.
## Variables
const uint32_t | ipc_emb_evt_bit [NX_TXQ_CNT]
| Array of bits event to be triggered per TX queue index.
struct ipc_emb_env_tag | ipc_emb_env
| Global variable containing the IPC_EMB environment.
const int | nx_txdesc_cnt_msk []
| Mask for the indexes of the different queues.

## Detailed Description

IPC module.

Copyright C) RivieraWaves 2011-2019

Definition in file ipc_emb.c.