parent
747eb82bff
commit
fcbddb6343
|
@ -66,7 +66,7 @@ typedef unsigned int ret_code;
|
|||
#define RET_NO_LTE_MODULE_ERR (unsigned int)((unsigned int)LTE_CONFIG_MODULE<<16|4)
|
||||
#define RET_ALREADY_START_ERR (unsigned int)((unsigned int)LTE_CONFIG_MODULE<<16|5)
|
||||
#define RET_ALREADY_STOP_ERR (unsigned int)((unsigned int)LTE_CONFIG_MODULE<<16|6)
|
||||
|
||||
#define RET_ANOTHER_IN_PROCESS (unsigned int)((unsigned int)LTE_CONFIG_MODULE<<16|7)
|
||||
|
||||
|
||||
|
||||
|
@ -125,7 +125,8 @@ typedef unsigned int ret_code;
|
|||
{ RET_LTE_NO_MATCH_ERR, "LTENoMatch"},\
|
||||
{ RET_NO_LTE_MODULE_ERR, "NoLTEModule"},\
|
||||
{ RET_ALREADY_START_ERR, "AlreadyStart"},\
|
||||
{ RET_ALREADY_STOP_ERR, "AlreadyStop"}\
|
||||
{ RET_ALREADY_STOP_ERR, "AlreadyStop"},\
|
||||
{ RET_ANOTHER_IN_PROCESS, "AnotherThreadIsRunning"}\
|
||||
}
|
||||
|
||||
struct err_disc {
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
|
||||
|
||||
int g_action = 0;
|
||||
int g_status = STOPPED;
|
||||
pthread_t lte;
|
||||
|
||||
|
||||
ret_code compare(char *result)
|
||||
{
|
||||
|
@ -132,18 +135,18 @@ ret_code LTE_json_parse(pointer input, uint *conf_type, int action)
|
|||
{
|
||||
g_action = START;
|
||||
}
|
||||
else if(strcmp(action_type->valuestring,"restart") == 0)
|
||||
/*else if(strcmp(action_type->valuestring,"restart") == 0)
|
||||
{
|
||||
g_action = RESTART;
|
||||
}
|
||||
}*/
|
||||
else if(strcmp(action_type->valuestring,"stop") == 0)
|
||||
{
|
||||
g_action = STOP;
|
||||
}
|
||||
else if(strcmp(action_type->valuestring,"init") == 0)
|
||||
/*else if(strcmp(action_type->valuestring,"init") == 0)
|
||||
{
|
||||
g_action = INIT;
|
||||
}
|
||||
}*/
|
||||
else
|
||||
{
|
||||
cJSON_Delete(json_obj);
|
||||
|
@ -156,7 +159,7 @@ ret_code LTE_json_parse(pointer input, uint *conf_type, int action)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*void killpid()
|
||||
void killpid()
|
||||
{
|
||||
char pid[10] =
{0};
|
||||
char cmd[20] = {0};
|
||||
|
@ -170,13 +173,44 @@ ret_code LTE_json_parse(pointer input, uint *conf_type, int action)
|
|||
}
|
||||
fgets(pid,sizeof(pid),fp);
|
||||
sscanf(pid,"%d",&pid_int);
|
||||
rpc_log_info("pid is %d\n",pid_int);
|
||||
sprintf(cmd,"kill %d",pid_int);
|
||||
system(cmd);
|
||||
pclose(fp);
|
||||
}*/
|
||||
}
|
||||
|
||||
void _start_lte(void)
|
||||
{
|
||||
int wait_time = 0;
|
||||
g_status = STARTING;
|
||||
while(wait_time < 60)
|
||||
{
|
||||
if(access(file_path,0) != -1)
|
||||
{
|
||||
sleep(1000);
|
||||
wait_time ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_status = CONNECTED;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
system("/etc/ppp/ppp-4g init");
|
||||
|
||||
restart_lte();
|
||||
|
||||
pthread_join(lte,NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
ret_code start_lte()
|
||||
{
|
||||
if(g_status == STARTING)
|
||||
{
|
||||
return RET_ANOTHER_IN_PROCESS;
|
||||
}
|
||||
char result[RESULT_LENGTH] = {0};
|
||||
int i = 0;
|
||||
|
||||
|
@ -186,6 +220,7 @@ ret_code start_lte()
|
|||
|
||||
if (NULL == f)
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
rpc_log_info("execuate cmd fail\n");
|
||||
return RET_EXEC_SHELL_ERR;
|
||||
}
|
||||
|
@ -198,38 +233,23 @@ ret_code start_lte()
|
|||
|
||||
if(strstr(result,"not install lte") != NULL )
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
pclose(f);
|
||||
return RET_NO_LTE_MODULE_ERR;
|
||||
}
|
||||
|
||||
else if(strstr(result,"pppd apparently already active")
!= NULL)
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
pclose(f);
|
||||
return RET_ALREADY_START_ERR;
|
||||
}
|
||||
else if(strstr(result,"start pppd ppp0") != NULL)
|
||||
{
|
||||
pthread_create(<e,NULL,(void *)&_start_lte,NULL);
|
||||
g_status = STARTING;
|
||||
pclose(f);
|
||||
return RET_OK;
|
||||
/* while(i < 120)
|
||||
{
|
||||
if(access(file_path,0) != -1)
|
||||
{
|
||||
sleep(1000);
|
||||
i
++;
|
||||
}
|
||||
else
|
||||
{
|
||||
pclose(f);
|
||||
return RET_OK;
|
||||
}
|
||||
}
|
||||
|
||||
pclose(f);
|
||||
//ɱËÀ½ø³Ì
|
||||
killpid();
|
||||
rpc_log_info("please check the sim card\n");
|
||||
return RET_EXEC_SHELL_ERR;*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -259,12 +279,14 @@ ret_code stop_lte()
|
|||
|
||||
if(strstr(result,"pppd may be sotped already") != NULL)
|
||||
{
|
||||
g_status = STOPPED;
|
||||
pclose(f);
|
||||
return RET_ALREADY_STOP_ERR;
|
||||
}
|
||||
|
||||
else if((strstr(result,"stop pppd ppp0") != NULL) && access(file_path,0) != -1)
|
||||
{
|
||||
g_status = STOPPED;
|
||||
pclose(f);
|
||||
return RET_OK;
|
||||
}
|
||||
|
@ -276,10 +298,10 @@ ret_code stop_lte()
|
|||
|
||||
}
|
||||
|
||||
ret_code restart_lte()
|
||||
void restart_lte(void)
|
||||
{
|
||||
char result[RESULT_LENGTH] = {0};
|
||||
int i = 0;
|
||||
int wait_time = 0;
|
||||
|
||||
FILE *f = NULL;
|
||||
f = popen("/etc/ppp/ppp-4g restart","r");
|
||||
|
@ -287,7 +309,8 @@ ret_code restart_lte()
|
|||
if (NULL == f)
|
||||
{
|
||||
rpc_log_info("execuate cmd fail\n");
|
||||
return RET_EXEC_SHELL_ERR;
|
||||
g_status = START_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
fseek(f,0,SEEK_SET);
|
||||
|
@ -300,41 +323,43 @@ ret_code restart_lte()
|
|||
|
||||
if(strstr(result,"not install lte! ") != NULL)
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
pclose(f);
|
||||
return RET_NO_LTE_MODULE_ERR;
|
||||
return;
|
||||
}
|
||||
|
||||
else if(strstr(result,"pppd apparently already active") != NULL)
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
pclose(f);
|
||||
return RET_ALREADY_START_ERR;
|
||||
return;
|
||||
}
|
||||
else if(strstr(result,"start pppd ppp0") != NULL)
|
||||
{
|
||||
pclose(f);
|
||||
return RET_OK;
|
||||
/* while(i < 120)
|
||||
while(wait_time < 60)
|
||||
{
|
||||
if(access(file_path,0) != -1)
|
||||
{
|
||||
sleep(1000);
|
||||
i
++;
|
||||
wait_time
++;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_status = CONNECTED;
|
||||
pclose(f);
|
||||
return RET_OK;
|
||||
return;
|
||||
}
|
||||
}
|
||||
pclose(f);
|
||||
//ɱËÀ½ø³Ì
|
||||
killpid();
|
||||
rpc_log_info("please check the sim card\n");
|
||||
return RET_EXEC_SHELL_ERR;*/
|
||||
g_status = START_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
g_status = START_FAIL;
|
||||
pclose(f);
|
||||
return RET_EXEC_SHELL_ERR;
|
||||
}
|
||||
|
@ -399,7 +424,22 @@ ret_code status_lte(pointer output, int *output_len)
|
|||
rpc_log_info("%s\n",result);
|
||||
if(strstr(result,"off") != NULL)
|
||||
{
|
||||
strcpy(status,"off");
|
||||
if(g_status == STARTING)
|
||||
{
|
||||
strcpy(status,"starting...");
|
||||
}
|
||||
else if(g_status == STOPPED)
|
||||
{
|
||||
strcpy(status,"stopped");
|
||||
}
|
||||
else if(g_status == START_FAIL)
|
||||
{
|
||||
strcpy(status,"start fail");
|
||||
}
|
||||
else
|
||||
{
|
||||
return RET_ERR;
|
||||
}
|
||||
//·â×°json
|
||||
ret = lte_to_json(status,connect_time,output,output_len);
|
||||
pclose(f);
|
||||
|
@ -407,7 +447,7 @@ ret_code status_lte(pointer output, int *output_len)
|
|||
}
|
||||
else if(strstr(result,"on") != NULL)
|
||||
{
|
||||
strcpy(status,"on");
|
||||
strcpy(status,"started");
|
||||
memset(result,0,sizeof(result));
|
||||
fgets(result,sizeof(result),f);
|
||||
rpc_log_info("%s\n",result);
|
||||
|
@ -452,15 +492,15 @@ ret_code LTE_config_proc(uint source, uint config_type,
|
|||
case START:
|
||||
ret = start_lte();
|
||||
break;
|
||||
case RESTART:
|
||||
/* case RESTART:
|
||||
ret = restart_lte();
|
||||
break;
|
||||
break;*/
|
||||
case STOP:
|
||||
ret = stop_lte();
|
||||
break;
|
||||
case INIT:
|
||||
/* case INIT:
|
||||
ret = LTE_config_init();
|
||||
break;
|
||||
break;*/
|
||||
default:
|
||||
ret = RET_INPUTERR;
|
||||
break;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <arpa/inet.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/if.h>
|
||||
#include <pthread.h>
|
||||
|
||||
|
||||
#define INIT_CMD "/etc/ppp/ppp-4G init"
|
||||
|
@ -21,13 +22,15 @@
|
|||
#define file_path "/var/run/ppp0.pid"
|
||||
#define GETPID "pgrep ppp-4g"
|
||||
#define START 1
|
||||
#define RESTART 2
|
||||
#define STOP 3
|
||||
#define STATUS 4
|
||||
#define INIT 5
|
||||
#define STOP 2
|
||||
#define STATUS 3
|
||||
#define RESULT_LENGTH 60
|
||||
#define ACTION_LENGTH 10
|
||||
#define STATUS_LENGTH 5
|
||||
#define STATUS_LENGTH 10
|
||||
#define STARTING 1
|
||||
#define STOPPED 2
|
||||
#define CONNECTED 3
|
||||
#define START_FAIL 4
|
||||
|
||||
//ret_code LTE_config_init(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue