summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2010-11-15 18:58:47 +0100
committerPatrick McHardy <kaber@trash.net>2010-11-16 15:06:49 +0100
commit8aa6d8f94b5ca431cbc46adef732a01b005fa04e (patch)
tree26a3c215a6feff26806fe03eafdd26a06e2ba4b7
parent7ce0366c316203f67b0ab8902b9db64751e90bbe (diff)
clms: hexdump data section contents, decode header as strings
Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--src/clms.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/clms.c b/src/clms.c
index 1c716cc..3cbae54 100644
--- a/src/clms.c
+++ b/src/clms.c
@@ -50,12 +50,22 @@ static DECT_SFMT_MSG_DESC(clms_variable,
#define clms_debug_entry(fmt, args...) \
__clms_debug("\n", fmt, ##args)
+static const struct dect_trans_tbl clms_header_codings[] = {
+ TRANS_TBL(DECT_CLMS_HDR_STANDARD_ONE_SECTION, "One section/Standard"),
+ TRANS_TBL(DECT_CLMS_HDR_STANDARD_MULTI_SECTION, "Multi-section/Standard"),
+ TRANS_TBL(DECT_CLMS_HDR_BITSTREAM_ONE_SECTION, "One section/Bit stream"),
+ TRANS_TBL(DECT_CLMS_HDR_BITSTREAM_MULTI_SECTION, "Multi-section/Bit stream"),
+ TRANS_TBL(DECT_CLMS_HDR_ALPHANUMERIC_ONE_SECTION, "One section/Alphanumeric"),
+ TRANS_TBL(DECT_CLMS_HDR_ALPHANUMERIC_MULTI_SECTION, "Multi-section/Alphanumeric"),
+};
+
void dect_clms_rcv_fixed(struct dect_handle *dh, struct dect_msg_buf *mb)
{
DECT_DEFINE_MSG_BUF_ONSTACK(_mb), *mbr = &_mb;
struct dect_clms_fixed_addr_section *as;
struct dect_clms_fixed_data_section *ds;
unsigned int n, len, section, sections;
+ char buf[128];
clms_debug("parse {CLMS-FIXED} message");
dect_assert(mb->len % 5 == 0);
@@ -65,11 +75,13 @@ void dect_clms_rcv_fixed(struct dect_handle *dh, struct dect_msg_buf *mb)
return;
dect_debug(DECT_DEBUG_CLMS, " address section:\n");
+ dect_debug(DECT_DEBUG_CLMS, "\tHeader: %s\n",
+ dect_val2str(clms_header_codings, buf, as->hdr & DECT_CLMS_HDR_MASK));
dect_debug(DECT_DEBUG_CLMS, "\tAddress: %04x\n", __be16_to_cpu(as->addr));
dect_debug(DECT_DEBUG_CLMS, "\tProtocol Discriminator: %02x\n", as->pd);
dect_debug(DECT_DEBUG_CLMS, "\tLength Indicator: %02x\n", as->li);
- if (as->pd != DECT_CLMS_PD_DECT_IE_CODING)
+ if (as->pd != DECT_CLMS_PD_DECT_IE_CODING && as->pd != 0x6)
return;
switch (as->hdr & DECT_CLMS_HDR_MASK) {
@@ -100,8 +112,7 @@ void dect_clms_rcv_fixed(struct dect_handle *dh, struct dect_msg_buf *mb)
section = ds->hdr & DECT_CLMS_SECTION_NUM_MASK;
dect_debug(DECT_DEBUG_CLMS, " data section %u:\n", section);
- dect_debug(DECT_DEBUG_CLMS, "\tData: %02x%02x%02x%02x\n",
- ds->data[0], ds->data[1], ds->data[2], ds->data[3]);
+ dect_hexdump(DECT_DEBUG_CLMS, "\tData", ds->data, 4);
if (section >= 5)
return;