227 lines
4.8 KiB
C
227 lines
4.8 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/time.h> // gettimeofday
|
|
#include <sys/stat.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <fcntl.h>
|
|
#include <sys/mman.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
#include <netdb.h>
|
|
#include <errno.h>
|
|
|
|
#include "serial.h"
|
|
#include "uartinf.h"
|
|
#include "confile.h"
|
|
#include "udp_util.h"
|
|
|
|
char _rx_data[1024];
|
|
|
|
struct lc6600_param{
|
|
int password;
|
|
int freq;
|
|
int power;
|
|
int bw;
|
|
int ap_sta;
|
|
int ip;
|
|
int setup;
|
|
};
|
|
|
|
char freq1[10];
|
|
char freq2[10];
|
|
char dbm1[5];
|
|
char dbm2[5];
|
|
|
|
|
|
int my_strlen(char* str)
|
|
{
|
|
char*start = str;
|
|
while (*str != '\0')
|
|
{
|
|
str++;
|
|
}
|
|
return str - start;
|
|
}
|
|
|
|
|
|
int main (int argc, char *argv[])
|
|
{
|
|
int n_read;
|
|
int i;
|
|
|
|
//char buffer[1024];
|
|
char rx1[3];
|
|
char rx2[3];
|
|
char rx3[3];
|
|
char ip[13];
|
|
|
|
|
|
int dbm1;
|
|
int dbm2;
|
|
int dbm3;
|
|
char *ip_str;
|
|
|
|
//char *buffer_freq;
|
|
char freq_str[6];
|
|
int freq;
|
|
int fq;
|
|
int bitrate;
|
|
int fd_param;
|
|
int *buffer_param;
|
|
|
|
int len;
|
|
|
|
char *buffer_freq;
|
|
char *buffer;
|
|
char *buffer_rssi;
|
|
char *buffer_rssi1;
|
|
char *buffer_rssi2;
|
|
|
|
float rssi;
|
|
float rssi1;
|
|
float rssi2;
|
|
char bit[6];
|
|
char bit2[20];
|
|
char bit1[6];
|
|
|
|
n_read = uart_init(ROUTE_UART, "/dev/ttyAMA2", 115200, 'N');
|
|
if(n_read <=0 ) {
|
|
printf("open /dev/ttyAMA2 failed\n");
|
|
return -1;
|
|
}
|
|
|
|
|
|
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_param[0] = 0xAA;i
|
|
//buffer_param[3]=4560;
|
|
//buffer_param[4]=14430;
|
|
//freq=atoi(argv[1]);
|
|
//printf("freq %d \n",freq);
|
|
//buffer_param[3]=freq;
|
|
|
|
while(1){
|
|
n_read = uart_get(ROUTE_UART,_rx_data);
|
|
//n_read = uart_read(ROUTE_UART,_rx_data);
|
|
|
|
//printf("%s\n",_rx_data);
|
|
if(n_read >30){
|
|
|
|
printf("%s\n",_rx_data);
|
|
//printf("%d\n",n_read);
|
|
//len=!strncmp("VGA",_rx_data,3);
|
|
//printf("len %x\n");
|
|
//if((!strncmp("VGA",_rx_data,3)) && n_read < 65 ){
|
|
if((!strncmp("POINT",_rx_data,5)) && n_read < 80 ){
|
|
|
|
buffer_rssi = strstr(_rx_data,"RSSI:");
|
|
buffer_rssi1 = strstr(_rx_data,"RSSI1:");
|
|
buffer_rssi2 = strstr(_rx_data,"RSSI2:");
|
|
buffer_freq = strstr(_rx_data,"Point");
|
|
|
|
if( buffer_rssi && buffer_rssi1 && buffer_rssi2){
|
|
|
|
|
|
//memcpy(rx1,buffer_rssi1+6,6);//信号强度
|
|
strncpy(bit,buffer_rssi1+6,6);//信号强度
|
|
rssi1 = atof(bit);
|
|
|
|
strncpy(bit,buffer_rssi2+6,6);//信号强度
|
|
rssi2 = atof(bit);
|
|
|
|
strncpy(bit,buffer_freq+6,5);//ti频率
|
|
bit[5]=0x00;
|
|
freq = atoi(bit); //字符型转化为整型
|
|
|
|
buffer_param[1]= rssi1;
|
|
buffer_param[2]= rssi2;
|
|
buffer_param[4]= freq;
|
|
printf("rx %.2f 2 %.2f %d \n",rssi1,rssi2,freq);
|
|
buffer_param[3] = 0; //码流
|
|
|
|
buffer_param[0]=0xAA; //no signal
|
|
|
|
//printf("++%f \n",buffer_param[12]);
|
|
|
|
}
|
|
|
|
}
|
|
else if(n_read >85){ //xinuo get signal
|
|
//buffer=strstr(_rx_data,"%)");
|
|
//buffer_rssi = strstr(_rx_data,"RSSI:");
|
|
buffer_rssi = strstr(_rx_data,"RSSI:");
|
|
buffer_rssi1 = strstr(_rx_data,"RSSI1:");
|
|
buffer_rssi2 = strstr(_rx_data,"RSSI2:");
|
|
buffer_freq = strstr(_rx_data,"Point");
|
|
buffer = strstr(_rx_data,"%)");
|
|
|
|
printf("buffer %s\n",buffer);
|
|
|
|
|
|
if(buffer_rssi){
|
|
//if(buffer){
|
|
|
|
len = strlen(buffer)-8;
|
|
printf("len %d\n",len);
|
|
strncpy(bit,buffer+2,len);//信号强度
|
|
// if(strlen(buffer)<=7){
|
|
|
|
// strncpy(bit,buffer_rssi1+6,6);//信号强度
|
|
// }else {
|
|
// strncpy(bit,buffer+2,4);
|
|
// }
|
|
// printf("bit %s ",bit);
|
|
bit[len]=0x00;
|
|
printf("bit %s\n",bit);
|
|
//bit[4] = 0x00;
|
|
//bit[5] = 0x00;
|
|
bitrate=atoi(bit);//码流
|
|
|
|
strncpy(bit,buffer_rssi1+6,6);//信号强度
|
|
rssi1 = atof(bit);
|
|
|
|
strncpy(bit,buffer_rssi2+6,6);//信号强度
|
|
rssi2 = atof(bit);
|
|
|
|
strncpy(bit,buffer_freq+6,5);//频率
|
|
|
|
bit[5]=0x00;
|
|
freq = atoi(bit); //字符型转化为整型
|
|
|
|
|
|
printf("rx %.2f 2 %.2f freq %d bit %d\n",rssi1,rssi2,freq,bitrate);
|
|
|
|
buffer_param[1]= rssi1;
|
|
buffer_param[2]= rssi2;
|
|
buffer_param[4]= freq;
|
|
buffer_param[3] = bitrate;
|
|
#if 0
|
|
if(bitrate / 10000){
|
|
buffer_param[3] = (float)(bitrate/100);
|
|
}else {
|
|
buffer_param[3] = (float)bitrate;
|
|
}
|
|
#endif
|
|
buffer_param[0]=0x55; //flag gignal
|
|
//printf("+++++++rx %.2f 2 %.2f +++++ \n",rssi1,rssi2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|