57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
|
|
/*
|
|||
|
|
* BinaryCrcCheck.hh
|
|||
|
|
*
|
|||
|
|
* Created on: 21 <EFBFBD><EFBFBD><EFBFBD> 2023 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_DRIVER_BINARYCRCCHECK_HH_
|
|||
|
|
#define UMLIBRARY_DRIVER_BINARYCRCCHECK_HH_
|
|||
|
|
|
|||
|
|
#include "../communication/IBinaryDataSubscriber.hh"
|
|||
|
|
#include "../communication/format/BinaryHelpers.hh"
|
|||
|
|
#include "../common/ICrcUnit.hpp"
|
|||
|
|
|
|||
|
|
#include <memory_resource>
|
|||
|
|
#include <vector>
|
|||
|
|
#include <mutex>
|
|||
|
|
|
|||
|
|
namespace driver {
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
class BinaryCrcCheck : public communication::IBinaryDataSubscriber {
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
BinaryCrcCheck( common::crc::ICrcUnit::CrcCalcualtor calculator,
|
|||
|
|
communication::IBinaryDataSubscriber & protected_data,
|
|||
|
|
std::size_t crc_bit_address, std::size_t crc_bit_len,
|
|||
|
|
std::size_t data_bit_address, std::size_t data_bit_len,
|
|||
|
|
std::pmr::memory_resource * memory_resource );
|
|||
|
|
|
|||
|
|
void read( const void * data, std::size_t size );
|
|||
|
|
|
|||
|
|
const bool & error() const;
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
std::vector< char, std::pmr::polymorphic_allocator<char> > buffer_data;
|
|||
|
|
|
|||
|
|
communication::IBinaryDataSubscriber & protected_data;
|
|||
|
|
common::crc::ICrcUnit::CrcCalcualtor calculator;
|
|||
|
|
|
|||
|
|
communication::format::bits::Extractor extract_crc;
|
|||
|
|
communication::format::bits::Extractor extract_data;
|
|||
|
|
|
|||
|
|
char * temp_data_buffer;
|
|||
|
|
std::size_t data_octet_size;
|
|||
|
|
std::size_t data_byte_size;
|
|||
|
|
|
|||
|
|
bool crc_mismatch;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_DRIVER_BINARYCRCCHECK_HH_ */
|