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 % 19 19
Test Date: 2026-11-13 15:04:32 Functions: 100.0 % 5 5

            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              : namespace
      20              : {
      21          157 : ::etl::array<uint8_t, 1U> makeImplementedRequest(uint8_t const service) { return {{service}}; }
      22              : } // namespace
      23              : 
      24          104 : Service::Service(uint8_t const service, DiagSession::DiagSessionMask const sessionMask)
      25              : : AbstractDiagJob(
      26          104 :     makeImplementedRequest(service),
      27              :     0U,
      28              :     AbstractDiagJob::VARIABLE_REQUEST_LENGTH,
      29              :     AbstractDiagJob::VARIABLE_RESPONSE_LENGTH,
      30          208 :     sessionMask)
      31              : {
      32          104 :     init();
      33          104 : }
      34              : 
      35           53 : Service::Service(
      36              :     uint8_t const service,
      37              :     uint8_t const requestPayloadLength,
      38              :     uint8_t const responseLength,
      39           53 :     DiagSession::DiagSessionMask const sessionMask)
      40              : : AbstractDiagJob(
      41           53 :     makeImplementedRequest(service), 0U, requestPayloadLength, responseLength, sessionMask)
      42              : {
      43           53 :     init();
      44           53 : }
      45              : 
      46          157 : void Service::init() { setDefaultDiagReturnCode(DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED); }
      47              : 
      48              : DiagReturnCode::Type
      49           32 : Service::verify(uint8_t const* const request, uint16_t const /* requestLength */)
      50              : {
      51           32 :     ::etl::span<uint8_t const> const requestView(request, 1U);
      52           32 :     if (requestView[0U] != getImplementedRequestView()[0U])
      53              :     {
      54            4 :         return DiagReturnCode::NOT_RESPONSIBLE;
      55              :     }
      56           28 :     if (!fAllowedSessions.match(getSession()))
      57              :     {
      58            1 :         return DiagReturnCode::ISO_SERVICE_NOT_SUPPORTED_IN_ACTIVE_SESSION;
      59              :     }
      60           27 :     return DiagReturnCode::OK;
      61              : }
      62              : 
      63              : } // namespace uds
        

Generated by: LCOV version 2.0-1