Files
hisi_SS524V100_SDK/mpp/sample/get_signal_hefeng/main_config.c
T

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;
}