device: Set disconnect timer to zero for fast disconnection
[platform/upstream/bluez.git] / monitor / intel.c
index 8f8eff2..90fabf4 100755 (executable)
@@ -711,6 +711,29 @@ static void read_supported_features_rsp(uint16_t index, const void *data,
        packet_hexdump(data + 3, size - 3);
 }
 
+static void ppag_enable(uint16_t index, const void *data, uint8_t size)
+{
+       uint32_t enable = get_le32(data);
+       char *ppag_enable_flags;
+
+       switch (enable) {
+       case 0x01:
+               ppag_enable_flags = "EU";
+               break;
+       case 0x02:
+               ppag_enable_flags = "China";
+               break;
+       case 0x03:
+               ppag_enable_flags = "EU and China";
+               break;
+       default:
+               ppag_enable_flags = "Unknown";
+               break;
+       }
+
+       print_field("Enable: %s (0x%8.8x)", ppag_enable_flags, enable);
+}
+
 static const struct vendor_ocf vendor_ocf_table[] = {
        { 0x001, "Reset",
                        reset_cmd, 8, true,
@@ -776,7 +799,9 @@ static const struct vendor_ocf vendor_ocf_table[] = {
        { 0x0a6, "Read Supported Features",
                        read_supported_features_cmd, 1, true,
                        read_supported_features_rsp, 19, true },
-
+       { 0x20b, "PPAG Enable",
+                       ppag_enable, 4, true,
+                       status_rsp, 1, true },
        { }
 };
 
@@ -792,11 +817,13 @@ const struct vendor_ocf *intel_vendor_ocf(uint16_t ocf)
        return NULL;
 }
 
-static void startup_evt(uint16_t index, const void *data, uint8_t size)
+static void startup_evt(struct timeval *tv, uint16_t index,
+                               const void *data, uint8_t size)
 {
 }
 
-static void fatal_exception_evt(uint16_t index, const void *data, uint8_t size)
+static void fatal_exception_evt(struct timeval *tv, uint16_t index,
+                               const void *data, uint8_t size)
 {
        uint16_t line = get_le16(data);
        uint8_t module = get_u8(data + 2);
@@ -807,7 +834,8 @@ static void fatal_exception_evt(uint16_t index, const void *data, uint8_t size)
        print_field("Reason: 0x%2.2x", reason);
 }
 
-static void bootup_evt(uint16_t index, const void *data, uint8_t size)
+static void bootup_evt(struct timeval *tv, uint16_t index,
+                               const void *data, uint8_t size)
 {
        uint8_t zero = get_u8(data);
        uint8_t num_packets = get_u8(data + 1);
@@ -910,7 +938,8 @@ static void bootup_evt(uint16_t index, const void *data, uint8_t size)
        print_field("DDC status: %s (0x%2.2x)", str, ddc_status);
 }
 
-static void default_bd_data_evt(uint16_t index, const void *data, uint8_t size)
+static void default_bd_data_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t mem_status = get_u8(data);
        const char *str;
@@ -927,8 +956,8 @@ static void default_bd_data_evt(uint16_t index, const void *data, uint8_t size)
        print_field("Memory status: %s (0x%2.2x)", str, mem_status);
 }
 
-static void secure_send_commands_result_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void secure_send_commands_result_evt(struct timeval *tv, uint16_t index,
+                                               const void *data, uint8_t size)
 {
        uint8_t result = get_u8(data);
        uint16_t opcode = get_le16(data + 1);
@@ -972,7 +1001,8 @@ static void secure_send_commands_result_evt(uint16_t index, const void *data,
        print_status(status);
 }
 
-static void debug_exception_evt(uint16_t index, const void *data, uint8_t size)
+static void debug_exception_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint16_t line = get_le16(data);
        uint8_t module = get_u8(data + 2);
@@ -983,8 +1013,8 @@ static void debug_exception_evt(uint16_t index, const void *data, uint8_t size)
        print_field("Reason: 0x%2.2x", reason);
 }
 
-static void le_link_established_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void le_link_established_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint16_t handle = get_le16(data);
        uint32_t access_addr = get_le32(data + 10);
@@ -998,7 +1028,8 @@ static void le_link_established_evt(uint16_t index, const void *data,
        packet_hexdump(data + 14, size - 14);
 }
 
-static void scan_status_evt(uint16_t index, const void *data, uint8_t size)
+static void scan_status_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t enable = get_u8(data);
 
@@ -1013,15 +1044,16 @@ static void scan_status_evt(uint16_t index, const void *data, uint8_t size)
 
 }
 
-static void act_deact_traces_complete_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void act_deact_traces_complete_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t status = get_u8(data);
 
        print_status(status);
 }
 
-static void lmp_pdu_trace_evt(uint16_t index, const void *data, uint8_t size)
+static void lmp_pdu_trace_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t type, len, id;
        uint16_t handle, count;
@@ -1115,16 +1147,16 @@ static void lmp_pdu_trace_evt(uint16_t index, const void *data, uint8_t size)
        }
 }
 
-static void write_bd_data_complete_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void write_bd_data_complete_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t status = get_u8(data);
 
        print_status(status);
 }
 
-static void sco_rejected_via_lmp_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void sco_rejected_via_lmp_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t reason = get_u8(data + 6);
 
@@ -1132,8 +1164,8 @@ static void sco_rejected_via_lmp_evt(uint16_t index, const void *data,
        packet_print_error("Reason", reason);
 }
 
-static void ptt_switch_notification_evt(uint16_t index, const void *data,
-                                                       uint8_t size)
+static void ptt_switch_notification_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint16_t handle = get_le16(data);
        uint8_t table = get_u8(data + 2);
@@ -1156,7 +1188,8 @@ static void ptt_switch_notification_evt(uint16_t index, const void *data,
        print_field("Packet type table: %s (0x%2.2x)", str, table);
 }
 
-static void system_exception_evt(uint16_t index, const void *data, uint8_t size)
+static void system_exception_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        uint8_t type = get_u8(data);
        const char *str;
@@ -1740,7 +1773,8 @@ static const struct intel_tlv *process_ext_subevent(const struct intel_tlv *tlv,
        return next_tlv;
 }
 
-static void intel_vendor_ext_evt(uint16_t index, const void *data, uint8_t size)
+static void intel_vendor_ext_evt(struct timeval *tv, uint16_t index,
+                                       const void *data, uint8_t size)
 {
        /* The data pointer points to a number of tlv.*/
        const struct intel_tlv *tlv = data;