#pragma once #include #include "DSP28x_Project.h" #include "DSP2833x_Device.h" #include "Protocol/CAN.h" #include "Protocol/CAN_data.h" #include "Protocol/DigitalIO.h" #include "Protocol/MemoryMap.h" #include "DSP28335/SCIBase.h" #include "DSP28335/SCIB.h" #include "MODBUSRTU/ModbusRTUCRC.h" #include "MODBUSRTU/ModbusRTUDefines.h" #include "MODBUSRTU/ModbusRTUTransceiver.h" #include "MODBUSRTU/ModbusRTUVariant.h" #include "MODBUSRTU/ModbusRTUTransceiverBase.h" #include "DSP28335/MeasureTimeInterval.h" #include "WEINBUS/HeaderWeinbus.h" struct SoftwareVersion{ Uint16 DSP; Uint16 CPLD; }; class Periphery{ public: Periphery(); void config(); Uint16 getVersionFPGA(); void updateVersionFPGA(); void processDigitalInput(); void processDigitalOutput(); bool isModbusInit() const; void receiveModbusParameters(); void processExternalModbus(); // TODO void processCPUModbus(); // TODO void test_init_hmi_buffers(); void setModbusBuffers(); void addInputRegFloat(uint16_t addr, float& param); void modbusExecute(); private: canSpace::CAN _canb; interface::DigitalIO _digitalIO; Uint16* _zone6_ptr; DSP28335::SCIB _scib; MODBUSRTU::ModbusRTUTransceiverSetup _modbusSetup; MODBUSRTU::ModbusRTUTransceiverConfiguration _modbusConfiguration; MODBUSRTU::ModbusRTUCRC _crc; DSP28335::MeasureTimeInterval _intervalMeasure; MODBUSRTU::ModbusRTUTransceiver _modbusPort; WEINBUS::WeinbusSlave _ASUTP; SoftwareVersion _softVersion; canSpace::CANMessage _message; bool _modbusInitFlag; Uint16 tempIn; Uint16 tempOut; // Registers to testing HMI interface WEINBUS::REGISTER_32 test_hmi_float_reg_400; WEINBUS::REGISTER_32 test_hmi_float_reg_401; WEINBUS::REGISTER_32 test_hmi_float_reg_402; WEINBUS::REGISTER_32 test_hmi_float_reg_403; WEINBUS::REGISTER_32 test_hmi_float_reg_404; //<> };