459 lines
17 KiB
C
459 lines
17 KiB
C
#include <stdio.h>
|
|
#include "cJSON.h"
|
|
#include <fcntl.h>
|
|
#include <sys/mman.h>
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
|
|
int fd_param;
|
|
//float *buffer_param;
|
|
//float *buffer_param;
|
|
//float *buffer_param;
|
|
int *buffer_param;
|
|
//float *buffer_param1;
|
|
//float *buffer_param2;
|
|
float ant1_rssi1;
|
|
|
|
void init_share_param(){
|
|
|
|
fd_param = shm_open("/param.txt",O_RDWR|O_CREAT|O_EXCL,0777);
|
|
if(fd_param < 0){
|
|
fd_param = shm_open("/param.txt",O_RDWR,0777);
|
|
}else
|
|
ftruncate(fd_param,4096);
|
|
buffer_param= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0);
|
|
//buffer_param1= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0);
|
|
//buffer_param2= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0);
|
|
|
|
}
|
|
|
|
|
|
int main(int argc,char **argv){
|
|
|
|
FILE *fp;
|
|
FILE *fp_bit;
|
|
FILE *fp_config;
|
|
char buffer[1024*4];
|
|
|
|
int buffer_rssi1_1[1024];
|
|
int buffer_rssi1_2[1024];
|
|
int buffer_rssi2_1[1024];
|
|
int buffer_rssi2_2[1024];
|
|
int buffer_rssi3_1[1024];
|
|
int buffer_rssi3_2[1024];
|
|
//int buffer1[1024*4];
|
|
//int buffer1[1024*4];
|
|
//float buffer1[1024*4];
|
|
//float buffer2[1024*4];
|
|
|
|
init_share_param();
|
|
int i=0;
|
|
char *ip;
|
|
char *stat;
|
|
char str_buf[128];
|
|
float bw;
|
|
|
|
float rssi1_1_pre=-40.0f;
|
|
float rssi1_2_pre=-40.0f;
|
|
float rssi2_1_pre=-40.0f;
|
|
float rssi2_2_pre=-40.0f;
|
|
float rssi3_1_pre=-40.0f;
|
|
float rssi3_2_pre=-40.0f;
|
|
|
|
float antrss1_1;
|
|
float antrss2_1;
|
|
float antrss1_2;
|
|
float antrss2_2;
|
|
float antrss1_3;
|
|
float antrss2_3;
|
|
|
|
|
|
//float ant1rss2;
|
|
//float ant2rss2;
|
|
int rssi1_1;
|
|
int rssi1_2;
|
|
int rssi2_1;
|
|
int rssi2_2;
|
|
int rssi3_1;
|
|
int rssi3_2;
|
|
|
|
int lq1_param_count;
|
|
|
|
system("rm -rf status*");
|
|
system("rm -rf wget-log*");
|
|
//system("rm -rf statusadvanced*");
|
|
while(1) {
|
|
//system("wget http://192.168.10.42/status");
|
|
//ip = argv[1];
|
|
//stat = argv[2];
|
|
|
|
sprintf(str_buf,"wget http://%s/status",argv[1]);
|
|
system(str_buf);
|
|
|
|
fp = fopen("status","r");
|
|
|
|
if(fp==NULL){
|
|
|
|
printf("open error\n");
|
|
break;
|
|
}
|
|
|
|
fgets(buffer,1024*4,fp);
|
|
|
|
cJSON *root_json = cJSON_Parse(buffer); //将字符串解析成json结构体
|
|
if (NULL == root_json)
|
|
{
|
|
printf("error:%s\n", cJSON_GetErrorPtr());
|
|
cJSON_Delete(root_json);
|
|
break;
|
|
}
|
|
//buffer_param[0]=0x11;
|
|
char *out = cJSON_Print(root_json);
|
|
//printf("%s\n", out);
|
|
cJSON *linkQ_json = cJSON_GetObjectItem(root_json, "linkQuality");
|
|
if(linkQ_json){
|
|
cJSON *lq1 = cJSON_GetArrayItem(linkQ_json,0);
|
|
cJSON *lq2 = cJSON_GetArrayItem(linkQ_json,1);
|
|
|
|
char *out2 = cJSON_Print(lq1);
|
|
printf("%s\n", out2);
|
|
|
|
lq1_param_count = cJSON_GetArraySize(lq1);
|
|
printf("第一个[]里的参数个数:%d\n", lq1_param_count);
|
|
}
|
|
|
|
cJSON *nodesRssi_json = cJSON_GetObjectItem(root_json, "nodesRssi");
|
|
if(nodesRssi_json){
|
|
|
|
int size2 = cJSON_GetArraySize(nodesRssi_json);
|
|
|
|
if(size2 >=1){
|
|
cJSON *psub2 = cJSON_GetArrayItem(nodesRssi_json,0);
|
|
cJSON *psub3 = cJSON_GetArrayItem(nodesRssi_json,1);
|
|
// cJSON *psub4 = cJSON_GetArrayItem(nodesRssi_json,2);
|
|
|
|
//cJSON *psub_3 = cJSON_GetArrayItem(nodesRssi_json,1);
|
|
char *out1 = cJSON_Print(psub2);
|
|
// char *out2 = cJSON_Print(psub3);
|
|
// printf("%s\n", out1);
|
|
// printf("%s\n", out2);
|
|
if(psub2){
|
|
cJSON *id_json = cJSON_GetObjectItem(psub2,"id");
|
|
|
|
if(id_json)
|
|
printf("id %d %d\n",id_json->type,id_json->valueint);
|
|
buffer_param[3]=id_json->valueint;
|
|
cJSON *xh_ant1Rssi_json = cJSON_GetObjectItem(psub2,"ant1Rssi"); //xinhaoqiangdu
|
|
if(xh_ant1Rssi_json){
|
|
printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json->type,xh_ant1Rssi_json->valuedouble);
|
|
// buffer_param[1] = xh_ant1Rssi_json->valuedouble;
|
|
antrss1_1= xh_ant1Rssi_json->valuedouble;
|
|
rssi1_1=(int)antrss1_1;
|
|
}
|
|
cJSON *xh_ant2Rssi_json = cJSON_GetObjectItem(psub2,"ant2Rssi");
|
|
if(xh_ant2Rssi_json){
|
|
printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json->type,xh_ant2Rssi_json->valuedouble);
|
|
// buffer_param[2] = xh_ant2Rssi_json->valuedouble;
|
|
antrss2_1 = xh_ant2Rssi_json->valuedouble;
|
|
//buffer_param[2]=
|
|
rssi1_2=(int)antrss2_1;
|
|
//printf("---rssi %d\n--",rssi1);
|
|
}
|
|
i++;
|
|
buffer_rssi1_1[i] = rssi1_1;
|
|
buffer_rssi1_2[i] = rssi1_2;
|
|
buffer_param[1]=rssi1_1;
|
|
buffer_param[2]=rssi1_2;
|
|
printf("rssi %d %d \n--",rssi1_1,rssi1_2);
|
|
printf("s %d %d\n",buffer_param[1],buffer_param[2]);
|
|
//printf(" 1 %f 2 %f ",buffer1[i],buffer2[i]);
|
|
#if 0
|
|
if((abs(buffer_rssi1_1[i]-buffer_rssi1_1[i-1])>20)||(abs(buffer_rssi1_1[i-2]-buffer_rssi1_1[i-1])>20))
|
|
{
|
|
#if 0
|
|
if(abs(buffer_rssi1_1[i-1])<abs(buffer_rssi1_1[i]))
|
|
{
|
|
if(abs(buffer_rssi1_1[i-1])<abs(buffer_rssi1_1[i-2]))
|
|
{
|
|
|
|
buffer_param[1]=buffer_rssi1_1[i-1];
|
|
buffer_param[2]=buffer_rssi1_2[i-1];
|
|
printf("sss %f %f\n",buffer_param[1],buffer_param[2]);
|
|
}else{
|
|
|
|
buffer_param[1]=buffer_rssi1_1[i-2];
|
|
buffer_param[2]=buffer_rssi1_2[i-2];
|
|
printf("sss %f %f\n",buffer_param[1],buffer_param[2]);
|
|
}
|
|
}else {
|
|
if(abs(buffer_rssi1_1[i])<abs(buffer_rssi1_1[i-2])){
|
|
|
|
buffer_param[1]=buffer_rssi1_1[i];
|
|
buffer_param[2]=buffer_rssi1_2[i];
|
|
//printf("sss %f %f\n",buffer_param[1],buffer_param[2]);
|
|
}else{
|
|
|
|
buffer_param[1]=buffer_rssi1_1[i-2];
|
|
buffer_param[2]=buffer_rssi1_2[i-2];
|
|
//printf("sss %f %f\n",buffer_param[1],buffer_param[2]);
|
|
}
|
|
|
|
}
|
|
#endif
|
|
//buffer_param[1]=buffer1[i-1];
|
|
//buffer_param[2]=buffer2[i-1];
|
|
//printf("--%d i-1 %f i %f i-2 %f\n ",buffer_param[1],buffer1[i-1],buffer1[i],buffer1[i-2]);
|
|
// i=i-1;
|
|
}else{
|
|
|
|
buffer_param[1] =buffer_rssi1_1[i];
|
|
buffer_param[2] =buffer_rssi1_2[i];
|
|
// printf("---\n");
|
|
printf("sss %f %f\n",buffer_param[1],buffer_param[2]);
|
|
|
|
}
|
|
#endif
|
|
|
|
}else {
|
|
|
|
buffer_param[1] = 0x00;
|
|
buffer_param[2] = 0x00;
|
|
}
|
|
#if 1
|
|
if(psub3){
|
|
cJSON *id_json1 = cJSON_GetObjectItem(psub3,"id");
|
|
|
|
if(id_json1)
|
|
printf("id %d %d\n",id_json1->type,id_json1->valueint);
|
|
buffer_param[6]=id_json1->valueint;
|
|
cJSON *xh_ant1Rssi_json1 = cJSON_GetObjectItem(psub3,"ant1Rssi"); //xinhaoqiangdu
|
|
if(xh_ant1Rssi_json1){
|
|
printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json1->type,xh_ant1Rssi_json1->valuedouble);
|
|
// buffer_param[1] = xh_ant1Rssi_json->valuedouble;
|
|
antrss1_2= xh_ant1Rssi_json1->valuedouble;
|
|
rssi2_1=(int)antrss1_2;
|
|
}
|
|
cJSON *xh_ant2Rssi_json1 = cJSON_GetObjectItem(psub3,"ant2Rssi");
|
|
if(xh_ant2Rssi_json1){
|
|
printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json1->type,xh_ant2Rssi_json1->valuedouble);
|
|
//buffer_param[2] = xh_ant2Rssi_json->valuedouble;
|
|
antrss2_2 = xh_ant2Rssi_json1->valuedouble;
|
|
rssi2_2=(int)antrss2_2;
|
|
//printf("---rssi %d\n--",rssi1);
|
|
}
|
|
i++;
|
|
buffer_rssi2_1[i] = abs(rssi2_1);
|
|
buffer_rssi2_2[i] = abs(rssi2_2);
|
|
buffer_param[7]=rssi2_1;
|
|
buffer_param[8]=rssi2_2;
|
|
printf("---rssi %d %d \n--",rssi2_1,rssi2_2);
|
|
if(lq1_param_count==2){
|
|
buffer_param[7]= 0x00;
|
|
buffer_param[8]= 0x00;
|
|
}
|
|
//printf(" 1 %f 2 %f ",buffer1[i],buffer2[i]);
|
|
|
|
#if 0
|
|
if((abs(buffer_rssi2_1[i]-buffer_rssi2_1[i-1])>20)||(abs(buffer_rssi2_1[i-2]-buffer_rssi2_1[i-1])>20))
|
|
{
|
|
#if 1
|
|
if(abs(buffer_rssi2_1[i-1])<abs(buffer_rssi2_1[i]))
|
|
{
|
|
if(abs(buffer_rssi2_1[i-1])<abs(buffer_rssi2_1[i-2]))
|
|
{
|
|
|
|
buffer_param[7]=buffer_rssi2_1[i-1];
|
|
buffer_param[8]=buffer_rssi2_2[i-1];
|
|
}else{
|
|
|
|
buffer_param[7]=buffer_rssi2_1[i-2];
|
|
buffer_param[8]=buffer_rssi2_2[i-2];
|
|
}
|
|
}else {
|
|
if(abs(buffer_rssi2_1[i])<abs(buffer_rssi2_1[i-2])){
|
|
|
|
buffer_param[7]=buffer_rssi2_1[i];
|
|
buffer_param[8]=buffer_rssi2_2[i];
|
|
}else{
|
|
|
|
buffer_param[7]=buffer_rssi2_1[i-2];
|
|
buffer_param[8]=buffer_rssi2_2[i-2];
|
|
}
|
|
|
|
}
|
|
#endif
|
|
//buffer_param[1]=buffer1[i-1];
|
|
//buffer_param[2]=buffer2[i-1];
|
|
//printf("--%d i-1 %f i %f i-2 %f\n ",buffer_param[1],buffer1[i-1],buffer1[i],buffer1[i-2]);
|
|
//i=i-1;
|
|
}else{
|
|
|
|
buffer_param[7] =buffer_rssi2_1[i];
|
|
buffer_param[8] =buffer_rssi2_2[i];
|
|
// printf("---\n");
|
|
|
|
}
|
|
#endif
|
|
}else {
|
|
printf("=====\n");
|
|
buffer_param[7]=0x00;
|
|
buffer_param[8]=0x00;
|
|
}
|
|
#if 0
|
|
if(psub4){
|
|
cJSON *id_json2 = cJSON_GetObjectItem(psub4,"id");
|
|
|
|
if(id_json2)
|
|
printf("id %d %d\n",id_json2->type,id_json2->valueint);
|
|
buffer_param[10]=id_json2->valueint;
|
|
cJSON *xh_ant1Rssi_json2 = cJSON_GetObjectItem(psub4,"ant1Rssi"); //xinhaoqiangdu
|
|
if(xh_ant1Rssi_json2){
|
|
printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json2->type,xh_ant1Rssi_json2->valuedouble);
|
|
// buffer_param[1] = xh_ant1Rssi_json->valuedouble;
|
|
antrss1_3= xh_ant1Rssi_json2->valuedouble;
|
|
rssi3_1=(int)antrss1_3;
|
|
}
|
|
cJSON *xh_ant2Rssi_json2 = cJSON_GetObjectItem(psub4,"ant2Rssi");
|
|
if(xh_ant2Rssi_json2){
|
|
printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json2->type,xh_ant2Rssi_json2->valuedouble);
|
|
//buffer_param[2] = xh_ant2Rssi_json->valuedouble;
|
|
antrss2_3 = xh_ant2Rssi_json2->valuedouble;
|
|
rssi3_2=(int)antrss2_3;
|
|
//printf("---rssi %d\n--",rssi1);
|
|
}
|
|
i++;
|
|
buffer_rssi3_1[i] = abs(rssi3_1);
|
|
buffer_rssi3_2[i] = abs(rssi3_2);
|
|
buffer_param[11]=rssi3_1;
|
|
buffer_param[12]=rssi3_2;
|
|
printf("---rssi %d %d \n--",rssi3_1,rssi3_2);
|
|
if(lq1_param_count==2){
|
|
buffer_param[11]= 0x00;
|
|
buffer_param[12]= 0x00;
|
|
}
|
|
}else {
|
|
printf("=====\n");
|
|
buffer_param[11]=0x00;
|
|
buffer_param[12]=0x00;
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
|
|
}
|
|
#if 0
|
|
cJSON *noiseRssi_json = cJSON_GetObjectItem(root_json, "noiseRssi");
|
|
if(noiseRssi_json){
|
|
int size1 = cJSON_GetArraySize(noiseRssi_json);
|
|
if(size1 >=1){
|
|
cJSON *psub = cJSON_GetArrayItem(noiseRssi_json,0);
|
|
// char *out1 = cJSON_Print(psub);
|
|
// printf("%s\n", out1);
|
|
if(psub){
|
|
cJSON *freq_json = cJSON_GetObjectItem(psub,"freq");
|
|
//printf("");
|
|
#if 1
|
|
if(freq_json){
|
|
printf("freq type %d value %d\n",freq_json->type,freq_json->valueint);
|
|
buffer_param[4] = freq_json->valueint/100000;
|
|
}
|
|
#if 0
|
|
cJSON *dizhao_ant1Rssi_json = cJSON_GetObjectItem(psub,"ant1Rssi");
|
|
if(dizhao_ant1Rssi_json){
|
|
printf("dizhao ant1Rssi type %d value %f\n",dizhao_ant1Rssi_json->type,dizhao_ant1Rssi_json->valuedouble);
|
|
//buffer_param[1] = dizhao_ant1Rssi_json->valuedouble;
|
|
}
|
|
cJSON *dizhao_ant2Rssi_json = cJSON_GetObjectItem(psub,"ant2Rssi");
|
|
if(dizhao_ant2Rssi_json){
|
|
printf("dizhao ant2Rssi type %d value %f\n",dizhao_ant2Rssi_json->type,dizhao_ant2Rssi_json->valuedouble);
|
|
//buffer_param[2] = dizhao_ant2Rssi_json->valuedouble;
|
|
}
|
|
|
|
#endif
|
|
#endif
|
|
|
|
//}
|
|
}
|
|
|
|
}
|
|
}
|
|
#endif
|
|
sprintf(str_buf,"wget http://%s/config",argv[1]);
|
|
system(str_buf);
|
|
fp_config = fopen("config","r");
|
|
|
|
if(fp_config==NULL){
|
|
|
|
printf("open error\n");
|
|
break;
|
|
}
|
|
|
|
fgets(buffer,1024*4,fp_config);
|
|
|
|
cJSON *root_json_c = cJSON_Parse(buffer); //将字符串解析成json结构体
|
|
if (NULL == root_json_c)
|
|
{
|
|
printf("error:%s\n", cJSON_GetErrorPtr());
|
|
cJSON_Delete(root_json_c);
|
|
break;
|
|
}
|
|
char *out1 = cJSON_Print(root_json_c);
|
|
//printf("%s\n", out1);
|
|
cJSON *id_config = cJSON_GetObjectItem(root_json_c, "id");
|
|
cJSON *pwAtten2 = cJSON_GetObjectItem(root_json_c, "pwAtten2");
|
|
cJSON *pwAtten1 = cJSON_GetObjectItem(root_json_c, "pwAtten1");
|
|
|
|
printf(" pwAtten2 %d\n",pwAtten2->valueint);
|
|
printf(" pwAtten1 %d\n",pwAtten1->valueint);
|
|
//printf("id_config %s \n",id_config);
|
|
//if(id_config){
|
|
// printf(" phyrx %d\n",id_config->valueint);
|
|
//buffer_param[3] = phyrx_json->valueint; //码流
|
|
//}
|
|
|
|
#if 0
|
|
sprintf(str_buf,"wget http://%s/statusadvanced",argv[1]);
|
|
system(str_buf);
|
|
fp_bit = fopen("statusadvanced","r");
|
|
|
|
if(fp_bit==NULL){
|
|
|
|
printf("open error\n");
|
|
break;
|
|
}
|
|
|
|
fgets(buffer,1024*4,fp_bit);
|
|
|
|
cJSON *root_json1 = cJSON_Parse(buffer); //将字符串解析成json结构体
|
|
if (NULL == root_json1)
|
|
{
|
|
printf("error:%s\n", cJSON_GetErrorPtr());
|
|
cJSON_Delete(root_json1);
|
|
break;
|
|
}
|
|
|
|
char *out1 = cJSON_Print(root_json1);
|
|
// //printf("%s\n", out1);
|
|
cJSON *phyrx_json = cJSON_GetObjectItem(root_json1, "phyRxBytes");
|
|
if(phyrx_json){
|
|
printf(" phyrx %d\n",phyrx_json->valueint);
|
|
buffer_param[3] = phyrx_json->valueint; //码流
|
|
}
|
|
//ip = argv[1];
|
|
#endif
|
|
fclose(fp);
|
|
//fclose(fp_bit);
|
|
fclose(fp_config);
|
|
system("rm -rf status*");
|
|
system("rm -rf wget-log*");
|
|
system("rm -rf config");
|
|
//system("rm -rf statusadvanced*");
|
|
sleep(2);
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|