Debug improvements (bug #1329)
git-svn-id: https://origsvn.digium.com/svn/libpri/trunk@86 2fbb986a-6c06-0410-b554-c9c1f0a7f128
This commit is contained in:
parent
4743ebd26f
commit
8da0a1e5a7
@ -148,7 +148,7 @@ typedef enum q921_state {
|
|||||||
} q921_state;
|
} q921_state;
|
||||||
|
|
||||||
/* Dumps a *known good* Q.921 packet */
|
/* Dumps a *known good* Q.921 packet */
|
||||||
extern void q921_dump(q921_h *h, int len, int showraw, int txrx);
|
extern void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx);
|
||||||
|
|
||||||
/* Bring up the D-channel */
|
/* Bring up the D-channel */
|
||||||
extern void q921_start(struct pri *pri, int now);
|
extern void q921_start(struct pri *pri, int now);
|
||||||
|
23
q921.c
23
q921.c
@ -78,7 +78,7 @@ static int q921_transmit(struct pri *pri, q921_h *h, int len)
|
|||||||
#endif
|
#endif
|
||||||
/* Just send it raw */
|
/* Just send it raw */
|
||||||
if (pri->debug & PRI_DEBUG_Q921_DUMP)
|
if (pri->debug & PRI_DEBUG_Q921_DUMP)
|
||||||
q921_dump(h, len, pri->debug & PRI_DEBUG_Q921_RAW, 1);
|
q921_dump(pri, h, len, pri->debug & PRI_DEBUG_Q921_RAW, 1);
|
||||||
/* Write an extra two bytes for the FCS */
|
/* Write an extra two bytes for the FCS */
|
||||||
res = write(pri->fd, h, len + 2);
|
res = write(pri->fd, h, len + 2);
|
||||||
if (res != (len + 2)) {
|
if (res != (len + 2)) {
|
||||||
@ -486,13 +486,27 @@ static pri_event *q921_handle_iframe(struct pri *pri, q921_i *i, int len)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void q921_dump(q921_h *h, int len, int showraw, int txrx)
|
void q921_dump(struct pri *pri, q921_h *h, int len, int showraw, int txrx)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
char *type;
|
char *type;
|
||||||
char direction_tag;
|
char direction_tag;
|
||||||
|
char *cmd_rsp;
|
||||||
|
|
||||||
direction_tag = txrx ? '>' : '<';
|
direction_tag = txrx ? '>' : '<';
|
||||||
|
/* If we are PRI_CPE: Use "Command" if we are transmitting and C/R bit is 0.
|
||||||
|
* Use "Response" if we are transmitting and C/R bit is 1.
|
||||||
|
* Use "Command" if we are receiving and C/R bit is 1.
|
||||||
|
* Use "Response" if we are receiving and C/R bit is 0.
|
||||||
|
*
|
||||||
|
* If we are PRI_NETWORK: Use "Command" if we are transmitting and C/R bit is 1.
|
||||||
|
* Use "Response" if we are transmitting and C/R bit is 0.
|
||||||
|
* Use "Command" if we are receiving and C/R bit is 0.
|
||||||
|
* Use "Response" if we are receiving and C/R bit is 1.
|
||||||
|
*/
|
||||||
|
cmd_rsp = (((pri->localtype == PRI_CPE)?0:1) ^ txrx ^ h->h.c_r) ? "Command" : "Response";
|
||||||
|
|
||||||
|
|
||||||
if (showraw) {
|
if (showraw) {
|
||||||
char *buf = malloc(len * 3 + 1);
|
char *buf = malloc(len * 3 + 1);
|
||||||
int buflen = 0;
|
int buflen = 0;
|
||||||
@ -518,12 +532,13 @@ void q921_dump(q921_h *h, int len, int showraw, int txrx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pri_message(
|
pri_message(
|
||||||
"%c SAPI: %02d C/R: %d EA: %d\n"
|
"%c SAPI: %02d C/R: %d EA: %d [%s]\n"
|
||||||
"%c TEI: %03d EA: %d\n",
|
"%c TEI: %03d EA: %d\n",
|
||||||
direction_tag,
|
direction_tag,
|
||||||
h->h.sapi,
|
h->h.sapi,
|
||||||
h->h.c_r,
|
h->h.c_r,
|
||||||
h->h.ea1,
|
h->h.ea1,
|
||||||
|
cmd_rsp,
|
||||||
direction_tag,
|
direction_tag,
|
||||||
h->h.tei,
|
h->h.tei,
|
||||||
h->h.ea2);
|
h->h.ea2);
|
||||||
@ -686,7 +701,7 @@ static pri_event *__q921_receive(struct pri *pri, q921_h *h, int len)
|
|||||||
len -= 2;
|
len -= 2;
|
||||||
|
|
||||||
if (pri->debug & PRI_DEBUG_Q921_DUMP)
|
if (pri->debug & PRI_DEBUG_Q921_DUMP)
|
||||||
q921_dump(h, len, pri->debug & PRI_DEBUG_Q921_RAW, 0);
|
q921_dump(pri, h, len, pri->debug & PRI_DEBUG_Q921_RAW, 0);
|
||||||
|
|
||||||
/* Check some reject conditions -- Start by rejecting improper ea's */
|
/* Check some reject conditions -- Start by rejecting improper ea's */
|
||||||
if (h->h.ea1 || !(h->h.ea2))
|
if (h->h.ea1 || !(h->h.ea2))
|
||||||
|
5
q931.c
5
q931.c
@ -1149,7 +1149,7 @@ static int transmit_cause(struct pri *pri, q931_call *call, int msgtype, q931_ie
|
|||||||
|
|
||||||
static void dump_sending_complete(q931_ie *ie, int len, char prefix)
|
static void dump_sending_complete(q931_ie *ie, int len, char prefix)
|
||||||
{
|
{
|
||||||
pri_message("%c Sending Complete (len=%2d)\n", prefix, ie->len);
|
pri_message("%c Sending Complete.\n", prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int receive_sending_complete(struct pri *pri, q931_call *call, int msgtype, q931_ie *ie, int len)
|
static int receive_sending_complete(struct pri *pri, q931_call *call, int msgtype, q931_ie *ie, int len)
|
||||||
@ -1410,7 +1410,8 @@ void q931_dump(q931_h *h, int len, int txrx)
|
|||||||
int x=0, r;
|
int x=0, r;
|
||||||
c = txrx ? '>' : '<';
|
c = txrx ? '>' : '<';
|
||||||
pri_message("%c Protocol Discriminator: %s (%d) len=%d\n", c, disc2str(h->pd), h->pd, len);
|
pri_message("%c Protocol Discriminator: %s (%d) len=%d\n", c, disc2str(h->pd), h->pd, len);
|
||||||
pri_message("%c Call Ref: len=%2d (reference %d/0x%X) (%s)\n", c, h->crlen, q931_cr(h), q931_cr(h), (h->crv[0] & 0x80) ? "Terminator" : "Originator");
|
pri_message("%c Call Ref: len=%2d (reference %d/0x%X) (%s)\n",
|
||||||
|
c, h->crlen, q931_cr(h) & 0x7fff, q931_cr(h) & 0x7fff, (q931_cr(h) & 0x8000) ? "Terminator" : "Originator");
|
||||||
/* Message header begins at the end of the call reference number */
|
/* Message header begins at the end of the call reference number */
|
||||||
mh = (q931_mh *)(h->contents + h->crlen);
|
mh = (q931_mh *)(h->contents + h->crlen);
|
||||||
pri_message("%c Message type: %s (%d)\n", c, msg2str(mh->msg), mh->msg);
|
pri_message("%c Message type: %s (%d)\n", c, msg2str(mh->msg), mh->msg);
|
||||||
|
Loading…
Reference in New Issue
Block a user