LCOV - code coverage report
Current view: top level - libs/bsw/uds/src/uds/base - Service.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 20 20
Test Date: 2026-06-18 08:29:03 Functions: 100.0 % 4 4

            Line data    Source code
       1              : /********************************************************************************
       2              :  * Copyright (c) 2024 Accenture
       3              :  *
       4              :  * This program and the accompanying materials are made available under the
       5              :  * terms of the Apache License Version 2.0 which is available at
       6              :  * https://www.apache.org/licenses/LICENSE-2.0
       7              :  *
       8              :  * SPDX-License-Identifier: Apache-2.0
       9              :  ********************************************************************************/
      10              : 
      11              : #include "uds/base/Service.h"
      12              : 
      13              : #include "uds/connection/IncomingDiagConnection.h"
      14              : #include "uds/session/DiagSession.h"
      15              : #include "uds/session/IDiagSessionManager.h"
      16              : 
      17              : namespace uds
      18              : {
      19          101 : Service::Service(uint8_t const service, DiagSession::DiagSessionMask const sessionMask)
      20              : : AbstractDiagJob(
      21          101 :     fService,
      22              :     1U,
      23              :     0U,
      24              :     AbstractDiagJob::VARIABLE_REQUEST_LENGTH,
      25              :     AbstractDiagJob::VARIABLE_RESPONSE_LENGTH,
      26          101 :     sessionMask)
      27              : {
      28          101 :     init(service);
      29          101 : }
      30              : 
      31           47 : Service::Service(
      32              :     uint8_t const service,
      33              :     uint8_t const requestPayloadLength,
      34              :     uint8_t const responseLength,
      35           47 :     DiagSession::DiagSessionMask const sessionMask)
      36           47 : : AbstractDiagJob(fService, 1U, 0U, requestPayloadLength, responseLength, sessionMask)
      37              : {
      38           47 :     init(service);
      39           47 : }
      40              : 
      41          148 : void Service::init(uint8_t const service)
      42              : {
      43          148 :     fService[0] = service;
      44          148 :     setDefaultDiagReturnCode(DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED);
      45          148 : }
      46              : 
      47              : DiagReturnCode::Type
      48           27 : Service::verify(uint8_t const* const request, uint16_t const /* requestLength */)
      49              : {
      50           27 :     if (request[0] != fpImplementedRequest[0])
      51              :     {
      52            4 :         return DiagReturnCode::NOT_RESPONSIBLE;
      53              :     }
      54           23 :     if (!fAllowedSessions.match(getSession()))
      55              :     {
      56            1 :         return DiagReturnCode::ISO_SERVICE_NOT_SUPPORTED_IN_ACTIVE_SESSION;
      57              :     }
      58           22 :     return DiagReturnCode::OK;
      59              : }
      60              : 
      61              : } // namespace uds
        

Generated by: LCOV version 2.0-1