LCOV - code coverage report
Current view: top level - uds/src/util - RoutineControlOptionParser.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 21 21 100.0 %
Date: 2025-07-08 16:29:06 Functions: 4 4 100.0 %

          Line data    Source code
       1             : // Copyright 2024 Accenture.
       2             : 
       3             : #include "util/RoutineControlOptionParser.h"
       4             : 
       5             : #include <etl/unaligned_type.h>
       6             : 
       7             : namespace uds
       8             : {
       9             : uint8_t
      10           1 : RoutineControlOptionParser::getLogicalBlockNumberLength(uint8_t const lengthFormatIdentifier)
      11             : {
      12           1 :     return (lengthFormatIdentifier & 0xF0U) >> 4U;
      13             : }
      14             : 
      15           1 : uint8_t RoutineControlOptionParser::getMemoryAddressLength(uint8_t const lengthFormatIdentifier)
      16             : {
      17           1 :     return (lengthFormatIdentifier & 0xF0U) >> 4U;
      18             : }
      19             : 
      20           1 : uint8_t RoutineControlOptionParser::getMemorySizeLength(uint8_t const lengthFormatIdentifier)
      21             : {
      22           1 :     return (lengthFormatIdentifier & 0x0FU);
      23             : }
      24             : 
      25             : uint32_t
      26           5 : RoutineControlOptionParser::parseParameter(uint8_t const* const buffer, uint8_t const length)
      27             : {
      28           5 :     switch (length)
      29             :     {
      30           1 :         case 1U:
      31           1 :         {
      32           1 :             return static_cast<uint32_t>(*buffer);
      33             :         }
      34           1 :         case 2U:
      35           1 :         {
      36           1 :             return static_cast<uint32_t>(::etl::be_uint16_t(buffer));
      37             :         }
      38           1 :         case 3U:
      39           1 :         {
      40           1 :             return (static_cast<uint32_t>(*buffer) << 16)
      41           1 :                    | static_cast<uint32_t>(::etl::be_uint16_t(buffer + 1));
      42             :         }
      43           1 :         case 4U:
      44           1 :         {
      45           1 :             return ::etl::be_uint32_t(buffer);
      46             :         }
      47             :         default:
      48             :         {
      49             :             return 0U;
      50             :         }
      51             :     }
      52             : }
      53             : 
      54             : } // namespace uds

Generated by: LCOV version 1.14