diff --git a/tools/parser/capi.c b/tools/parser/capi.c
index 106bbde..aa02981 100644
--- a/tools/parser/capi.c
+++ b/tools/parser/capi.c
#include <sys/types.h>
#include <netinet/in.h>
+#include <bluetooth/bluetooth.h>
+
#include "parser.h"
+#define CAPI_U8(frm) (get_u8(frm))
+#define CAPI_U16(frm) (htobs(htons(get_u16(frm))))
+#define CAPI_U32(frm) (htobl(htonl(get_u32(frm))))
+
static char *cmd2str(uint8_t cmd)
{
uint16_t nctr, nchn;
uint32_t value;
- nctr = htons(get_u16(frm));
- nchn = htons(get_u16(frm));
+ nctr = CAPI_U16(frm);
+ nchn = CAPI_U16(frm);
if (nchn > 0) {
p_indent(level, frm);
p_indent(level, frm);
printf("Number of B-channels: %d\n", nchn);
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level, frm);
printf("Global options: 0x%04x\n", value);
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level, frm);
printf("B1 protocol support: 0x%08x\n", value);
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level, frm);
printf("B2 protocol support: 0x%08x\n", value);
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level, frm);
printf("B3 protocol support: 0x%08x\n", value);
uint16_t info, ncci;
uint8_t ctr, plci;
- val = htonl(get_u32(frm));
+ val = CAPI_U32(frm);
ctr = val & 0xff;
plci = (val & 0xff00) >> 8;
ncci = (val & 0xffff0000) >> 16;
}
if (subcmd == 0x81) {
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level, frm);
printf("Info: 0x%04x (%s)\n", info, info2str(info));
}
cmd_common(level, subcmd, frm);
if (subcmd == 0x80) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Additional info:\n");
if (subcmd == 0x81)
return;
- cip = htons(get_u16(frm));
+ cip = CAPI_U16(frm);
p_indent(level, frm);
printf("CIP value: 0x%04x\n", cip);
- len = get_u8(frm);
+ len = CAPI_U8(frm);
frm->ptr += len;
frm->len -= len;
- len = get_u8(frm);
+ len = CAPI_U8(frm);
frm->ptr += len;
frm->len -= len;
- len = get_u8(frm);
+ len = CAPI_U8(frm);
frm->ptr += len;
frm->len -= len;
- len = get_u8(frm);
+ len = CAPI_U8(frm);
frm->ptr += len;
frm->len -= len;
cmd_common(level, subcmd, frm);
if (subcmd == 0x80) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Additional info:\n");
}
if (subcmd == 0x82) {
- reason = htons(get_u16(frm));
+ reason = CAPI_U16(frm);
p_indent(level, frm);
printf("Reason: 0x%04x (%s)\n", reason, info2str(reason));
}
cmd_common(level, subcmd, frm);
if (subcmd == 0x82) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Connected number:\n");
hex_dump(level, frm, len);
}
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Connected subaddress:\n");
hex_dump(level, frm, len);
}
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("LLC:\n");
cmd_common(level, subcmd, frm);
if (subcmd == 0x80) {
- mask = htonl(get_u32(frm));
+ mask = CAPI_U32(frm);
p_indent(level, frm);
printf("Info mask: 0x%08x\n", mask);
- mask = htonl(get_u32(frm));
+ mask = CAPI_U32(frm);
p_indent(level, frm);
printf("CIP mask: 0x%08x", mask);
- mask = htonl(get_u32(frm));
+ mask = CAPI_U32(frm);
if (mask > 0)
printf(" 0x%08x\n", mask);
else
printf("\n");
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Calling party number:\n");
frm->ptr += len;
frm->len -= len;
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Calling party subaddress:\n");
switch (subcmd) {
case 0x80:
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Called party number:\n");
frm->ptr += len;
frm->len -= len;
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Additional info:\n");
break;
case 0x82:
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level, frm);
printf("Info number: %d\n", info);
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("Info element:\n");
uint16_t nconn, datablkcnt, datablklen;
uint32_t ctr, value, major, minor;
- info = (subcmd == 0x81) ? htons(get_u16(frm)) : 0;
- sel = htons(get_u16(frm));
- get_u8(frm);
+ info = (subcmd == 0x81) ? CAPI_U16(frm) : 0;
+ sel = CAPI_U16(frm);
+ CAPI_U8(frm);
if (subcmd != 0x83) {
- func = htons(get_u16(frm));
- get_u8(frm);
+ func = CAPI_U16(frm);
+ CAPI_U8(frm);
} else
func = 0;
case 0x80:
switch (func) {
case 0:
- nconn = htons(get_u16(frm));
+ nconn = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("maxLogicalConnections: %d\n", nconn);
- datablkcnt = htons(get_u16(frm));
+ datablkcnt = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("maxBDataBlocks: %d\n", datablkcnt);
- datablklen = htons(get_u16(frm));
+ datablklen = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("maxBDataLen: %d\n", datablklen);
break;
case 3:
case 4:
case 5:
- ctr = htonl(get_u32(frm));
+ ctr = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Controller: %d\n", ctr);
break;
switch (func) {
case 0:
case 1:
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("Info: 0x%04x (%s)\n", info, info2str(info));
break;
case 2:
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("Info: 0x%04x (%s)\n", info, info2str(info));
- get_u8(frm);
+ CAPI_U8(frm);
profile(level + 1, frm);
break;
case 3:
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level + 1, frm);
printf("Info: 0x%04x (%s)\n", info, info2str(info));
- ctr = htonl(get_u32(frm));
+ ctr = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Controller: %d\n", ctr);
- get_u8(frm);
+ CAPI_U8(frm);
p_indent(level + 1, frm);
printf("Identification: \"%s\"\n", (char *) frm->ptr);
break;
case 4:
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Return value: 0x%04x\n", value);
- ctr = htonl(get_u32(frm));
+ ctr = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Controller: %d\n", ctr);
p_indent(level + 1, frm);
- major = htonl(get_u32(frm));
- minor = htonl(get_u32(frm));
+ major = CAPI_U32(frm);
+ minor = CAPI_U32(frm);
printf("CAPI: %d.%d\n", major, minor);
- major = htonl(get_u32(frm));
- minor = htonl(get_u32(frm));
+ major = CAPI_U32(frm);
+ minor = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Manufacture: %u.%01x%01x-%02u (%d.%d)\n",
(major & 0xf0) >> 4, (major & 0x0f) << 4,
major, minor);
break;
case 5:
- value = htonl(get_u32(frm));
+ value = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Return value: 0x%04x\n", value);
- ctr = htonl(get_u32(frm));
+ ctr = CAPI_U32(frm);
p_indent(level + 1, frm);
printf("Controller: %d\n", ctr);
- get_u8(frm);
+ CAPI_U8(frm);
p_indent(level + 1, frm);
printf("Serial number: %.7s\n", (char *) frm->ptr);
break;
cmd_common(level, subcmd, frm);
- sel = htons(get_u16(frm));
- get_u8(frm);
+ sel = CAPI_U16(frm);
+ CAPI_U8(frm);
p_indent(level, frm);
printf("Selector: 0x%04x (%s)\n", sel, facilitysel2str(sel));
return;
if (subcmd == 0x83) {
- reject = htons(get_u16(frm));
+ reject = CAPI_U16(frm);
p_indent(level, frm);
printf("Reject: 0x%04x (%s)\n", reject, info2str(reject));
}
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("NCPI:\n");
cmd_common(level, subcmd, frm);
if (subcmd == 0x82) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("NCPI:\n");
cmd_common(level, subcmd, frm);
if (subcmd == 0x82) {
- reason = htons(get_u16(frm));
+ reason = CAPI_U16(frm);
p_indent(level, frm);
printf("Reason: 0x%04x (%s)\n", reason, info2str(reason));
}
if (subcmd == 0x80 || subcmd == 0x82) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("NCPI:\n");
cmd_common(level, 0x00, frm);
if (subcmd == 0x81 || subcmd == 0x83) {
- handle = htons(get_u16(frm));
+ handle = CAPI_U16(frm);
p_indent(level, frm);
printf("Data handle: 0x%04x\n", handle);
if (subcmd == 0x81) {
- info = htons(get_u16(frm));
+ info = CAPI_U16(frm);
p_indent(level, frm);
printf("Info: 0x%04x (%s)\n", info, info2str(info));
}
} else {
- data = htonl(get_u32(frm));
+ data = CAPI_U32(frm);
- length = htons(get_u16(frm));
+ length = CAPI_U16(frm);
p_indent(level, frm);
printf("Data length: 0x%04x (%d bytes)\n", length, length);
- handle = htons(get_u16(frm));
+ handle = CAPI_U16(frm);
p_indent(level, frm);
printf("Data handle: 0x%04x\n", handle);
- flags = htons(get_u16(frm));
+ flags = CAPI_U16(frm);
p_indent(level, frm);
printf("Flags: 0x%04x\n", flags);
cmd_common(level, subcmd, frm);
if (subcmd == 0x80 || subcmd == 0x82) {
- len = get_u8(frm);
+ len = CAPI_U8(frm);
if (len > 0) {
p_indent(level, frm);
printf("NCPI:\n");
uint16_t len;
unsigned char *id;
- ctr = htonl(get_u32(frm));
+ ctr = CAPI_U32(frm);
p_indent(level, frm);
printf("Controller: %d\n", ctr);
frm->len -= 4;
if (!strncmp(id, "AVM!", 4)) {
- class = htonl(get_u32(frm));
- func = htonl(get_u32(frm));
- len = get_u8(frm);
+ class = CAPI_U32(frm);
+ func = CAPI_U32(frm);
+ len = CAPI_U8(frm);
if (len == 0xff)
- len = htons(get_u16(frm));
+ len = CAPI_U16(frm);
printf(" [class %d func %d len %d]\n", class, func, len);
} else
uint16_t len, appl, msgnum;
uint8_t cmd, subcmd;
- len = htons(get_u16(frm)) - 8;
- appl = htons(get_u16(frm));
- cmd = get_u8(frm);
- subcmd = get_u8(frm);
- msgnum = htons(get_u16(frm));
+ len = CAPI_U16(frm) - 8;
+ appl = CAPI_U16(frm);
+ cmd = CAPI_U8(frm);
+ subcmd = CAPI_U8(frm);
+ msgnum = CAPI_U16(frm);
p_indent(level, frm);