X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=bchannel.c;h=bfc2238778d37234764f55c623b92638f1979554;hp=b6107b689bc919367ff5b569465f1cbe24079036;hb=1ba14173313beeae18b600d4c889521822821a07;hpb=8fb861ef9ece9f4bd68ef79a77625ec23c27aef1 diff --git a/bchannel.c b/bchannel.c index b6107b6..bfc2238 100644 --- a/bchannel.c +++ b/bchannel.c @@ -23,16 +23,17 @@ #include #include #include -#include +#include -#define AF_COMPATIBILITY_FUNC 1 -#define MISDN_OLD_AF_COMPATIBILITY 1 -#include +#include +int __af_isdn = MISDN_AF_ISDN; +#include #define HAVE_ATTRIBUTE_always_inline 1 #define HAVE_ARPA_INET_H 1 #define HAVE_TIMERSUB 1 +#include #include #include @@ -74,8 +75,6 @@ static void bchannel_send_queue(struct bchannel *bchannel); int bchannel_initialize(void) { - init_af_isdn(); - return 0; } @@ -420,26 +419,29 @@ void bchannel_transmit(struct bchannel *bchannel, unsigned char *data, int len) return; if (len > 1024 || len < 1) return; - switch(bchannel->b_mode) { - case 0: - for (i = 0; i < len; i++) - *p++ = flip_bits[*data++]; - frm->prim = DL_DATA_REQ; - break; - case 1: - for (i = 0; i < len; i++) - *p++ = flip_bits[*data++]; - frm->prim = PH_DATA_REQ; - break; - case 2: - memcpy(p, data, len); - frm->prim = DL_DATA_REQ; - break; - case 3: - memcpy(p, data, len); - frm->prim = PH_DATA_REQ; - break; - } + if (data) { + switch(bchannel->b_mode) { + case 0: + for (i = 0; i < len; i++) + *p++ = flip_bits[*data++]; + frm->prim = DL_DATA_REQ; + break; + case 1: + for (i = 0; i < len; i++) + *p++ = flip_bits[*data++]; + frm->prim = PH_DATA_REQ; + break; + case 2: + memcpy(p, data, len); + frm->prim = DL_DATA_REQ; + break; + case 3: + memcpy(p, data, len); + frm->prim = PH_DATA_REQ; + break; + } + } else + memset(p, flip_bits[(options.law=='a')?0x2a:0xff], len); frm->id = 0; #ifdef SEAMLESS_TEST unsigned char test_tone[8] = {0x2a, 0x24, 0xb4, 0x24, 0x2a, 0x25, 0xb5, 0x25};