57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
/*
|
|
* BinaryCrcCheck.hh
|
|
*
|
|
* Created on: 21 ìàÿ 2023 ã.
|
|
* 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 {
|
|
|
|
//!Ìîäóëü ïðîâåðêè êîíòðîëüíîé ñóììû áèíàðíûõ äàííûõ.
|
|
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_ */
|