MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/BinaryCrcCheck.hh

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_ */