|
|
@ -11,15 +11,25 @@ |
|
|
|
#include "libiflytop_micro\stm32\basic\zsignal.hpp"
|
|
|
|
#include "libiflytop_micro\stm32\component\iflytop_can_slave_v1\iflytop_can_slave.hpp"
|
|
|
|
#include "libiflytop_micro\stm32\component\tmp117\tmp117.hpp"
|
|
|
|
#include "lncubator_rotating_control_service.hpp"
|
|
|
|
#include "lncubator_temperature_control_service.hpp"
|
|
|
|
#define TAG "main"
|
|
|
|
|
|
|
|
#define ACTIVE_REG(reg, mask, initval) IflytopCanProtocolStackProcesser::activeReg(&IflytopCanStackConfig, reg, mask, initval)
|
|
|
|
#define UPDATE_REG(reg, value, periodms) \
|
|
|
|
{ \ |
|
|
|
static uint32_t lastReportTicket = 0; \ |
|
|
|
if (m_hardware.hasPassedMS(lastReportTicket) > periodms) { \ |
|
|
|
lastReportTicket = m_hardware.getTicket(); \ |
|
|
|
m_protocolStack.writeRegValue(reg, value, false); \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
|
|
|
|
using namespace iflytop; |
|
|
|
using namespace std; |
|
|
|
class Main : public HardwareListener, //
|
|
|
|
public IflytopCanProtocolStackProcesserListener { |
|
|
|
public IflytopCanProtocolStackProcesserListener, |
|
|
|
public LncubatorRotatingControlServiceListener { |
|
|
|
public: |
|
|
|
Hardware m_hardware; |
|
|
|
|
|
|
@ -28,6 +38,7 @@ class Main : public HardwareListener, // |
|
|
|
//
|
|
|
|
IflytopCanProtocolStackProcesser m_protocolStack; |
|
|
|
LncubatorTemperatureControlService m_tempCtrl; |
|
|
|
LncubatorRotatingControlService m_rotatingCtrl; |
|
|
|
IflytopMicroOS *os; |
|
|
|
|
|
|
|
Main() {} |
|
|
@ -36,6 +47,11 @@ class Main : public HardwareListener, // |
|
|
|
void initializeIflytopCanProtocolStackProcesser(); |
|
|
|
void updateRegList(); |
|
|
|
|
|
|
|
virtual void LncubatorRotatingControlService_onException(exception_id_t exception); |
|
|
|
virtual void LncubatorRotatingControlService_onMoveToHomeJobFinished(); |
|
|
|
virtual void LncubatorRotatingControlService_onMoveSubPositionJobFinished(); |
|
|
|
virtual void LncubatorRotatingControlService_onMoveByJobFinished(); |
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* override HardwareListener * |
|
|
|
*******************************************************************************/ |
|
|
@ -51,7 +67,6 @@ class Main : public HardwareListener, // |
|
|
|
|
|
|
|
virtual icps::error_t IflytopCanProtocolStack_onHostRegisterReadEvent( //
|
|
|
|
icps::Reg_t *reg, int32_t &value); |
|
|
|
|
|
|
|
virtual void IflytopCanProtocolStack_onRegisterValueAutoReportEvent(icps::Reg_t *reg, int32_t &value); |
|
|
|
}; |
|
|
|
|
|
|
@ -170,14 +185,10 @@ void Main::initializeIflytopCanProtocolStackProcesser() { |
|
|
|
ACTIVE_REG(REG_TEMPERATURE_CTRL_SENSOR4_TEMPERATURE /* */, icps::kr, 0); |
|
|
|
} |
|
|
|
|
|
|
|
#define UPDATE_REG(reg, value, periodms) \
|
|
|
|
{ \ |
|
|
|
static uint32_t lastReportTicket = 0; \ |
|
|
|
if (m_hardware.hasPassedMS(lastReportTicket) > periodms) { \ |
|
|
|
lastReportTicket = m_hardware.getTicket(); \ |
|
|
|
m_protocolStack.writeRegValue(reg, value, false); \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
void Main::LncubatorRotatingControlService_onException(exception_id_t exception) {} |
|
|
|
void Main::LncubatorRotatingControlService_onMoveToHomeJobFinished() {} |
|
|
|
void Main::LncubatorRotatingControlService_onMoveSubPositionJobFinished() {} |
|
|
|
void Main::LncubatorRotatingControlService_onMoveByJobFinished() {} |
|
|
|
|
|
|
|
void Main::updateRegList() { //
|
|
|
|
UPDATE_REG(REG_TEMPERATURE_CTRL_MAIN_FAN_SPEED, m_hardware.fanReadState4(), 1000); |
|
|
@ -198,8 +209,10 @@ void Main::main(int argc, char const *argv[]) { |
|
|
|
m_hardware.registerListener(this); |
|
|
|
m_hardware.hardwareinit(); |
|
|
|
|
|
|
|
// 初始化协议栈
|
|
|
|
initializeIflytopCanProtocolStackProcesser(); |
|
|
|
|
|
|
|
// 初始化温度控制器
|
|
|
|
m_tempCtrl.initialize(&m_hardware); |
|
|
|
m_tempCtrl.setPidKp(m_protocolStack.readRegValue(REG_TEMPERATURE_CTRL_KP)); |
|
|
|
m_tempCtrl.setPidKi(m_protocolStack.readRegValue(REG_TEMPERATURE_CTRL_KI)); |
|
|
@ -207,6 +220,10 @@ void Main::main(int argc, char const *argv[]) { |
|
|
|
m_tempCtrl.setPidErrorLimit(m_protocolStack.readRegValue(REG_TEMPERATURE_CTRL_ERROR_LIMIT)); |
|
|
|
m_tempCtrl.setTargetTemperature(m_protocolStack.readRegValue(REG_TEMPERATURE_CTRL_TARGET_TEMPERATURE)); |
|
|
|
|
|
|
|
// 初始化转盘控制器
|
|
|
|
m_rotatingCtrl.initialize(&m_hardware); |
|
|
|
m_rotatingCtrl.registerListener(this); |
|
|
|
|
|
|
|
while (true) { |
|
|
|
m_hardware.periodicJob(); |
|
|
|
updateRegList(); |
|
|
|