From 0fb4767527b6432bc46c59e6d8487e03f518c6e0 Mon Sep 17 00:00:00 2001 From: Guenter Kothgasser Date: Tue, 27 Jan 2026 13:44:10 +0100 Subject: [PATCH] Make diagnostic sessions configurable --- .../src/uds/session/DiagSession.cpp | 114 ++++++++++++++++++ libs/bsw/uds/CMakeLists.txt | 3 - .../uds/session/ApplicationDefaultSession.cpp | 47 -------- .../session/ApplicationExtendedSession.cpp | 49 -------- .../src/uds/session/ProgrammingSession.cpp | 42 ------- 5 files changed, 114 insertions(+), 141 deletions(-) delete mode 100644 libs/bsw/uds/src/uds/session/ApplicationDefaultSession.cpp delete mode 100644 libs/bsw/uds/src/uds/session/ApplicationExtendedSession.cpp delete mode 100644 libs/bsw/uds/src/uds/session/ProgrammingSession.cpp diff --git a/executables/referenceApp/udsConfiguration/src/uds/session/DiagSession.cpp b/executables/referenceApp/udsConfiguration/src/uds/session/DiagSession.cpp index 22bddbecf0f..7a8f6d2410f 100644 --- a/executables/referenceApp/udsConfiguration/src/uds/session/DiagSession.cpp +++ b/executables/referenceApp/udsConfiguration/src/uds/session/DiagSession.cpp @@ -1,4 +1,5 @@ // Copyright 2024 Accenture. +// Copyright 2026 BMW AG #include "uds/session/DiagSession.h" @@ -45,4 +46,117 @@ bool operator!=(DiagSession const& x, DiagSession const& y) { return !(x == y); DiagSession::DiagSession(SessionType id, uint8_t index) : fType(id), fId(index) {} +// Default Session + +DiagReturnCode::Type +ApplicationDefaultSession::isTransitionPossible(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::DEFAULT: + case DiagSession::EXTENDED: + { + return DiagReturnCode::OK; + } + case DiagSession::PROGRAMMING: + { + return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED_IN_ACTIVE_SESSION; + } + default: + { + return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; + } + } +} + +DiagSession& +ApplicationDefaultSession::getTransitionResult(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::EXTENDED: + { + return DiagSession::APPLICATION_EXTENDED_SESSION(); + } + default: + { + return *this; + } + } +} + +// Extended Session + +DiagReturnCode::Type +ApplicationExtendedSession::isTransitionPossible(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::DEFAULT: + case DiagSession::EXTENDED: + case DiagSession::PROGRAMMING: + { + return DiagReturnCode::OK; + } + default: + { + return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; + } + } +} + +DiagSession& +ApplicationExtendedSession::getTransitionResult(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::DEFAULT: + { + return DiagSession::APPLICATION_DEFAULT_SESSION(); + } + case DiagSession::PROGRAMMING: + { + return DiagSession::PROGRAMMING_SESSION(); + } + default: + { + return *this; + } + } +} + +// Programming Session + +DiagReturnCode::Type +ProgrammingSession::isTransitionPossible(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::DEFAULT: + case DiagSession::PROGRAMMING: + { + return DiagReturnCode::OK; + } + default: + { + return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; + } + } +} + +DiagSession& ProgrammingSession::getTransitionResult(DiagSession::SessionType const targetSession) +{ + switch (targetSession) + { + case DiagSession::DEFAULT: + { + return DiagSession::APPLICATION_DEFAULT_SESSION(); + } + default: + { + return *this; + } + } +} + } // namespace uds diff --git a/libs/bsw/uds/CMakeLists.txt b/libs/bsw/uds/CMakeLists.txt index cb7202943cd..ecc70c41c62 100644 --- a/libs/bsw/uds/CMakeLists.txt +++ b/libs/bsw/uds/CMakeLists.txt @@ -41,9 +41,6 @@ add_library( src/uds/services/sessioncontrol/DiagnosticSessionControl.cpp src/uds/services/testerpresent/TesterPresent.cpp src/uds/services/writedata/WriteDataByIdentifier.cpp - src/uds/session/ApplicationDefaultSession.cpp - src/uds/session/ApplicationExtendedSession.cpp - src/uds/session/ProgrammingSession.cpp src/uds/DiagDispatcher.cpp src/uds/UdsLogger.cpp src/util/RoutineControlOptionParser.cpp) diff --git a/libs/bsw/uds/src/uds/session/ApplicationDefaultSession.cpp b/libs/bsw/uds/src/uds/session/ApplicationDefaultSession.cpp deleted file mode 100644 index 8b1f5f54e68..00000000000 --- a/libs/bsw/uds/src/uds/session/ApplicationDefaultSession.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2024 Accenture. - -#include "uds/session/ApplicationDefaultSession.h" - -#include "uds/session/ApplicationExtendedSession.h" - -namespace uds -{ - -DiagReturnCode::Type -ApplicationDefaultSession::isTransitionPossible(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::DEFAULT: - case DiagSession::EXTENDED: - { - return DiagReturnCode::OK; - } - case DiagSession::PROGRAMMING: - { - return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED_IN_ACTIVE_SESSION; - } - default: - { - return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; - } - } -} - -DiagSession& -ApplicationDefaultSession::getTransitionResult(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::EXTENDED: - { - return DiagSession::APPLICATION_EXTENDED_SESSION(); - } - default: - { - return *this; - } - } -} - -} // namespace uds diff --git a/libs/bsw/uds/src/uds/session/ApplicationExtendedSession.cpp b/libs/bsw/uds/src/uds/session/ApplicationExtendedSession.cpp deleted file mode 100644 index ad72bee7b16..00000000000 --- a/libs/bsw/uds/src/uds/session/ApplicationExtendedSession.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2024 Accenture. - -#include "uds/session/ApplicationExtendedSession.h" - -#include "uds/session/ApplicationDefaultSession.h" -#include "uds/session/ProgrammingSession.h" - -namespace uds -{ - -DiagReturnCode::Type -ApplicationExtendedSession::isTransitionPossible(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::DEFAULT: - case DiagSession::EXTENDED: - case DiagSession::PROGRAMMING: - { - return DiagReturnCode::OK; - } - default: - { - return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; - } - } -} - -DiagSession& -ApplicationExtendedSession::getTransitionResult(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::DEFAULT: - { - return DiagSession::APPLICATION_DEFAULT_SESSION(); - } - case DiagSession::PROGRAMMING: - { - return DiagSession::PROGRAMMING_SESSION(); - } - default: - { - return *this; - } - } -} - -} // namespace uds diff --git a/libs/bsw/uds/src/uds/session/ProgrammingSession.cpp b/libs/bsw/uds/src/uds/session/ProgrammingSession.cpp deleted file mode 100644 index 49ba520d104..00000000000 --- a/libs/bsw/uds/src/uds/session/ProgrammingSession.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2024 Accenture. - -#include "uds/session/ProgrammingSession.h" - -#include "uds/session/ApplicationDefaultSession.h" - -namespace uds -{ - -DiagReturnCode::Type -ProgrammingSession::isTransitionPossible(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::DEFAULT: - case DiagSession::PROGRAMMING: - { - return DiagReturnCode::OK; - } - default: - { - return DiagReturnCode::ISO_SUBFUNCTION_NOT_SUPPORTED; - } - } -} - -DiagSession& ProgrammingSession::getTransitionResult(DiagSession::SessionType const targetSession) -{ - switch (targetSession) - { - case DiagSession::DEFAULT: - { - return DiagSession::APPLICATION_DEFAULT_SESSION(); - } - default: - { - return *this; - } - } -} - -} // namespace uds