123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /*
- * CheckTask.c
- *
- * Created on: 2021年9月2日
- * Author: 7564
- */
- #include "CheckSystemTask.h"
- #include "Config.h"
- #define TASK_CNT_MAIN 5
- #define TASK_CNT_EV_COMM 2
- #define TASK_CNT_PSU_COMM 2
- #define TASK_CNT_SBOX_COMM 3
- bool Taskconutstring(char *src, char *taskname)
- {
- bool result = false;
- if (src == NULL || strlen(src) == 0)
- return result;
- if (strstr(src, taskname) != NULL &&
- strstr(src, "grep") == NULL &&
- strstr(src, "[") == NULL)
- {
- result = true;
- }
- return result;
- }
- int GetProcessCount(char *procName)
- {
- int result = 0;
- FILE *fp;
- char cmd[256];
- char buf[256];
- sprintf(cmd, "ps -ef |grep %s", procName);
- fp = popen(cmd, "r");
- if(fp != NULL)
- {
- while(fgets(buf, sizeof(buf), fp) != NULL)
- {
- if (Taskconutstring(buf, procName))
- result++;
- }
- }
- pclose(fp);
- return result;
- }
- unsigned char CheckSystemTask(unsigned char systemPage)
- {
- unsigned char result = 0;
- unsigned char count_main = GetProcessCount("Module_CSU");
- unsigned char count_evComm = GetProcessCount("Module_EvComm");
- unsigned char count_psuComm = GetProcessCount("Module_PsuComm");
- unsigned char count_sboxComm = GetProcessCount("Module_SmartBox");
- if (count_main == 0)
- count_main = GetProcessCount("main");
- // printf("*************************** \n");
- // printf("count_main = %d \n", count_main);
- // printf("count_eventLog = %d \n", count_eventLog);
- // printf("count_primary = %d \n", count_primary);
- // printf("count_evComm = %d \n", count_evComm);
- // printf("count_lcmCtrl = %d \n", count_lcmCtrl);
- // printf("count_interComm = %d \n", count_interComm);
- // printf("count_psuComm = %d \n", count_psuComm);
- // printf("*************************** \n");
- if (systemPage == _LCM_FIX || systemPage == _LCM_EMC)
- {
- if (count_main < TASK_CNT_MAIN || count_psuComm < TASK_CNT_PSU_COMM || count_sboxComm < TASK_CNT_SBOX_COMM)
- {
- system("killall Module_EventLogging");
- system("killall Module_PrimaryComm");
- system("killall Module_EvComm");
- system("killall Module_LcmControl");
- system("killall Module_InternalComm");
- system("killall Module_PsuComm");
- system("killall OcppBackend");
- system("killall Module_4g");
- system("killall Module_Wifi");
- system("killall Module_DcMeter");
- system("killall Module_SmartBox");
- sleep(3);
- system("/usr/bin/run_evse_restart.sh");
- }
- else
- {
- if(system("pidof -s Module_EventLogging > /dev/null") != 0)
- system("/root/Module_EventLogging &");
- if(system("pidof -s Module_PrimaryComm > /dev/null") != 0)
- system("/root/Module_PrimaryComm &");
- if(system("pidof -s Module_LcmControl > /dev/null") != 0)
- system("/root/Module_LcmControl &");
- if(system("pidof -s Module_InternalComm > /dev/null") != 0)
- system("/root/Module_InternalComm &");
- if (count_evComm < TASK_CNT_EV_COMM)
- {
- system("killall Module_EvComm");
- sleep(3);
- system("/root/Module_EvComm &");
- }
- }
- sleep(2);
- }
- if (count_main < TASK_CNT_MAIN)
- result = _SYSTEM_TASK_LOST_ITEM_MAIN;
- else if (count_evComm < TASK_CNT_EV_COMM)
- result = _SYSTEM_TASK_LOST_ITEM_EVCOMM;
- else if (count_psuComm < TASK_CNT_PSU_COMM)
- result = _SYSTEM_TASK_LOST_ITEM_PSUCOMM;
- else if (count_sboxComm < TASK_CNT_SBOX_COMM)
- result = _SYSTEM_TASK_LOST_ITEM_SMARTBOX;
- else if (system("pidof -s Module_EventLogging > /dev/null") != 0)
- result = _SYSTEM_TASK_LOST_ITEM_EVENTLOG;
- else if (system("pidof -s Module_PrimaryComm > /dev/null") != 0)
- result = _SYSTEM_TASK_LOST_ITEM_PRIMARYCOMM;
- else if (system("pidof -s Module_LcmControl > /dev/null") != 0)
- result = _SYSTEM_TASK_LOST_ITEM_LCMCONTROL;
- else if (system("pidof -s Module_InternalComm > /dev/null") != 0)
- result = _SYSTEM_TASK_LOST_ITEM_INTERCOMM;
- return result;
- }
|