Date: Fri, 13 May 2005 16:06:27 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-isdn@freebsd.org Subject: Re: answering calls Message-ID: <200505131606.28752.hselasky@c2i.net> In-Reply-To: <20050513113445.EF9AF1EAE27C@alice.turbocat.de> References: <20050513113445.EF9AF1EAE27C@alice.turbocat.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 13 May 2005 13:34, David Wetzel wrote: > hi folks, > > I try to create a lib to wrap the i4b telephony stuff in a way that makes > it easy to use from external programs. I do this as a first step to add i4b > support to Asterisk. I do not intent to run the isdnd. > > Imagine there are N different ISDN cards in the system. Some may be Fritz > with 2 channels some may have a PRI with 30 channels. > > If I understand the documentation right, all signaling and accept/reject > control is made via /dev/isdn and the real voice data will flow via > /dev/isdntel* > > On an incoming call, I get the stuct msg_connect_ind_t which contains > controller and channel number. > > The driver's int number I seem to get via lookup_l4_driver() from > rc_config.c. > > But how to get the driver_unit? > How do I know which /dev/isdntel* to use? > The "/dev/isdntel*" are shared among all [ISDN-] controllers. It is isdnd's job to manage which controller gets connected to which "driver" and "driver_unit". When an incoming call is present this is done by replying with one of two messages: Here is a cp from my driver: /*---------------------------------------------------------------------------* * connect response * this is the answer to an incoming connect indication *---------------------------------------------------------------------------*/ typedef struct { cdid_t cdid; /* call descriptor id */ int response; /* what to do with incoming call */ #define SETUP_RESP_DNTCRE 0 /* don't care, call is not for me */ #define SETUP_RESP_REJECT 1 /* reject call */ #define SETUP_RESP_ACCEPT 2 /* accept call */ cause_t cause; /* cause for case SETUP_RESP_REJECT */ /* the following are only used for SETUP_RESP_ACCEPT !! */ int txdelay; /* tx delay after connect */ int bprot; /* B chan protocol */ int driver; /* driver to route b channel data to */ int driver_unit; /* unit number for above driver */ int max_idle_time; /* max time without activity on b ch */ } msg_connect_resp_t; I've also got the option to just alert: /*---------------------------------------------------------------------------* * send alert request *---------------------------------------------------------------------------*/ typedef struct { cdid_t cdid; /* call descriptor id */ } msg_alert_req_t; But recently there were some discussions about making the drivers like "/dev/i4btel*" dynamic, so maybe that will mean that there will be a static association between "/dev/i4btel*" and a certain controller and B-channel. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505131606.28752.hselasky>