[asterisk-dev] possible bug in chan_vpb
john at spectross.com
john at spectross.com
Mon Nov 24 09:03:42 CST 2008
I am trying to port Asterisk over our system based on ARM 9. We have a TSI
to handle voice traffic switching & DSP as a off-load engine to handle
conferencing & CPT generation.
The Char Device Driver I wrote for our DSP interface, shall simply read &
write data-structures to/from the DSP-queue without any knowledge of the
data being written i.e. there exists no channel (FXO/FXS/ISDN etc...) level
Well, I understand "chan_zap" communicates with its device driver through a
separate node for each of the channel i.e. there exists a well defined
channel level abstraction in the driver itself.
So, What do you recommend - Where should I implement this channel-level
abstraction to my driver:
1) In my device driver itself by maintaining a separate queue for each
channel(Kernel level), separate node & a poll implementation. --> chan_zap
2) In another user-level layer which interfaces with my current naive driver
on one side & on the other side interfaces with Asterisk through pipes i.e.
each channel would have 2 pipes for cmd as well as event. Hence all driver
specific fds (file-descriptors) in Asterisk would be actually replaced with
pipe fds. --> simpler to implement & can still keep my channel driver very
similar to chan_zap.
3) In the same way as chan_iax2 & chan_vpb were implemented, as discussed
earlier. --> Will have to do a lot for making it as powerful as chan_zap.
Any better suggestions are welcome.
Spectross Digital Systems Pvt. Ltd.
----- Original Message -----
From: <john at spectross.com>
To: "Russell Bryant" <russell at digium.com>; "Asterisk Developers Mailing
List" <asterisk-dev at lists.digium.com>
Cc: "Ish Sir" <ish at spectross.com>
Sent: Monday, November 24, 2008 9:55 AM
Subject: Re: [asterisk-dev] possible bug in chan_vpb
> Hi Russell,
> Thanks, you are right, "chan_vpb.cc" also uses the same technique.
> The monitor thread here checks for events over both owned & orphan
> channels & as an event is detected over an owned channel it creates a
> frame and queues it up by calling "ast_queue_frame()".
> Could you please recommend some document which would aid in understanding
> the Asterisk Architecture(Developer's point of view). I found many E-books
> for Asterisk users but not one for fresh Asterisk developers.
> Thanks & Regds.
> John Nicholas
> Team Lead
> Spectross Digital Systems Pvt. Ltd.
> ----- Original Message -----
> From: "Russell Bryant" <russell at digium.com>
> To: <john at spectross.com>; "Asterisk Developers Mailing List"
> <asterisk-dev at lists.digium.com>
> Sent: Sunday, November 23, 2008 4:45 AM
> Subject: Re: [asterisk-dev] possible bug in chan_vpb
>> On Nov 22, 2008, at 12:02 AM, <john at spectross.com> <john at spectross.com>
>>> I was browsing through "chan_vpb.cc" today. I see that no "fds" (file
>>> descriptors) are assigned while creation of an "ast_channel" structure
>>> in "vpb_new".
>>> What I am not able to understand is: How would the "ast_waitfor*"
>>> functions work as the events are captured using the "poll" api.
>> I have never touched that code, but I can say that there is one other
>> method for a channel driver to indicate that data is available. Channel
>> drivers can queue up media frames onto the channel using
>> ast_queue_frame(). This puts the frame into a queue on the ast_channel,
>> and also writes data to an alert pipe on the channel that is used to
>> wake up poll(). chan_iax2 uses this method quite heavily since there is
>> no dedicated socket per channel like there is for a call using RTP.
>> Russell Bryant
>> Senior Software Engineer
>> Open Source Team Lead
>> Digium, Inc.
More information about the asterisk-dev