From 6473708cfcb09225d4fe215a63902060586a4bae Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 16 Jun 2018 22:27:51 +0200 Subject: [PATCH] monitor: Add support for decoding Broadcom Raw RSSI command Change-Id: Icf75bdfb5d31bb2a9464bf2db261b661e4dc7e86 Signed-off-by: himanshu --- monitor/broadcom.c | 26 ++++++++++++++++++++++++++ monitor/packet.c | 5 +++++ monitor/packet.h | 1 + 3 files changed, 32 insertions(+) diff --git a/monitor/broadcom.c b/monitor/broadcom.c index abc3db1..87995c2 100644 --- a/monitor/broadcom.c +++ b/monitor/broadcom.c @@ -53,6 +53,11 @@ static void print_handle(uint16_t handle) packet_print_handle(handle); } +static void print_rssi(int8_t rssi) +{ + packet_print_rssi(rssi); +} + static void print_sco_routing(uint8_t routing) { const char *str; @@ -368,6 +373,24 @@ static void write_uart_clock_setting_cmd(const void *data, uint8_t size) print_clock_setting(clock); } +static void read_raw_rssi_cmd(const void *data, uint8_t size) +{ + uint16_t handle = get_le16(data); + + print_handle(handle); +} + +static void read_raw_rssi_rsp(const void *data, uint8_t size) +{ + uint8_t status = get_u8(data); + uint16_t handle = get_le16(data + 1); + int8_t rssi = get_s8(data + 3); + + print_status(status); + print_handle(handle); + print_rssi(rssi); +} + static void write_ram_cmd(const void *data, uint8_t size) { uint32_t addr = get_le32(data); @@ -1228,6 +1251,9 @@ static const struct vendor_ocf vendor_ocf_table[] = { { 0x045, "Write UART Clock Setting", write_uart_clock_setting_cmd, 1, true, status_rsp, 1, true }, + { 0x048, "Read Raw RSSI", + read_raw_rssi_cmd, 2, true, + read_raw_rssi_rsp, 4, true }, { 0x04c, "Write RAM", write_ram_cmd, 4, false, status_rsp, 1, true }, diff --git a/monitor/packet.c b/monitor/packet.c index e3b9185..692e5eb 100755 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -3882,6 +3882,11 @@ void packet_print_handle(uint16_t handle) print_handle_native(handle); } +void packet_print_rssi(int8_t rssi) +{ + print_rssi(rssi); +} + void packet_print_ad(const void *data, uint8_t size) { print_eir(data, size, true); diff --git a/monitor/packet.h b/monitor/packet.h index 573cde7..545d817 100755 --- a/monitor/packet.h +++ b/monitor/packet.h @@ -51,6 +51,7 @@ void packet_print_version(const char *label, uint8_t version, void packet_print_company(const char *label, uint16_t company); void packet_print_addr(const char *label, const void *data, bool random); void packet_print_handle(uint16_t handle); +void packet_print_rssi(int8_t rssi); void packet_print_ad(const void *data, uint8_t size); void packet_print_features_lmp(const uint8_t *features, uint8_t page); void packet_print_features_ll(const uint8_t *features); -- 2.7.4