MCUSW
Cdd_Ipc.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2024 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
97 /*
98  * Below are the global requirements which are met by this IPC CDD
99  * driver
100  */
101 
102 /*
103  * Design: MCAL-3699,MCAL-3697
104  */
105 
106 #ifndef CDD_IPC_H_
107 #define CDD_IPC_H_
108 
109 
110 /* ========================================================================== */
111 /* Include Files */
112 /* ========================================================================== */
113 #include "Std_Types.h"
114 #include "Cdd_IpcCfg.h"
115 
116 
117 
118 #ifdef __cplusplus
119 extern "C"
120 {
121 #endif
122 
123 /* ========================================================================== */
124 /* Macros & Typedefs */
125 /* ========================================================================== */
126 
135 #define CDD_IPC_SW_MAJOR_VERSION (10U)
136 
137 #define CDD_IPC_SW_MINOR_VERSION (0U)
138 
139 #define CDD_IPC_SW_PATCH_VERSION (1U)
140 /* @} */
141 
149 #define CDD_IPC_AR_RELEASE_MAJOR_VERSION (4U)
150 
151 #define CDD_IPC_AR_RELEASE_MINOR_VERSION (3U)
152 
153 #define CDD_IPC_AR_RELEASE_REVISION_VERSION (1U)
154 /* @} */
155 
162 /*
163  * Design: MCAL-7226,MCAL-7225,MCAL-7205,MCAL-7177,MCAL-7193,MCAL-7176,MCAL-7155,MCAL-7179,MCAL-7160
164  */
166 #define CDD_IPC_MODULE_ID ((uint16) 255U)
167 
168 #define CDD_IPC_VENDOR_ID ((uint16) 44U)
169 
170 #define CDD_IPC_INSTANCE_ID ((uint8) 0U)
171 
172 /* @} */
173 
174 
180 /*
181  * Design: MCAL-7153,MCAL-7196,MCAL-7168,MCAL-7151,MCAL-7241,MCAL-7206,MCAL-3736,MCAL-7167
182  */
183 
185 #define CDD_IPC_SID_GETVERSIONINFO (0x01U)
186 
187 #define CDD_IPC_SID_INIT (0x02U)
188 
189 #define CDD_IPC_SID_SEND (0x03U)
190 
191 #define CDD_IPC_SID_RECEIVE (0x04U)
192 
193 #define CDD_IPC_SID_ANNOUNCE (0x05U)
194 
195 #define CDD_IPC_SID_INTERNAL_ISR_ID (0x06U)
196 
197 #define CDD_IPC_SID_REG_READBACK (0x07U)
198 
199 #define CDD_IPC_SID_DEINIT (0x08U)
200 
201 #define CDD_IPC_SID_CTRL_RECEIVE (0x09U)
202 
203 #define CDD_IPC_SID_IS_INIT_DONE (0x0AU)
204 
205 #define CDD_IPC_SID_GET_MAX_MSG_SIZE (0x0BU)
206 
207 #define CDD_IPC_SID_MAILBOX_STATE (0x0CU)
208 
209 /* @} */
210 
215 /*
216  * Design: MCAL-7226,MCAL-7225,MCAL-7205,MCAL-7177,MCAL-7193,MCAL-7176,MCAL-7155,MCAL-7179,MCAL-7160
217  */
219 #define CDD_IPC_E_OK (0x00U)
220 
221 #define CDD_IPC_E_INIT_FAILED (0x01U)
222 
223 #define CDD_IPC_E_UNINIT (0x02U)
224 
225 #define CDD_IPC_E_PARAM_POINTER (0x03U)
226 
227 #define CDD_IPC_E_ALREADY_INITIALIZED (0x04U)
228 
229 #define CDD_IPC_E_INVALID_CONFIG (0x05U)
230 
231 #define CDD_IPC_E_SEND (0x06U)
232 
233 #define CDD_IPC_E_RECEIVE_RETRY (0x07U)
234 
235 #define CDD_IPC_E_NOT_SUPPORTED (0x08U)
236 
237 #define CDD_IPC_E_CALLBACK_NULL (0x09U)
238 
239 /* @} */
240 
243 #define CDD_IPC_MAX_MSG_LEN (496U)
244 
247 #define CDD_IPC_MAX_CTRL_MSG_LEN (32U)
248 
254 #define CDD_IPC_MAX_RETRY_NOTIFY (2U)
255 
256 typedef void (*Cdd_Ipc_NewMessage)(void);
257 /*Function pointer for a new message from remote core at a specific channel*/
258 
259 /* ========================================================================== */
260 /* Structures and Enums */
261 /* ========================================================================== */
273 /*
274  * Design: MCAL-7210,MCAL-7204,MCAL-7223,MCAL-7161
275  */
276 typedef struct Cdd_IpcMpType_s
277 {
278  uint32 ownProcID;
280  uint32 numProcs;
282  uint32 remoteProcID[CDD_IPC_CORE_ID_MAX];
284  uint32 reserved;
287 } Cdd_IpcMpType;
288 /* @} */
289 
296 /*
297  * Design: MCAL-7194,MCAL-7180,MCAL-7152,MCAL-7197,MCAL-7199
298  */
299 typedef struct Cdd_IpcVertIoType_s
300 {
307  uint32 reserved;
311 /* @} */
312 
317 /*
318  * Design: MCAL-7218,MCAL-7243,MCAL-7192,MCAL-7245,MCAL-7182,MCAL-7231,MCAL-7216
319  */
320 typedef struct Cdd_IpcChannelType_s
321 {
322  uint32 id;
324  uint32 localEp;
326  uint32 remoteEp;
328  uint32 remoteProcId;
330  uint32 numMsgQueued;
332  uint32 maxMsgSize;
336  uint32 reserved;
340 /* @} */
341 
346 /*
347  * Design: MCAL-7233,MCAL-7229
348  */
349 typedef struct Cdd_IpcConfigType_s
350 {
355  uint32 channelCount;
357  P2CONST(Cdd_IpcChannelType, AUTOMATIC, CDD_IPC_CONST) pChCfg;
360  uint32 reserved;
363 
364 /* @} */
365 
371 typedef struct
372 {
373  uint32 numRegisters;
375  uint32 regValues[CDD_IPC_CORE_ID_MAX];
377  uint32 cddipcRev;
379  uint32 cddipcsyscfg;
381  uint32 cddipceoi;
383  uint32 cddipcmsg;
387  uint32 cddipcmsgsts;
391  uint32 cddipcclrsts;
393  uint32 cddipcenbclr;
395  uint32 cddipcenbset;
397  uint32 reserved;
400 
401 /* @} */
402 
407 typedef struct Cdd_IpcChannelBufType_s
408 {
409  uint8 *pBuf;
411  uint32 bufSize;
414 
415 
416 /* @} */
417 /* ========================================================================== */
418 /* Function Declarations */
419 /* ========================================================================== */
420 
439 #if (STD_ON == CDD_IPC_VERSION_INFO_API)
440 FUNC(void, CDD_IPC_CODE) Cdd_IpcGetVersionInfo(
441  P2VAR(Std_VersionInfoType, AUTOMATIC,
442  CDD_APP_DATA) VersionInfoPtr);
443 #endif
444 
462 FUNC(void, CDD_IPC_CODE) Cdd_IpcInit(void);
463 
482 #if (STD_ON == CDD_IPC_DEINIT_API)
483 FUNC(Std_ReturnType, CDD_IPC_CODE) Cdd_IpcDeinit(void);
484 #endif
485 
512 FUNC(Std_ReturnType, CDD_IPC_CODE) Cdd_IpcSendMsg(
513  VAR(uint32, AUTOMATIC) chId,
514  P2CONST(void, AUTOMATIC, CDD_APP_DATA) pBuf,
515  VAR(uint32, AUTOMATIC) bufLen);
545 FUNC(Std_ReturnType, CDD_IPC_CODE)Cdd_IpcReceiveMsg(
546  VAR(uint32, AUTOMATIC) chId,
547  P2VAR(void, AUTOMATIC, CDD_APP_DATA) pBuf,
548  P2VAR(uint32, AUTOMATIC, CDD_APP_DATA) bufLen);
549 
574 #if (STD_ON == CDD_IPC_ANNOUNCE_API)
575 FUNC(Std_ReturnType, CDD_IPC_CODE) Cdd_IpcAnnounce(
576  P2CONST(UCHAR, AUTOMATIC, CDD_APP_DATA) pBuf,
577  VAR(uint32, AUTOMATIC) chId);
578 #endif /* CDD_IPC_ANNOUNCE_API */
579 
613 #if (STD_ON == CDD_IPC_ANNOUNCE_API)
614 FUNC(Std_ReturnType, CDD_IPC_CODE) Cdd_IpcReceiveCtrlMsg (
615  P2VAR (uint32, AUTOMATIC, CDD_APP_DATA) pRemoteProcId,
616  P2VAR (uint32, AUTOMATIC, CDD_APP_DATA) pRemoteEndPt,
617  P2VAR (void, AUTOMATIC, CDD_APP_DATA) pBuf,
618  P2VAR (uint32, AUTOMATIC, CDD_APP_DATA) bufLen);
619 #endif /* CDD_IPC_ANNOUNCE_API */
620 
641 #if (STD_ON == CDD_IPC_REGISTER_READBACK_API)
642 FUNC(Std_ReturnType, CDD_IPC_CODE) Cdd_IpcRegisterReadBack(uint32 remoteProcId,
643  P2VAR(Cdd_IpcRegRbValues, AUTOMATIC, CDD_APP_DATA) pRegArgs);
644 #endif
645 
664 #if (STD_ON == CDD_IPC_IS_INIT_DONE_API)
665 FUNC(boolean, CDD_IPC_CODE) Cdd_IpcIsInitDone(void);
666 #endif
667 
686 #if (STD_ON == CDD_IPC_GET_MAX_MSG_SIZE_API)
687 FUNC(uint32, CDD_IPC_CODE) Cdd_IpcGetMaxMsgSize(VAR(uint32, AUTOMATIC) chId);
688 #endif
689 
708 #if (STD_ON == CDD_IPC_SAFETY_DIAGNOSTIC_API)
709 FUNC(uint32, CDD_IPC_CODE) Cdd_IpcGetMailboxStatus(VAR(uint32, AUTOMATIC) remoteProcId);
710 #endif
711 
712 
713 #ifdef __cplusplus
714 }
715 #endif
716 
717 #endif /* #ifndef CDD_IPC_H_ */
718 
719 /* @} */
Cdd_Ipc_NewMessage NewMessageNotify
Definition: Cdd_Ipc.h:334
uint32 reserved
Definition: Cdd_Ipc.h:397
void Cdd_IpcGetVersionInfo(Std_VersionInfoType *VersionInfoPtr)
Service for getting CDD version.
void Cdd_IpcInit(void)
Service for CDD Initialization.
uint32 cddipcenbclr
Definition: Cdd_Ipc.h:393
uint32 vertIoRingSize
Definition: Cdd_Ipc.h:303
Definition: Cdd_Ipc.h:371
void * vertIoRingAddr
Definition: Cdd_Ipc.h:301
Std_ReturnType Cdd_IpcReceiveCtrlMsg(uint32 *pRemoteProcId, uint32 *pRemoteEndPt, void *pBuf, uint32 *bufLen)
Service for reception of N bytes of control message from remote cores.
This file contains generated pre compile configurations for CDD IPC MCAL driver.
uint32 reserved
Definition: Cdd_Ipc.h:307
uint32 remoteEp
Definition: Cdd_Ipc.h:326
uint32 cddipcmsgsts
Definition: Cdd_Ipc.h:387
const Cdd_IpcChannelType * pChCfg
Definition: Cdd_Ipc.h:357
uint32 ownProcID
Definition: Cdd_Ipc.h:278
uint32 reserved
Definition: Cdd_Ipc.h:284
uint32 Cdd_IpcGetMaxMsgSize(VAR(uint32,) chId)
Service for checking if IPC module is initialized.
Defines logical communication channel between cores.
Definition: Cdd_Ipc.h:320
uint32 cddipcenbset
Definition: Cdd_Ipc.h:395
uint32 cddipceoi
Definition: Cdd_Ipc.h:381
uint32 numRegisters
Definition: Cdd_Ipc.h:373
Cdd_IpcVertIoType vertIoCfg
Definition: Cdd_Ipc.h:353
Std_ReturnType Cdd_IpcRegisterReadBack(uint32 remoteProcId, Cdd_IpcRegRbValues *pRegArgs)
Service for reading the configuration registers of the MCAL modules.
Channel RP Msg buffer type Used to hold the received buffer, before apps can pick it up.
Definition: Cdd_Ipc.h:407
uint32 bufSize
Definition: Cdd_Ipc.h:411
Std_ReturnType Cdd_IpcAnnounce(const UCHAR *pBuf, VAR(uint32,) chId)
Service for broadcasting capabilities of this core to all other cores.
boolean Cdd_IpcIsInitDone(void)
Service for checking if IPC module is initialized.
uint32 cddipcclrsts
Definition: Cdd_Ipc.h:391
uint32 numMsgQueued
Definition: Cdd_Ipc.h:330
VAR(uint8, ETH_VAR_NO_INIT_128) Eth_Ctrl_0_Egress_BufferMem_0[24576U]
Std_ReturnType Cdd_IpcSendMsg(VAR(uint32,) chId, const void *pBuf, VAR(uint32,) bufLen)
Service for sending an message to remote cores.
Cdd_IpcMpType coreIds
Definition: Cdd_Ipc.h:351
uint32 channelCount
Definition: Cdd_Ipc.h:355
Defines Shared Memories for VRING and VRING OBJECT VRING is the shared memory between cores and VRING...
Definition: Cdd_Ipc.h:299
uint32 reserved
Definition: Cdd_Ipc.h:360
uint32 cddipcirqrawsts
Definition: Cdd_Ipc.h:389
CDD IPC Configuration type.
Definition: Cdd_Ipc.h:349
Defines processor identifiers Core on which MCAL/AUTOSAR is hosted and other cores with which IPC is ...
Definition: Cdd_Ipc.h:276
uint32 remoteProcId
Definition: Cdd_Ipc.h:328
void(* Cdd_Ipc_NewMessage)(void)
Definition: Cdd_Ipc.h:256
uint32 Cdd_IpcGetMailboxStatus(VAR(uint32,) remoteProcId)
Service to get Mailbox state is FULL or not.
uint32 maxMsgSize
Definition: Cdd_Ipc.h:332
uint32 cddipcfifosts
Definition: Cdd_Ipc.h:385
uint32 cddipcsyscfg
Definition: Cdd_Ipc.h:379
Std_ReturnType Cdd_IpcReceiveMsg(VAR(uint32,) chId, void *pBuf, uint32 *bufLen)
Service for reception of N bytes of data from remote cores.
uint32 id
Definition: Cdd_Ipc.h:322
#define CDD_IPC_CORE_ID_MAX
IPC maximum possible core ID.
Definition: Cdd_IpcCfg.h:350
uint32 localEp
Definition: Cdd_Ipc.h:324
uint8 * pBuf
Definition: Cdd_Ipc.h:409
uint32 cddipcmsg
Definition: Cdd_Ipc.h:383
uint32 numProcs
Definition: Cdd_Ipc.h:280
uint32 cddipcRev
Definition: Cdd_Ipc.h:377
Std_ReturnType Cdd_IpcDeinit(void)
Service for deinitializing CDD.
uint32 vertIoObjSize
Definition: Cdd_Ipc.h:305
uint32 reserved
Definition: Cdd_Ipc.h:336