Hello community, here is the log from the commit of package bluez-hcidump checked in at Thu Jul 5 00:47:57 CEST 2007. -------- --- bluez-hcidump/bluez-hcidump.changes 2007-05-10 13:06:53.000000000 +0200 +++ /mounts/work_src_done/STABLE/bluez-hcidump/bluez-hcidump.changes 2007-07-03 16:49:36.000000000 +0200 @@ -1,0 +2,13 @@ +Tue Jul 3 16:47:38 CEST 2007 - seife@suse.de + +- update to v1.37: + * Add decoding for SCO packet flags. + * Add decoding for more extended inquiry features. + * Add missing HCI command and event decodings. +- v1.36: + * Add missing HCI command definitions. + * Add missing HCI event definitions. + * Add missing HCI error definitions. +- This version needs at least bluez-libs-3.12 + +------------------------------------------------------------------- Old: ---- bluez-hcidump-1.35.tar.gz New: ---- bluez-hcidump-1.37.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bluez-hcidump.spec ++++++ --- /var/tmp/diff_new_pack.G26833/_old 2007-07-05 00:47:17.000000000 +0200 +++ /var/tmp/diff_new_pack.G26833/_new 2007-07-05 00:47:17.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package bluez-hcidump (Version 1.35) +# spec file for package bluez-hcidump (Version 1.37) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -13,16 +13,16 @@ Name: bluez-hcidump BuildRequires: bluez-libs pkgconfig URL: http://bluez.sourceforge.net -Version: 1.35 +Version: 1.37 Release: 1 Summary: HCI Dumper for Debugging Bluetooth Connections -License: GNU General Public License (GPL) +License: GPL v2 or later PreReq: %insserv_prereq Group: Development/Tools/Debuggers Autoreqprov: on Source: bluez-hcidump-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build -Requires: bluez-libs >= 2.23 +Requires: bluez-libs >= 3.12 %description An HCI dumper for debugging Bluetooth connections for BlueZ. @@ -66,6 +66,16 @@ %doc AUTHORS COPYING INSTALL ChangeLog NEWS README %changelog +* Tue Jul 03 2007 - seife@suse.de +- update to v1.37: + * Add decoding for SCO packet flags. + * Add decoding for more extended inquiry features. + * Add missing HCI command and event decodings. +- v1.36: + * Add missing HCI command definitions. + * Add missing HCI event definitions. + * Add missing HCI error definitions. +- This version needs at least bluez-libs-3.12 * Thu May 10 2007 - seife@suse.de - update to v1.35: * Add partial decoding for eSCO setup. ++++++ bluez-hcidump-1.35.tar.gz -> bluez-hcidump-1.37.tar.gz ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-hcidump-1.35/ChangeLog new/bluez-hcidump-1.37/ChangeLog --- old/bluez-hcidump-1.35/ChangeLog 2007-05-09 08:40:39.000000000 +0200 +++ new/bluez-hcidump-1.37/ChangeLog 2007-06-24 23:03:42.000000000 +0200 @@ -1,3 +1,16 @@ +ver 1.37: + Add decoding for SCO packet flags. + Add decoding for more extended inquiry features. + Add missing HCI command and event decodings. + + Note: + This version needs at least bluez-libs-3.12 + +ver 1.36: + Add missing HCI command definitions. + Add missing HCI event definitions. + Add missing HCI error definitions. + ver 1.35: Add partial decoding for eSCO setup. Fix HCI command array size. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-hcidump-1.35/configure new/bluez-hcidump-1.37/configure --- old/bluez-hcidump-1.35/configure 2007-05-09 08:42:33.000000000 +0200 +++ new/bluez-hcidump-1.37/configure 2007-06-24 23:04:09.000000000 +0200 @@ -1582,7 +1582,7 @@ # Define the identity of the package. PACKAGE=bluez-hcidump - VERSION=1.35 + VERSION=1.37 cat >>confdefs.h <<_ACEOF diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-hcidump-1.35/configure.in new/bluez-hcidump-1.37/configure.in --- old/bluez-hcidump-1.35/configure.in 2007-05-09 08:40:39.000000000 +0200 +++ new/bluez-hcidump-1.37/configure.in 2007-06-24 23:03:42.000000000 +0200 @@ -1,7 +1,7 @@ AC_PREREQ(2.50) AC_INIT() -AM_INIT_AUTOMAKE(bluez-hcidump, 1.35) +AM_INIT_AUTOMAKE(bluez-hcidump, 1.37) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-hcidump-1.35/parser/hci.c new/bluez-hcidump-1.37/parser/hci.c --- old/bluez-hcidump-1.35/parser/hci.c 2007-05-09 08:40:39.000000000 +0200 +++ new/bluez-hcidump-1.37/parser/hci.c 2007-06-24 00:55:57.000000000 +0200 @@ -50,7 +50,7 @@ return (manufacturer == DEFAULT_COMPID ? parser.defcompid : manufacturer); } -#define EVENT_NUM 55 +#define EVENT_NUM 61 static char *event_str[EVENT_NUM + 1] = { "Unknown", "Inquiry Complete", @@ -100,6 +100,7 @@ "Synchronous Connect Changed", "Sniff Subrate", "Extended Inquiry Result", + "Encryption Key Refresh Complete", "Unknown", "Unknown", "Unknown", @@ -108,9 +109,14 @@ "Unknown", "Unknown", "Link Supervision Timeout Change", + "Enhanced Flush Complete", + "Unknown", + "Unknown", + "Unknown", + "Remote Host Supported Features Notification", }; -#define CMD_LINKCTL_NUM 42 +#define CMD_LINKCTL_NUM 49 static char *cmd_linkctl_str[CMD_LINKCTL_NUM + 1] = { "Unknown", "Inquiry", @@ -155,6 +161,13 @@ "Setup Synchronous Connection", "Accept Synchronous Connection", "Reject Synchronous Connection", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Unknown", }; #define CMD_LINKPOL_NUM 17 @@ -176,10 +189,10 @@ "Read Default Link Policy Settings", "Write Default Link Policy Settings", "Flow Specification", - "Sniff Subrate", + "Sniff Subrating", }; -#define CMD_HOSTCTL_NUM 82 +#define CMD_HOSTCTL_NUM 95 static char *cmd_hostctl_str[CMD_HOSTCTL_NUM + 1] = { "Unknown", "Set Event Mask", @@ -264,6 +277,20 @@ "Unknown", "Read Extended Inquiry Response", "Write Extended Inquiry Response", + "Refresh Encryption Key", + "Unknown", + "Unknown", + "Unknown", + "Unknown", + "Read Inquiry Response Transmit Power Level", + "Write Inquiry Response Transmit Power Level", + "Read Default Erroneous Data Reporting", + "Write Default Erroneous Data Reporting", + "Unknown", + "Unknown", + "Unknown", + "Enhanced Flush" + "Unknown", }; #define CMD_INFO_NUM 9 @@ -292,7 +319,16 @@ "Read Clock", }; -#define ERROR_CODE_NUM 53 +#define CMD_TESTING_NUM 4 +static char *cmd_testing_str[CMD_TESTING_NUM + 1] = { + "Unknown", + "Read Loopback Mode", + "Write Loopback Mode", + "Enable Device Under Test mode", + "Unknown", +}; + +#define ERROR_CODE_NUM 56 static char *error_code_str[ERROR_CODE_NUM + 1] = { "Success", "Unknown HCI Command", @@ -348,6 +384,9 @@ "Reserved", "Reserved Slot Violation", "Role Switch Failed", + "Extended Inquiry Response Too Large", + "Unknown", + "Unknown", }; static char *status2str(uint8_t status) @@ -405,7 +444,10 @@ break; case OGF_TESTING_CMD: - cmd = "Testing"; + if (ocf <= CMD_TESTING_NUM) + cmd = cmd_testing_str[ocf]; + else + cmd = "Unknown"; break; case OGF_VENDOR_CMD: @@ -479,14 +521,34 @@ length--; switch (type) { + case 0x01: + p_indent(level, frm); + printf("Flags:"); + for (i = 0; i < length; i++) + printf(" 0x%2.2x", *((uint8_t *) (frm->ptr + i))); + printf("\n"); + break; + + case 0x02: + case 0x03: + p_indent(level, frm); + printf("%s service classes:", + type == 0x02 ? "Shortened" : "Complete"); + for (i = 0; i < length / 2; i++) { + uint16_t val = btohs(bt_get_unaligned((uint16_t *) (frm->ptr + (i * 2)))); + printf(" 0x%4.4x", val); + } + printf("\n"); + break; + case 0x08: case 0x09: str = malloc(length + 1); if (str) { snprintf(str, length + 1, "%s", (char *) frm->ptr); for (i = 0; i < length; i++) - if (!isprint(str[i])) - str[i] = '.'; + if (!isprint(str[i])) + str[i] = '.'; p_indent(level, frm); printf("%s local name: \'%s\'\n", type == 0x08 ? "Shortened" : "Complete", str); @@ -494,6 +556,11 @@ } break; + case 0x0a: + p_indent(level, frm); + printf("TX power level: %d\n", *((uint8_t *) frm->ptr)); + break; + default: p_indent(level, frm); printf("Unknown type 0x%02x with %d bytes data\n", @@ -773,9 +840,9 @@ } } -static inline void sniff_subrate_dump(int level, struct frame *frm) +static inline void sniff_subrating_dump(int level, struct frame *frm) { - sniff_subrate_cp *cp = frm->ptr; + sniff_subrating_cp *cp = frm->ptr; p_indent(level, frm); printf("handle %d\n", btohs(cp->handle)); @@ -1026,6 +1093,30 @@ ext_inquiry_response_dump(level, frm); } +static inline void write_inquiry_transmit_power_level_dump(int level, struct frame *frm) +{ + write_inquiry_transmit_power_level_cp *cp = frm->ptr; + + p_indent(level, frm); + printf("level %d\n", cp->level); +} + +static inline void write_default_error_data_reporting_dump(int level, struct frame *frm) +{ + write_default_error_data_reporting_cp *cp = frm->ptr; + + p_indent(level, frm); + printf("reporting %d\n", cp->reporting); +} + +static inline void enhanced_flush_dump(int level, struct frame *frm) +{ + enhanced_flush_cp *cp = frm->ptr; + + p_indent(level, frm); + printf("handle %d type %d\n", btohs(cp->handle), cp->type); +} + static inline void request_transmit_power_level_dump(int level, struct frame *frm) { read_transmit_power_level_cp *cp = frm->ptr; @@ -1100,7 +1191,7 @@ frm->len -= HCI_COMMAND_HDR_SIZE; if (ogf == OGF_VENDOR_CMD) { - if (ocf == 0 && get_manufacturer() == 10) { + if (ocf == 0 && get_manufacturer() == 10) { csr_dump(level + 1, frm); return; } @@ -1205,8 +1296,8 @@ case OCF_WRITE_LINK_POLICY: write_link_policy_dump(level + 1, frm); return; - case OCF_SNIFF_SUBRATE: - sniff_subrate_dump(level + 1, frm); + case OCF_SNIFF_SUBRATING: + sniff_subrating_dump(level + 1, frm); return; } break; @@ -1279,6 +1370,7 @@ return; case OCF_FLUSH: case OCF_READ_LINK_SUPERVISION_TIMEOUT: + case OCF_REFRESH_ENCRYPTION_KEY: generic_command_dump(level + 1, frm); return; case OCF_WRITE_LINK_SUPERVISION_TIMEOUT: @@ -1287,6 +1379,15 @@ case OCF_WRITE_EXT_INQUIRY_RESPONSE: write_ext_inquiry_response_dump(level + 1, frm); return; + case OCF_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL: + write_inquiry_transmit_power_level_dump(level + 1, frm); + return; + case OCF_WRITE_DEFAULT_ERROR_DATA_REPORTING: + write_default_error_data_reporting_dump(level + 1, frm); + return; + case OCF_ENHANCED_FLUSH: + enhanced_flush_dump(level + 1, frm); + return; } break; @@ -1615,6 +1716,32 @@ } } +static inline void read_inquiry_transmit_power_level_dump(int level, struct frame *frm) +{ + read_inquiry_transmit_power_level_rp *rp = frm->ptr; + + p_indent(level, frm); + printf("status 0x%2.2x level %d\n", rp->status, rp->level); + + if (rp->status > 0) { + p_indent(level, frm); + printf("Error: %s\n", status2str(rp->status)); + } +} + +static inline void read_default_error_data_reporting_dump(int level, struct frame *frm) +{ + read_default_error_data_reporting_rp *rp = frm->ptr; + + p_indent(level, frm); + printf("status 0x%2.2x reporting %d\n", rp->status, rp->reporting); + + if (rp->status > 0) { + p_indent(level, frm); + printf("Error: %s\n", status2str(rp->status)); + } +} + static inline void read_local_version_dump(int level, struct frame *frm) { read_local_version_rp *rp = frm->ptr; @@ -1839,7 +1966,7 @@ case OGF_LINK_POLICY: switch (ocf) { case OCF_WRITE_LINK_POLICY: - case OCF_SNIFF_SUBRATE: + case OCF_SNIFF_SUBRATING: generic_response_dump(level, frm); return; } @@ -1900,6 +2027,12 @@ case OCF_READ_EXT_INQUIRY_RESPONSE: read_ext_inquiry_response_dump(level, frm); return; + case OCF_READ_INQUIRY_TRANSMIT_POWER_LEVEL: + read_inquiry_transmit_power_level_dump(level, frm); + return; + case OCF_READ_DEFAULT_ERROR_DATA_REPORTING: + read_default_error_data_reporting_dump(level, frm); + return; case OCF_FLUSH: case OCF_WRITE_LINK_SUPERVISION_TIMEOUT: generic_response_dump(level, frm); @@ -1925,6 +2058,8 @@ case OCF_WRITE_AFH_MODE: case OCF_SET_AFH_CLASSIFICATION: case OCF_WRITE_EXT_INQUIRY_RESPONSE: + case OCF_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL: + case OCF_WRITE_DEFAULT_ERROR_DATA_REPORTING: case OCF_SET_CONTROLLER_TO_HOST_FC: case OCF_HOST_BUFFER_SIZE: status_response_dump(level, frm); @@ -2444,9 +2579,9 @@ } } -static inline void sniff_subrate_event_dump(int level, struct frame *frm) +static inline void sniff_subrating_event_dump(int level, struct frame *frm) { - evt_sniff_subrate *evt = frm->ptr; + evt_sniff_subrating *evt = frm->ptr; p_indent(level, frm); printf("status 0x%2.2x handle %d\n", evt->status, btohs(evt->handle)); @@ -2490,15 +2625,32 @@ } } -static inline void link_supervision_timeout_change_dump(int level, struct frame *frm) +static inline void link_supervision_timeout_changed_dump(int level, struct frame *frm) { - evt_link_supervision_timeout_change *evt = frm->ptr; + evt_link_supervision_timeout_changed *evt = frm->ptr; p_indent(level, frm); printf("handle %d timeout %d\n", btohs(evt->handle), btohs(evt->timeout)); } +static inline void remote_host_features_notify_dump(int level, struct frame *frm) +{ + evt_remote_host_features_notify *evt = frm->ptr; + char addr[18]; + int i; + + p_indent(level, frm); + p_ba2str(&evt->bdaddr, addr); + printf("bdaddr %s\n", addr); + + p_indent(level, frm); + printf("Features:"); + for (i = 0; i < 8; i++) + printf(" 0x%2.2x", evt->features[i]); + printf("\n"); +} + static inline void event_dump(int level, struct frame *frm) { hci_event_hdr *hdr = frm->ptr; @@ -2668,14 +2820,23 @@ case EVT_SYNC_CONN_CHANGED: sync_conn_changed_dump(level + 1, frm); break; - case EVT_SNIFF_SUBRATE: - sniff_subrate_event_dump(level + 1, frm); + case EVT_SNIFF_SUBRATING: + sniff_subrating_event_dump(level + 1, frm); break; case EVT_EXTENDED_INQUIRY_RESULT: extended_inq_result_dump(level + 1, frm); break; - case EVT_LINK_SUPERVISION_TIMEOUT_CHANGE: - link_supervision_timeout_change_dump(level + 1, frm); + case EVT_ENCRYPTION_KEY_REFRESH_COMPLETE: + generic_response_dump(level + 1, frm); + break; + case EVT_LINK_SUPERVISION_TIMEOUT_CHANGED: + link_supervision_timeout_changed_dump(level + 1, frm); + break; + case EVT_ENHANCED_FLUSH_COMPLETE: + generic_command_dump(level + 1, frm); + break; + case EVT_REMOTE_HOST_FEATURES_NOTIFY: + remote_host_features_notify_dump(level + 1, frm); break; default: raw_dump(level, frm); @@ -2712,6 +2873,7 @@ { hci_sco_hdr *hdr = (void *) frm->ptr; uint16_t handle = btohs(hdr->handle); + uint8_t flags = acl_flags(handle); int len; if (frm->audio_fd > fileno(stderr)) @@ -2719,8 +2881,8 @@ if (!p_filter(FILT_SCO)) { p_indent(level, frm); - printf("SCO data: handle %d dlen %d\n", - acl_handle(handle), hdr->dlen); + printf("SCO data: handle %d flags 0x%2.2x dlen %d\n", + acl_handle(handle), flags, hdr->dlen); level++; frm->ptr += HCI_SCO_HDR_SIZE; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org