diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2013-12-29 17:28:45 -0800 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2013-12-29 17:28:45 -0800 |
commit | b7d96cc489c732ba3b7e439fd7f97a7f4f523d19 (patch) | |
tree | da210aa3554a30513f0bb34847e07dd724d51638 /monitor | |
parent | 1f8fb96a65a6a52750bef40ff019a84df6b2a391 (diff) |
monitor: Decode voice setting bit values
Diffstat (limited to 'monitor')
-rw-r--r-- | monitor/packet.c | 69 |
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) |