]> rtime.felk.cvut.cz Git - arc.git/blob - communication/Com/Com_Internal.h
d9c00d1b5f8079dbf251feede09f5bec99949396
[arc.git] / communication / Com / Com_Internal.h
1 /* -------------------------------- Arctic Core ------------------------------\r
2  * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
3  *\r
4  * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
5  *\r
6  * This source code is free software; you can redistribute it and/or modify it\r
7  * under the terms of the GNU General Public License version 2 as published by the\r
8  * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
9  *\r
10  * This program is distributed in the hope that it will be useful, but\r
11  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
13  * for more details.\r
14  * -------------------------------- Arctic Core ------------------------------*/\r
15 \r
16 /*\r
17  * NB! This file is for COM internal use only and may only be included from COM C-files!\r
18  */\r
19 \r
20 \r
21 \r
22 #ifndef COM_INTERNAL_H_\r
23 #define COM_INTERNAL_H_\r
24 \r
25 #include "Com_Arc_Types.h"\r
26 \r
27 typedef struct {\r
28         PduLengthType currentPosition;\r
29         boolean locked;\r
30 } Com_BufferPduStateType;\r
31 extern Com_BufferPduStateType Com_BufferPduState[];\r
32 \r
33 extern const Com_ConfigType *ComConfig;\r
34 extern Com_Arc_Config_type Com_Arc_Config;\r
35 \r
36 \r
37 \r
38 #if COM_DEV_ERROR_DETECT == STD_ON\r
39 #include "Det.h"\r
40 \r
41 #define DET_REPORTERROR(_x,_y,_z,_q) Det_ReportError(_x,_y,_z,_q)\r
42 \r
43 \r
44 // Define macro for parameter check.\r
45 #define PDU_ID_CHECK(PduId,ApiId,...) \\r
46         if (PduId >= COM_N_IPDUS) { \\r
47                 DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, ApiId, COM_INVALID_PDU_ID); \\r
48                 return __VA_ARGS__; \\r
49         } \\r
50 \r
51 #define VALIDATE_SIGNAL(SignalId, ApiId, ...) \\r
52         if (SignalId >= COM_N_SIGNALS) { \\r
53                 DET_REPORTERROR(COM_MODULE_ID, COM_INSTANCE_ID, ApiId, COM_INVALID_SIGNAL_ID); \\r
54                 return __VA_ARGS__; \\r
55         } \\r
56 \r
57 \r
58 #else\r
59 \r
60 #define DET_REPORTERROR(_x,_y,_z,_q)\r
61 \r
62 #define PDU_ID_CHECK(PduId,ApiId,...)\r
63 #define VALIDATE_SIGNAL(PduId, ApiId, ...)\r
64 #endif\r
65 \r
66 \r
67 #define TESTBIT(source,bit)     ( *( (uint8 *)source  + (bit / 8) ) &  (uint8)(1u << (bit % 8)) )\r
68 #define SETBIT(dest,bit)        ( *( (uint8 *)dest    + (bit / 8) ) |= (uint8)(1u << (bit % 8)) )\r
69 #define CLEARBIT(dest,bit)      ( *( (uint8 *)dest    + (bit / 8) ) &= (uint8)~(uint8)(1u << (bit % 8)) )\r
70 \r
71 \r
72 #define GET_Signal(SignalId) \\r
73         (&ComConfig->ComSignal[SignalId])\r
74 \r
75 #define GET_ArcSignal(SignalId) \\r
76         (&Com_Arc_Config.ComSignal[SignalId])\r
77 \r
78 #define GET_IPdu(IPduId) \\r
79         (&ComConfig->ComIPdu[IPduId])\r
80 \r
81 #define GET_ArcIPdu(IPduId) \\r
82         (&Com_Arc_Config.ComIPdu[IPduId])\r
83 \r
84 #define GET_GroupSignal(GroupSignalId) \\r
85         (&ComConfig->ComGroupSignal[GroupSignalId])\r
86 \r
87 #define GET_ArcGroupSignal(GroupSignalId) \\r
88         (&Com_Arc_Config.ComGroupSignal[GroupSignalId])\r
89 \r
90 \r
91 \r
92 #endif /* COM_INTERNAL_H_ */\r