Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Candidate 2 for Version 0.3 #20

Merged
merged 4 commits into from
Jul 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
mac-can marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@ Type `can_test --help` to display all program options.

#### Debian "bookworm" (12.5)

- Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux
- Debian 6.1.99-1 (2024-07-15) x86_64 GNU/Linux
- gcc (Debian 12.2.0-14) 12.2.0
- PCAN Driver and Library for Linux v8.17
- PCAN Driver and Library for Linux v8.18

### Required PCBUSB Library

Expand Down
19 changes: 18 additions & 1 deletion Sources/Wrapper/can_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -1390,9 +1390,26 @@ static TPCANStatus pcan_reset_filter(int handle)

assert(IS_HANDLE_VALID(handle)); // just to make sure

#if defined(__linux__)
UINT64 value = 0x0ull; // PCAN filter value

// note: it seems that the hardware filter is not resetted by 'PCAN_MESSAGE_FILTER' := 'PCAN_FILTER_OPEN'
switch (can[handle].filter.mode) {
case FILTER_STD: // 11-bit identifier
value = (FILTER_RESET_VALUE ^ FILTER_STD_XOR_MASK); // SJA100 has inverted masks bits!
(void)CAN_SetValue(can[handle].board, PCAN_ACCEPTANCE_FILTER_11BIT, (void*)&value, sizeof(value));
break;
case FILTER_XTD: // 29-bit identifier
value = (FILTER_RESET_VALUE ^ FILTER_XTD_XOR_MASK); // SJA100 has inverted masks bits!
(void)CAN_SetValue(can[handle].board, PCAN_ACCEPTANCE_FILTER_29BIT, (void*)&value, sizeof(value));
break;
default: // no filtering
break;
}
#endif
// reset the filter value to device
if ((sts = CAN_SetValue(can[handle].board, (BYTE)PCAN_MESSAGE_FILTER,
(void*)&filter, (DWORD)sizeof(uint8_t))) == PCAN_ERROR_OK) {
(void*)&filter, (DWORD)sizeof(uint8_t))) == PCAN_ERROR_OK) {
can[handle].filter.mode = FILTER_OFF;
}
return sts;
Expand Down
3 changes: 3 additions & 0 deletions Tests/CANAPI/Driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ typedef CPeakCAN CCanDriver;
#ifdef __linux__
#define TC04_15_ISSUE_PCBUSB_WARNING_LEVEL WORKAROUND_ENABLED // 2023-09-13: no warning level from device (Linux)
#define TC09_9_ISSUE_PCBUSB_WARNING_LEVEL WORKAROUND_ENABLED // 2023-09-13: no warning level from device (Linux)
#define TC23_X_ISSUE_PCBUSB_FILTER_CODE WORKAROUND_ENABLED // 2024-07-31: code is bit-wise ANDed with mask (Linux)
#define TC25_X_ISSUE_PCBUSB_FILTER_CODE WORKAROUND_ENABLED // 2024-07-31: code is bit-wise ANDed with mask (Linux)
#define TC27_X_ISSUE_PCBUSB_FILTER_CODE WORKAROUND_ENABLED // 2024-07-31: code is bit-wise ANDed with mask (Linux)
#endif
//#define TC0x_y_ISSUE_ WORKAROUND_ENABLED
#endif
Expand Down
Binary file modified Tests/CANAPI/GoogleTest/Linux/lib/libgtest.a
Binary file not shown.
Binary file modified Tests/CANAPI/GoogleTest/Linux/lib/libgtest_main.a
Binary file not shown.
22 changes: 21 additions & 1 deletion Tests/CANAPI/Testcases/TC23_SetFilter11Bit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,12 @@ TEST_F(SetFilter11Bit, GTEST_TESTCASE(SunnydayScenario, GTEST_SUNNYDAY)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC23_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -336,7 +341,12 @@ TEST_F(SetFilter11Bit, GTEST_TESTCASE(IfControllerNotStarted, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC23_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -497,7 +507,12 @@ TEST_F(SetFilter11Bit, GTEST_TESTCASE(IfControllerStopped, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC23_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -637,7 +652,12 @@ TEST_F(SetFilter11Bit, GTEST_TESTCASE(WithValidValues, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC23_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet[i], codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet[i] & maskSet[j], codeGet);
#endif
EXPECT_EQ(maskSet[j], maskGet);
// @-- start DUT1 with configured bit-rate settings
retVal = dut1.StartController();
Expand Down Expand Up @@ -769,4 +789,4 @@ TEST_F(SetFilter11Bit, GTEST_TESTCASE(WithInvalidValues, GTEST_ENABLED)) {

#endif // FEATURE_FILTERING != FEATURE_UNSUPPORTED

// $Id: TC23_SetFilter11Bit.cc 1272 2024-04-16 19:55:27Z makemake $ Copyright (c) UV Software, Berlin.
// $Id: TC23_SetFilter11Bit.cc 1373 2024-07-31 18:55:39Z gonggong $ Copyright (c) UV Software, Berlin.
22 changes: 21 additions & 1 deletion Tests/CANAPI/Testcases/TC25_SetFilter29Bit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,12 @@ TEST_F(SetFilter29Bit, GTEST_TESTCASE(SunnydayScenario, GTEST_SUNNYDAY)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC25_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -337,7 +342,12 @@ TEST_F(SetFilter29Bit, GTEST_TESTCASE(IfControllerNotStarted, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC25_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -498,7 +508,12 @@ TEST_F(SetFilter29Bit, GTEST_TESTCASE(IfControllerStopped, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC25_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -638,7 +653,12 @@ TEST_F(SetFilter29Bit, GTEST_TESTCASE(WithValidValues, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC25_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet[i], codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet[i] & maskSet[j], codeGet);
#endif
EXPECT_EQ(maskSet[j], maskGet);
// @-- start DUT1 with configured bit-rate settings
retVal = dut1.StartController();
Expand Down Expand Up @@ -838,4 +858,4 @@ TEST_F(SetFilter29Bit, GTEST_TESTCASE(IfXtdFramesSuppressed, GTEST_ENABLED)) {

#endif // FEATURE_FILTERING != FEATURE_UNSUPPORTED

// $Id: TC25_SetFilter29Bit.cc 1272 2024-04-16 19:55:27Z makemake $ Copyright (c) UV Software, Berlin.
// $Id: TC25_SetFilter29Bit.cc 1373 2024-07-31 18:55:39Z gonggong $ Copyright (c) UV Software, Berlin.
34 changes: 32 additions & 2 deletions Tests/CANAPI/Testcases/TC27_ResetFilter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,12 @@ TEST_F(ResetFilter, GTEST_TESTCASE(SunnydayScenario, GTEST_SUNNYDAY)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand All @@ -139,8 +144,13 @@ TEST_F(ResetFilter, GTEST_TESTCASE(SunnydayScenario, GTEST_SUNNYDAY)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
EXPECT_EQ(maskGet, maskGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
retVal = dut1.ResetFilters();
Expand Down Expand Up @@ -270,7 +280,12 @@ TEST_F(ResetFilter, GTEST_TESTCASE(IfControllerNotStarted, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand All @@ -297,7 +312,12 @@ TEST_F(ResetFilter, GTEST_TESTCASE(IfControllerNotStarted, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -478,7 +498,12 @@ TEST_F(ResetFilter, GTEST_TESTCASE(IfControllerStopped, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter11Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand All @@ -505,7 +530,12 @@ TEST_F(ResetFilter, GTEST_TESTCASE(IfControllerStopped, GTEST_ENABLED)) {
codeGet = 0xFFFFFFFFU; maskGet = 0xFFFFFFFFU;
retVal = dut1.GetFilter29Bit(codeGet, maskGet);
EXPECT_EQ(CCanApi::NoError, retVal);
#if (TC27_X_ISSUE_PCBUSB_FILTER_CODE != WORKAROUND_ENABLED)
EXPECT_EQ(codeSet, codeGet);
#else
// @ issue(PCBUSB): code is bit-wise ANDed with mask (Linux)
EXPECT_EQ(codeSet & maskSet, codeGet);
#endif
EXPECT_EQ(maskGet, maskGet);
// @- reset acceptance filter
// @ note: SJA100 has only one filter for 11-bit and 29-bit identifier!
Expand Down Expand Up @@ -598,4 +628,4 @@ TEST_F(ResetFilter, GTEST_TESTCASE(IfChannelTornDown, GTEST_ENABLED)) {

#endif // FEATURE_FILTERING != FEATURE_UNSUPPORTED

// $Id: TC27_ResetFilter.cc 1272 2024-04-16 19:55:27Z makemake $ Copyright (c) UV Software, Berlin.
// $Id: TC27_ResetFilter.cc 1373 2024-07-31 18:55:39Z gonggong $ Copyright (c) UV Software, Berlin.
6 changes: 3 additions & 3 deletions Tests/CANAPI/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
//
#ifndef VERSION_H_INCLUDED
#define VERSION_H_INCLUDED
// SVN revision number (update with each commit: XXVI)
#define REVISION_NO "$Rev: 1370 $"
// SVN revision number (update with each commit: XXVII)
#define REVISION_NO "$Rev: 1373 $"
#endif // VERSION_H_INCLUDED

// $Id: Version.h 1370 2024-07-17 19:00:47Z quaoar $ Copyright (c) UV Software, Berlin //
// $Id: Version.h 1373 2024-07-31 18:55:39Z gonggong $ Copyright (c) UV Software, Berlin //
Loading