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,
{ 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 },
{ }
};
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);
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);
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;
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);
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);
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);
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);
}
-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;
}
}
-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);
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);
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;
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;