<div dir="ltr"><div>Here is my experience:</div><div><br></div>1) dahdi takes care of hdlc framing for you<br><div><br></div><div>2) ISDN/PRI is not done in the kernel, all layers of the stack are implemented in the userspace libarary libpri</div>
<div><br></div><div>3) you need to read/write frequently to dahdi for the card to work properly, but don't use a timer, use a select() to determine when it's time to read and when it is time to write</div><div><br>
</div><div>4) the dahdi driver has the ability to conference audio built in.  I suggest using that for your audio mixing needs.  You can look at the code for dahdi_monitor as an example of this</div><div><br></div><div>5) dahdi cards do support hardware dtmf detection</div>
<div><br></div><div><br></div><div>for code examples: you can look at dahdi_monitor in dahdi tools.  I don't know if libpri library has any test applications, but I do know libss7 has an example program ss7linktest which is a very good example of how to use the card with ss7 signaling.</div>
<div><br></div><div>Hope this helps!</div><div><br></div><div>Torrey</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 1 October 2013 21:47, Gary <span dir="ltr"><<a href="mailto:garylosangelesca@gmx.com" target="_blank">garylosangelesca@gmx.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="font-family:Verdana"><span style="font-size:12px"><span style="font-family:Verdana"><span style="font-size:12px">Hello,</span></span><p style="margin:0px;padding:0px;margin:0px;padding:0px">
<span style="font-family:Verdana"><span style="font-size:12px"> </span></span></p><span style="font-family:Verdana"><span style="font-size:12px"> </span></span><p style="margin:0px;padding:0px;margin:0px;padding:0px"><span style="font-family:Verdana"><span style="font-size:12px"><span style="font-family:Verdana"><span style="font-size:12px">I wanted to switch from using Dialogic/Eicon cards to using Digium's T-1 cards. When I purchased a sample card the salesperson assured me there was documentation specific to the DAHDI interface. Now that I'm digging in, I'm finding it's documented a lot like Linux -- one must read the fairly uncommented source code.<br>
<br>I don't have a problem with this generally, but here I just don't understand the divisions of labor between Asterisk, DAHDI Hardware, DAHDI kernel modules and Userland (me). (BTW, I do not wish to use Asterisk as we have numerous projects based on Dialogic/Eicon spanning some 20 years. My intent is to write a replacement look-a-like driver which uses Digium's cards instead of Dialogic's.)<br>
<br>My specific issues are:<br><br> 1) HDLC. Does the hardware have an HDLC controller, or is it the user's job to hunt for flags, frame the data and calc the FCS?<br><br> 2) ISDN/PRI. Does the kernel module load Q.921/931 implementation or is this user's responsibility? I know there's a LIBPRI product, which I may use, but I have my own PRI library which was confirmance tested with ATT years ago. Either way, I'm not sure how the D-channel data is flowing.<br>
<br> 3) I got the idea that B-channel data is collected by the kernel module in 8 sample blocks (1 ms). Does this mean I need to be reading it out/writing it in at that rate? I saw some buffering code, but wasn't sure if that was voicefile type playback/record or if all audio is treated without regard to its source/destination. I guess I could lock onto it at 1ms using Linux's HPET timer, although that sounds clumsy.<br>
<br> 4) I can certainly convert between ulaw/linear to sum for conferencing, but it seems the kernel module might support that as well? Or at the least it seems the kernel module can support chan-to-chan connections.<br><br>
 5) I found some DTMF (FIR goertzel) code somewhere in DAHDI, but also in Asterisk. While I have such code in own library, am I to understand DTMF can be detected within the kernel module?<br><br>I guess I really would like to see a doc on the overall concept of DAHDI hardware and its kernel module. I don't care how it's laid out, I'd just like to get my mind around it. Does anyone know of an example telephony C file that might show:<br>
<br>1) initialization of DAHDI spans<br>2) waiting for inbound events<br>3) answering a call<br>4) sending a voice file, recording a voice file<br>5) disconnection of calls<br>6) de-initialization<br><br>And perhaps showing how two channels are connected to create a conversation?<br>
<br>Thanks in advance,<br>Gary</span></span></span></span></p></span></span>
<br>--<br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-dev</a><br></blockquote></div><br></div>