⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 funciones.c

📁 Linux XForms语音Modem控制程序
💻 C
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <syslog.h>#include <unistd.h>#include <ctype.h>#include "aux.h"#include "funciones.h"#include "config.h"#include "../mdm_lib/mdm_lib.h"#include "msj.h"#define TBUF 80void muere(int retorno);int colgado= 1;int cogido= 1;void coge_modem(void)	{	status(MSJ_COGIENDO);	if( mdm_inicia(config.dev, config.vel) ) {		fprintf( stderr, MSJ_ERR_MDMINI );		cogido= 0; 	/* para evitar problemas en mdm_termina() de muere() */		muere(1);		}	mdm_verboso= config.debug;	cogido= 1;	status("OK");	}void suelta_modem(void)	{	status(MSJ_SOLTANDO);	if( cogido ) {		mdm_termina();		cogido= 0;		}	status("OK");	}void descuelga(void)	{	char buffer[TBUF];	status(MSJ_DESCOLG);	if( !cogido )		coge_modem();			/* clase 8: voz */	if( mdm_escribe_espera( "AT#CLS=8", 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "CLS=8" );		muere(1);		}	/* usar el speakerphone */	if( mdm_escribe_espera( "AT#VLS=6", 5, buffer, "VCON" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "VLS=6" );		muere(1);		}	/* ringback goes away */	if( mdm_escribe_espera( "AT#VRA=25", 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "VRA" );		muere(1);		}			/* d閏imas de segundo de duraci髇 de los DTMF generados */	if( mdm_escribe_espera( "AT#VBT=1", 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "VBT" );		muere(1);		}	/* descuelga (responge en voz) */	if( mdm_escribe_espera( "ATA", 5, buffer, "VCON" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "ATA" );		muere(1);		}	colgado= 0;	status("OK");	}void cuelga()	{	char buffer[TBUF];		status("Colgando");	if( mdm_escribe_espera( "ATH", 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "ATH" );		muere(1);		}	colgado= 1;	status("OK");	}void dtmf(int digito)	{	char buffer[TBUF], buffdt[TBUF];	if( !cogido || colgado )		return;			if( digito>=0 && digito<=9 )		sprintf( buffdt, "AT#VTS=%d", digito );	else if(digito==-1)		sprintf( buffdt, "AT#VTS=*\n" );	else 		sprintf( buffdt, "AT#VTS=#\n" );		if( mdm_escribe_espera( buffdt, 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "AT#VTS..." );		muere(1);		}	}		void marca_dtmf( char *numero )	{	int l, i;		l= strlen(numero);	for( i=0 ; i<l ; i++) {		if( isdigit( numero[i] ) )			dtmf( numero[i]-'0' );		else if( numero[i]=='*' )			dtmf(-1);		else if( numero[i]=='#' )			dtmf(-2);		else			printf( MSJ_ERR_NUMERO, numero[i] );		}	}	void fija_vol(int vol)	{	char buffer[TBUF], bufferat[TBUF];	sprintf( bufferat, "AT#VGR=%d", vol );	if( mdm_escribe_espera( bufferat, 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "AT#VGR" );		muere(1);		}	}	void fija_mic(int mic)	{	char buffer[TBUF], bufferat[TBUF];	sprintf( bufferat, "AT#VGT=%d", mic );	if( mdm_escribe_espera( bufferat, 5, buffer, "OK" ) ) {		fprintf( stderr, MSJ_FIN_PLAZO, "AT#VGT" );		muere(1);		}	}		void muere(int retorno)	{	status(MSJ_TERMIN);	if( cogido )		mdm_termina();	status("OK");	exit(retorno);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -