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

📄 tap.c

📁 使用TAP的蜂窝型GSM手机短消息服务中心
💻 C
📖 第 1 页 / 共 2 页
字号:
/* -------------------------------------------------------------------- *//* SMS Client, send messages to mobile phones and pagers		*//*									*//* tap.c								*//*									*//*  Copyright (C) 1997,1998 Angelo Masci				*//*									*//*  This library is free software; you can redistribute it and/or	*//*  modify it under the terms of the GNU Library General Public		*//*  License as published by the Free Software Foundation; either	*//*  version 2 of the License, or (at your option) any later version.	*//*									*//*  This library is distributed in the hope that it will be useful,	*//*  but WITHOUT ANY WARRANTY; without even the implied warranty of	*//*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU	*//*  Library General Public License for more details.			*//*									*//*  You should have received a copy of the GNU Library General Public	*//*  License along with this library; if not, write to the Free		*//*  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.	*//*									*//*  You can contact the author at this e-mail address:			*//*									*//*  angelo@styx.demon.co.uk						*//*									*//* -------------------------------------------------------------------- *//* $Id: tap.c,v 5.1 1998/02/01 07:10:39 root Exp root $   -------------------------------------------------------------------- */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include "common.h"#include "logfile.h"#include "driver.h"#include "expect.h"#include "sms_error.h"#include "sms_resource.h"#include "ascii.h"/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */static struct tap_env{	DRIVER_DEFAULT_ENV def;	/* Place any extended driver	*/ 	/* variables here 		*/	long 	max_tries,	 	login_timeout,		init_login_sleep,			login_sleep;	char	*select,		*response,		*disconnect;} driver_env;/* -------------------------------------------------------------------- */static 	RESOURCE resource_list[] = 	{		{ RESOURCE_STRING,  "SMS_comms_params", 	0, 1, NULL, 0,  "8N1",  0, 	 &(driver_env.def.comms_params)  	},		{ RESOURCE_STRING,  "SMS_centre_number", 	0, 1, NULL, 0,  NULL,   0, 	 &(driver_env.def.centre_number)  	},		{ RESOURCE_NUMERIC, "SMS_baud", 		0, 1, NULL, 0,  NULL,   9600, 	 &(driver_env.def.baud)  		},		{ RESOURCE_NUMERIC, "SMS_deliver_timeout", 	0, 0, NULL, 0,  NULL,   30, 	 &(driver_env.def.deliver_timeout)  	},		{ RESOURCE_NUMERIC, "SMS_timeout", 		0, 0, NULL, 0,  NULL,   10, 	 &(driver_env.def.timeout)  		},		{ RESOURCE_NUMERIC, "SMS_login_timeout", 	0, 0, NULL, 0,  NULL,   10, 	 &(driver_env.login_timeout)  		},		{ RESOURCE_NUMERIC, "SMS_login_sleep", 		0, 0, NULL, 0,  NULL,   2000000, &(driver_env.login_sleep)  		},		{ RESOURCE_NUMERIC, "SMS_init_login_sleep", 	0, 0, NULL, 0,  NULL,   1500000, &(driver_env.init_login_sleep)  	},		{ RESOURCE_NUMERIC, "SMS_write_timeout", 	0, 0, NULL, 0,  NULL,   10, 	 &(driver_env.def.write_timeout)  	},		{ RESOURCE_NUMERIC, "SMS_max_tries", 		0, 0, NULL, 0,  NULL,   5, 	 &(driver_env.max_tries)  		},		{ RESOURCE_NUMERIC, "SMS_max_deliver", 		0, 0, NULL, 0,  NULL,   0, 	 &(driver_env.def.max_deliver) 	        },		{ RESOURCE_STRING,  "SMS_tap_select", 		0, 0, NULL, 0,  "PG1",  0, 	 &(driver_env.select) 	                },		{ RESOURCE_STRING,  "SMS_tap_response", 	0, 0, NULL, 0,  "TRUE", 0, 	 &(driver_env.response) 	        },		{ RESOURCE_STRING,  "SMS_tap_disconnect", 	0, 0, NULL, 0,  "TRUE", 0, 	 &(driver_env.disconnect) 	        },		{ RESOURCE_NULL,     NULL, 			0, 1, NULL, 0,  NULL,   0, 	 NULL  					}	};/* -------------------------------------------------------------------- */#define DELIVERTIMEOUT 		(driver_env.def.deliver_timeout)#define TIMEOUT 		(driver_env.def.timeout)#define LOGINTIMEOUT 		(driver_env.login_timeout)#define LOGINSLEEP 		(driver_env.login_sleep)#define INITLOGINSLEEP 		(driver_env.init_login_sleep)#define WRITETIMEOUT 		(driver_env.def.write_timeout)#define TAP_SELECT              (driver_env.select)#define TAP_RESPONSE		(strcmp(driver_env.response, "TRUE") == 0)#define TAP_DISCONNECT		(strcmp(driver_env.disconnect, "TRUE") == 0)/* -------------------------------------------------------------------- */#define FD			(driver_env.def.fd)/* -------------------------------------------------------------------- */#define MAX_TRIES		(driver_env.max_tries)#define MAX_TAPMESSAGE	150#define MAX_ENVELOPE 	64#define MAX_NUMBER	20#define MAX_MOBILENUM	20#define MAX_MESSAGE	512/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */static char TAP_charset[] =	{		0x20 /* 0x00    */, 0x20 /* 0x01    */, 0x20 /* 0x02    */,		0x20 /* 0x03    */, 0x20 /* 0x04    */, 0x20 /* 0x05    */,		0x20 /* 0x06    */, 0x20 /* 0x07    */, 0x20 /* 0x08    */,		0x20 /* 0x09    */, 0x0A /* 0x0A LF */, 0x20 /* 0x0B    */,		0x20 /* 0x0C    */, 0x0A /* 0x0D LF */, 0x20 /* 0x0E    */,		0x20 /* 0x0F    */, 0x20 /* 0x10    */, 0x20 /* 0x11    */,		0x20 /* 0x12    */, 0x20 /* 0x13    */, 0x20 /* 0x14    */,		0x20 /* 0x15    */, 0x20 /* 0x16    */, 0x20 /* 0x17    */,		0x20 /* 0x18    */, 0x20 /* 0x19    */, 0x20 /* 0x1A    */,		0x20 /* 0x1B    */, 0x20 /* 0x1C    */, 0x20 /* 0x1D    */,		0x20 /* 0x1E    */, 0x20 /* 0x1F    */, 0x20 /* 0x20    */,		0x21 /* 0x21 !  */, 0x22 /* 0x22 "  */, 0x23 /* 0x23 #  */,		0x24 /* 0x24 $  */, 0x25 /* 0x25 %  */, 0x26 /* 0x26 &  */,		0x27 /* 0x27 '  */, 0x28 /* 0x28 (  */, 0x29 /* 0x29 )  */,		0x2A /* 0x2A *  */, 0x2B /* 0x2B +  */, 0x2C /* 0x2C ,  */,		0x2D /* 0x2D -  */, 0x2E /* 0x2E .  */, 0x2F /* 0x2F /  */,		0x30 /* 0x30 0  */, 0x31 /* 0x31 1  */, 0x32 /* 0x32 2  */,		0x33 /* 0x33 3  */, 0x34 /* 0x34 4  */, 0x35 /* 0x35 5  */,		0x36 /* 0x36 6  */, 0x37 /* 0x37 7  */, 0x38 /* 0x38 8  */,		0x39 /* 0x39 9  */, 0x3A /* 0x3A :  */, 0x3B /* 0x3B ;  */,		0x3C /* 0x3C <  */, 0x3D /* 0x3D =  */, 0x3E /* 0x3E >  */,		0x3F /* 0x3F ?  */, 0x40 /* 0x40 @  */, 0x41 /* 0x41 A  */,		0x42 /* 0x42 B  */, 0x43 /* 0x43 C  */, 0x44 /* 0x44 D  */,		0x45 /* 0x45 E  */, 0x46 /* 0x46 F  */, 0x47 /* 0x47 G  */,		0x48 /* 0x48 H  */, 0x49 /* 0x49 I  */, 0x4A /* 0x4A J  */,		0x4B /* 0x4B K  */, 0x4C /* 0x4C L  */, 0x4D /* 0x4D M  */,		0x4E /* 0x4E N  */, 0x4F /* 0x4F O  */, 0x50 /* 0x50 P  */,		0x51 /* 0x51 Q  */, 0x52 /* 0x52 R  */, 0x53 /* 0x53 S  */,		0x54 /* 0x54 T  */, 0x55 /* 0x55 U  */, 0x56 /* 0x56 V  */,		0x57 /* 0x57 W  */, 0x58 /* 0x58 X  */, 0x59 /* 0x59 Y  */,		0x5A /* 0x5A Z  */, 0x20 /* 0x5B    */, 0x20 /* 0x5C    */,		0x20 /* 0x5D    */, 0x20 /* 0x5E    */, 0x20 /* 0x5F    */,		0x20 /* 0x60    */, 0x61 /* 0x61 a  */, 0x62 /* 0x62 b  */,		0x63 /* 0x63 c  */, 0x64 /* 0x64 d  */, 0x65 /* 0x65 e  */,		0x66 /* 0x66 f  */, 0x67 /* 0x67 g  */, 0x68 /* 0x68 h  */,		0x69 /* 0x69 i  */, 0x6A /* 0x6A j  */, 0x6B /* 0x6B k  */,		0x6C /* 0x6C l  */, 0x6D /* 0x6D m  */, 0x6E /* 0x6E n  */,		0x6F /* 0x6F o  */, 0x70 /* 0x70 p  */, 0x71 /* 0x71 q  */,		0x72 /* 0x72 r  */, 0x73 /* 0x73 s  */, 0x74 /* 0x74 t  */,		0x75 /* 0x75 u  */, 0x76 /* 0x76 v  */, 0x77 /* 0x77 w  */,		0x78 /* 0x78 x  */, 0x79 /* 0x79 y  */, 0x7A /* 0x7A z  */,		0x20 /* 0x7B    */, 0x20 /* 0x7C    */, 0x20 /* 0x7D    */,		0x20 /* 0x7E    */, 0x20 /* 0x7F    */, 0x20 /* 0x80    */,		0x20 /* 0x81    */, 0x20 /* 0x82    */, 0x20 /* 0x83    */,		0x20 /* 0x84    */, 0x20 /* 0x85    */, 0x20 /* 0x86    */,		0x20 /* 0x87    */, 0x20 /* 0x88    */, 0x20 /* 0x89    */,		0x20 /* 0x8A    */, 0x20 /* 0x8B    */, 0x20 /* 0x8C    */,		0x20 /* 0x8D    */, 0x20 /* 0x8E    */, 0x20 /* 0x8F    */,		0x20 /* 0x90    */, 0x20 /* 0x91    */, 0x20 /* 0x92    */,		0x20 /* 0x93    */, 0x20 /* 0x94    */, 0x20 /* 0x95    */,		0x20 /* 0x96    */, 0x20 /* 0x97    */, 0x20 /* 0x98    */,		0x20 /* 0x99    */, 0x20 /* 0x9A    */, 0x20 /* 0x9B    */,		0x20 /* 0x9C    */, 0x20 /* 0x9D    */, 0x20 /* 0x9E    */,		0x20 /* 0x9F    */, 0x20 /* 0xA0    */, 0x20 /* 0xA1    */,		0x20 /* 0xA2    */, 0x20 /* 0xA3    */, 0x20 /* 0xA4    */,		0x20 /* 0xA5    */, 0x20 /* 0xA6    */, 0x20 /* 0xA7    */,		0x20 /* 0xA8    */, 0x20 /* 0xA9    */, 0x20 /* 0xAA    */,		0x20 /* 0xAB    */, 0x20 /* 0xAC    */, 0x20 /* 0xAD    */,		0x20 /* 0xAE    */, 0x20 /* 0xAF    */, 0x20 /* 0xB0    */,		0x20 /* 0xB1    */, 0x20 /* 0xB2    */, 0x20 /* 0xB3    */,		0x20 /* 0xB4    */, 0x20 /* 0xB5    */, 0x20 /* 0xB6    */,		0x20 /* 0xB7    */, 0x20 /* 0xB8    */, 0x20 /* 0xB9    */,		0x20 /* 0xBA    */, 0x20 /* 0xBB    */, 0x20 /* 0xBC    */,		0x20 /* 0xBD    */, 0x20 /* 0xBE    */, 0x20 /* 0xBF    */,		0x20 /* 0xC0    */, 0x20 /* 0xC1    */, 0x20 /* 0xC2    */,		0x20 /* 0xC3    */, 0x20 /* 0xC4    */, 0x20 /* 0xC5    */,		0x20 /* 0xC6    */, 0x20 /* 0xC7    */, 0x20 /* 0xC8    */,		0x20 /* 0xC9    */, 0x20 /* 0xCA    */, 0x20 /* 0xCB    */,		0x20 /* 0xCC    */, 0x20 /* 0xCD    */, 0x20 /* 0xCE    */,		0x20 /* 0xCF    */, 0x20 /* 0xD0    */, 0x20 /* 0xD1    */,		0x20 /* 0xD2    */, 0x20 /* 0xD3    */, 0x20 /* 0xD4    */,		0x20 /* 0xD5    */, 0x20 /* 0xD6    */, 0x20 /* 0xD7    */,		0x20 /* 0xD8    */, 0x20 /* 0xD9    */, 0x20 /* 0xDA    */,		0x20 /* 0xDB    */, 0x20 /* 0xDC    */, 0x20 /* 0xDD    */,		0x20 /* 0xDE    */, 0x20 /* 0xDF    */, 0x20 /* 0xE0    */,		0x20 /* 0xE1    */, 0x20 /* 0xE2    */, 0x20 /* 0xE3    */,		0x20 /* 0xE4    */, 0x20 /* 0xE5    */, 0x20 /* 0xE6    */,		0x20 /* 0xE7    */, 0x20 /* 0xE8    */, 0x20 /* 0xE9    */,		0x20 /* 0xEA    */, 0x20 /* 0xEB    */, 0x20 /* 0xEC    */,		0x20 /* 0xED    */, 0x20 /* 0xEE    */, 0x20 /* 0xEF    */,		0x20 /* 0xF0    */, 0x20 /* 0xF1    */, 0x20 /* 0xF2    */,		0x20 /* 0xF3    */, 0x20 /* 0xF4    */, 0x20 /* 0xF5    */,		0x20 /* 0xF6    */, 0x20 /* 0xF7    */, 0x20 /* 0xF8    */,		0x20 /* 0xF9    */, 0x20 /* 0xFA    */, 0x20 /* 0xFB    */,		0x20 /* 0xFC    */, 0x20 /* 0xFD    */, 0x20 /* 0xFE    */,		0x20 /* 0xFF    */	};/* -------------------------------------------------------------------- */static char ACK1[] = { 'I', 'D', '=', '\0' };static char ACK2[] = { S_ACK, S_CR, '\0' };static char ACK3[] = { S_ESC, '[',  'p',  S_CR, '\0' };static char ACK4[] = { S_CR, '\0' };static char ACK5[] = { S_ACK, S_CR, '\0' };static char ACK6[] = { S_NAK, S_CR, '\0' };static char ACK7[] = { S_RS, S_CR, '\0' };static char ACK8[] = { S_ESC, S_EOT, S_CR, '\0' };static char REQ1[]  = { S_CR, '\0' };static char REQ2a[] = { S_ESC, '\0' };static char REQ2b[] = { S_CR, '\0' };static char REQ3[]  = { S_STX, '\0' };static char REQ4[]  = { S_CR, '\0' };static char REQ5[]  = { S_CR, S_ETX, '\0' };static char REQ6[]  = { S_CR, '\0' };static char REQ7[]  = { S_EOT, S_CR, '\0' };/* -------------------------------------------------------------------- */static char buf[MAX_RESPONSE_BUFSIZE];/* -------------------------------------------------------------------- */static void TAP_checksum(char *);static void TAP_hangup(void);static void TAP_buildmessage(char *, char *, char *);static int TAP_send_disconnect(void);static int TAP_login(void);static int TAP_sendmessage(char *, char *);

⌨️ 快捷键说明

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