You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.5 KiB
148 lines
4.5 KiB
#include <stddef.h>
|
|
#include <stdio.h>
|
|
//
|
|
#include "base/appdep.hpp"
|
|
|
|
//
|
|
#include "app/dmapp.hpp"
|
|
#include "app/ext_ch_selector_app.hpp"
|
|
#include "app/exth2o2_sensor.hpp"
|
|
//
|
|
#include "board/public_board.hpp"
|
|
//
|
|
#include "base/protocol_processer_mgr.hpp"
|
|
#include "protocol_processer_impl/public_cmd_processer.hpp"
|
|
//
|
|
|
|
#define TAG "main"
|
|
using namespace iflytop;
|
|
|
|
extern void umain();
|
|
extern "C" {
|
|
void StartDefaultTask(void const* argument) { umain(); }
|
|
}
|
|
/*******************************************************************************
|
|
* MAIN *
|
|
*******************************************************************************/
|
|
|
|
extern "C" {
|
|
// void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
|
|
// }
|
|
}
|
|
|
|
void debug_light_ctrl() {
|
|
static uint32_t lastcall = 0;
|
|
static bool light_status = false;
|
|
|
|
if (!gInitErrorFlag) {
|
|
if (zhas_passedms(lastcall) > 300) {
|
|
PublicBoard::ins()->toggleDebugLight();
|
|
lastcall = zget_ticket();
|
|
}
|
|
} else {
|
|
if (zhas_passedms(lastcall) > 30) {
|
|
PublicBoard::ins()->toggleDebugLight();
|
|
lastcall = zget_ticket();
|
|
}
|
|
}
|
|
}
|
|
|
|
void idtable_init() {
|
|
// 大空间ID初始化
|
|
IdMgr::ins().addIdItem({kLargeSpaceDMLiquidCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_LiquidCtrl});
|
|
IdMgr::ins().addIdItem({kLargeSpaceDMPowerCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_PowerControl});
|
|
|
|
// 小空间ID初始化
|
|
IdMgr::ins().addIdItem({kSmallSpaceDMLiquidCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_LiquidCtrl});
|
|
IdMgr::ins().addIdItem({kSmallSpaceDMPowerCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_PowerControl});
|
|
|
|
// 管道ID初始化
|
|
IdMgr::ins().addIdItem({kPipeDMLiquidCtrlBoard, kpipe_disinfection_machine, kFixBoardId_LiquidCtrl});
|
|
IdMgr::ins().addIdItem({kPipeDMPowerCtrlBoard, kpipe_disinfection_machine, kFixBoardId_PowerControl});
|
|
|
|
// 拉杆箱ID初始化
|
|
IdMgr::ins().addIdItem({kDrawBarDMLiquidCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_LiquidCtrl});
|
|
IdMgr::ins().addIdItem({kDrawBarDMPowerCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_PowerControl});
|
|
|
|
// H2O2传感器ID初始化
|
|
IdMgr::ins().addIdItem({kH2O2SensorBoard, kh2o2_ext_sensor, kFixBoardId_H2O2SensorStart});
|
|
}
|
|
|
|
#define REG_PROCESSER(processer) ProtocolProcesserMgr::ins()->regProcesser(processer);
|
|
|
|
/* IWDG init function */
|
|
void MX_IWDG_Init(void) {
|
|
hiwdg.Instance = IWDG;
|
|
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
|
|
hiwdg.Init.Reload = 501;
|
|
if (HAL_IWDG_Init(&hiwdg) != HAL_OK) {
|
|
Error_Handler();
|
|
}
|
|
}
|
|
|
|
void umain() {
|
|
gBoardFlagSetResetFlag();
|
|
|
|
idtable_init();
|
|
deviceInfo_init();
|
|
config_init();
|
|
AppPeriodTaskMgr::ins()->initialize();
|
|
PublicBoard::ins()->initialize();
|
|
|
|
ZLOGI(TAG, "======================= boardinfo ==================== ");
|
|
ZLOGI(TAG, "project : %s ", PROJECT);
|
|
ZLOGI(TAG, "version : %d ", SOFTWARE_VERSION);
|
|
ZLOGI(TAG, "pversion : %d", deviceInfo_getProtocolVersion());
|
|
ZLOGI(TAG, "sn : %s", sn_get_str());
|
|
ZLOGI(TAG, "boardTypeId : %s(%d)", BoardTypeId2Str(PublicBoard::ins()->getBoardTypeId()), PublicBoard::ins()->getBoardTypeId());
|
|
ZLOGI(TAG, "boardId : %d", PublicBoard::ins()->getBoardId());
|
|
ZLOGI(TAG, "=");
|
|
|
|
zcanbus_init(PublicBoard::ins()->getBoardId());
|
|
|
|
ProtocolProcesserMgr::ins()->initialize();
|
|
PublicCmdProcesser::ins()->initialize();
|
|
|
|
switch (PublicBoard::ins()->getBoardTypeId()) {
|
|
case kDrawBarDMLiquidCtrlBoard:
|
|
case kDrawBarDMPowerCtrlBoard:
|
|
// not suppport now
|
|
gInitErrorFlag = true;
|
|
break;
|
|
case kLargeSpaceDMLiquidCtrlBoard:
|
|
case kLargeSpaceDMPowerCtrlBoard:
|
|
case kSmallSpaceDMLiquidCtrlBoard:
|
|
case kSmallSpaceDMPowerCtrlBoard:
|
|
case kPipeDMLiquidCtrlBoard:
|
|
case kPipeDMPowerCtrlBoard:
|
|
|
|
DisinfectionApp::ins()->initialize();
|
|
break;
|
|
case kDrawBarDMExtChSelector:
|
|
ExtChSelector::ins()->initialize();
|
|
break;
|
|
case kH2O2SensorBoard:
|
|
ExtH2O2Sensor::ins()->initialize();
|
|
break;
|
|
default:
|
|
gInitErrorFlag = true;
|
|
break;
|
|
}
|
|
|
|
ZLOGI(TAG, "======================= init processer ================ ");
|
|
ProtocolProcesserMgr::ins()->startSchedule(PublicBoard::ins()->getBoardId());
|
|
ZLOGI(TAG, "=");
|
|
|
|
AppPeriodTaskMgr::ins()->startScheduler();
|
|
|
|
ZLOGI(TAG, "======================= sysinfo ======================= ");
|
|
SysMgr::ins()->initedFinished();
|
|
SysMgr::ins()->dumpSysInfo();
|
|
ZLOGI(TAG, "=");
|
|
MX_IWDG_Init();
|
|
while (true) {
|
|
osDelay(30);
|
|
debug_light_ctrl();
|
|
HAL_IWDG_Refresh(&hiwdg);
|
|
}
|
|
}
|