On Jan 5, 2006, at 8:51 PM, James Harper wrote:

My understanding of ISDN is that data is transmitted in frames of 16
data bits (B1) + 16 data bits (B2) + 4 data bits (D) + some
synchronisation. 4000 of these frames are received per second, which
gives us the 16 * 4000 = 64kbps rate for the B channels and 4 * 4000 =
16kbps rate for the D channel. To get the zaptel timing of 1000
interrupts/second, the card needs to be able to generate an interrupt
off (at least) every 4th frame. If the best it could do was to generate
an interrupt per frame, how much would that kill the system in interrupt
servicing?

That's something you'll have to investigate on a card per card basis. Generating a lot of interrupts in itself is not a terrible load intensive task; it's if you have a lot of things to do in the interrupt handler or for some reason you miss an interrupt (particularly if you're passing non-voice data) and loose data that you can have problems.


Looking at the way some of the zaptel drivers work, this timer interrupt
is the only interrupt that is cared about, and the card is polled per
interrupt rather than being truly interrupt driven. Or maybe I just
haven't looked at enough drivers...

Can anyone tell me what sort of pre-processing needs to be done to the
raw data from a [BP]RI card into the zaptel driver? I assume that the D
channel needs to be decoded from the raw bits on the line (or does
it...?), but does the zaptel logic need anything more than raw bits from
the B channels? I'm not really familiar with PRI cards, but in the BRI
space there are 'passive' cards, 'semi-active' card, and 'active'
cards... can zaptel cope with different levels of processing being done
on the card, or does it like to do it all itself? Or none of it itself?


Zaptel likes to just have the raw B-channel data. If you are trying to also interface the D-channel with zaptel and you can pull your HDLC-unstuffed messages from the BRI controller, you can use the software API for zaptel for basically passing D-channel messages into the zaptel buffers the way the userland apps expect it (without having to go through the HDLC and other code). If you look at bug note 5120 (IIRC) the most recent version of the patch against zaptel can be found.

Due to the timing difference, (16kbps as opposed to 64kbps) this is the approach you'll probably want to take for the D-channel, unless you can think of a really clever way to pass the raw data into zaptel.

Matthew Fredrickson

_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

Asterisk-Dev mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to