EMS/app/app_task.c

181 lines
5.3 KiB
C
Raw Permalink Normal View History

2024-10-31 17:52:29 +08:00
/*****************************************************************************
* @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 <errno.h>
#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 0sucessful1fault
*********************************************************************/
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); //
}