LCOV - code coverage report
Current view: top level - libs/bsw/cpp2can/src/can/canframes - CANFrame.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 31 31
Test Date: 2026-02-24 11:21:15 Functions: 100.0 % 6 6

            Line data    Source code
       1              : // Copyright 2024 Accenture.
       2              : 
       3              : #include "can/canframes/CANFrame.h"
       4              : 
       5              : #include "can/canframes/CanId.h"
       6              : 
       7              : #include <etl/error_handler.h>
       8              : 
       9              : namespace can
      10              : {
      11              : // define const variables for GCC
      12              : // #ifdef __GNUC__
      13              : uint8_t const CANFrame::SENDER_MASK;
      14              : uint8_t const CANFrame::CAN_OVERHEAD_BITS;
      15              : uint8_t const CANFrame::MAX_FRAME_LENGTH;
      16              : uint32_t const CANFrame::MAX_FRAME_ID;
      17              : uint32_t const CANFrame::MAX_FRAME_ID_EXTENDED;
      18              : 
      19              : // #endif
      20              : 
      21           59 : CANFrame::CANFrame() : _id(0U), _timestamp(0U), _payloadLength(0U)
      22              : {
      23           59 :     (void)memset(_payload, 0, sizeof(_payload));
      24           59 : }
      25              : 
      26            1 : CANFrame::CANFrame(uint32_t const id) : _id(id), _timestamp(0U), _payloadLength(0U)
      27              : {
      28            1 :     (void)memset(_payload, 0xFF, sizeof(_payload));
      29            1 : }
      30              : 
      31           15 : CANFrame::CANFrame(uint32_t const id, uint8_t const* const payload, uint8_t const length)
      32           15 : : _id(id), _timestamp(0U), _payloadLength(length)
      33              : {
      34           15 :     ETL_ASSERT(
      35              :         length <= MAX_FRAME_LENGTH,
      36              :         ETL_ERROR_GENERIC("CAN frame length must be smaller than maximum length"));
      37              : 
      38           14 :     (void)memcpy(_payload, payload, static_cast<size_t>(length));
      39           14 : }
      40              : 
      41            6 : CANFrame::CANFrame(
      42              :     uint32_t const rawId,
      43              :     uint8_t const* const payload,
      44              :     uint8_t const length,
      45            6 :     bool const isExtendedId)
      46            6 : : _id(CanId::id(rawId, isExtendedId)), _timestamp(0U), _payloadLength(length)
      47              : {
      48            6 :     ETL_ASSERT(
      49              :         rawId <= MAX_FRAME_ID_EXTENDED,
      50              :         ETL_ERROR_GENERIC("CAN frame id must be smaller than the maximum allowed one"));
      51              : 
      52            5 :     ETL_ASSERT(
      53              :         length <= MAX_FRAME_LENGTH,
      54              :         ETL_ERROR_GENERIC("CAN frame length must be smaller than maximum length"));
      55              : 
      56            4 :     (void)memcpy(_payload, payload, static_cast<size_t>(length));
      57            4 : }
      58              : 
      59           25 : void CANFrame::setPayloadLength(uint8_t const length)
      60              : {
      61              :     // only accept a payload length less or equal the maximum
      62           25 :     if (length <= MAX_FRAME_LENGTH)
      63              :     {
      64           24 :         _payloadLength = length;
      65              :     }
      66           25 : }
      67              : 
      68           29 : bool operator==(CANFrame const& frame1, CANFrame const& frame2)
      69              : {
      70           29 :     if (frame1._id != frame2._id)
      71              :     {
      72            2 :         return false;
      73              :     }
      74           27 :     if (frame1._payloadLength != frame2._payloadLength)
      75              :     {
      76            2 :         return false;
      77              :     }
      78          145 :     for (uint8_t i = 0U; i < frame1._payloadLength; ++i)
      79              :     {
      80          121 :         if (frame1._payload[i] != frame2._payload[i])
      81              :         {
      82            1 :             return false;
      83              :         }
      84              :     }
      85           24 :     return true;
      86              : }
      87              : 
      88              : } // namespace can
        

Generated by: LCOV version 2.0-1