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

📄 libpri.h

📁 Q.931/Q.921 source code compiles
💻 H
📖 第 1 页 / 共 2 页
字号:
#define PRI_CALLINGPLANANI#define PRI_CALLINGPLANRDNIStypedef struct pri_event_ring {	int e;	int channel;				/* Channel requested */	int callingpres;			/* Presentation of Calling CallerID */	int callingplanani;			/* Dialing plan of Calling entity ANI */	int callingplan;			/* Dialing plan of Calling entity */	char callingani[256];		/* Calling ANI */	char callingnum[256];		/* Calling number */	char callingname[256];		/* Calling name (if provided) */	int calledplan;				/* Dialing plan of Called number */	int ani2;                   /* ANI II */	char callednum[256];		/* Called number */	char redirectingnum[256];	/* Redirecting number */	char redirectingname[256];	/* Redirecting name */	int redirectingreason;		/* Reason for redirect */	int callingplanrdnis;			/* Dialing plan of Redirecting Number */	char useruserinfo[260];		/* User->User info */	int flexible;				/* Are we flexible with our channel selection? */	int cref;					/* Call Reference Number */	int ctype;					/* Call type (see PRI_TRANS_CAP_* */	int layer1;					/* User layer 1 */	int complete;				/* Have we seen "Complete" i.e. no more number? */	q931_call *call;			/* Opaque call pointer */	char callingsubaddr[256];	/* Calling parties subaddress */	int progress;	int progressmask;	char origcalledname[256];	char origcallednum[256];	int callingplanorigcalled;		/* Dialing plan of Originally Called Number */	int origredirectingreason;} pri_event_ring;typedef struct pri_event_hangup {	int e;	int channel;				/* Channel requested */	int cause;	int cref;	q931_call *call;			/* Opaque call pointer */	long aoc_units;				/* Advise of Charge number of charged units */	char useruserinfo[260];		/* User->User info */} pri_event_hangup;	typedef struct pri_event_restart_ack {	int e;	int channel;} pri_event_restart_ack;#define PRI_PROGRESS_CAUSEtypedef struct pri_event_proceeding {	int e;	int channel;	int cref;	int progress;	int progressmask;	int cause;	q931_call *call;} pri_event_proceeding; typedef struct pri_event_setup_ack {	int e;	int channel;	q931_call *call;} pri_event_setup_ack;typedef struct pri_event_notify {	int e;	int channel;	int info;} pri_event_notify;typedef struct pri_event_keypad_digit {	int e;	int channel;	q931_call *call;	char digits[64];} pri_event_keypad_digit;typedef union {	int e;	pri_event_generic gen;		/* Generic view */	pri_event_restart restart;	/* Restart view */	pri_event_error	  err;		/* Error view */	pri_event_facname facname;	/* Caller*ID Name on Facility */	pri_event_ring	  ring;		/* Ring */	pri_event_hangup  hangup;	/* Hang up */	pri_event_ringing ringing;	/* Ringing */	pri_event_answer  answer;	/* Answer */	pri_event_restart_ack restartack;	/* Restart Acknowledge */	pri_event_proceeding  proceeding;	/* Call proceeding & Progress */	pri_event_setup_ack   setup_ack;	/* SETUP_ACKNOWLEDGE structure */	pri_event_notify notify;		/* Notification */	pri_event_keypad_digit digit;			/* Digits that come during a call */} pri_event;struct pri;struct pri_sr;#define PRI_IO_FUNCS/* Type declaration for callbacks to read or write a HDLC frame as below */typedef int (*pri_io_cb)(struct pri *pri, void *buf, int buflen);/* Create a D-channel on a given file descriptor.  The file descriptor must be a   channel operating in HDLC mode with FCS computed by the fd's driver.  Also it   must be NON-BLOCKING! Frames received on the fd should include FCS.  Nodetype    must be one of PRI_NETWORK or PRI_CPE.  switchtype should be PRI_SWITCH_* */struct pri *pri_new(int fd, int nodetype, int switchtype);struct pri *pri_new_bri(int fd, int ptpmode, int nodetype, int switchtype);/* Create D-channel just as above with user defined I/O callbacks and data */struct pri *pri_new_cb(int fd, int nodetype, int switchtype, pri_io_cb io_read, pri_io_cb io_write, void *userdata);/* Retrieve the user data associated with the D channel */void *pri_get_userdata(struct pri *pri);/* Set the user data associated with the D channel */void pri_set_userdata(struct pri *pri, void *userdata);/* Set Network Specific Facility for PRI */void pri_set_nsf(struct pri *pri, int nsf);/* Set debug parameters on PRI -- see above debug definitions */void pri_set_debug(struct pri *pri, int debug);/* Get debug parameters on PRI -- see above debug definitions */int pri_get_debug(struct pri *pri);#define PRI_FACILITY_ENABLE/* Enable transmission support of Facility IEs on the pri */void pri_facility_enable(struct pri *pri);/* Run PRI on the given D-channel, taking care of any events that   need to be handled.  If block is set, it will block until an event   occurs which needs to be handled */pri_event *pri_dchannel_run(struct pri *pri, int block);/* Check for an outstanding event on the PRI */pri_event *pri_check_event(struct pri *pri);/* Give a name to a given event ID */char *pri_event2str(int id);/* Give a name to a node type */char *pri_node2str(int id);/* Give a name to a switch type */char *pri_switch2str(int id);/* Print an event */void pri_dump_event(struct pri *pri, pri_event *e);/* Turn presentation into a string */char *pri_pres2str(int pres);/* Turn numbering plan into a string */char *pri_plan2str(int plan);/* Turn cause into a string */char *pri_cause2str(int cause);/* Acknowledge a call and place it on the given channel.  Set info to non-zero if there   is in-band data available on the channel */int pri_acknowledge(struct pri *pri, q931_call *call, int channel, int info);/* Send a digit in overlap mode */int pri_information(struct pri *pri, q931_call *call, char digit);#define PRI_KEYPAD_FACILITY_TX/* Send a keypad facility string of digits */int pri_keypad_facility(struct pri *pri, q931_call *call, char *digits);/* Answer the incomplete(call without called number) call on the given channel.   Set non-isdn to non-zero if you are not connecting to ISDN equipment */int pri_need_more_info(struct pri *pri, q931_call *call, int channel, int nonisdn);/* Answer the call on the given channel (ignored if you called acknowledge already).   Set non-isdn to non-zero if you are not connecting to ISDN equipment */int pri_answer(struct pri *pri, q931_call *call, int channel, int nonisdn);/* Set CRV reference for GR-303 calls */#undef pri_release#undef pri_disconnect/* backwards compatibility for those who don't use asterisk with libpri */#define pri_release(a,b,c) \	pri_hangup(a,b,c)#define pri_disconnect(a,b,c) \	pri_hangup(a,b,c)/* Hangup a call */#define PRI_HANGUPint pri_hangup(struct pri *pri, q931_call *call, int cause);#define PRI_DESTROYCALLvoid pri_destroycall(struct pri *pri, q931_call *call);#define PRI_RESTARTint pri_restart(struct pri *pri);int pri_reset(struct pri *pri, int channel);/* Create a new call */q931_call *pri_new_call(struct pri *pri);/* Retrieve CRV reference for GR-303 calls.  Returns >0 on success. */int pri_get_crv(struct pri *pri, q931_call *call, int *callmode);/* Retrieve CRV reference for GR-303 calls.  CRV must be >0, call mode should be 0 */int pri_set_crv(struct pri *pri, q931_call *call, int crv, int callmode);/* How long until you need to poll for a new event */struct timeval *pri_schedule_next(struct pri *pri);/* Run any pending schedule events */extern pri_event *pri_schedule_run(struct pri *pri);extern pri_event *pri_schedule_run_tv(struct pri *pri, const struct timeval *now);int pri_call(struct pri *pri, q931_call *c, int transmode, int channel,   int exclusive, int nonisdn, char *caller, int callerplan, char *callername, int callerpres,	 char *called,int calledplan, int ulayer1);struct pri_sr *pri_sr_new(void);void pri_sr_free(struct pri_sr *sr);int pri_sr_set_channel(struct pri_sr *sr, int channel, int exclusive, int nonisdn);int pri_sr_set_bearer(struct pri_sr *sr, int transmode, int userl1);int pri_sr_set_called(struct pri_sr *sr, char *called, int calledplan, int complete);int pri_sr_set_caller(struct pri_sr *sr, char *caller, char *callername, int callerplan, int callerpres);int pri_sr_set_redirecting(struct pri_sr *sr, char *num, int plan, int pres, int reason);#define PRI_USER_USER_TX/* Set the user user field.  Warning!  don't send binary data accross this field */void pri_sr_set_useruser(struct pri_sr *sr, const char *userchars);void pri_call_set_useruser(q931_call *sr, const char *userchars);int pri_setup(struct pri *pri, q931_call *call, struct pri_sr *req);/* Set a call has a call indpendent signalling connection (i.e. no bchan) */int pri_sr_set_connection_call_independent(struct pri_sr *req);/* Send an MWI indication to a remote location.  If activate is non zero, activates, if zero, decativates */int pri_mwi_activate(struct pri *pri, q931_call *c, char *caller, int callerplan, char *callername, int callerpres, char *called, int calledplan);/* Send an MWI deactivate request to a remote location */int pri_mwi_deactivate(struct pri *pri, q931_call *c, char *caller, int callerplan, char *callername, int callerpres, char *called, int calledplan);#define PRI_2BCT/* Attempt to pass the channels back to the NET side if compatable and * suscribed.  Sometimes called 2 bchannel transfer (2BCT) */int pri_channel_bridge(q931_call *call1, q931_call *call2);/* Override message and error stuff */#define PRI_NEW_SET_APIvoid pri_set_message(void (*__pri_error)(struct pri *pri, char *));void pri_set_error(void (*__pri_error)(struct pri *pri, char *));/* Set overlap mode */#define PRI_SET_OVERLAPDIALvoid pri_set_overlapdial(struct pri *pri,int state);/* QSIG logical channel mapping option, do not skip channel 16 */#define PRI_SET_CHAN_MAPPING_LOGICALvoid pri_set_chan_mapping_logical(struct pri *pri, int state);#define PRI_DUMP_INFO_STRchar *pri_dump_info_str(struct pri *pri);/* Get file descriptor */int pri_fd(struct pri *pri);#define PRI_PROGRESS/* Send progress */int pri_progress(struct pri *pri, q931_call *c, int channel, int info);/* Send progress with cause IE */int pri_progress_with_cause(struct pri *pri, q931_call *c, int channel, int info, int cause);#define PRI_PROCEEDING_FULL/* Send call proceeding */int pri_proceeding(struct pri *pri, q931_call *c, int channel, int info);/* Enable inband progress when a DISCONNECT is received */void pri_set_inbanddisconnect(struct pri *pri, unsigned int enable);/* Enslave a PRI to another, so they share the same call list   (and maybe some timers) */void pri_enslave(struct pri *master, struct pri *slave);#define PRI_GR303_SUPPORT#define PRI_ENSLAVE_SUPPORT#define PRI_SETUP_CALL#define PRI_RECEIVE_SUBADDR#define PRI_REDIRECTING_REASON#define PRI_AOC_UNITS#define PRI_ANI/* Send notification */int pri_notify(struct pri *pri, q931_call *c, int channel, int info);int pri_callrerouting_facility(struct pri *pri, q931_call *call, const char *dest, const char* original, const char* reason);/* Get/Set PRI Timers  */#define PRI_GETSET_TIMERSint pri_set_timer(struct pri *pri, int timer, int value);int pri_get_timer(struct pri *pri, int timer);int pri_timer2idx(char *timer);#define PRI_MAX_TIMERS 32#define PRI_TIMER_N200	0	/* Maximum numer of q921 retransmissions */#define PRI_TIMER_N201	1	/* Maximum numer of octets in an information field */#define PRI_TIMER_N202	2	/* Maximum numer of transmissions of the TEI identity request message */#define PRI_TIMER_K		3	/* Maximum number of outstanding I-frames */#define PRI_TIMER_T200	4	/* time between SABME's */#define PRI_TIMER_T201	5	/* minimum time between retransmissions of the TEI Identity check messages */#define PRI_TIMER_T202	6	/* minimum time between transmission of TEI Identity request messages */#define PRI_TIMER_T203	7	/* maxiumum time without exchanging packets */#define PRI_TIMER_T300	8	#define PRI_TIMER_T301	9	/* maximum time to respond to an ALERT */#define PRI_TIMER_T302	10#define PRI_TIMER_T303	11	/* maximum time to wait after sending a SETUP without a response */#define PRI_TIMER_T304	12#define PRI_TIMER_T305	13#define PRI_TIMER_T306	14#define PRI_TIMER_T307	15#define PRI_TIMER_T308	16#define PRI_TIMER_T309	17#define PRI_TIMER_T310	18	/* maximum time between receiving a CALLPROCEEDING and receiving a ALERT/CONNECT/DISCONNECT/PROGRESS */#define PRI_TIMER_T313	19#define PRI_TIMER_T314	20#define PRI_TIMER_T316	21	/* maximum time between transmitting a RESTART and receiving a RESTART ACK */#define PRI_TIMER_T317	22#define PRI_TIMER_T318	23#define PRI_TIMER_T319	24#define PRI_TIMER_T320	25#define PRI_TIMER_T321	26#define PRI_TIMER_T322	27#define PRI_TIMER_TM20	28	/* maximum time avaiting XID response */#define PRI_TIMER_NM20	29	/* number of XID retransmits *//* Get PRI version */const char *pri_get_version(void);#endif

⌨️ 快捷键说明

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