全司美特-单片机程序
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.
 
 
 

120 lines
3.7 KiB

#include <stddef.h>
#include <stdio.h>
#include "board/board.hpp"
//
#include "base/config_service.hpp"
#include "base/device_info.hpp"
#include "board/public_board.hpp"
//
#include "gflag/gflag.h"
#include "idtable/IdMgr.hpp"
//
#include "protocol_processer_impl/processer.hpp"
#include "protocol_processer_mgr/protocol_processer_mgr.hpp"
//
#include "zsdk/zcanreceiver/zcanreceiver.hpp"
#include "zsdk/zsdk.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({klarge_space_disinfection_machine, kBoardType_LiquidCtrl, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({klarge_space_disinfection_machine, kBoardType_PowerControl, kFixBoardId_PowerControl});
// 小空间ID初始化
IdMgr::ins().addIdItem({ksmall_space_disinfection_machine, kBoardType_LiquidCtrl, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({ksmall_space_disinfection_machine, kBoardType_PowerControl, kFixBoardId_PowerControl});
// 管道ID初始化
IdMgr::ins().addIdItem({kpipe_disinfection_machine, kBoardType_LiquidCtrl, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kpipe_disinfection_machine, kBoardType_PowerControl, kFixBoardId_PowerControl});
// 拉杆箱ID初始化
IdMgr::ins().addIdItem({kdraw_bar_disinfection_box, kBoardType_LiquidCtrl, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kdraw_bar_disinfection_box, kBoardType_PowerControlMiniBoard, kFixBoardId_PowerControl});
// H2O2传感器ID初始化
IdMgr::ins().addIdItem({kh2o2_ext_sensor, kBoardType_H2O2Sensor, kFixBoardId_H2O2SensorStart});
}
void umain() {
gBoardFlagSetResetFlag();
idtable_init();
deviceInfo_init();
config_init();
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, "boardId : %d", PublicBoard::ins()->getBoardId());
ZLOGI(TAG, "=");
switch (PublicBoard::ins()->getBoardTypeId()) {
case kBoardType_LiquidCtrl:
LiquidCtrlBoard::ins()->initialize();
break;
case kBoardType_PowerControl:
break;
case kBoardType_PowerControlMiniBoard:
break;
case kBoardType_ExtBallValveCtrl:
break;
case kBoardType_H2O2Sensor:
break;
default:
gInitErrorFlag = true;
break;
}
ZLOGI(TAG, "======================= init processer ================ ");
ProtocolProcesserMgr::ins()->initialize();
ProtocolProcesserMgr::ins()->regProcesser(PublicCmdProcesser::ins());
ProtocolProcesserMgr::ins()->startSchedule();
ZLOGI(TAG, "=");
ZLOGI(TAG, "======================= sysinfo ======================= ");
SysMgr::ins()->initedFinished();
SysMgr::ins()->dumpSysInfo();
ZLOGI(TAG, "=");
while (true) {
osDelay(1);
debug_light_ctrl();
}
}