603 lines
12 KiB
C
603 lines
12 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];
|
|
|
|
char buffer_rf1[13];
|
|
char buffer_rf2[13];
|
|
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 setup_lc6600(struct lc6600_param *pparam){
|
|
int n_read;
|
|
char *read_ok;
|
|
char str[30];
|
|
|
|
uart_write(ROUTE_UART, "AT+CFUN=0\r");
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT+CFUN=0");
|
|
}
|
|
sleep(1);
|
|
//password
|
|
sprintf(str,"AT^DAPI=%d\r",pparam->password);
|
|
uart_write(ROUTE_UART, str);
|
|
printf("%s\n",str);
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DAPI");
|
|
}
|
|
sleep(1);
|
|
// 1 center 2 station
|
|
sprintf(str,"AT^DDTC=%d\r",pparam->ap_sta);
|
|
uart_write(ROUTE_UART, str);
|
|
printf("%s\n",str);
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DDTC");
|
|
}
|
|
sleep(1);
|
|
|
|
// sprintf(str,"AT^DDTC=%d\r",pparam->ap_sta);
|
|
uart_write(ROUTE_UART, "AT^DSTC=2\r");
|
|
printf("AT^DSTC\n");
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DDSTC");
|
|
}
|
|
sleep(1);
|
|
|
|
|
|
// 2 5M 3 10M 4 15M 5 20M "25" dbm
|
|
sprintf(str,"AT^DRPS=,%d,\"%d\"\r",pparam->bw,pparam->power);
|
|
uart_write(ROUTE_UART, str);
|
|
printf("%s\n",str);
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DRPS\n");
|
|
}
|
|
sleep(1);
|
|
// 01 800M 04 1.4G 08 2.4G
|
|
sprintf(str,"AT^DAOCNDI=0%d\r",pparam->freq);
|
|
uart_write(ROUTE_UART, str);
|
|
printf("%s\n",str);
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DAOCNDI\n");
|
|
}
|
|
|
|
sleep(1);
|
|
|
|
|
|
sprintf(str,"AT^NETIFCFG=2,\"192.168.2.%d\"\r",pparam->ip);
|
|
uart_write(ROUTE_UART, str);
|
|
printf("%s\n",str);
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT^DAOCNDI\n");
|
|
}
|
|
|
|
sleep(1);
|
|
|
|
uart_write(ROUTE_UART, "AT+CFUN=1\r");
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
read_ok = strstr(_rx_data,"OK");
|
|
if(read_ok == NULL){
|
|
printf("can not exce AT+CFUN=1");
|
|
}
|
|
|
|
|
|
|
|
}
|
|
#if 1
|
|
|
|
int get_rx1_freq(char *rx1,char *ip_str){
|
|
|
|
char *s1;
|
|
char *s2;
|
|
char *s3;
|
|
char *s4;
|
|
int len;
|
|
int i;
|
|
char index[4];
|
|
|
|
s1=strchr(rx1,',');
|
|
s2=strchr(s1+15,',');
|
|
//s3=strchr(s2+3,',');
|
|
//s4=strchr(s3+4,',');
|
|
|
|
len= s2-s1-1;
|
|
|
|
// printf("ip_str %s",ip_str);
|
|
printf("len %d s2 %s\n",len,s2);
|
|
for(i=0;i<len;i++){
|
|
freq1[i] = *(s1+1+i);
|
|
// printf("freq %s",freq1[i]);
|
|
}
|
|
//printf("freq %s\n",freq1);
|
|
|
|
|
|
strncpy(buffer_rf1,s2+1,12);
|
|
// printf("buffer_rf1 %s \n",buffer_rf1);
|
|
//if(strncmp(s2+1,"192.168.1.22",12)==0)
|
|
if(strncmp(s2+1,ip_str,12)==0)
|
|
{
|
|
strncpy(index,s2+14,1);
|
|
// printf("index %s \n",index);
|
|
if(strncmp(s2+14,"1",1)==0)
|
|
{
|
|
|
|
//printf("---====\n");
|
|
strncpy(buffer_rf1,s2+14,20);
|
|
s3=strchr(buffer_rf1+1,',');
|
|
s4=strchr(s3+1,',');
|
|
//printf("s3 : %s \n",s3);
|
|
//printf("s4 : %s \n",s4);
|
|
len=s4-s3-4;
|
|
// printf("s6 len %d\n",len);
|
|
for(i=0;i<len;i++)
|
|
{
|
|
|
|
dbm1[i]=*(s3+3+i);
|
|
// printf("11 %s ",dbm1[i]);
|
|
}
|
|
|
|
// printf("dbm1 %s ",dbm1);
|
|
}
|
|
#if 0
|
|
if(strncmp(s2+14,"2",1)==0){
|
|
|
|
//printf("1 2\n");
|
|
strncpy(buffer_rf2,s2+14,20);
|
|
s3=strchr(buffer_rf2+1,',');
|
|
s4=strchr(s3+1,',');
|
|
// printf("++2 s3 : %s \n",s3);
|
|
// printf("++2 s4 : %s \n",s4);
|
|
len=s4-s3-4;
|
|
// printf("s6 len %d\n",len);
|
|
for(i=0;i<len;i++)
|
|
{
|
|
dbm2[i]=*(s3+3+i);
|
|
// printf("dbm2 %s ",dbm2);
|
|
}
|
|
|
|
}
|
|
#endif
|
|
}
|
|
// len=s4-s3-1-2; //"-44"
|
|
// printf("S2 %s\n",s2);
|
|
// printf("S3 %s\n",s3);
|
|
// printf("S4 %s\n",s4);
|
|
#if 0
|
|
for(i=0;i<len;i++){
|
|
dbm1[i]=*(s3+2+i);
|
|
printf("11 %s ",dbm1[i]);
|
|
}
|
|
//printf("+++\n");
|
|
printf("dbm1 %s\n",dbm1);
|
|
#endif
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
int get_rx1_dbm(char *rx1 ){
|
|
|
|
char *s1;
|
|
char *s2;
|
|
char *s3;
|
|
char *s4;
|
|
int len;
|
|
int i;
|
|
|
|
s1=strchr(rx1,',');
|
|
s2=strchr(s1+1,',');
|
|
s3=strchr(s2+1,',');
|
|
s4=strchr(s3+1,',');
|
|
|
|
len= s2-s1-1;
|
|
|
|
for(i=0;i<len;i++){
|
|
freq1[i] = *(s1+1+i);
|
|
}
|
|
//printf("freq %s\n",freq1);
|
|
|
|
len=s3-s2-1-2; //"-44"
|
|
|
|
for(i=0;i<len;i++){
|
|
dbm1[i]=*(s2+2+i);
|
|
}
|
|
printf("dbm1 %s\n",dbm1);
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
int get_rx2_dbm(char *rx1){
|
|
|
|
char *s1;
|
|
char *s2;
|
|
char *s3;
|
|
char *s4;
|
|
int len;
|
|
int i;
|
|
|
|
s1=strchr(rx1,',');
|
|
s2=strchr(s1+1,',');
|
|
s3=strchr(s2+1,',');
|
|
s4=strchr(s3+1,',');
|
|
|
|
len= s2-s1-1;
|
|
|
|
for(i=0;i<len;i++){
|
|
freq1[i] = *(s1+1+i);
|
|
}
|
|
printf("freq %s\n",freq1);
|
|
|
|
len=s3-s2-1-2; //"-44"
|
|
|
|
for(i=0;i<len;i++){
|
|
dbm2[i]=*(s2+2+i);
|
|
}
|
|
printf("dbm2 %s\n",dbm2);
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
int get_rx2_freq(char *rx1,char *ip_str){
|
|
|
|
char *s1;
|
|
char *s2;
|
|
char *s3;
|
|
char *s4;
|
|
int len;
|
|
int i;
|
|
char index[4];
|
|
|
|
s1=strchr(rx1,',');
|
|
s2=strchr(s1+15,',');
|
|
//s3=strchr(s2+3,',');
|
|
//s4=strchr(s3+4,',');
|
|
|
|
len= s2-s1-1;
|
|
|
|
printf("rx2 len %d s2 %s\n",len,s2);
|
|
// for(i=0;i<len;i++){
|
|
// freq1[i] = *(s1+1+i);
|
|
// printf("freq %s",freq1[i]);
|
|
// }
|
|
//printf("freq %s\n",freq1);
|
|
|
|
//printf("222\n");
|
|
strncpy(buffer_rf2,s2+1,12);
|
|
//printf("buffer_rf2 %s \n",buffer_rf2);
|
|
if(strncmp(s2+1,ip_str,12)==0)
|
|
{
|
|
strncpy(index,s2+14,1);
|
|
//printf(" index %s \n",index);
|
|
#if 0
|
|
if(strncmp(s2+14,"1",1)==0)
|
|
{
|
|
|
|
printf("---====\n");
|
|
strncpy(buffer_rf1,s2+14,20);
|
|
s3=strchr(buffer_rf1+1,',');
|
|
s4=strchr(s3+1,',');
|
|
//printf("s3 : %s \n",s3);
|
|
//printf("s4 : %s \n",s4);
|
|
len=s4-s3-4;
|
|
printf("s6 len %d\n",len);
|
|
for(i=0;i<len;i++)
|
|
{
|
|
|
|
dbm1[i]=*(s3+3+i);
|
|
// printf("11 %s ",dbm1[i]);
|
|
}
|
|
|
|
printf("dbm1 %s ",dbm1);
|
|
}
|
|
#endif
|
|
|
|
if(strncmp(s2+14,"2",1)==0){
|
|
|
|
strncpy(buffer_rf2,s2+14,20);
|
|
s3=strchr(buffer_rf2+1,',');
|
|
s4=strchr(s3+1,',');
|
|
// printf("++2 s3 : %s \n",s3);
|
|
// printf("++2 s4 : %s \n",s4);
|
|
len=s4-s3-4;
|
|
// printf("s6 len %d\n",len);
|
|
for(i=0;i<len;i++)
|
|
{
|
|
dbm2[i]=*(s3+3+i);
|
|
}
|
|
// printf("dbm2 %s \n ",dbm2);
|
|
for(i=0;i<5;i++){
|
|
dbm2[i+2]=0x00;
|
|
}
|
|
// printf("+++dbm2 %s \n ",dbm2);
|
|
// printf("~~~~\n");
|
|
|
|
}
|
|
}
|
|
// len=s4-s3-1-2; //"-44"
|
|
// printf("S2 %s\n",s2);
|
|
// printf("S3 %s\n",s3);
|
|
// printf("S4 %s\n",s4);
|
|
#if 0
|
|
for(i=0;i<len;i++){
|
|
dbm1[i]=*(s3+2+i);
|
|
printf("11 %s ",dbm1[i]);
|
|
}
|
|
//printf("+++\n");
|
|
printf("dbm1 %s\n",dbm1);
|
|
#endif
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
#if 0
|
|
int get_rx2_freq(char *rx2){
|
|
|
|
char *s1;
|
|
char *s2;
|
|
char *s3;
|
|
char *s4;
|
|
int len;
|
|
int i;
|
|
|
|
s1=strchr(rx2,',');
|
|
s2=strchr(s1+15,',');
|
|
//s3=strchr(s2+1,',');
|
|
//s4=strchr(s3+1,',');
|
|
|
|
len= s2-s1-1;
|
|
|
|
printf("len %d s2 %s\n",len,s2);
|
|
for(i=0;i<len;i++){
|
|
freq2[i] = *(s1+1+i);
|
|
}
|
|
//printf("freq %s\n",freq2);
|
|
|
|
if(strncmp(s2+14,"2",1)==0)
|
|
{
|
|
|
|
strncpy(buffer_rf2,s2+14,20);
|
|
s3=strchr(buffer_rf2+1,',');
|
|
s4=strchr(s3+1,',');
|
|
printf("--2--s3 : %s \n",s3);
|
|
printf("--2--s4 : %s \n",s4);
|
|
len=s4-s3-4;
|
|
printf("s6 len %d\n",len);
|
|
for(i=0;i<len;i++)
|
|
{
|
|
|
|
dbm2[i]=*(s3+i);
|
|
// printf("11 %s ",dbm1[i]);
|
|
}
|
|
|
|
printf("dbm2 %s \n",dbm2);
|
|
}
|
|
|
|
#if 0
|
|
len=s4-s3-1-2; //"-44"
|
|
|
|
for(i=0;i<len;i++){
|
|
dbm2[i]=*(s3+2+i);
|
|
}
|
|
printf("dbm1 %s\n",dbm1);
|
|
#endif
|
|
return 0;
|
|
|
|
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int main (int argc, char *argv[])
|
|
{
|
|
int n_read;
|
|
int i;
|
|
struct lc6600_param lc6600;
|
|
|
|
char buffer[1024];
|
|
//char rx1[1024];
|
|
//char rx2[3];
|
|
char ip[13];
|
|
|
|
char *rx1;
|
|
char *rx2;
|
|
int rssi1;
|
|
int rssi2;
|
|
//int dbm1;
|
|
//int dbm2;
|
|
char *ip_str;
|
|
|
|
char *buffer_freq;
|
|
char freq_str[6];
|
|
int freq;
|
|
int fq;
|
|
|
|
int fd_param;
|
|
int *buffer_param;
|
|
|
|
int len;
|
|
n_read = uart_init(ROUTE_UART, "/dev/ttyAMA2", 115200, 'N');
|
|
if(n_read <=0 ) {
|
|
printf("open /dev/ttyAMA2 failed\n");
|
|
return -1;
|
|
}
|
|
|
|
lc6600.ap_sta = atoi(argv[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);
|
|
|
|
#if 0
|
|
uart_write(ROUTE_UART, "AT^DRPS?\r");
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
printf("%s\n",_rx_data);
|
|
|
|
buffer_freq=strstr(_rx_data,"^DRPS:");
|
|
strncpy(freq_str,buffer_freq+6,6);
|
|
|
|
printf("drps : %s\n",freq_str);
|
|
freq = atoi(freq_str);
|
|
//printf("freq: %d\n",freq);
|
|
|
|
buffer_param[3] = freq;
|
|
|
|
#endif
|
|
|
|
// freq=atoi(argv[3]);
|
|
// printf("freq %d \n",freq);
|
|
// buffer_param[3]=freq;
|
|
// buffer_param[0] = 0x55;
|
|
buffer_param[3] = 14300;
|
|
if(lc6600.ap_sta == 1){
|
|
uart_write(ROUTE_UART, "AT^DRPR=1\r");
|
|
//n_read = uart_read(ROUTE_UART, _rx_data);
|
|
//printf("%s\n",_rx_data);
|
|
|
|
while(1){
|
|
|
|
n_read = uart_read(ROUTE_UART, _rx_data);
|
|
|
|
// printf("%s\n",_rx_data);
|
|
|
|
//#if 1
|
|
if(n_read > 0){
|
|
|
|
//ip_str=strstr(_rx_data,argv[2]);
|
|
//ip_str=strstr(_rx_data,"192.168.1.15");
|
|
//*ip_str=argv[2];
|
|
|
|
//strncmp(ip,argv[2],12);
|
|
memcpy(ip,argv[2],12);
|
|
//printf("---%s %s \n",argv[2],ip);
|
|
|
|
if(strncmp(_rx_data+2,"^DRPRI:",7)==0){
|
|
strncpy(buffer,_rx_data,n_read);
|
|
len=n_read;
|
|
// printf("len %d\n",len);
|
|
}else if(len >=54 && len <178 ){
|
|
strncpy(buffer+len,_rx_data,n_read);
|
|
len+=n_read;
|
|
// printf("+n_rean %d\n ",len);
|
|
}
|
|
|
|
if(len > 178){
|
|
// printf("--%s\n",buffer);
|
|
len =0;
|
|
|
|
rx1=strstr(buffer,"^DRPRI:");
|
|
|
|
get_rx1_freq(rx1,ip);
|
|
|
|
rx2 = strstr(buffer+20,"^DRPRI:");
|
|
get_rx2_freq(rx2,ip);
|
|
|
|
//buffer_param[1] = dbm1;
|
|
//buffer_param[2] = dbm2;
|
|
|
|
printf("rf %s rf2 %s \n",dbm1,dbm2);
|
|
rssi1=atoi(dbm1);
|
|
rssi2=atoi(dbm2);
|
|
//printf("rssi1 %x %x \n",rssi1,rssi2);
|
|
|
|
buffer_param[1]=rssi1;
|
|
buffer_param[2]=rssi2;
|
|
|
|
//memcpy(buffer_param,freq,10);
|
|
//memcpy(buffer_param+1,dbm1,4);
|
|
//memcpy(buffer_param+2,dbm2,4);
|
|
//buffer_param[20] = 1;
|
|
}
|
|
|
|
//memcpy(rx1,ip_str+18,20);
|
|
//printf("rx1: %s \n",rx1);
|
|
#if 0
|
|
if(ip_str){
|
|
//buffer_param[0] = 0x55;
|
|
|
|
if((*(ip_str+14)) == '1'){
|
|
memcpy(rx1,ip_str+18,3);
|
|
dbm1 = atoi(rx1);
|
|
printf("++dbm1:%d\n",dbm1);
|
|
buffer_param[1] = dbm1;
|
|
|
|
}
|
|
|
|
if((*(ip_str+14)) == '2'){
|
|
memcpy(rx2,ip_str+18,3);
|
|
dbm2 = atoi(rx2);
|
|
printf("++dbm2:%d\n",dbm2);
|
|
buffer_param[2] = dbm2;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
// else{
|
|
// printf("no signal\n");
|
|
// buffer_param[0] = 0xAA;
|
|
// }
|
|
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|