#include #include #include "configs/device_id_mgr.hpp" #include "public_service/public_service.hpp" #include "sdk/chip/chip.hpp" #include "sdk/os/zos.hpp" #include "sysmgr/sys_mgr.hpp" // #include "subboards/subboard20_plate_clamp_case/subboard20_plate_clamp_case.hpp" #include "subboards/subboard20_plate_clamp_case/subboard20_plate_clamp_case_board.h" #include "subboards/subboard30_shake_module/subboard30_shake_module.hpp" #include "subboards/subboard30_shake_module/subboard30_shake_module_board.h" #include "subboards/subboard60_inlet_and_outlet_module/subboard60_inlet_and_outlet_module.hpp" #include "subboards/subboard60_inlet_and_outlet_module/subboard60_inlet_and_outlet_module_board.h" #include "subboards/subboard70_incubation_turntable/subboard70_incubation_turntable.hpp" #include "subboards/subboard70_incubation_turntable/subboard70_incubation_turntable_board.h" #include "subboards/subboard80_cliptip/subboard80_cliptip.hpp" #include "subboards/subboard80_cliptip/subboard80_cliptip_board.h" #include "subboards/subboard90_optical_module/subboard90_optical_module.hpp" #include "subboards/subboard90_optical_module/subboard90_optical_module_board.h" // #define TAG "main" using namespace std; using namespace iflytop; extern void umain(); extern "C" { void StartDefaultTask(void const* argument) { umain(); } } int32_t deviceId = 0; static void board_init() { switch (deviceId) { case 20: // 板夹仓 subboard20_plate_clamp_case_board_init(); break; case 30: // 摇匀模组 subboard30_shake_module_board_init(); break; case 60: // 进出料模组 subboard60_inlet_and_outlet_module_board_init(); break; case 70: // 孵化转盘 subboard70_incubation_turntable_board_init(); break; case 80: subboard80_cliptip_board_init(); break; case 90: subboard90_optical_module_board_init(); break; default: common_hardware_init(); break; } } static void board_post_init() { GService::inst()->initialize(); switch (deviceId) { case 20: Subboard20PlateClampCase::ins()->initialize(); break; case 30: // 摇匀模组 Subboard30ShakeModule::ins()->initialize(); break; case 60: // 进出料模组 Subboard60InjectAndOutletModule::ins()->initialize(); break; case 70: // 孵化转盘 Subboard70IncubationTurntable::ins()->initialize(); break; case 80: Subboard80Cliptip::ins()->initialize(); break; // case 90: // Subboard90OpticalModule::ins()->initialize(); // break; default: break; } } void umain() { deviceId = zdevice_id_mgr_get_device_id(); board_init(); Pin_t debugLight = PC_DEBUG_LIGHT_GPIO; if (deviceId == 20 || deviceId == 70) { debugLight = PC_SUBBOARD_20_70_LIGHT_GPIO; } zos_cfg_t zoscfg = {0}; chip_cfg_t chipcfg = {}; chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER; chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER; chipcfg.huart = &PC_DEBUG_UART; chipcfg.debuglight = debugLight; chip_init(&chipcfg); zos_init(&zoscfg); zdevice_id_mgr_init(); ZEARLY_LOGI("SYS", "chip init ok"); ZEARLY_LOGI("SYS", "= manufacturer : %s", PC_MANUFACTURER); ZEARLY_LOGI("SYS", "= project name : %s", PC_PROJECT_NAME); ZEARLY_LOGI("SYS", "= version : %d", PC_VERSION); ZEARLY_LOGI("SYS", "= freq : %d", HAL_RCC_GetSysClockFreq()); ZEARLY_LOGI("SYS", "= build time : %s", __DATE__ " " __TIME__); ZEARLY_LOGI("SYS", "= device id : %d", deviceId); if (deviceId <= 0) { chip_set_error(); ZEARLY_LOGE("SYS", "device id is not set"); while (true) { zos_delay(1); } } board_post_init(); ZLOGI(TAG, "======================= sysinfo ======================= "); SysMgr::ins()->initedFinished(); SysMgr::ins()->dumpSysInfo(); ZLOGI(TAG, "="); while (true) { GService::inst()->getZCanReceiver()->loop(); zos_delay(1); } }