summaryrefslogtreecommitdiff
path: root/monitor
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-12-29 17:28:45 -0800
committerMarcel Holtmann <marcel@holtmann.org>2013-12-29 17:28:45 -0800
commitb7d96cc489c732ba3b7e439fd7f97a7f4f523d19 (patch)
treeda210aa3554a30513f0bb34847e07dd724d51638 /monitor
parent1f8fb96a65a6a52750bef40ff019a84df6b2a391 (diff)
monitor: Decode voice setting bit values
Diffstat (limited to 'monitor')
-rw-r--r--monitor/packet.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/monitor/packet.c b/monitor/packet.c
index 2657e5731..d5bbe0611 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -853,7 +853,76 @@ static void print_host_flow_control(uint8_t enable)
static void print_voice_setting(uint16_t setting)
{
+ uint8_t input_coding = (btohs(setting) & 0x0300) >> 8;
+ uint8_t input_data_format = (btohs(setting) & 0xc0) >> 6;
+ uint8_t air_coding_format = btohs(setting) & 0x0003;
+ const char *str;
+
print_field("Setting: 0x%4.4x", btohs(setting));
+
+ switch (input_coding) {
+ case 0x00:
+ str = "Linear";
+ break;
+ case 0x01:
+ str ="u-law";
+ break;
+ case 0x02:
+ str = "A-law";
+ break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ print_field(" Input Coding: %s", str);
+
+ switch (input_data_format) {
+ case 0x00:
+ str = "1's complement";
+ break;
+ case 0x01:
+ str = "2's complement";
+ break;
+ case 0x02:
+ str = "Sign-Magnitude";
+ break;
+ case 0x03:
+ str = "Unsigned";
+ break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ print_field(" Input Data Format: %s", str);
+
+ if (input_coding == 0x00) {
+ print_field(" Input Sample Size: %s",
+ btohs(setting) & 0x20 ? "16-bit" : "8-bit");
+ print_field(" # of bits padding at MSB: %d",
+ (btohs(setting) & 0x1c) >> 2);
+ }
+
+ switch (air_coding_format) {
+ case 0x00:
+ str = "CVSD";
+ break;
+ case 0x01:
+ str ="u-law";
+ break;
+ case 0x02:
+ str = "A-law";
+ break;
+ case 0x03:
+ str = "Transparent Data";
+ break;
+ default:
+ str = "Reserved";
+ break;
+ }
+
+ print_field(" Air Coding Format: %s", str);
}
static void print_retransmission_effort(uint8_t effort)