MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/application/drivers/ModbusRtu.hh

68 lines
1.9 KiB
C++

/*
* ModBusRtuSetup.hh
*
* Created on: 30 èþí. 2020 ã.
* Author: s.maksimenko
*/
#ifndef UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTU_HH_
#define UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTUSETUP_HH_
#include <memory_resource>
#include "../ISetupStep.hh"
#include "../../peripheral/IUartPort.hh"
#include "../../systemic/ISignal.hh"
#include "../../systemic/IStatus.hh"
namespace application {
namespace drivers {
//!Äðàéâåð ïðîòîêîëà îáìåíà Modbus RTU.
class ModbusRtu : public ISetupStep {
typedef systemic::ISignal ISignal;
typedef systemic::IStatus IStatus;
peripheral::IUartPort* mpPort = nullptr;
std::pmr::memory_resource * mpMemRes = nullptr;
ISignal * mpSigAddrModBus = nullptr;
IStatus * mpStsAddrValid = nullptr;
public:
bool input ( Environment & env );
void build ( Environment & env );
struct Links {
/* Input links */
Environment::Id uart; //!<Ïîðò Modbus.
Environment::SignalId address; //!<Àäðåñ íà øèíå Modbus RTU.
Environment::StatusId enable; //!<Ðàçðåøåíèå ïðèñâîåíèÿ àäðåñà.
Environment::Id memory; //!<Cèñòåìíûé èäåíòèôèêàòîð àëëîêàòîðà ïàìÿòè
/* Output links */
Environment::Id modbus_rtu; //!<Ïðîòîêîë Modbus RTU.
Environment::Id crc_error; //!<Îøèáêà êîíòðîëüíîé ñóììû.
Environment::Id incorrect_request; //!<Íåêîððåêòíûé çàïðîñ.
Environment::Id packet_counter; //!<Ñ÷åò÷èê ïàêåòîâ.
};
struct Setting {
uint16_t address; //!<Àäðåñ íà øèíå MODBUS (åñëè == 0 òî àäðåñ îïðåäåëÿåòñÿ links.sigAddr)
};
const Links & links;
const Setting & cfg;
const configuration::ProcessConfig & params;
ModbusRtu( const Links &, const Setting &, const configuration::ProcessConfig & );
};
}// namespace drivers
}// namespace application
#endif /* UMLIBRARY_APPLICATION_DRIVERS_MODBUSRTU_HH_ */