From 8354b04ac6c9842b9a10bd27ed5613864570f867 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:15:31 +0000 Subject: [PATCH 01/12] Fix CanStub Send override to match CanHardware interface Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/e294dd2c-56ca-4d4f-ac03-445eec42aa32 Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/stub_canhardware.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/stub_canhardware.h b/test/stub_canhardware.h index 13331cb..247b9cb 100644 --- a/test/stub_canhardware.h +++ b/test/stub_canhardware.h @@ -28,8 +28,9 @@ class CanStub: public CanHardware { void SetBaudrate(enum baudrates baudrate) {} - void Send(uint32_t canId, uint32_t data[2], uint8_t len) + void Send(uint32_t canId, uint32_t data[2], uint8_t len, bool forceExt = false) override { + (void)forceExt; m_canId = canId; memcpy(&m_data[0], &data[0], sizeof(m_data)); m_len = len; @@ -45,4 +46,4 @@ class CanStub: public CanHardware extern CanCallback* vcuCan; extern uint32_t vcuCanId; -#endif // TEST_CANHARDWARE_H \ No newline at end of file +#endif // TEST_CANHARDWARE_H From a1da9dcd76f42fd2b8b7eac9e276f6693b75aa91 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:15:58 +0000 Subject: [PATCH 02/12] Remove redundant default arg from CanStub Send override Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/e294dd2c-56ca-4d4f-ac03-445eec42aa32 Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/stub_canhardware.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stub_canhardware.h b/test/stub_canhardware.h index 247b9cb..2fd5947 100644 --- a/test/stub_canhardware.h +++ b/test/stub_canhardware.h @@ -28,7 +28,7 @@ class CanStub: public CanHardware { void SetBaudrate(enum baudrates baudrate) {} - void Send(uint32_t canId, uint32_t data[2], uint8_t len, bool forceExt = false) override + void Send(uint32_t canId, uint32_t data[2], uint8_t len, bool forceExt) override { (void)forceExt; m_canId = canId; From f68d4fff1e08c772b58ae691033939802c06eab3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:19:49 +0000 Subject: [PATCH 03/12] Adjust CanSdo userspace SDO tests for ProcessUserSpaceSdo flow Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/784aee6a-4992-4685-a95c-a4c8f365271f Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/test_cansdo.cpp | 57 ++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/test/test_cansdo.cpp b/test/test_cansdo.cpp index c54d5c6..d11d86d 100644 --- a/test/test_cansdo.cpp +++ b/test/test_cansdo.cpp @@ -41,15 +41,40 @@ class CanSdoTest : public UnitTest virtual void TestCaseSetup(); }; +class UserSpaceCanSdo : public CanSdo +{ +public: + explicit UserSpaceCanSdo(CanHardware* hw, CanMap* cm = 0) : CanSdo(hw, cm) {} + + bool handleUserspaceSdo = false; + bool userspaceCalled = false; + SdoFrame lastUserspaceRequest{}; + + bool ProcessUserSpaceSdo(SdoFrame* sdo) override + { + userspaceCalled = true; + lastUserspaceRequest = *sdo; + + if (handleUserspaceSdo) + { + sdo->cmd = SDO_WRITE_REPLY; + sdo->data = 0; + return true; + } + + return false; + } +}; + static std::unique_ptr canStub; static std::unique_ptr canMap; -static std::unique_ptr canSdo; +static std::unique_ptr canSdo; void CanSdoTest::TestCaseSetup() { canStub = std::make_unique(); canMap = std::make_unique(canStub.get(), false); - canSdo = std::make_unique(canStub.get(), canMap.get()); + canSdo = std::make_unique(canStub.get(), canMap.get()); Param::LoadDefaults(); } @@ -383,30 +408,26 @@ static void sdo_write_error_time_aborts() static void sdo_unknown_index_goes_to_user_space() { - // Index 0x4000 is not handled by CanSdo itself + // Index 0x4000 is not handled internally and is offered to user-space first. + canSdo->handleUserspaceSdo = false; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0xDEADBEEF); - // No CAN reply should be sent; the pending user-space SDO should be set - CanSdo::SdoFrame* pending = canSdo->GetPendingUserspaceSdo(); - ASSERT(pending != nullptr); - ASSERT(pending->index == 0x4000); - ASSERT(pending->data == 0xDEADBEEF); + ASSERT(canSdo->userspaceCalled); + ASSERT(canSdo->lastUserspaceRequest.index == 0x4000); + ASSERT(canSdo->lastUserspaceRequest.data == 0xDEADBEEF); + ASSERT(canStub->m_canId == SdoRepId); + ASSERT(GetReply()->cmd == SDO_ABORT); + ASSERT(GetReply()->data == SDO_ERR_INVIDX); } static void sdo_reply_sent_via_send_sdo_reply() { + canSdo->handleUserspaceSdo = true; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0x1234); - CanSdo::SdoFrame* pending = canSdo->GetPendingUserspaceSdo(); - ASSERT(pending != nullptr); - - // User space fills in the reply and calls SendSdoReply - pending->cmd = SDO_WRITE_REPLY; - pending->data = 0; - canSdo->SendSdoReply(pending); - - // After sending the reply, the pending flag must be cleared - ASSERT(canSdo->GetPendingUserspaceSdo() == nullptr); + ASSERT(canSdo->userspaceCalled); + ASSERT(canSdo->lastUserspaceRequest.index == 0x4000); + ASSERT(canSdo->lastUserspaceRequest.data == 0x1234); ASSERT(canStub->m_canId == SdoRepId); ASSERT(GetReply()->cmd == SDO_WRITE_REPLY); } From b128dd810b4c1c3ba75a8f1090f0355b54c6f420 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:20:19 +0000 Subject: [PATCH 04/12] Normalize user-space SDO test helper naming Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/784aee6a-4992-4685-a95c-a4c8f365271f Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/test_cansdo.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/test_cansdo.cpp b/test/test_cansdo.cpp index d11d86d..1e4e6d8 100644 --- a/test/test_cansdo.cpp +++ b/test/test_cansdo.cpp @@ -46,16 +46,16 @@ class UserSpaceCanSdo : public CanSdo public: explicit UserSpaceCanSdo(CanHardware* hw, CanMap* cm = 0) : CanSdo(hw, cm) {} - bool handleUserspaceSdo = false; + bool handleUserSpaceSdo = false; bool userspaceCalled = false; - SdoFrame lastUserspaceRequest{}; + SdoFrame lastUserSpaceRequest{}; bool ProcessUserSpaceSdo(SdoFrame* sdo) override { userspaceCalled = true; - lastUserspaceRequest = *sdo; + lastUserSpaceRequest = *sdo; - if (handleUserspaceSdo) + if (handleUserSpaceSdo) { sdo->cmd = SDO_WRITE_REPLY; sdo->data = 0; @@ -409,12 +409,12 @@ static void sdo_write_error_time_aborts() static void sdo_unknown_index_goes_to_user_space() { // Index 0x4000 is not handled internally and is offered to user-space first. - canSdo->handleUserspaceSdo = false; + canSdo->handleUserSpaceSdo = false; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0xDEADBEEF); ASSERT(canSdo->userspaceCalled); - ASSERT(canSdo->lastUserspaceRequest.index == 0x4000); - ASSERT(canSdo->lastUserspaceRequest.data == 0xDEADBEEF); + ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); + ASSERT(canSdo->lastUserSpaceRequest.data == 0xDEADBEEF); ASSERT(canStub->m_canId == SdoRepId); ASSERT(GetReply()->cmd == SDO_ABORT); ASSERT(GetReply()->data == SDO_ERR_INVIDX); @@ -422,12 +422,12 @@ static void sdo_unknown_index_goes_to_user_space() static void sdo_reply_sent_via_send_sdo_reply() { - canSdo->handleUserspaceSdo = true; + canSdo->handleUserSpaceSdo = true; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0x1234); ASSERT(canSdo->userspaceCalled); - ASSERT(canSdo->lastUserspaceRequest.index == 0x4000); - ASSERT(canSdo->lastUserspaceRequest.data == 0x1234); + ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); + ASSERT(canSdo->lastUserSpaceRequest.data == 0x1234); ASSERT(canStub->m_canId == SdoRepId); ASSERT(GetReply()->cmd == SDO_WRITE_REPLY); } From 531ca611b5e793a42be5601b1f7cc8bf9cf5b33c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:20:49 +0000 Subject: [PATCH 05/12] Align user-space SDO helper field naming in tests Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/784aee6a-4992-4685-a95c-a4c8f365271f Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/test_cansdo.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_cansdo.cpp b/test/test_cansdo.cpp index 1e4e6d8..7c1863e 100644 --- a/test/test_cansdo.cpp +++ b/test/test_cansdo.cpp @@ -47,12 +47,12 @@ class UserSpaceCanSdo : public CanSdo explicit UserSpaceCanSdo(CanHardware* hw, CanMap* cm = 0) : CanSdo(hw, cm) {} bool handleUserSpaceSdo = false; - bool userspaceCalled = false; + bool userSpaceCalled = false; SdoFrame lastUserSpaceRequest{}; bool ProcessUserSpaceSdo(SdoFrame* sdo) override { - userspaceCalled = true; + userSpaceCalled = true; lastUserSpaceRequest = *sdo; if (handleUserSpaceSdo) @@ -412,7 +412,7 @@ static void sdo_unknown_index_goes_to_user_space() canSdo->handleUserSpaceSdo = false; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0xDEADBEEF); - ASSERT(canSdo->userspaceCalled); + ASSERT(canSdo->userSpaceCalled); ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); ASSERT(canSdo->lastUserSpaceRequest.data == 0xDEADBEEF); ASSERT(canStub->m_canId == SdoRepId); @@ -425,7 +425,7 @@ static void sdo_reply_sent_via_send_sdo_reply() canSdo->handleUserSpaceSdo = true; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0x1234); - ASSERT(canSdo->userspaceCalled); + ASSERT(canSdo->userSpaceCalled); ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); ASSERT(canSdo->lastUserSpaceRequest.data == 0x1234); ASSERT(canStub->m_canId == SdoRepId); From 664a3bd5be0e8e623532ac77bdf160d3f3a30517 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:21:21 +0000 Subject: [PATCH 06/12] Polish userspace SDO test helper style and naming Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/784aee6a-4992-4685-a95c-a4c8f365271f Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- test/test_cansdo.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/test_cansdo.cpp b/test/test_cansdo.cpp index 7c1863e..04676eb 100644 --- a/test/test_cansdo.cpp +++ b/test/test_cansdo.cpp @@ -44,18 +44,18 @@ class CanSdoTest : public UnitTest class UserSpaceCanSdo : public CanSdo { public: - explicit UserSpaceCanSdo(CanHardware* hw, CanMap* cm = 0) : CanSdo(hw, cm) {} + explicit UserSpaceCanSdo(CanHardware* hw, CanMap* cm = nullptr) : CanSdo(hw, cm) {} - bool handleUserSpaceSdo = false; - bool userSpaceCalled = false; + bool shouldHandleUserSpaceSdo = false; + bool wasUserSpaceCalled = false; SdoFrame lastUserSpaceRequest{}; bool ProcessUserSpaceSdo(SdoFrame* sdo) override { - userSpaceCalled = true; + wasUserSpaceCalled = true; lastUserSpaceRequest = *sdo; - if (handleUserSpaceSdo) + if (shouldHandleUserSpaceSdo) { sdo->cmd = SDO_WRITE_REPLY; sdo->data = 0; @@ -409,10 +409,10 @@ static void sdo_write_error_time_aborts() static void sdo_unknown_index_goes_to_user_space() { // Index 0x4000 is not handled internally and is offered to user-space first. - canSdo->handleUserSpaceSdo = false; + canSdo->shouldHandleUserSpaceSdo = false; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0xDEADBEEF); - ASSERT(canSdo->userSpaceCalled); + ASSERT(canSdo->wasUserSpaceCalled); ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); ASSERT(canSdo->lastUserSpaceRequest.data == 0xDEADBEEF); ASSERT(canStub->m_canId == SdoRepId); @@ -422,10 +422,10 @@ static void sdo_unknown_index_goes_to_user_space() static void sdo_reply_sent_via_send_sdo_reply() { - canSdo->handleUserSpaceSdo = true; + canSdo->shouldHandleUserSpaceSdo = true; SendSdoRequest(SDO_WRITE, 0x4000, 0, 0x1234); - ASSERT(canSdo->userSpaceCalled); + ASSERT(canSdo->wasUserSpaceCalled); ASSERT(canSdo->lastUserSpaceRequest.index == 0x4000); ASSERT(canSdo->lastUserSpaceRequest.data == 0x1234); ASSERT(canStub->m_canId == SdoRepId); From 41c9c11da24e8a7701ae2c560ea474faffd04c17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:37:39 +0000 Subject: [PATCH 07/12] Fix duplicate putchar declaration signature mismatch Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/cc05e72a-6462-496d-92e5-ba9eafe18099 Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- src/printf.cpp | 2 +- src/terminal.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/printf.cpp b/src/printf.cpp index 9cf2c08..fe4ce57 100644 --- a/src/printf.cpp +++ b/src/printf.cpp @@ -35,7 +35,7 @@ #define PAD_RIGHT 1 #define PAD_ZERO 2 -extern "C" void putchar(char c); +extern "C" int putchar(int c); class ExternPutChar: public IPutChar { diff --git a/src/terminal.cpp b/src/terminal.cpp index 0a2d771..f78076b 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -359,7 +359,8 @@ void Terminal::SendCurrentBuffer(uint32_t len) } //Backward compatibility for printf -extern "C" void putchar(int c) +extern "C" int putchar(int c) { Terminal::defaultTerminal->PutChar(c); + return c; } From 61a9fe6e97354da5457927d0d8c457cedaff207f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:38:47 +0000 Subject: [PATCH 08/12] Guard terminal putchar wrapper against missing default terminal Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/cc05e72a-6462-496d-92e5-ba9eafe18099 Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- src/terminal.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/terminal.cpp b/src/terminal.cpp index f78076b..4778bc5 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -361,6 +361,9 @@ void Terminal::SendCurrentBuffer(uint32_t len) //Backward compatibility for printf extern "C" int putchar(int c) { + if (Terminal::defaultTerminal == 0) + return -1; + Terminal::defaultTerminal->PutChar(c); return c; } From 1844b54eed5c4b3fc96bf97d5c575bb73a84dc44 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:42:47 +0000 Subject: [PATCH 09/12] Replace standard putchar dependency with private hook Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/0b99f87a-a289-4e47-8cd9-8a09141f45db Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- src/printf.cpp | 10 +++++----- src/terminal.cpp | 9 +++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/printf.cpp b/src/printf.cpp index fe4ce57..f63697b 100644 --- a/src/printf.cpp +++ b/src/printf.cpp @@ -18,12 +18,12 @@ */ /* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. + libopeninv_putchar is the only external dependency for this file, + if you have a working libopeninv_putchar, leave it commented out. If not, uncomment the define below and replace outbyte(c) by your own function call. -#define putchar(c) outbyte(c) +#define libopeninv_putchar(c) outbyte(c) */ #include @@ -35,14 +35,14 @@ #define PAD_RIGHT 1 #define PAD_ZERO 2 -extern "C" int putchar(int c); +extern "C" void libopeninv_putchar(char c); class ExternPutChar: public IPutChar { public: void PutChar(char c) { - putchar(c); + libopeninv_putchar(c); } }; diff --git a/src/terminal.cpp b/src/terminal.cpp index 4778bc5..17ad5cf 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -359,11 +359,8 @@ void Terminal::SendCurrentBuffer(uint32_t len) } //Backward compatibility for printf -extern "C" int putchar(int c) +extern "C" void libopeninv_putchar(char c) { - if (Terminal::defaultTerminal == 0) - return -1; - - Terminal::defaultTerminal->PutChar(c); - return c; + if (Terminal::defaultTerminal != 0) + Terminal::defaultTerminal->PutChar(c); } From 792332e7378040d37009562fd745fe5811fe25b5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:43:49 +0000 Subject: [PATCH 10/12] Use nullptr in terminal printf hook Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/0b99f87a-a289-4e47-8cd9-8a09141f45db Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- src/terminal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/terminal.cpp b/src/terminal.cpp index 17ad5cf..0ec4475 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -361,6 +361,6 @@ void Terminal::SendCurrentBuffer(uint32_t len) //Backward compatibility for printf extern "C" void libopeninv_putchar(char c) { - if (Terminal::defaultTerminal != 0) + if (Terminal::defaultTerminal != nullptr) Terminal::defaultTerminal->PutChar(c); } From c35776aca043d0a9fbfe4fe857a9b2297fb52999 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 10 May 2026 17:44:38 +0000 Subject: [PATCH 11/12] Widen private printf hook parameter to int Agent-Logs-Url: https://github.com/jsphuebner/libopeninv/sessions/0b99f87a-a289-4e47-8cd9-8a09141f45db Co-authored-by: jsphuebner <3882041+jsphuebner@users.noreply.github.com> --- src/printf.cpp | 2 +- src/terminal.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/printf.cpp b/src/printf.cpp index f63697b..ac4b92a 100644 --- a/src/printf.cpp +++ b/src/printf.cpp @@ -35,7 +35,7 @@ #define PAD_RIGHT 1 #define PAD_ZERO 2 -extern "C" void libopeninv_putchar(char c); +extern "C" void libopeninv_putchar(int c); class ExternPutChar: public IPutChar { diff --git a/src/terminal.cpp b/src/terminal.cpp index 0ec4475..2723e43 100644 --- a/src/terminal.cpp +++ b/src/terminal.cpp @@ -359,7 +359,7 @@ void Terminal::SendCurrentBuffer(uint32_t len) } //Backward compatibility for printf -extern "C" void libopeninv_putchar(char c) +extern "C" void libopeninv_putchar(int c) { if (Terminal::defaultTerminal != nullptr) Terminal::defaultTerminal->PutChar(c); From 8b9501c5d4a2627668058fa865b0a4e7977863bd Mon Sep 17 00:00:00 2001 From: johannes Date: Sun, 10 May 2026 20:02:20 +0200 Subject: [PATCH 12/12] More test fixes --- test/stub_libopencm3.c | 4 ++++ test/test_cansdo.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/test/stub_libopencm3.c b/test/stub_libopencm3.c index 8165bd1..b90a35b 100644 --- a/test/stub_libopencm3.c +++ b/test/stub_libopencm3.c @@ -147,3 +147,7 @@ void dma_enable_channel(uint32_t dma, uint8_t channel) void dma_disable_channel(uint32_t dma, uint8_t channel) { } + +void libopeninv_putchar(int c) +{ +} diff --git a/test/test_cansdo.cpp b/test/test_cansdo.cpp index 04676eb..dff4b06 100644 --- a/test/test_cansdo.cpp +++ b/test/test_cansdo.cpp @@ -30,10 +30,12 @@ class IPutChar { public: virtual void PutChar(char c) = 0; }; #include "my_fp.h" #include "stub_canhardware.h" #include "test.h" +#include "sdocommands.h" #include #include + class CanSdoTest : public UnitTest { public: @@ -69,6 +71,13 @@ class UserSpaceCanSdo : public CanSdo static std::unique_ptr canStub; static std::unique_ptr canMap; static std::unique_ptr canSdo; +CanMap* SdoCommands::canMap; + +void SdoCommands::ProcessStandardCommands(CanSdo::SdoFrame* sdoFrame) +{ + sdoFrame->cmd = SDO_ABORT; + sdoFrame->data = SDO_ERR_INVIDX; +} void CanSdoTest::TestCaseSetup() {