/***************************************************************************** * @copyright 1997-2050, H3C. POWER SUPPLY CO., LTD. * @file app_task_regedit.c * @brief xx功能 * @author H3C_GQ * @date 2024-09-05 * @remark *****************************************************************************/ #define _XOPEN_SOURCE 700 #include #include "kit_db.h" #include "drv_4g.h" #include "drv_wifi.h" #include "app_task_regedit.h" /********************************************************************* * @brief 初始化系统时间将rtc时钟同步到linux系统 * @param[in] void * @return 0-成功 1-失败 *********************************************************************/ int initEmsConfig(void) { UT_array *emsDevConfigs = {0}; int ret = 0; if (0 != kit_get_config_db_data(&emsDevConfigs)) { return 1; } utarray_foreach(emsDevConfigs, ems_dev_config_t *, p_emsDevConfig) { switch (p_emsDevConfig->type) { case kEms_Config_Uart: // 系统串口不需要初始化 break; case kEms_Config_Net: // 初始化系统的IP、MAC地址、网关等配置 ret = netInitHandble(p_emsDevConfig); break; case kEms_Config_DI: break; case kEms_Config_DO: break; case kEms_Config_Rtc: // 初始化系统时间将rtc时钟同步到linux系统 ret = systimeInitHandle(p_emsDevConfig); break; case kEms_Config_Wifi: ret = sysWifiInitHandle(p_emsDevConfig); break; case kEms_Config_4G: ret = sys4GInitHandle(p_emsDevConfig); break; default: printf("Unknown EMS device config type: %d\n", p_emsDevConfig->type); ret = 1; break; } if (ret != 0) { // 初始化失败,释放资源并返回错误 utarray_free(emsDevConfigs); return 1; } } // 释放数组内存 utarray_free(emsDevConfigs); // gpio口初始化 ret = drvGpioOpen(); if (ret != 0) { return 1; } return ret; } /********************************************************************* * @brief 整个系统初始化 * @param[in] arg:相关配置 * @return 0-成功 1-失败 *********************************************************************/ uint8_t initSystem(void *arg) { int ret = 0; ret = initSqliteDb(); if (ret != 0) { KITPTF(LOG_APP_EN, ERROR_EN, "数据库初始化失败!"); KITLOG(LOG_APP_EN, ERROR_EN, "数据库初始化失败!"); return ret; } ret = initEmsConfig(); if (ret != 0) { KITPTF(LOG_APP_EN, ERROR_EN, "EMS盒子初始化失败!"); KITLOG(LOG_APP_EN, ERROR_EN, "EMS盒子初始化失败!"); //return ret; } ret = initDevInfo(); if (ret != 0) { KITPTF(LOG_APP_EN, ERROR_EN, "读取设备配置、电位配置信息失败!"); KITLOG(LOG_APP_EN, ERROR_EN, "读取设备配置、电位配置信息失败!"); return ret; } ret = initNorthInfo(); if (ret != 0) { KITPTF(LOG_APP_EN, ERROR_EN, "读取北向配置失败!"); KITLOG(LOG_APP_EN, ERROR_EN, "读取北向配置失败!"); return ret; } return ret; } /********************************************************************* * @brief EMS业务初始化 * @param[in] arg:相关配置 * @return 0:sucessful;1:fault *********************************************************************/ uint8_t initEmsStart(void *arg) { if (initRtdb(rtdbType, NULL, kEE_SHM_CREAT) != 0) { KITLOG(LOG_APP_EN, ERROR_EN, "RTDB初始化失败!"); KITPTF(LOG_APP_EN, ERROR_EN, "RTDB初始化失败!"); return E_STATUS_ERROR; } if (initWebSign(kSign_ShMem, kEE_SHM_CREAT) != 0) { KITLOG(LOG_APP_EN, ERROR_EN, "websign初始化失败!"); KITPTF(LOG_APP_EN, ERROR_EN, "websign初始化失败!"); return E_STATUS_ERROR; } if (logic_initTask() != 0) { KITLOG(LOG_LOGIC_EN, ERROR_EN, "任务初始化失败!"); KITPTF(LOG_LOGIC_EN, ERROR_EN, "任务初始化失败!"); //return E_STATUS_ERROR; } return E_STATUS_OK; } /********************************************************************* * @brief 创建任务的总入口 * @param[in] arg:相关配置 * @return void *********************************************************************/ void regeditThreadEntry(void *map_t) // 创建线程入口 { // 创建各种采集任务 creatModbusRtuMasterTask(void* item); creatMobusTcpMasterTask(void* item); // 创建各种转发任务 creatModbusRtuSlaveTask(item) creatModbusTcpSlaveTask(item) creatMqttTask(item) // 创建定时落库任务 creatCycleTimeToDBTask(item); //创建DIDO策略任务 creatDIDICtrlTask(10); // //创建业务控制算法 creatAlgorithmTask(10); // }