MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/driver/chipset/Amc1210ManageableReader.hh

73 lines
2.0 KiB
C++

/*
* Amc1210ManageableReader.hh
*
* Created on: 12 îêò. 2020 ã.
* Author: LeonidTitov
*/
#ifndef UMLIBRARY_DRIVER_CHIPSET_AMC1210MANAGEABLEREADER_HH_
#define UMLIBRARY_DRIVER_CHIPSET_AMC1210MANAGEABLEREADER_HH_
#include "../../peripheral/ISerialPort.hh"
#include "../../driver/IResolver.hh"
#include "../../systemic/IProcess.hh"
#include "AMC1210.hh"
#include "Amc1210SerialPortAdapter.hh"
#include "stdint.h"
#include <cstddef>
namespace driver { namespace detail {
class Amc1210ManageableReader : public driver::IResolver, public systemic::IProcess {
public:
float getSinChannel() const;
float getCosChannel() const;
Amc1210ManageableReader( peripheral::ISerialPort & con,
driver::chipset::AMC1210::Packager::Frame request_data,
std::size_t data_frame_size,
driver::chipset::AMC1210::Packager::Frame request_info,
std::size_t info_frame_size,
unsigned short sin_channel_offset,
unsigned short cos_channel_offset,
uint16_t channel_mask );
void process();
const bool & fault() const;
private:
peripheral::ISerialPort & connection; //!<Ïîñëåäîâàòåëüíûé ïîðò ïîäêëþ÷åíèÿ ê amc1210.
bool read_info = false;
bool read_data = false;
bool wait_data = false; //!<Ïðèçíàê îæèäàíèÿ äàííûõ.
bool modulator_fault = false;
float sin_code = 0.0f;
float cos_code = 0.0f;
const driver::chipset::AMC1210::Packager::Frame request_data;
const std::size_t data_frame_size;
const driver::chipset::AMC1210::Packager::Frame request_info;
const std::size_t info_frame_size;
const unsigned short sin_channel_offset;
const unsigned short cos_channel_offset;
const uint16_t channel_mask;
volatile uint16_t modulator_state;
volatile uint16_t ack_data_state;
};
}}
#endif /* UMLIBRARY_DRIVER_CHIPSET_AMC1210MANAGEABLEREADER_HH_ */