📄 libpri.h
字号:
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_ringing 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_* */extern struct pri *pri_new(int fd, int nodetype, int switchtype);/* Create D-channel just as above with user defined I/O callbacks and data */extern 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 */extern void *pri_get_userdata(struct pri *pri);/* Set the user data associated with the D channel */extern void pri_set_userdata(struct pri *pri, void *userdata);/* Set Network Specific Facility for PRI */extern void pri_set_nsf(struct pri *pri, int nsf);/* Set debug parameters on PRI -- see above debug definitions */extern void pri_set_debug(struct pri *pri, int debug);/* Get debug parameters on PRI -- see above debug definitions */extern int pri_get_debug(struct pri *pri);#define PRI_FACILITY_ENABLE/* Enable transmission support of Facility IEs on the pri */extern 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 */extern 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 */extern char *pri_event2str(int id);/* Give a name to a node type */extern char *pri_node2str(int id);/* Give a name to a switch type */extern char *pri_switch2str(int id);/* Print an event */extern void pri_dump_event(struct pri *pri, pri_event *e);/* Turn presentation into a string */extern char *pri_pres2str(int pres);/* Turn numbering plan into a string */extern char *pri_plan2str(int plan);/* Turn cause into a string */extern 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 */extern int pri_acknowledge(struct pri *pri, q931_call *call, int channel, int info);/* Send a digit in overlap mode */extern int pri_information(struct pri *pri, q931_call *call, char digit);#define PRI_KEYPAD_FACILITY_TX/* Send a keypad facility string of digits */extern 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 */extern 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 */extern 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_HANGUPextern int pri_hangup(struct pri *pri, q931_call *call, int cause);#define PRI_DESTROYCALLextern void pri_destroycall(struct pri *pri, q931_call *call);#define PRI_RESTARTextern int pri_restart(struct pri *pri);extern int pri_reset(struct pri *pri, int channel);/* Create a new call */extern q931_call *pri_new_call(struct pri *pri);/* Retrieve CRV reference for GR-303 calls. Returns >0 on success. */extern 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 */extern 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 */extern struct timeval *pri_schedule_next(struct pri *pri);/* Run any pending schedule events */extern pri_event *pri_schedule_run(struct pri *pri);extern 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);extern struct pri_sr *pri_sr_new(void);extern void pri_sr_free(struct pri_sr *sr);extern int pri_sr_set_channel(struct pri_sr *sr, int channel, int exclusive, int nonisdn);extern int pri_sr_set_bearer(struct pri_sr *sr, int transmode, int userl1);extern int pri_sr_set_called(struct pri_sr *sr, char *called, int calledplan, int complete);extern int pri_sr_set_caller(struct pri_sr *sr, char *caller, char *callername, int callerplan, int callerpres);extern 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 */extern void pri_sr_set_useruser(struct pri_sr *sr, const char *userchars);extern void pri_call_set_useruser(q931_call *sr, const char *userchars);extern 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) */extern 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 */extern 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 */extern 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_APIextern void pri_set_message(void (*__pri_error)(struct pri *pri, char *));extern void pri_set_error(void (*__pri_error)(struct pri *pri, char *));/* Set overlap mode */#define PRI_SET_OVERLAPDIALextern void pri_set_overlapdial(struct pri *pri,int state);#define PRI_DUMP_INFO_STRextern char *pri_dump_info_str(struct pri *pri);/* Get file descriptor */extern int pri_fd(struct pri *pri);#define PRI_PROGRESS/* Send call proceeding */extern int pri_progress(struct pri *pri, q931_call *c, int channel, int info);#define PRI_PROCEEDING_FULL/* Send call proceeding */extern int pri_proceeding(struct pri *pri, q931_call *c, int channel, int info);/* Enslave a PRI to another, so they share the same call list (and maybe some timers) */extern 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 */extern int pri_notify(struct pri *pri, q931_call *c, int channel, int info);/* Get/Set PRI Timers */#define PRI_GETSET_TIMERSextern int pri_set_timer(struct pri *pri, int timer, int value);extern int pri_get_timer(struct pri *pri, int timer);extern 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#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -