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

Implement SAE J1850 CRC8 and "Zero" version #812

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
788316c
feat: added 8bit j1850 crc parameters
drewr95 Dec 27, 2023
a0d94fe
feat: add crc8 j1850 header
drewr95 Dec 27, 2023
881e8de
feat: add crc j1850 zero header
drewr95 Dec 27, 2023
824a0ee
feat: add the crc j1850 headers to crc.h
drewr95 Dec 27, 2023
552ff5e
test: j1850 4 constructor
drewr95 Dec 28, 2023
91d3b93
build: crc8 j1850 tests
drewr95 Dec 28, 2023
9b305f8
test: crc8 j1850 4 add values
drewr95 Dec 28, 2023
ae47220
test: crc8 j1850 4 add range
drewr95 Dec 28, 2023
ca01629
test: crc8 j1850 4 add range via iterator
drewr95 Dec 28, 2023
50f75a4
test: crc8 j1850 4 add range endian
drewr95 Dec 29, 2023
ac7f816
test: crc8 j1850 16 constructor
drewr95 Dec 29, 2023
eae468d
test: crc8 j1850 16 add values
drewr95 Dec 29, 2023
759b170
test: crc8 j1850 16 add range
drewr95 Dec 29, 2023
fc71f3a
test: crc8 j1850 16 add range via iterator
drewr95 Dec 29, 2023
cd3a95b
test: crc8 j1850 16 add range endian
drewr95 Dec 29, 2023
d07ca74
test: crc8 j1850 156 constructor
drewr95 Dec 29, 2023
d29e939
test: crc8 j1850 256 add values
drewr95 Dec 29, 2023
d4d193e
test: crc8 j1850 256 add range
drewr95 Dec 29, 2023
64b21f9
test: crc8 j1850 add range via iterator
drewr95 Dec 29, 2023
0e0d41b
test: crc8 j1850 256 add range endian
drewr95 Dec 29, 2023
9c1adbe
test: initial commit of crc j1850 zero tests
drewr95 Dec 29, 2023
742e5e7
build: crc8 j1850 zero tests
drewr95 Dec 29, 2023
77c922a
test: crc8 j1850 zero 4 add values
drewr95 Dec 29, 2023
e4f34df
test: crc8 j1850 zero 4 add range
drewr95 Dec 29, 2023
9cd9ea7
test: crc8 j1850 zero 4 add range via iterator
drewr95 Dec 29, 2023
66cc422
test: crc8 j1850 zero 4 add range endian
drewr95 Dec 29, 2023
01c7c75
test: crc8 j1850 zero 16 constructor
drewr95 Dec 29, 2023
25ceb47
test: crc8 j1850 zero 16 add values
drewr95 Dec 29, 2023
239a5a6
test: crc8 j1850 zero 16 add range
drewr95 Dec 29, 2023
c1799f5
test: crc8 j1850 zero 16 add range via iterator
drewr95 Dec 29, 2023
a38d6fb
test: crc8 j1850 zero 16 add range endian
drewr95 Dec 29, 2023
baab629
test: crc8 j1850 zero 256 constructor
drewr95 Dec 29, 2023
8679ade
test: crc8 j1850 zero 256 add values
drewr95 Dec 29, 2023
6c95405
test: crc8 j1850 zero 256 add range
drewr95 Dec 29, 2023
6bf94d9
test: crc8 j1850 zero 256 add range via iterator
drewr95 Dec 29, 2023
9175063
test: crc8 j1850 zero 256 add range endian
drewr95 Dec 29, 2023
41f8fb7
fix: header include guards
drewr95 Dec 29, 2023
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
2 changes: 2 additions & 0 deletions include/etl/crc.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ SOFTWARE.
#include "crc8_ebu.h"
#include "crc8_icode.h"
#include "crc8_itu.h"
#include "crc8_j1850_zero.h"
#include "crc8_j1850.h"
#include "crc8_maxim.h"
#include "crc8_rohc.h"
#include "crc8_wcdma.h"
Expand Down
79 changes: 79 additions & 0 deletions include/etl/crc8_j1850.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
///\file

/******************************************************************************
The MIT License(MIT)

Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com

Copyright(c) 2021 John Wellbelove

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/

#ifndef ETL_CRC8_J1850_INCLUDED
#define ETL_CRC8_J1850_INCLUDED

#include "platform.h"
#include "private/crc_implementation.h"

///\defgroup SAE J1850 8 bit CRC calculation
///\ingroup crc

namespace etl
{
#if ETL_USING_CPP11 && !defined(ETL_CRC_FORCE_CPP03_IMPLEMENTATION)
template <size_t Table_Size>
using crc8_j1850_t = etl::crc_type<etl::private_crc::crc8_j1850_parameters, Table_Size>;
#else
template <size_t Table_Size>
class crc8_j1850_t : public etl::crc_type<etl::private_crc::crc8_j1850_parameters, Table_Size>
{
public:

//*************************************************************************
/// Default constructor.
//*************************************************************************
crc8_j1850_t()
{
this->reset();
}

//*************************************************************************
/// Constructor from range.
/// \param begin Start of the range.
/// \param end End of the range.
//*************************************************************************
template<typename TIterator>
crc8_j1850_t(TIterator begin, const TIterator end)
{
this->reset();
this->add(begin, end);
}
};
#endif

typedef etl::crc8_j1850_t<256U> crc8_j1850_t256;
typedef etl::crc8_j1850_t<16U> crc8_j1850_t16;
typedef etl::crc8_j1850_t<4U> crc8_j1850_t4;
typedef crc8_j1850_t256 crc8_j1850;
}

#endif
79 changes: 79 additions & 0 deletions include/etl/crc8_j1850_zero.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
///\file

/******************************************************************************
The MIT License(MIT)

Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com

Copyright(c) 2021 John Wellbelove

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/

#ifndef ETL_CRC8_J1850_ZERO_INCLUDED
#define ETL_CRC8_J1850_ZERO_INCLUDED

#include "platform.h"
#include "private/crc_implementation.h"

///\defgroup SAE J1850 Zero 8 bit CRC calculation
///\ingroup crc

namespace etl
{
#if ETL_USING_CPP11 && !defined(ETL_CRC_FORCE_CPP03_IMPLEMENTATION)
template <size_t Table_Size>
using crc8_j1850_zero_t = etl::crc_type<etl::private_crc::crc8_j1850_zero_parameters, Table_Size>;
#else
template <size_t Table_Size>
class crc8_j1850_zero_t : public etl::crc_type<etl::private_crc::crc8_j1850_zero_parameters, Table_Size>
{
public:

//*************************************************************************
/// Default constructor.
//*************************************************************************
crc8_j1850_zero_t()
{
this->reset();
}

//*************************************************************************
/// Constructor from range.
/// \param begin Start of the range.
/// \param end End of the range.
//*************************************************************************
template<typename TIterator>
crc8_j1850_zero_t(TIterator begin, const TIterator end)
{
this->reset();
this->add(begin, end);
}
};
#endif

typedef etl::crc8_j1850_zero_t<256U> crc8_j1850_zero_t256;
typedef etl::crc8_j1850_zero_t<16U> crc8_j1850_zero_t16;
typedef etl::crc8_j1850_zero_t<4U> crc8_j1850_zero_t4;
typedef crc8_j1850_zero_t256 crc8_j1850_zero;
}

#endif
2 changes: 2 additions & 0 deletions include/etl/private/crc_parameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ namespace etl
typedef crc_parameters<uint8_t, 0x07U, 0x00U, 0x55U, false> crc8_itu_parameters;
typedef crc_parameters<uint8_t, 0x31U, 0x00U, 0x00U, true> crc8_maxim_parameters;
typedef crc_parameters<uint8_t, 0x9BU, 0x00U, 0x00U, true> crc8_wcdma_parameters;
typedef crc_parameters<uint8_t, 0x1DU, 0xFFU, 0xFFU, false> crc8_j1850_parameters;
typedef crc_parameters<uint8_t, 0x1DU, 0x00U, 0x00U, false> crc8_j1850_zero_parameters;

// 16 bit.
typedef crc_parameters<uint16_t, 0x8005U, 0x0000U, 0x0000U, true> crc16_parameters;
Expand Down
2 changes: 2 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ add_executable(etl_tests
test_crc8_ebu.cpp
test_crc8_icode.cpp
test_crc8_itu.cpp
test_crc8_j1850_zero.cpp
test_crc8_j1850.cpp
test_crc8_maxim.cpp
test_crc8_rohc.cpp
test_crc8_wcdma.cpp
Expand Down
Loading
Loading