X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=bchannel.c;h=bfc2238778d37234764f55c623b92638f1979554;hp=f49572b783822de87181ce2c59815ffe88f59c14;hb=1ba14173313beeae18b600d4c889521822821a07;hpb=c4fcb0668c607cb0135444274ff62572cf6111c4 diff --git a/bchannel.c b/bchannel.c index f49572b..bfc2238 100644 --- a/bchannel.c +++ b/bchannel.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include int __af_isdn = MISDN_AF_ISDN; @@ -33,6 +33,7 @@ int __af_isdn = MISDN_AF_ISDN; #define HAVE_ARPA_INET_H 1 #define HAVE_TIMERSUB 1 +#include #include #include @@ -418,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};