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.
 
 
 

86 lines
2.3 KiB

#include <stddef.h>
#include <stdio.h>
//
#include "base_service/base_service.h"
#include "base_service/fpga_if.h"
#include "service/device_info.hpp"
#include "service/extern_if_service.h"
#include "service/network_service.h"
#include "service/reg_manager.h"
#include "service/report_generator_service.h"
//
#define TAG "main"
using namespace std;
extern void umain();
extern "C" {
extern void MX_LWIP_Init(void);
void StartDefaultTask(void const* argument) { umain(); }
}
/*******************************************************************************
* MAIN *
*******************************************************************************/
/**
* @brief
* | extern_if_service |
* ========================================
* | reg_manager |
* config_service ========================================
* | report_generator | device_info |
* =================== ==============
* | fpage_if |
* ========================================
*
*/
xs_gpio_t m_debug_led;
extern "C" {
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { report_generator_service_irq_trigger(GPIO_Pin); }
}
void umain() {
XS_LOGI(TAG, "%s:%d", PC_PROJECT_NAME, PC_VERSION);
/**
* @brief 调试指示灯初始化
*/
xs_gpio_init_as_output(&m_debug_led, PC_DEBUG_LIGHT_GPIO, kxs_gpio_nopull, false, false);
/**
* @brief 配置初始化
*/
config_init();
/**
* @brief 初始化网络服务
*/
network_service_init();
/**
* @brief fpga_interface init
*/
fpga_if_init();
/**
* @brief report_generator init
*/
report_generator_service_init(fpga_if_get_instance()->timecode_irq_pin, fpga_if_get_instance()->camera_sync_code_irq_pin);
/**
* @brief device_info init
*/
device_info_init();
/**
* @brief reg_manager init
*/
reg_manager_init();
/**
* @brief extern_if_service init
*
* 解析并处理外部指令
*/
extern_if_service_init();
while (true) {
xs_gpio_write(&m_debug_led, true);
xs_delay_ms(100);
xs_gpio_write(&m_debug_led, false);
xs_delay_ms(100);
}
}