]> rtime.felk.cvut.cz Git - arc.git/blobdiff - include/Com_Types.h
Added an example of CAN communication for the TMS570LS31x HDK
[arc.git] / include / Com_Types.h
index 062623c1a10fadb1d4966c9aa3803d0097d8d213..f606032db3d8a7c1949355dd96e3834fac0cc034 100644 (file)
@@ -1,38 +1,42 @@
-/* -------------------------------- Arctic Core ------------------------------
- * Arctic Core - the open source AUTOSAR platform http://arccore.com
- *
- * Copyright (C) 2009  ArcCore AB <contact@arccore.com>
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 as published by the
- * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- * -------------------------------- Arctic Core ------------------------------*/
-
-
-
-
-
-
-
-
+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+\r
+\r
+/** @addtogroup Com COM module\r
+ *  @{ */\r
+\r
+/** @file Com_Types.h\r
+ * Definitions of configuration types and parameters for the COM module.\r
+ */\r
+\r
+\r
+\r
 #ifndef COM_TYPES_H_\r
 #define COM_TYPES_H_\r
 \r
+\r
 #include "ComStack_Types.h"\r
-#include "Com_Cfg.h"\r
 \r
 typedef uint8 Com_PduGroupIdType;\r
 typedef uint16 Com_SignalIdType;\r
 typedef uint8 Com_SignalGroupIdType;\r
-\r
+typedef uint16 Com_BitPositionType;\r
 typedef enum {\r
        IMMEDIATE,\r
-       DEFERRED,\r
+       DEFERRED\r
 } Com_IPduSignalProcessingMode;\r
 \r
 typedef enum {\r
@@ -46,21 +50,25 @@ typedef enum {
        UINT16,\r
        UINT32,\r
        UINT8_N,\r
+       UINT8_DYN,\r
        SINT8,\r
        SINT16,\r
        SINT32\r
 } Com_SignalType;\r
 \r
+#define COM_SIGNALTYPE_UNSIGNED  FALSE\r
+#define COM_SIGNALTYPE_SIGNED    TRUE\r
+\r
 typedef enum {\r
        PENDING,\r
-       TRIGGERED,\r
+       TRIGGERED\r
 } ComTransferProperty_type;\r
 \r
 typedef enum {\r
        DIRECT,\r
        MIXED,\r
        NONE,\r
-       PERIODIC,\r
+       PERIODIC\r
 } ComTxModeMode_type;\r
 \r
 \r
@@ -72,13 +80,13 @@ typedef enum {
        NEVER,\r
        NEW_IS_OUTSIDE,\r
        NEW_IS_WITHIN,\r
-       ONE_EVERY_N,\r
+       ONE_EVERY_N\r
 } ComFilterAlgorithm_type;\r
 \r
 typedef enum {\r
-       BIG_ENDIAN,\r
-       LITTLE_ENDIAN,\r
-       OPAQUE,\r
+       COM_BIG_ENDIAN,\r
+       COM_LITTLE_ENDIAN,\r
+       COM_OPAQUE\r
 } ComSignalEndianess_type;\r
 \r
 typedef enum {\r
@@ -111,535 +119,297 @@ typedef enum {
        type == SINT16  ? sizeof(sint16) : \\r
        type == SINT32  ? sizeof(sint32) : sizeof(boolean)) \\r
 \r
+#define SignalTypeSignedness(type) \\r
+               (( (type == SINT8) || (type == SINT16) || (type == SINT32) ) ? \\r
+                               COM_SIGNALTYPE_SIGNED : COM_SIGNALTYPE_UNSIGNED)\r
 \r
+/** Filter configuration type.\r
+ * NOT SUPPORTED\r
+ */\r
 typedef struct {\r
+       /** The algorithm that this filter uses. */\r
        ComFilterAlgorithm_type ComFilterAlgorithm;\r
+       /** Filter mask. */\r
        uint32 ComFilterMask;\r
+       /** Max value for filter. */\r
        uint32 ComFilterMax;\r
+       /** Min value for filter. */\r
        uint32 ComFilterMin;\r
+       /** Offset for filter. */\r
        uint32 ComFilterOffset;\r
        uint32 ComFilterPeriodFactor;\r
        uint32 ComFilterX;\r
-\r
-\r
        uint32 ComFilterArcN;\r
        uint32 ComFilterArcNewValue;\r
        uint32 ComFilterArcOldValue;\r
 \r
 } ComFilter_type;\r
 \r
-\r
+/** Configuration structure for group signals */\r
 typedef struct {\r
-       /* Starting position (bit) of the signal within the IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Range 0 to 63.\r
+       /** Starting position (bit) of the signal within the IPDU.\r
+        * Range 0 to 63.\r
         */\r
-       const uint8 ComBitPosition;\r
+       const Com_BitPositionType ComBitPosition;\r
 \r
-       /* The size of the signal in bits.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Range 0 to 64.\r
+       /** The size of the signal in bits.\r
+        * Range 0 to 64.\r
         */\r
        const uint8 ComBitSize;\r
 \r
-       /* Identifier for the signal.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Should be the same value as the index in the COM signal array.\r
+       /** Identifier for the signal.\r
+        * Should be the same value as the index in the COM signal array.\r
         */\r
        const uint8 ComHandleId;\r
 \r
-       /* Callback function used when an invalid signal is received.\r
-        *\r
-        * Context:\r
-        *   - Receive.\r
-        *   - Not required.\r
-        */\r
-       // ComInvalidNotification;\r
-\r
-       /*\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.\r
-        */\r
-       //uint8 ComSignalDataInvalidValue;\r
-\r
-       /* Defines the endianess of the signal's network representation.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        */\r
+       /** Defines the endianess of the signal's network representation. */\r
        const ComSignalEndianess_type ComSignalEndianess;\r
 \r
-       /*\r
-        * Value used to initialized this signal.\r
-        *\r
-        * Context:\r
-        *   - Send\r
-        *   - Required\r
-        */\r
-       const uint32 ComSignalInitValue;\r
-\r
-       /* The number of bytes if the signal has type UINT8_N;\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required if type of signal is UINT8_N\r
-        *\r
-        * Comment: Range 1 to 8.\r
-        */\r
-       const uint8 ComSignalLength;\r
+       /** Value used to initialize this signal. */\r
+       const void *ComSignalInitValue;\r
 \r
-       /* Defines the type of the signal\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        */\r
+       /** Defines the type of the signal. */\r
        const Com_SignalType ComSignalType;\r
 \r
 \r
-       /* Filter for this signal\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required.\r
+       /** Filter for this signal.\r
+        * NOT SUPPORTED\r
         */\r
-       const ComFilter_type ComFilter;\r
+       //const ComFilter_type ComFilter;\r
 \r
        /* Pointer to the shadow buffer of the signal group that this group signal is contained in.\r
         *\r
-        * Comment: This is initialized by Com_Init() and should not be configured.\r
+        * This is initialized by Com_Init() and should not be configured.\r
         */\r
        //void *Com_Arc_ShadowBuffer;\r
 \r
+       /* Callback function used when an invalid signal is received. */\r
+       // ComInvalidNotification;\r
+       //uint8 ComSignalDataInvalidValue;\r
 \r
        /* IPDU id of the IPDU that this signal belongs to.\r
         *\r
-        * Comment: This is initialized by Com_Init() and should not be configured.\r
+        * This is initialized by Com_Init() and should not be configured.\r
         */\r
 \r
        //const uint8 ComIPduHandleId;\r
        //const uint8 ComSignalUpdated;\r
 \r
+       /** Marks the end of list for the configuration array. */\r
        const uint8 Com_Arc_EOL;\r
 } ComGroupSignal_type;\r
 \r
+\r
+/** Configuration structure for signals and signal groups. */\r
 typedef struct {\r
 \r
-       /* Starting position (bit) of the signal within the IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Range 0 to 63.
+       /** Starting position (bit) of the signal within the IPDU.\r
+        * Range 0 to 2031.\r
         */\r
-       const uint8 ComBitPosition;\r
+       const Com_BitPositionType ComBitPosition;\r
 \r
-       /* The size of the signal in bits.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Range 0 to 64.
+       /** The size of the signal in bits.\r
+        * Range 0 to 63.\r
         */\r
        const uint8 ComBitSize;\r
 \r
-\r
-       /* Action to be taken if an invalid signal is received.\r
-        *\r
-        * Context:\r
-        *   -
-        */\r
-       // ComDataInvalidAction;\r
-\r
-       /* Notification function for error notification.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Not required.\r
-        *
-        */\r
+       /** Notification function for error notification. */\r
        void (*ComErrorNotification) (void);\r
 \r
-       /* First timeout period for deadline monitoring.\r
-        *\r
-        * Context:\r
-        *   - Receive\r
-        *   - Not required.
-        */\r
+       /** First timeout period for deadline monitoring. */\r
        const uint32 ComFirstTimeoutFactor;\r
 \r
-       /* Identifier for the signal.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment: Should be the same value as the index in the COM signal array.
+       /** Identifier for the signal.\r
+        * Should be the same value as the index in the COM signal array.\r
         */\r
-       const uint8 ComHandleId;\r
-\r
-       /* Callback function used when an invalid signal is received.\r
-        *\r
-        * Context:\r
-        *   - Receive.\r
-        *   - Not required.
-        */\r
-       // ComInvalidNotification;\r
+       const uint16 ComHandleId;\r
 \r
-       /* Tx and Rx notification function.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.
-        */\r
+       /** Tx and Rx notification function. */\r
        void (*ComNotification) (void);\r
 \r
-       /* Action to be performed when a reception timeout occurs.\r
-        *\r
-        * Context:\r
-        *   - Receive.\r
-        *   - Required.
-        */\r
+       /** Action to be performed when a reception timeout occurs. */\r
        const ComRxDataTimeoutAction_type ComRxDataTimeoutAction;\r
 \r
-       /*\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.
-        */\r
-       //uint8 ComSignalDataInvalidValue;\r
-\r
-       /* Defines the endianess of the signal's network representation.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.
-        */\r
+       /** Defines the endianess of the signal's network representation. */\r
        const ComSignalEndianess_type ComSignalEndianess;\r
 \r
-       /*\r
-        * Value used to initialized this signal.\r
-        *\r
-        * Context:\r
-        *   - Send\r
-        *   - Required
-        */\r
-       const uint32 ComSignalInitValue;\r
+       /** Value used to initialized this signal. */\r
+       const void *ComSignalInitValue;\r
 \r
-       /* The number of bytes if the signal has type UINT8_N;\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required if type of signal is UINT8_N\r
-        *\r
-        * Comment: Range 1 to 8.
+       /** The number of bytes if the signal has type UINT8_N;\r
+        * Range 1 to 8.\r
         */\r
-       const uint8 ComSignalLength;\r
+       //const uint8 ComSignalLength;\r
 \r
-       /* Defines the type of the signal\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.
-        */\r
+       /** Defines the type of the signal. */\r
        const Com_SignalType ComSignalType;\r
 \r
-       /* Timeout period for deadline monitoring.\r
-        *\r
-        * Context:\r
-        *   - Receive\r
-        *   - Not required.\r
-        */\r
-       //const uint32 Com_Arc_DeadlineCounter;\r
+       /** Timeout period for deadline monitoring. */\r
        const uint32 ComTimeoutFactor;\r
 \r
-       /* Timeout notification function\r
-        *\r
-        * Context:\r
-        *   - Receive and send\r
-        *   - Not required.\r
-        */\r
+       /** Timeout notification function. */\r
        void (*ComTimeoutNotification) (void);\r
 \r
+       /** Defines if a write access to this signal can trigger the transmission of the corresponding I-PDU. */\r
        const ComTransferProperty_type ComTransferProperty;\r
 \r
-       /*\r
-        * The bit position in the PDU for this signals update bit.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.\r
-        *\r
-        * Comment: Range 0 to 63. If update bit is used for this signal, then the corresponding parameter ComSignalArcUseUpdateBit\r
-        *          needs to be set to one.
+       /** The bit position in the PDU for this signal's update bit.\r
+        * Range 0 to 2031.\r
+        * Only applicable if an update bit is used. NULL otherwise.\r
         */\r
-       const uint8 ComUpdateBitPosition;\r
-       const uint8 ComSignalArcUseUpdateBit;\r
+       const Com_BitPositionType ComUpdateBitPosition;\r
 \r
-       /* Filter for this signal\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required.
+       /** Marks if this signal uses an update bit.\r
+        * Should be set to one if an update bit is used.\r
         */\r
-       const ComFilter_type ComFilter;\r
+       const uint8 ComSignalArcUseUpdateBit;\r
 \r
+       /** Filter for this signal.\r
+        * NOT SUPPORTED.\r
+        */\r
+       //const ComFilter_type ComFilter;\r
 \r
-       /**** SIGNAL GROUP DATA ****/\r
+       /** Marks if this signal is a signal group.\r
+        * Should be set to 1 if the signal is a signal group.\r
+        */\r
        const uint8 Com_Arc_IsSignalGroup;\r
-       const ComGroupSignal_type *ComGroupSignal[COM_MAX_NR_SIGNALS_PER_SIGNAL_GROUP];\r
-       //void *Com_Arc_ShadowBuffer;\r
-       //void *Com_Arc_IPduDataPtr;\r
 \r
+       /** Array of group signals.\r
+        * Only applicable if this signal is a signal group.\r
+        */\r
+       const ComGroupSignal_type * const *ComGroupSignal;\r
+\r
+\r
+       const void *Com_Arc_ShadowBuffer;\r
+       //void *Com_Arc_IPduDataPtr;\r
 \r
        /* Pointer to the data storage of this signals IPDU.\r
-        *\r
-        * Comment: This is initialized by Com_Init() and should not be configured.
+        * This is initialized by Com_Init() and should not be configured.\r
         */\r
        //const void *ComIPduDataPtr;\r
 \r
        /* IPDU id of the IPDU that this signal belongs to.\r
-        *\r
-        * Comment: This is initialized by Com_Init() and should not be configured.\r
+        * This is initialized by Com_Init() and should not be configured.\r
         */\r
-\r
-       //const uint8 ComIPduHandleId;\r
+       /** The numerical value used as the ID of this I-PDU.\r
+        * TheComIPduHandleId is required by the API calls to receive I-PDUs from the PduR (ComIP-duDirection: Receive).\r
+        * For Tx-I-PDUs (ComIPduDirection: Send) this handle Id is used by the PduR to confirm the transmission of the ComIPdu\r
+        */\r
+       const uint16 ComIPduHandleId;\r
        //const uint8 ComSignalUpdated;\r
 \r
+       /* Callback function used when an invalid signal is received.\r
+        */\r
+       // ComInvalidNotification;\r
+\r
+       //uint8 ComSignalDataInvalidValue;\r
 \r
+       /* Action to be taken if an invalid signal is received.\r
+        */\r
+       // ComDataInvalidAction;\r
+\r
+       /** Marks the end of list for the signal configuration array. */\r
        const uint8 Com_Arc_EOL;\r
 } ComSignal_type;\r
 \r
 \r
+\r
+/** Configuration structure for Tx-mode for I-PDUs. */\r
 typedef struct {\r
-       /* Transmission mode for this IPdu.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required.
-        */\r
+\r
+       /** Transmission mode for this IPdu. */\r
        const ComTxModeMode_type ComTxModeMode;\r
 \r
-       /* Defines the number of times this IPdu will be sent in each IPdu cycle.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required for transmission modes DIRECT/N-times and MIXED.\r
-        *\r
-        * Comment: Should be set to 0 for DIRECT transmission mode and >0 for DIRECT/N-times mode.
+       /** Defines the number of times this IPdu will be sent in each IPdu cycle.\r
+        * Should be set to 0 for DIRECT transmission mode and >0 for DIRECT/N-times mode.\r
         */\r
        const uint8 ComTxModeNumberOfRepetitions;\r
 \r
-       /* Defines the period of the transmissions in DIRECT/N-times and MIXED\r
-        * transmission modes.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required for DIRECT/N-times and MIXED transmission modes.
-        */\r
+       /** Defines the period of the transmissions in DIRECT/N-times and MIXED transmission modes. */\r
        const uint32 ComTxModeRepetitionPeriodFactor;\r
 \r
-       /* Time before first transmission of this IPDU. (i.e. between the ipdu group start\r
-        * and this IPDU is sent for the first time.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required for all transmission modes except NONE.
-        */\r
+       /** Time before first transmission of this IPDU. (i.e. between the ipdu group start and this IPDU is sent for the first time. */\r
        const uint32 ComTxModeTimeOffsetFactor;\r
 \r
-       /* Period of cyclic transmission.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required for CYCLIC and MIXED transmission mode.
-        */\r
+       /** Period of cyclic transmission. */\r
        const uint32 ComTxModeTimePeriodFactor;\r
 } ComTxMode_type;\r
 \r
-\r
+/** Extra configuration structure for Tx I-PDUs. */\r
 typedef struct {\r
 \r
-       /* Minimum delay between successive transmissions of the IPdu.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Not required.
-        */\r
+       /** Minimum delay between successive transmissions of the IPdu. */\r
        const uint32 ComTxIPduMinimumDelayFactor;\r
 \r
-       /* COM will fill unused areas within an IPdu with this bit patter.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Required.
+       /** COM will fill unused areas within an IPdu with this bit patter.\r
         */\r
        const uint8 ComTxIPduUnusedAreasDefault;\r
 \r
-       /* Transmission modes for this IPdu.\r
-        *\r
-        * Context:\r
-        *   - Send.\r
-        *   - Not required.\r
-        *\r
-        * Comment: TMS is not implemented so only one static transmission\r
-        *          mode is supported.
+       /** Transmission modes for the IPdu.\r
+        * TMS is not implemented so only one static transmission mode is supported.\r
         */\r
        const ComTxMode_type ComTxModeTrue;\r
-       //ComTxMode_type ComTxModeFalse;\r
 \r
+       //ComTxMode_type ComTxModeFalse;\r
 } ComTxIPdu_type;\r
 \r
-/*\r
-typedef struct {\r
-       uint8  ComTxIPduNumberOfRepetitionsLeft;\r
-       uint32 ComTxModeRepetitionPeriodTimer;\r
-       uint32 ComTxIPduMinimumDelayTimer;\r
-       uint32 ComTxModeTimePeriodTimer;\r
-} ComTxIPduTimer_type;\r
-*/\r
 \r
+/** Configuration structure for I-PDU groups */\r
 typedef struct ComIPduGroup_type {\r
-       // ID of this group. 0-31.\r
+       /** ID of this group.\r
+        * Range 0 to 31.\r
+        */\r
        const uint8 ComIPduGroupHandleId;\r
 \r
        // reference to the group that this group possibly belongs to.\r
        //struct ComIPduGroup_type *ComIPduGroupRef;\r
 \r
+       /** Marks the end of list for the I-PDU group configuration array. */\r
        const uint8 Com_Arc_EOL;\r
 } ComIPduGroup_type;\r
 \r
 \r
+/** Configuration structure for an I-PDU. */\r
 typedef struct {\r
 \r
-       /* Callout function of this IPDU.\r
+       /** Callout function of this IPDU.\r
         * The callout function is an optional function used both on sender and receiver side.\r
         * If configured, it determines whether an IPdu is considered for further processing. If\r
         * the callout return false the IPdu will not be received/sent.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.
         */\r
        boolean (*ComIPduCallout)(PduIdType PduId, const uint8 *IPduData);\r
 \r
 \r
-       /* The ID of this IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.\r
-        *\r
-        * Comment:
-        */\r
-       const uint8 ComIPduRxHandleId;\r
+       /** The outgoing PDU id. For polite PDU id handling. */\r
+       const uint8 ArcIPduOutgoingId;\r
 \r
-       /* Signal processing mode for this IPDU.\r
-        *\r
-        * Context:\r
-        *   - Receive.\r
-        *   - Required.
-        */\r
+       /** Signal processing mode for this IPDU. */\r
        const Com_IPduSignalProcessingMode ComIPduSignalProcessing;\r
 \r
-       /* Size of the IPDU in bytes. 0-8 for CAN and LIN and 0-256 for FlexRay.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.
+       /** Size of the IPDU in bytes.\r
+        * Range 0-8 for CAN and LIN and 0-256 for FlexRay.\r
         */\r
        const uint8 ComIPduSize;\r
 \r
-       /* The direction of the IPDU. Receive or Send.\r
-        *\r
-        * Context:\r
-        *   - Receive or send.\r
-        *   - Required.
-        */\r
+       /** The direction of the IPDU. Receive or Send. */\r
        const Com_IPduDirection ComIPduDirection;\r
 \r
-       /* Reference to the IPDU group that this IPDU belongs to.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Required.
-        */\r
+       /** Reference to the IPDU group that this IPDU belongs to. */\r
        const uint8 ComIPduGroupRef;\r
 \r
-       /* Reference to global PDU structure. ???\r
-        *\r
-        * No global PDU structure defined so this variable is left out.
-        */\r
-       // PduIdRef\r
-\r
-       /* Container of transmission related parameters.\r
-        *\r
-        * Context:\r
-        *       - Send\r
-        *   - Required.
-        */\r
+       /** Container of transmission related parameters. */\r
        const ComTxIPdu_type ComTxIPdu;\r
 \r
-       /* Transmission related timers and parameters.\r
-        *\r
-        * Context:\r
-        *   - Send\r
-        *   - Not required.\r
-        *   - Not part of the AUTOSAR standard.\r
-        *\r
-        * Comment: These are internal variables and should not be configured.
-        */\r
-       //ComTxIPduTimer_type Com_Arc_TxIPduTimers;\r
-\r
-       /* Pointer to data storage of this IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *\r
-        * Comment: this memory will be initialized dynamically in Com_Init();
-        */\r
-       //void *ComIPduDataPtr;\r
+       /** Reference to the actual pdu data storage */\r
+       void *const ComIPduDataPtr;\r
+       void *const ComIPduDeferredDataPtr;\r
 \r
-       /* References to all signals contained in this IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.\r
-        *\r
-        * Comment: It probably makes little sense not to define at least one signal for each IPDU.\r
+       /** References to all signals and signal groups contained in this IPDU.\r
+        * It probably makes little sense not to define at least one signal or signal group for each IPDU.\r
         */\r
-       //const uint8 Com_Arc_NIPduSignalGroupRef;\r
-       const ComSignal_type *ComIPduSignalGroupRef[COM_MAX_NR_SIGNALS_PER_IPDU];\r
+       const ComSignal_type * const *ComIPduSignalRef;\r
 \r
-\r
-       /* References to all signals contained in this IPDU.\r
-        *\r
-        * Context:\r
-        *   - Send and receive.\r
-        *   - Not required.\r
-        *\r
-        * Comment: It probably makes little sense not to define at least one signal for each IPDU.\r
-        */\r
-       //const uint8 NComIPduSignalRef;\r
-       const ComSignal_type *ComIPduSignalRef[COM_MAX_NR_SIGNALS_PER_IPDU];\r
+       const ComSignal_type * const ComIPduDynSignalRef;\r
 \r
        /*\r
         * The following two variables are used to control the per I-PDU based Rx/Tx-deadline monitoring.\r
@@ -647,15 +417,21 @@ typedef struct {
        //const uint32 Com_Arc_DeadlineCounter;\r
        //const uint32 Com_Arc_TimeoutFactor;\r
 \r
+       /* Transmission related timers and parameters.\r
+        * These are internal variables and should not be configured.\r
+        */\r
+       //ComTxIPduTimer_type Com_Arc_TxIPduTimers;\r
+\r
+       /** Marks the end of list for this configuration array. */\r
        const uint8 Com_Arc_EOL;\r
 \r
 } ComIPdu_type;\r
 \r
 \r
-// Contains configuration specific configuration parameters. Exists once per configuration.\r
+/** Top-level configuration container for COM. Exists once per configuration. */\r
 typedef struct {\r
 \r
-       // The ID of this configuration. This is returned by Com_GetConfigurationId();\r
+       /** The ID of this configuration. This is returned by Com_GetConfigurationId(); */\r
        const uint8 ComConfigurationId;\r
 \r
        /*\r
@@ -664,23 +440,24 @@ typedef struct {
        ComGwMapping_type ComGwMapping[];\r
         */\r
 \r
-       // IPDU definitions. At least one\r
+       /** IPDU definitions */\r
        const ComIPdu_type *ComIPdu;\r
 \r
        //uint16 Com_Arc_NIPdu;\r
 \r
-       // IPDU group definitions\r
+       /** IPDU group definitions */\r
        const ComIPduGroup_type *ComIPduGroup;\r
 \r
-       // Signal definitions\r
+       /** Signal definitions */\r
        const ComSignal_type *ComSignal;\r
 \r
        // Signal group definitions\r
        //ComSignalGroup_type *ComSignalGroup;\r
 \r
-       // Group signal definitions\r
+       /** Group signal definitions */\r
        const ComGroupSignal_type *ComGroupSignal;\r
 \r
 } Com_ConfigType;\r
 \r
 #endif /*COM_TYPES_H_*/\r
+/** @} */\r