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

📄 vmodem.h

📁 一个非常美妙的proxy。功能强大。基于sip的协议。如果还要的话
💻 H
字号:
/* * Asterisk -- An open source telephony toolkit. * * Copyright (C) 1999 - 2005, Digium, Inc. * * Mark Spencer <markster@digium.com> * * See http://www.asterisk.org for more information about * the Asterisk project. Please do not directly contact * any of the maintainers of this project for assistance; * the project provides a web site, mailing lists and IRC * channels for your use. * * This program is free software, distributed under the terms of * the GNU General Public License Version 2. See the LICENSE file * at the top of the source tree. *//*! \file * \brief Voice Modem Definitions */#ifndef _ASTERISK_VMODEM_H#define _ASTERISK_VMODEM_H#include "asterisk/frame.h"#include "asterisk/channel.h"#define CHAR_DLE		0x10#define CHAR_ETX		0x03#define CHAR_DC4		0x14#define MODEM_DEV_TELCO		0#define MODEM_DEV_TELCO_SPK	4#define MODEM_DEV_SPKRPHONE	6#define MODEM_DEV_HANDSET	9#define MODEM_DTMF_NONE		(1 << 0)#define MODEM_DTMF_AST		(1 << 1)#define MODEM_DTMF_I4L		(1 << 2)/* Thirty millisecond sections */#define MODEM_MAX_LEN		30#define MODEM_MAX_BUF		MODEM_MAX_LEN * 16#define AST_MAX_INIT_STR	256struct ast_modem_pvt;struct ast_modem_driver {	char *name;	char **idents;	int formats;	int fullduplex;	void (*incusecnt)(void);	void (*decusecnt)(void);	char * (*identify)(struct ast_modem_pvt *);	int (*init)(struct ast_modem_pvt *);	int (*setdev)(struct ast_modem_pvt *, int dev);	struct ast_frame * (*read)(struct ast_modem_pvt *);	int (*write)(struct ast_modem_pvt *, struct ast_frame *fr);	int (*dial)(struct ast_modem_pvt *, char *);	int (*answer)(struct ast_modem_pvt *);	int (*hangup)(struct ast_modem_pvt *);	int (*startrec)(struct ast_modem_pvt *);	int (*stoprec)(struct ast_modem_pvt *);	int (*startpb)(struct ast_modem_pvt *);	int (*stoppb)(struct ast_modem_pvt *);	int (*setsilence)(struct ast_modem_pvt *, int onoff);	int (*dialdigit)(struct ast_modem_pvt *, char digit);	struct ast_modem_driver *next;};#define MODEM_MODE_IMMEDIATE 		0#define MODEM_MODE_WAIT_RING		1#define MODEM_MODE_WAIT_ANSWER		2/*! Private data that needs to be filled by modem driver */struct ast_modem_pvt {	/*! Raw file descriptor for this device */	int fd;								/*! FILE * representation of device */	FILE *f;							/*! Channel we belong to, possibly NULL */	struct ast_channel *owner;			/* Device name */	char dev[256];						/*! Frame */	struct ast_frame fr;					char offset[AST_FRIENDLY_OFFSET];	/*! Outgoing buffer */	char obuf[MODEM_MAX_BUF];				int tail;	/*! Pulse or tone dialling */	char dialtype;						/*! Time to wait for dial timeout */	char dialtimeout;						int obuflen;	/*! Immediate, or wait for an answer */	int mode;							/*! State of modem in miniature */	int ministate;						/*! Digits to strip on outgoing numbers */	int stripmsd;						/*! Is the last thing we saw an escape */	int escape;						/*! flag to say if has caller*id yet*/	int gotclid;					/* Has a fax tone already been handled? */	int faxhandled;	/*! ringer timeout */	int ringt;					/*! actual time of last ring */	time_t lastring;				/*! dtmf receive state/data */	char dtmfrx;						char context[AST_MAX_EXTENSION];	/*! Multiple Subscriber Number */	char msn[AST_MAX_EXTENSION];		/*! Multiple Subscriber Number we listen to (; separated list) */	char incomingmsn[AST_MAX_EXTENSION];		/*! Multiple Subscriber Number we accept for outgoing calls (; separated list) */	char outgoingmsn[AST_MAX_EXTENSION];		/*! Group(s) we belong to if available */	ast_group_t group;	/*! Caller ID if available */	char cid_name[AST_MAX_EXTENSION];		/*! Caller ID if available */	char cid_num[AST_MAX_EXTENSION];		/*! DTMF-detection mode (i4l/asterisk) */	int dtmfmode;	/*! DTMF-generation mode (i4l (outband) / asterisk (inband) */	int dtmfmodegen;	/*! DSP for DTMF detection */	struct ast_dsp *dsp;	/*! Dialed Number if available */	char dnid[AST_MAX_EXTENSION];		/*! Modem initialization String */	char initstr[AST_MAX_INIT_STR];		/*! default language */	char language[MAX_LANGUAGE];		/*! Static response buffer */	char response[256];					/*! Modem Capability */	struct ast_modem_driver *mc;		/*! Next channel in list */	struct ast_modem_pvt *next;			};/*! Register a modem driver *//*! Register a driver */extern int ast_register_modem_driver(struct ast_modem_driver *mc);/*! Unregisters a modem driver *//*! Unregister a driver */extern int ast_unregister_modem_driver(struct ast_modem_driver *mc);/*! Sends command *//*! Send the command cmd (length len, or 0 if pure ascii) on modem */extern int ast_modem_send(struct ast_modem_pvt *p, char *cmd, int len);/*! Waits for result *//*! Wait for result to occur.  Return non-zero if times out or error, last   response is stored in p->response  */extern int ast_modem_expect(struct ast_modem_pvt *p,  char *result, int timeout);/*! Waits for result *//*! Wait for result to occur.    response is stored in p->response  */extern int ast_modem_read_response(struct ast_modem_pvt *p,  int timeout);/*! Used to start up the PBX on a RING *//*! Used by modem drivers to start up the PBX on a RING */extern struct ast_channel *ast_modem_new(struct ast_modem_pvt *i, int state);/*! Trim string of trailing stuff *//*! Trim off trailing mess */extern void ast_modem_trim(char *s);#endif /* _ASTERISK_VMODEM_H */

⌨️ 快捷键说明

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