MCUSW
CDD_IPC Configuration

Introduction

Data Structures

struct  Cdd_IpcMpType
 Defines processor identifiers Core on which MCAL/AUTOSAR is hosted and other cores with which IPC is desired. More...
 
struct  Cdd_IpcVertIoType
 Defines Shared Memories for VRING and VRING OBJECT VRING is the shared memory between cores and VRING OBJECT is used implement queue. Please refer design/user guide for details. More...
 
struct  Cdd_IpcChannelType
 Defines logical communication channel between cores. More...
 
struct  Cdd_IpcConfigType
 CDD IPC Configuration type. More...
 
struct  Cdd_IpcRegRbValues
 
struct  Cdd_IpcChannelBufType
 Channel RP Msg buffer type Used to hold the received buffer, before apps can pick it up. More...
 

Functions

 Cdd_IpcConfigType::P2CONST (Cdd_IpcChannelType, AUTOMATIC, CDD_IPC_CONST) pChCfg
 

Variables

uint32 Cdd_IpcMpType::ownProcID
 
uint32 Cdd_IpcMpType::numProcs
 
uint32 Cdd_IpcMpType::remoteProcID [CDD_IPC_CORE_USED]
 
uint32 Cdd_IpcMpType::reserved
 
void * Cdd_IpcVertIoType::vertIoRingAddr
 
uint32 Cdd_IpcVertIoType::vertIoRingSize
 
uint32 Cdd_IpcVertIoType::vertIoObjSize
 
uint32 Cdd_IpcVertIoType::reserved
 
uint32 Cdd_IpcChannelType::id
 
uint32 Cdd_IpcChannelType::localEp
 
uint32 Cdd_IpcChannelType::remoteEp
 
uint32 Cdd_IpcChannelType::remoteProcId
 
uint32 Cdd_IpcChannelType::numMsgQueued
 
uint32 Cdd_IpcChannelType::maxMsgSize
 
Cdd_Ipc_NewMessage Cdd_IpcChannelType::NewMessageNotify
 
uint32 Cdd_IpcChannelType::reserved
 
Cdd_IpcMpType Cdd_IpcConfigType::coreIds
 
Cdd_IpcVertIoType Cdd_IpcConfigType::vertIoCfg
 
uint32 Cdd_IpcConfigType::channelCount
 
uint32 Cdd_IpcConfigType::reserved
 
uint32 Cdd_IpcRegRbValues::numRegisters
 
uint32 Cdd_IpcRegRbValues::regValues [CDD_IPC_CORE_ID_MAX]
 
uint32 Cdd_IpcRegRbValues::cddipcRev
 
uint32 Cdd_IpcRegRbValues::cddipcsyscfg
 
uint32 Cdd_IpcRegRbValues::cddipceoi
 
uint32 Cdd_IpcRegRbValues::cddipcmsg
 
uint32 Cdd_IpcRegRbValues::cddipcfifosts
 
uint32 Cdd_IpcRegRbValues::cddipcmsgsts
 
uint32 Cdd_IpcRegRbValues::cddipcirqrawsts
 
uint32 Cdd_IpcRegRbValues::cddipcclrsts
 
uint32 Cdd_IpcRegRbValues::cddipcenbclr
 
uint32 Cdd_IpcRegRbValues::cddipcenbset
 
uint32 Cdd_IpcRegRbValues::reserved
 
uint8 * Cdd_IpcChannelBufType::pBuf
 
uint32 Cdd_IpcChannelBufType::bufSize
 

CDD IPC Error Codes

 AUTOMATIC
 
CDD_APP_DATA VersionInfoPtr
 
 chId
 
CDD_APP_DATA pBuf
 
CDD_APP_DATA pRemoteProcId
 
 remoteProcId
 
uint32 uint32 val
 
uint32 uint32 uint32 timeoutCnt
 
 FUNC (void, CDD_IPC_CODE) Cdd_IpcGetVersionInfo(P2VAR(Std_VersionInfoType
 Service for getting CDD version. More...
 
 FUNC (Std_ReturnType, CDD_IPC_CODE) Cdd_IpcDeinit(void)
 Service for deinitializing CDD. More...
 
 P2CONST (void, AUTOMATIC, CDD_APP_DATA) pBuf
 
 VAR (uint32,) bufLen)
 
 P2VAR (void, AUTOMATIC, CDD_APP_DATA) pBuf
 
 P2VAR (uint32, AUTOMATIC, CDD_APP_DATA) bufLen)
 
 P2VAR (Cdd_IpcRegRbValues, AUTOMATIC, CDD_APP_DATA) pRegArgs)
 
 FUNC (boolean, CDD_IPC_CODE) Cdd_IpcIsInitDone(void)
 Service for checking if IPC module is initialized. More...
 
 FUNC (uint32, CDD_IPC_CODE) Cdd_IpcGetMaxMsgSize(VAR(uint32
 Service for checking if IPC module is initialized. More...
 
 FUNC (int32_t, CDD_IPC_CODE) Cdd_Ipc_Send_Ack(uint32 selfId
 

Function Documentation

◆ P2CONST() [1/2]

Cdd_IpcConfigType::P2CONST ( Cdd_IpcChannelType  ,
AUTOMATIC  ,
CDD_IPC_CONST   
)

Pointer to array of channel conditions

◆ FUNC() [1/5]

FUNC ( void  ,
CDD_IPC_CODE   
)

Service for getting CDD version.

Dummy API to call mailbox API Ipc_mailboxDisableNewMsgInt from Application : API Mailbox Disable new MSG interrupt for a given remote processor.

Service for CDD Initialization.

*  Service name        : Cdd_IpcGetVersionInfo
*  Syntax              : void Cdd_IpcGetVersionInfo(Std_VersionInfoType
*                                                              VersionInfoPtr)
*  Mode                : User Mode (Non-Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_GETVERSIONINFO
*  Sync/Async          : Synchronous
*  Reentrancy          : Non Reentrant
*  Parameters (in)     : VersionInfoPtr - Pointer to version info element
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : None
*  Description         : Service for getting CDD version.
*  
*  Service name        : Cdd_IpcInit
*  Syntax              : Std_ReturnType Cdd_IpcInit(void)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_INIT
*  Sync/Async          : Synchronous
*  Reentrancy          : Non Reentrant
*  Parameters (in)     : None
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : None
*  Description         : Service for  CDD Initialization.
*  
Warning
To be used only when built for baremetal
Parameters
selfIdSelf Processor Identifier
remoteProcIdRemote Processor ID
Returns
None

◆ FUNC() [2/5]

FUNC ( Std_ReturnType  ,
CDD_IPC_CODE   
)

Service for deinitializing CDD.

Service for reading the configuration registers of the MCAL modules.

Service for reception of N bytes of control message from remote cores.

Service for broadcasting capabilities of this core to all other cores.

Service for reception of N bytes of data from remote cores.

Service for sending an message to remote cores.

*  Service name        : Cdd_IpcDeinit
*  Syntax              : Std_ReturnType Cdd_IpcDeinit(void* ConfigPtr)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_DEINIT
*  Sync/Async          : Synchronous
*  Reentrancy          : Non-Reentrant
*  Parameters (in)     : ConfigPtr - Not used for now, reserved for future
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : Service for deinitializing the CDD and change the
*                          driver state to uninitialized
*  
*  Service name        : Cdd_IpcSendMsg
*  Syntax              : Std_ReturnType Cdd_IpcSendMsg(
*                                              uint32  chId,
*                                              void    *pBuf,
*                                              uint32  bufLen)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_SEND
*  Sync/Async          : Synchronous
*  Reentrancy          : NonReentrant
*  Parameters (in)     : chId - Communication channel identifier
*                      : pBuf - non NULL_PTR, that describes the message to be
*                                  sent
*                      : bufLen - Length in bytes and cannot exceed
*                                  CDD_IPC_MAX_MSG_LEN
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : This API is used to transport N bytes of data across
*                          cores.
*  
*  Service name        : Cdd_IpcReceiveMsg
*  Syntax              : Std_ReturnType Cdd_IpcReceiveMsg(
*                                              uint32  chId,
*                                              void    *pBuf,
*                                              uint32  bufLen)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_RECEIVE
*  Sync/Async          : Synchronous
*  Reentrancy          : NonReentrant
*  Parameters (in)     : chId - Communication channel identifier
*                      : pBuf - non NULL_PTR, that describes the memory space
*                                  that can hold received message. The length
*                                  shall be CDD_IPC_MAX_MSG_LEN
*                      : bufLen - Received message length in bytes and will not
*                                  exceed CDD_IPC_MAX_MSG_LEN.
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : This API is used to receive message from remote core
*                          If there are no messages E_NOT_OK shall be
*                          returned.
*
*  
*  Service name        : Cdd_IpcAnnounce
*  Syntax              : Std_ReturnType Cdd_IpcAnnounce(
*                                              void    *pBuf,
*                                              uint32  bufLen)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_ANNOUNCE
*  Sync/Async          : Synchronous
*  Reentrancy          : NonReentrant
*  Parameters (in)     : pBuf - non NULL_PTR, that describes the message to be
*                                  sent.
*                      : bufLen - Length in bytes and cannot exceed
*                                  CDD_IPC_MAX_MSG_LEN
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : This API is used to announce the capability of this
*                          core to all other cores.
*  
*  Service name        : Cdd_IpcReceiveCtrlMsg
*  Syntax              : Std_ReturnType Cdd_IpcReceiveCtrlMsg(
*                                              uint32  pRemoteProcId,
*                                              uint32  pRemoteEndPt,
*                                              void    *pBuf,
*                                              uint32  *bufLen)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_CTRL_RECEIVE
*  Sync/Async          : Synchronous
*  Reentrancy          : NonReentrant
*  Parameters (inout)  : pRemoteProcId - Holds the remote processor identifier
*                                          that iniciated this control message
*                      : pRemoteEndPt - Holds remote end point number that
*                                      iniciated this control message
*                      : pBuf - non NULL_PTR, that describes the memory space
*                                  that can hold received message. The length
*                                  shall be CDD_IPC_MAX_MSG_LEN
*                      : bufLen - Received message length in bytes and will not
*                                  exceed CDD_IPC_MAX_MSG_LEN.
*  Parameters (in)     : None
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : This API is used to receive control message from
*                          remote core. If there are no messages E_NOT_OK
*                           shall be returned.
*
*  
*  Service name        : Cdd_RegisterReadBack
*  Syntax              : Std_ReturnType Cdd_RegisterReadBack(uint8* mod_name)
*  Mode                : Supervisor Mode (Privileged Mode)
*  Service ID[hex]     : None
*  Sync/Async          : Synchronous
*  Reentrancy          : Reentrant
*  Parameters (in)     : None
*  Parameters (inout)  : pRegArgs - Pointer to structure that would hold values
*                          of registers read back by this API
*  Parameters (out)    : None
*  Return value        : Std_ReturnType
*  Description         : Service for reading the critical configuration
*                          registers of the Mailbox/IPC
*  

◆ P2CONST() [2/2]

P2CONST ( void  ,
AUTOMATIC  ,
CDD_APP_DATA   
)

◆ VAR()

CDD_APP_DATA VAR ( uint32  )

◆ P2VAR() [1/3]

CDD_APP_DATA P2VAR ( void  ,
AUTOMATIC  ,
CDD_APP_DATA   
)

◆ P2VAR() [2/3]

CDD_APP_DATA P2VAR ( uint32  ,
AUTOMATIC  ,
CDD_APP_DATA   
)

◆ P2VAR() [3/3]

P2VAR ( Cdd_IpcRegRbValues  ,
AUTOMATIC  ,
CDD_APP_DATA   
)

◆ FUNC() [3/5]

FUNC ( boolean  ,
CDD_IPC_CODE   
)

Service for checking if IPC module is initialized.

*  Service name        : Cdd_IpcIsInitDone
*  Syntax              : boolean Cdd_IpcIsInitDone(void)
*  Mode                : User Mode (Non-Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_IS_INIT_DONE
*  Sync/Async          : Synchronous
*  Reentrancy          : Reentrant
*  Parameters (in)     : None
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : boolean
*  Description         : Returns TRUE if Cdd_ipcInit is completed else FALSE
*  

◆ FUNC() [4/5]

FUNC ( uint32  ,
CDD_IPC_CODE   
)

Service for checking if IPC module is initialized.

Service to get Mailbox state is FULL or not.

*  Service name        : Cdd_IpcGetMaxMsgSize
*  Syntax              : uint32 Cdd_IpcGetMaxMsgSize(uint32 chId)
*  Mode                : User Mode (Non-Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_GET_MAX_MSG_SIZE
*  Sync/Async          : Synchronous
*  Reentrancy          : Reentrant
*  Parameters (in)     : chId - Communication channel identifier
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : uint32
*  Description         : Returns max msg size for the specified channel
*  
*  Service name        : Cdd_IpcGetMailboxStatus
*  Syntax              : uint32 Cdd_IpcGetMailboxStatus(uint32 chId)
*  Mode                : User Mode (Non-Privileged Mode)
*  Service ID[hex]     : CDD_IPC_SID_MAILBOX_STATE
*  Sync/Async          : Synchronous
*  Reentrancy          : Reentrant
*  Parameters (in)     : remoteProcId - Remote ID
*  Parameters (inout)  : None
*  Parameters (out)    : None
*  Return value        : uint32
*  Description         : Returns the mailbox state
*  

◆ FUNC() [5/5]

FUNC ( int32_t  ,
CDD_IPC_CODE   
)

Dummy API to call mailbox API : Ipc_mailboxSend from Application

Variable Documentation

◆ ownProcID

uint32 Cdd_IpcMpType::ownProcID

Defines processor ID on which MCAL/AUTOSAR is being hosted

◆ numProcs

uint32 Cdd_IpcMpType::numProcs

Number of remote processor which with IPC is desired

◆ remoteProcID

uint32 Cdd_IpcMpType::remoteProcID[CDD_IPC_CORE_USED]

Remote processor identifiers

◆ reserved [1/5]

uint32 Cdd_IpcMpType::reserved

Future use if any

◆ vertIoRingAddr

void* Cdd_IpcVertIoType::vertIoRingAddr

Defines address that shall be shared between cores

◆ vertIoRingSize

uint32 Cdd_IpcVertIoType::vertIoRingSize

Size of the shared memory

◆ vertIoObjSize

uint32 Cdd_IpcVertIoType::vertIoObjSize

Size of the vertio Object, used for vertIoRing

◆ reserved [2/5]

uint32 Cdd_IpcVertIoType::reserved

Future use if any

◆ id

uint32 Cdd_IpcChannelType::id

Unique identifiers for a channel

◆ localEp

uint32 Cdd_IpcChannelType::localEp

Local End Point identifier, on which MCAL/AUTOSAR is hosted

◆ remoteEp

uint32 Cdd_IpcChannelType::remoteEp

Remote End Point identifier, on remote cores

◆ remoteProcId [1/2]

uint32 Cdd_IpcChannelType::remoteProcId

Remote Processor Identifier

◆ numMsgQueued

uint32 Cdd_IpcChannelType::numMsgQueued

Maximum depth of the queue, that holds received messages

◆ maxMsgSize

uint32 Cdd_IpcChannelType::maxMsgSize

Maximum size of the message that could be received

◆ NewMessageNotify

Cdd_Ipc_NewMessage Cdd_IpcChannelType::NewMessageNotify

Function pointer to a new message for specific channel ID

◆ reserved [3/5]

uint32 Cdd_IpcChannelType::reserved

Future use if any

◆ coreIds

Cdd_IpcMpType Cdd_IpcConfigType::coreIds

Core identifier configurations

◆ vertIoCfg

Cdd_IpcVertIoType Cdd_IpcConfigType::vertIoCfg

VertIO configurations

◆ channelCount

uint32 Cdd_IpcConfigType::channelCount

Number of channels configured

◆ reserved [4/5]

uint32 Cdd_IpcConfigType::reserved

Reserved field

◆ numRegisters

uint32 Cdd_IpcRegRbValues::numRegisters

Will specify number of registers values provided

◆ regValues

uint32 Cdd_IpcRegRbValues::regValues[CDD_IPC_CORE_ID_MAX]

Values of critical registers that's read and provided

◆ cddipcRev

uint32 Cdd_IpcRegRbValues::cddipcRev

MAILBOX_REVISION Register

◆ cddipcsyscfg

uint32 Cdd_IpcRegRbValues::cddipcsyscfg

MAILBOX_SYSCONFIG Register

◆ cddipceoi

uint32 Cdd_IpcRegRbValues::cddipceoi

MAILBOX_EOI Register

◆ cddipcmsg

uint32 Cdd_IpcRegRbValues::cddipcmsg

MAILBOX_MESSAGE_y Register

◆ cddipcfifosts

uint32 Cdd_IpcRegRbValues::cddipcfifosts

MAILBOX_FIFO_STATUS_y Register

◆ cddipcmsgsts

uint32 Cdd_IpcRegRbValues::cddipcmsgsts

MAILBOX_MSG_STATUS_y Register

◆ cddipcirqrawsts

uint32 Cdd_IpcRegRbValues::cddipcirqrawsts

MAILBOX_IRQ_STATUS_RAW_i Register

◆ cddipcclrsts

uint32 Cdd_IpcRegRbValues::cddipcclrsts

MAILBOX_CLR_STATUS_i Register

◆ cddipcenbclr

uint32 Cdd_IpcRegRbValues::cddipcenbclr

MAILBOX_ENABLE_CLR_i Register

◆ cddipcenbset

uint32 Cdd_IpcRegRbValues::cddipcenbset

MAILBOX_ENABLE_SET_i Register

◆ reserved [5/5]

uint32 Cdd_IpcRegRbValues::reserved

Reserved field

◆ pBuf [1/2]

uint8* Cdd_IpcChannelBufType::pBuf

Pointer to buffer

◆ bufSize

uint32 Cdd_IpcChannelBufType::bufSize

Buffer size, expressed in bytes

◆ AUTOMATIC

AUTOMATIC

◆ VersionInfoPtr

CDD_APP_DATA VersionInfoPtr

◆ chId

chId

◆ pBuf [2/2]

CDD_APP_DATA pBuf

◆ pRemoteProcId

CDD_APP_DATA pRemoteProcId

◆ remoteProcId [2/2]

uint16 remoteProcId

◆ val

uint32 uint32 val

◆ timeoutCnt

uint32 uint32 uint32 timeoutCnt