www.pudn.com > arm.rar > main.c, change:2005-08-31,size:2543b


/************************************************
 *  GPRS demo, use ppp to connect internet
 *  use ttyS1 to ctrol GPRS
 *  by Zou jian guo <ah_zou@163.com>   
 *  2004-11-02
 *
*************************************************/


#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>

//#include <sys/signal.h>
#include <pthread.h>
#include "tty.h"
#include "gprs.h"

/*--------------------------------------------------------*/
#define ENDMINITERM 27 /* ESC to quit miniterm */
#define FALSE		0
#define TRUE  		1
/*--------------------------------------------------------*/
volatile int STOP=FALSE;
int GET_GPRS_OK=FALSE;
int baud=B9600;
int get_baudrate(int argc,char** argv);

char * cmd[20]={
		"at",
		"ate1",
		"at+chfa=1", 			//设置通话通道为1,AT+CHFA 命令切换主副音频通道
		"at+clvl=100",			//设置受话器音量最大, AT+CLVL 命令可以调节输出音频信号增益
		"at+cmic=1,10"			//设置通道1的话筒增益
//		"atd12345678\r",
};


void * keyshell() ;
/*--------------------------------------------------------*/

/*--------------------------------------------------------*/
/* modem input handler */
/*void* gprs_show(void * data)
{
	while(1){
		if(GET_GPRS_OK){
			GET_GPRS_OK=FALSE;
//			printf("%s",GPRS_BUF);
//			GPRS_parse(GPRS_BUF,&gps_info);
//			GPRS_show();
		}
		usleep(100);
		if(STOP)break;
	}

}*/

/*--------------------------------------------------------*/
/* modem input handler */
void* gprs_read(void * data)
{
	int i=0;
	char c;
	char buf[1024];
  	printf("\nread modem\n");
	
  	while (STOP==FALSE) 	{		
		
	    	tty_read(&c,1); 	
		printf("%c",c);	
	}
  	printf("exit from reading modem\n");
  	return NULL; 
}

/*--------------------------------------------------------*/
int main(int argc,char** argv)
{
	int ok;
 	pthread_t th_a, th_b, th_show;
 	void * retval;
	
	
	if(argc < 2) {
     	printf ("  Default baudrate is 9600 bps. If not, please enter the baudrate as a parameter\n");
	}
       else
		baud=get_baudrate(argc, argv);
		tty_init();

  	pthread_create(&th_a, NULL, keyshell, 0);
  	pthread_create(&th_b, NULL, gprs_read, 0);
//  	pthread_create(&th_show, NULL, gprs_show, 0);

	
	while(!STOP){
		usleep(100000);
	}
  	tty_end();
  	exit(0); 
}

int get_baudrate(int argc,char** argv)
{
	int v=atoi(argv[1]);
	 switch(v){
		case 4800:
			return B4800;
			
		case 9600:
			return B9600;
			
		case 19200:
			return B19200;
			
		case 38400:
			return B38400;
			
		case 57600:
			return B57600;
			
		case 115200:
			return B115200;
		default:
			return -1;
	 } 	 
}