const ComSignal_type * Signal = GET_Signal(signalId);\r
Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
-\r
+ uint8 pduSize = GET_IPdu(Arc_Signal->ComIPduHandleId)->ComIPduSize;\r
// Get data\r
Com_ReadSignalDataFromPduBuffer(\r
signalId,\r
FALSE,\r
signalData,\r
- Arc_IPdu->ComIPduDataPtr);\r
+ Arc_IPdu->ComIPduDataPtr,\r
+ pduSize);\r
}\r
\r
void Com_ReadGroupSignalDataFromPdu(\r
const ComSignal_type * Signal = GET_Signal(parentSignalId);\r
Com_Arc_Signal_type * Arc_Signal = GET_ArcSignal(Signal->ComHandleId);\r
Com_Arc_IPdu_type *Arc_IPdu = GET_ArcIPdu(Arc_Signal->ComIPduHandleId);\r
-\r
+ uint8 pduSize = GET_IPdu(Arc_Signal->ComIPduHandleId)->ComIPduSize;\r
// Get data\r
Com_ReadSignalDataFromPduBuffer(\r
groupSignalId,\r
TRUE,\r
signalData,\r
- Arc_IPdu->ComIPduDataPtr);\r
+ Arc_IPdu->ComIPduDataPtr,\r
+ pduSize);\r
}\r
\r
void Com_ReadSignalDataFromPduBuffer(\r
const uint16 signalId,\r
const boolean isGroupSignal,\r
void *signalData,\r
- const void *pduBuffer) {\r
+ const void *pduBuffer,\r
+ uint8 pduSize) {\r
\r
Com_SignalType signalType;\r
ComSignalEndianess_type signalEndianess;\r
uint8 signalLength;\r
- uint8 bitPosition;\r
+ Com_BitPositionType bitPosition;\r
uint8 bitSize;\r
\r
if (!isGroupSignal) {\r
uint8 *signalDataBytes = (uint8 *)signalData;\r
uint8 signalDataBytesArray[8];\r
const uint8 *pduBufferBytes = (const uint8 *)pduBuffer;\r
- uint8 startBitOffset = 0;\r
+ Com_BitPositionType startBitOffset = 0;\r
\r
if (signalEndianess == COM_LITTLE_ENDIAN) {\r
// Swap source bytes before reading\r
// TODO: Must adapt to larger PDUs!\r
- uint8 pduBufferBytes_swap[8];\r
- for (uint8 i = 0; i < 8; ++i) {\r
- pduBufferBytes_swap[i] = pduBufferBytes[7 - i];\r
+ uint8 pduBufferBytes_swap[pduSize];\r
+ for (uint8 i = 0; i < pduSize; ++i) {\r
+ pduBufferBytes_swap[i] = pduBufferBytes[(pduSize-1) - i];\r
}\r
- startBitOffset = intelBitNrToPduOffset(bitPosition, bitSize, 64);\r
+ startBitOffset = intelBitNrToPduOffset(bitPosition, bitSize, pduSize*8);\r
//lint -save -esym(960,12.5) PC-Lint Exception: OK. PC-Lint Wrong interpretation of MISRA rule 12.5.\r
Com_ReadDataSegment(\r
signalDataBytesArray, pduBufferBytes_swap, destSize,\r
\r
Com_SignalType signalType;\r
uint8 signalLength;\r
- uint8 bitPosition;\r
+ Com_BitPositionType bitPosition;\r
uint8 bitSize;\r
ComSignalEndianess_type endian;\r
\r
}\r
\r
uint8 signalBufferSize = SignalTypeToSize(signalType, signalLength);\r
- uint8 pduSignalMask[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};\r
+ uint8 pduSignalMask[pduSize];\r
+ for (uint8 i = 0; i < pduSize; i++) {\r
+ pduSignalMask[i] = 0x00;\r
+ }\r
\r
uint8 signalDataBytesArray[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};\r
const uint8 *signalDataBytes = (const uint8 *)signalData;\r
\r
if (endian == COM_BIG_ENDIAN) {\r
uint8 *pduBufferBytes = (uint8 *)pduBuffer;\r
- uint8 startBitOffset = motorolaBitNrToPduOffset(bitPosition);\r
+ Com_BitPositionType startBitOffset = motorolaBitNrToPduOffset(bitPosition);\r
\r
Com_WriteDataSegment(pduBufferBytes, pduSignalMask,\r
signalDataBytesArray, signalBufferSize, startBitOffset, bitSize);\r
\r
} else {\r
- uint8 startBitOffset = intelBitNrToPduOffset(bitPosition, bitSize, (uint8)(pduSize * 8));\r
- uint8 pduBufferBytesSwapped[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};\r
-\r
+ Com_BitPositionType startBitOffset = intelBitNrToPduOffset(bitPosition, bitSize, (Com_BitPositionType)(pduSize * 8));\r
+ uint8 pduBufferBytesSwapped[pduSize];\r
+ for (uint8 i = 0; i < pduSize; i++) {\r
+ pduBufferBytesSwapped[i] = 0x00;\r
+ }\r
Com_WriteDataSegment(pduBufferBytesSwapped, pduSignalMask,\r
signalDataBytesArray, signalBufferSize, startBitOffset, bitSize);\r
\r
*\r
*/\r
void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,\r
- uint8 segmentStartBitOffset, uint8 segmentBitLength, boolean signedOutput) {\r
+ Com_BitPositionType segmentStartBitOffset, uint8 segmentBitLength, boolean signedOutput) {\r
\r
- uint8 sourceEndBitOffset = segmentStartBitOffset + segmentBitLength - 1;\r
- uint8 sourceStartByte = segmentStartBitOffset / 8;\r
+ Com_BitPositionType sourceEndBitOffset = segmentStartBitOffset + segmentBitLength - 1;\r
+ Com_BitPositionType sourceStartByte = segmentStartBitOffset / 8;\r
uint8 sourceEndByte = (sourceEndBitOffset) / 8;\r
uint8 sourceByteLength = sourceEndByte - sourceStartByte;\r
\r
* signal is located in the <pdu>.\r
*/\r
void Com_WriteDataSegment(uint8 *pdu, uint8 *pduSignalMask, const uint8 *signalDataPtr, uint8 destByteLength,\r
- uint8 segmentStartBitOffset, uint8 segmentBitLength) {\r
- uint8 pduEndBitOffset = segmentStartBitOffset + segmentBitLength - 1;\r
+ Com_BitPositionType segmentStartBitOffset, uint8 segmentBitLength) {\r
+ Com_BitPositionType pduEndBitOffset = segmentStartBitOffset + segmentBitLength - 1;\r
uint8 pduStartByte = segmentStartBitOffset / 8;\r
uint8 pduEndByte = (pduEndBitOffset) / 8;\r
uint8 pduByteLength = pduEndByte - pduStartByte;\r
* motorolaBitNr: 7 6 5 4 3 2 1 0 15 14 13 12 ...\r
* motorolaBitNrToPduOffset: 0 1 2 3 4 5 6 7 8 9 10 11 ...\r
*/\r
-uint8 motorolaBitNrToPduOffset (uint8 motorolaBitNr) {\r
+Com_BitPositionType motorolaBitNrToPduOffset (Com_BitPositionType motorolaBitNr) {\r
uint8 byte = motorolaBitNr / 8;\r
- uint8 offsetToByteStart = (uint8) (byte * 8u);\r
- uint8 offsetInsideByte = motorolaBitNr % 8;\r
- return (uint8) (offsetToByteStart + (7u - offsetInsideByte));\r
+ Com_BitPositionType offsetToByteStart = (Com_BitPositionType) (byte * 8u);\r
+ Com_BitPositionType offsetInsideByte = motorolaBitNr % 8;\r
+ return (Com_BitPositionType) (offsetToByteStart + (7u - offsetInsideByte));\r
}\r
\r
/*\r
* intelBitNr (after PDU byte-swap): 39 38 37 36 35 34 33 32 31 ... 3 2 1 0\r
* intelBitNrToPduOffset: 0 1 2 3 4 5 6 7 8 ... 36 37 38 39\r
*/\r
-uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLength) {\r
+Com_BitPositionType intelBitNrToPduOffset (Com_BitPositionType intelBitNr, Com_BitPositionType segmentBitLength, Com_BitPositionType pduBitLength) {\r
return pduBitLength - (intelBitNr + segmentBitLength);\r
}\r
\r
const uint16 signalId,\r
const boolean isGroupSignal,\r
void *signalData,\r
- const void *pduBuffer);\r
+ const void *pduBuffer,\r
+ uint8 pduSize);\r
\r
// write data to PDU\r
void Com_WriteSignalDataToPdu(\r
//void Com_CopyData2(char *dest, const char *source, uint8 destByteLength, uint8 segmentStartBitOffset, uint8 segmentBitLength);\r
\r
void Com_ReadDataSegment(uint8 *dest, const uint8 *source, uint8 destByteLength,\r
- uint8 segmentStartBitOffset, uint8 segmentBitLength, boolean signedOutput);\r
+ Com_BitPositionType segmentStartBitOffset, uint8 segmentBitLength, boolean signedOutput);\r
\r
void Com_WriteDataSegment(uint8 *pdu, uint8 *pduSignalMask, const uint8 *signalDataPtr, uint8 destByteLength,\r
- uint8 segmentStartBitOffset, uint8 segmentBitLength);\r
+ Com_BitPositionType segmentStartBitOffset, uint8 segmentBitLength);\r
\r
-uint8 motorolaBitNrToPduOffset (uint8 motorolaBitNr);\r
-uint8 intelBitNrToPduOffset (uint8 intelBitNr, uint8 segmentBitLength, uint8 pduBitLength);\r
+Com_BitPositionType motorolaBitNrToPduOffset (Com_BitPositionType motorolaBitNr);\r
+Com_BitPositionType intelBitNrToPduOffset (Com_BitPositionType intelBitNr, Com_BitPositionType segmentBitLength, Com_BitPositionType pduBitLength);\r
void Com_RxProcessSignals(const ComIPdu_type *IPdu,Com_Arc_IPdu_type *Arc_IPdu);\r
PduIdType getPduId(const ComIPdu_type* IPdu);\r
\r