diff options
author | Michal Labedzki <michal.labedzki@tieto.com> | 2014-12-31 10:53:25 +0100 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2015-01-08 16:00:18 +0000 |
commit | 8bfd306a27e6b18499eef3921bbdd44982bc38a8 (patch) | |
tree | 1b501e9f6cd0617eb6dc25bbbb8f403bbe30df7a | |
parent | 90453a4918349baadfdbeb22080258005f3fe5b8 (diff) |
Bluetooth: Update to latest Assigned Numbers (up to 4.2)
Also start decoding next two profile attribute groups in SDP
(MPS and CTN) and add new two fields in EIR/AD.
Change-Id: I4dc13df2b3b13e8c2a2a5c4af2cabae9ee83d539
Reviewed-on: https://code.wireshark.org/review/6409
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
-rw-r--r-- | epan/dissectors/packet-bluetooth.c | 465 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_cmd.c | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_evt.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-btl2cap.c | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-btl2cap.h | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-btsdp.c | 656 | ||||
-rw-r--r-- | epan/dissectors/packet-btsdp.h | 7 |
7 files changed, 1109 insertions, 45 deletions
diff --git a/epan/dissectors/packet-bluetooth.c b/epan/dissectors/packet-bluetooth.c index 20f331552a..a16bc5073f 100644 --- a/epan/dissectors/packet-bluetooth.c +++ b/epan/dissectors/packet-bluetooth.c @@ -148,6 +148,9 @@ static const value_string bluetooth_uuid_vals[] = { { 0x1139, "3D Synchronization Profile" }, { 0x113A, "Multi-Profile" }, { 0x113B, "Multi-Profile SC" }, + { 0x113C, "Calendar, Task and Notes Access Service" }, + { 0x113D, "Calendar, Task and Notes Notification Service" }, + { 0x113E, "Calendar, Task and Notes Profile" }, { 0x1200, "PnP Information" }, { 0x1201, "Generic Networking" }, { 0x1202, "Generic File Transfer" }, @@ -187,7 +190,14 @@ static const value_string bluetooth_uuid_vals[] = { { 0x1816, "Cycling Speed and Cadence" }, { 0x1818, "Cycling Power" }, { 0x1819, "Location and Navigation" }, - /* Units - http://developer.bluetooth.org/gatt/declarations/Pages/DeclarationsHome.aspx */ + { 0x181A, "Environmental Sensing" }, + { 0x181B, "Body Composition" }, + { 0x181C, "User Data" }, + { 0x181D, "Weight Scale" }, + { 0x181E, "Bond Management" }, + { 0x181F, "Continuous Glucose Monitoring" }, + { 0x1820, "Internet Protocol Support" }, + /* Units - https://developer.bluetooth.org/gatt/units/Pages/default.aspx */ { 0x2700, "unitless" }, { 0x2701, "length (metre)" }, { 0x2702, "mass (kilogram)" }, @@ -299,12 +309,12 @@ static const value_string bluetooth_uuid_vals[] = { { 0x27B6, "irradiance (watt per square metre)" }, { 0x27B7, "milliliter (per kilogram per minute)" }, { 0x27B8, "mass (pound)" }, - /* Declarations - http://developer.bluetooth.org/gatt/declarations/Pages/DeclarationsHome.aspx */ + /* Declarations - https://developer.bluetooth.org/gatt/declarations/Pages/DeclarationsHome.aspx */ { 0x2800, "GATT Primary Service Declaration" }, { 0x2801, "GATT Secondary Service Declaration" }, { 0x2802, "GATT Include Declaration" }, { 0x2803, "GATT Characteristic Declaration" }, - /* Descriptors - http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorsHomePage.aspx */ + /* Descriptors - https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorsHomePage.aspx */ { 0x2900, "Characteristic Extended Properties" }, { 0x2901, "Characteristic User Description" }, { 0x2902, "Client Characteristic Configuration" }, @@ -314,7 +324,10 @@ static const value_string bluetooth_uuid_vals[] = { { 0x2906, "Valid Range" }, { 0x2907, "External Report Reference" }, { 0x2908, "Report Reference" }, - /* Characteristics - http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx */ + { 0x290B, "Environmental Sensing Configuration" }, + { 0x290C, "Environmental Sensing Measurement" }, + { 0x290D, "Environmental Sensing Trigger Setting" }, + /* Characteristics - https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx */ { 0x2A00, "Device Name" }, { 0x2A01, "Appearance" }, { 0x2A02, "Peripheral Privacy Flag" }, @@ -352,6 +365,7 @@ static const value_string bluetooth_uuid_vals[] = { { 0x2A29, "Manufacturer Name String" }, { 0x2A2A, "IEEE 11073-20601 Regulatory Certification Data List" }, { 0x2A2B, "Current Time" }, + { 0x2A2C, "Magnetic Declination" }, { 0x2A31, "Scan Refresh" }, { 0x2A32, "Boot Keyboard Output Report" }, { 0x2A33, "Boot Mouse Input Report" }, @@ -396,25 +410,145 @@ static const value_string bluetooth_uuid_vals[] = { { 0x2A69, "Position Quality" }, { 0x2A6A, "LN Feature" }, { 0x2A6B, "LN Control Point" }, + { 0x2A6C, "Elevation" }, + { 0x2A6D, "Pressure" }, + { 0x2A6E, "Temperature" }, + { 0x2A6F, "Humidity" }, + { 0x2A70, "True Wind Speed" }, + { 0x2A71, "True Wind Direction" }, + { 0x2A72, "Apparent Wind Speed" }, + { 0x2A73, "Apparent Wind Direction" }, + { 0x2A74, "Gust Factor" }, + { 0x2A75, "Pollen Concentration" }, + { 0x2A76, "UV Index" }, + { 0x2A77, "Irradiance" }, + { 0x2A78, "Rainfall" }, + { 0x2A79, "Wind Chill" }, + { 0x2A7A, "Heat Index" }, + { 0x2A7B, "Dew Point" }, + { 0x2A7D, "Descriptor Value Changed" }, + { 0x2A7E, "Aerobic Heart Rate Lower Limit" }, + { 0x2A7F, "Aerobic Threshold" }, + { 0x2A80, "Age" }, + { 0x2A81, "Anaerobic Heart Rate Lower Limit" }, + { 0x2A82, "Anaerobic Heart Rate Upper Limit" }, + { 0x2A83, "Anaerobic Threshold" }, + { 0x2A84, "Aerobic Heart Rate Upper Limit" }, + { 0x2A85, "Date of Birth" }, + { 0x2A86, "Date of Threshold Assessment" }, + { 0x2A87, "Email Address" }, + { 0x2A88, "Fat Burn Heart Rate Lower Limit" }, + { 0x2A89, "Fat Burn Heart Rate Upper Limit" }, + { 0x2A8A, "First Name" }, + { 0x2A8B, "Five Zone Heart Rate Limits" }, + { 0x2A8C, "Gender" }, + { 0x2A8D, "Heart Rate Max" }, + { 0x2A8E, "Height" }, + { 0x2A8F, "Hip Circumference" }, + { 0x2A90, "Last Name" }, + { 0x2A91, "Maximum Recommended Heart Rate" }, + { 0x2A92, "Resting Heart Rate" }, + { 0x2A93, "Sport Type for Aerobic and Anaerobic Thresholds" }, + { 0x2A94, "Three Zone Heart Rate Limits" }, + { 0x2A95, "Two Zone Heart Rate Limit" }, + { 0x2A96, "VO2 Max" }, + { 0x2A97, "Waist Circumference" }, + { 0x2A98, "Weight" }, + { 0x2A99, "Database Change Increment" }, + { 0x2A9A, "User Index" }, + { 0x2A9B, "Body Composition Feature" }, + { 0x2A9C, "Body Composition Measurement" }, + { 0x2A9D, "Weight Measurement" }, + { 0x2A9E, "Weight Scale Feature" }, + { 0x2A9F, "User Control Point" }, + { 0x2AA0, "Magnetic Flux Density - 2D" }, + { 0x2AA1, "Magnetic Flux Density - 3D" }, + { 0x2AA2, "Language" }, + { 0x2AA3, "Barometric Pressure Trend" }, + { 0x2AA4, "Bond Management Control Point" }, + { 0x2AA5, "Bond Management Feature" }, + { 0x2AA6, "Central Address Resolution" }, + { 0x2AA7, "CGM Measurement" }, + { 0x2AA8, "CGM Feature" }, + { 0x2AA9, "CGM Status" }, + { 0x2AAA, "CGM Session Start Time" }, + { 0x2AAB, "CGM Session Run Time" }, + { 0x2AAC, "CGM Specific Ops Control Point" }, /* 16-bit UUID for Members - https://www.bluetooth.org/en-us/Pages/LoginRestrictedAll/16-bit-UUIDs-member.aspx */ - { 0xFEEE, "Company UUID #2: Polar Electro Oy"}, /* Allocated 06-Mar-14 */ - { 0xFEEF, "Company UUID #1: Polar Electro Oy"}, /* Allocated 06-Mar-14 */ - { 0xFEF0, "Company UUID: Intel"}, /* Allocated 06-Mar-14 */ - { 0xFEF1, "Company UUID #2: CSR"}, /* Allocated 13-Feb-14 */ - { 0xFEF2, "Company UUID #1: CSR"}, /* Allocated 13-Feb-14 */ - { 0xFEF3, "Company UUID #2: Google"}, /* Allocated 13-Feb-14 */ - { 0xFEF4, "Company UUID #1: Google"}, /* Allocated 13-Feb-14 */ - { 0xFEF5, "Company UUID: Dialog Semiconductor GmbH"}, /* Allocated 13-Feb-14 */ - { 0xFEF6, "Company UUID: Wicentric, Inc."}, /* Allocated 13-Feb-14 */ - { 0xFEF7, "Company UUID #2: Aplix Corporation"}, /* Allocated 13-Feb-14 */ - { 0xFEF8, "Company UUID #1: Aplix Corporation"}, /* Allocated 13-Feb-14 */ - { 0xFEF9, "Company UUID #2: PayPal, Inc."}, /* Allocated 13-Jan-14 */ - { 0xFEFA, "Company UUID #1: PayPal, Inc."}, /* Allocated 13-Jan-14 */ - { 0xFEFB, "Company UUID: Stollmann E+V GmbH"}, /* Allocated 06-Jan-14 */ - { 0xFEFC, "Company UUID #2: Qualcomm Retail Solutions, Inc."}, /* Allocated 20-Dec-13 */ - { 0xFEFD, "Company UUID #1: Qualcomm Retail Solutions, Inc."}, /* Allocated 20-Dec-13 */ - { 0xFEFE, "Company UUID: GN ReSound A/S"}, /* Allocated 17-Dec-13 */ - { 0xFEFF, "Company UUID: GN Netcom"}, /* Allocated 12-Dec-13 */ + { 0XFEB6, "Vencer Co, Ltd" }, + { 0XFEB7, "Facebook, Inc." }, + { 0XFEB8, "Facebook, Inc." }, + { 0XFEB9, "LG Electronics" }, + { 0XFEBA, "Tencent Holdings Limited" }, + { 0XFEBB, "adafruit industries" }, + { 0XFEBC, "Dexcom, Inc. " }, + { 0XFEBD, "Clover Network, Inc. " }, + { 0XFEBE, "Bose Corporation" }, + { 0XFEBF, "Nod, Inc. " }, + { 0XFEC0, "KDDI Corporation" }, + { 0XFEC1, "KDDI Corporation" }, + { 0XFEC2, "Blue Spark Technologies, Inc. " }, + { 0XFEC3, "360fly, Inc. " }, + { 0XFEC4, "PLUS Location Systems" }, + { 0XFEC5, "Realtek Semiconductor Corp." }, + { 0XFEC6, "Kocomojo, LLC" }, + { 0XFEC7, "Apple, Inc." }, + { 0XFEC8, "Apple, Inc." }, + { 0XFEC9, "Apple, Inc." }, + { 0XFECA, "Apple, Inc." }, + { 0XFECB, "Apple, Inc." }, + { 0XFECC, "Apple, Inc." }, + { 0XFECD, "Apple, Inc." }, + { 0XFECE, "Apple, Inc." }, + { 0XFECF, "Apple, Inc." }, + { 0XFED0, "Apple, Inc." }, + { 0XFED1, "Apple, Inc." }, + { 0XFED2, "Apple, Inc." }, + { 0XFED3, "Apple, Inc." }, + { 0XFED4, "Apple, Inc." }, + { 0XFED5, "Plantronics Inc." }, + { 0XFED6, "Broadcom Corporation" }, + { 0XFED7, "Broadcom Corporation" }, + { 0xFED8, "Google" }, + { 0xFED9, "Pebble Technology Corporation" }, + { 0xFEDA, "ISSC Technologies Corporation" }, + { 0xFEDB, "Perka, Inc." }, + { 0XFEDC, "Jawbone" }, + { 0XFEDD, "Jawbone" }, + { 0XFEDE, "Coin, Inc." }, + { 0XFEDF, "Design SHIFT" }, + { 0XFEE0, "Anhui Huami Information Technology Co. " }, + { 0XFEE1, "Anhui Huami Information Technology Co." }, + { 0XFEE2, "Anki, Inc." }, + { 0XFEE3, "Anki, Inc." }, + { 0XFEE4, "Nordic Semiconductor ASA" }, + { 0XFEE5, "Nordic Semiconductor ASA" }, + { 0XFEE6, "Seed Labs, Inc." }, + { 0XFEE7, "Tencent Holdings Limited" }, + { 0XFEE8, "Quintic Corp." }, + { 0XFEE9, "Quintic Corp." }, + { 0xFEEA, "Swirl Networks, Inc." }, + { 0xFEEB, "Swirl Networks, Inc." }, + { 0xFEEC, "Tile, Inc. " }, + { 0xFEED, "Tile, Inc." }, + { 0xFEEE, "Polar Electro Oy" }, + { 0xFEEF, "Polar Electro Oy" }, + { 0xFEF0, "Intel" }, + { 0xFEF1, "CSR" }, + { 0xFEF2, "CSR" }, + { 0xFEF3, "Google" }, + { 0xFEF4, "Google" }, + { 0xFEF5, "Dialog Semiconductor GmbH" }, + { 0xFEF6, "Wicentric, Inc." }, + { 0xFEF7, "Aplix Corporation" }, + { 0xFEF8, "Aplix Corporation" }, + { 0xFEF9, "PayPal, Inc." }, + { 0xFEFA, "PayPal, Inc." }, + { 0xFEFB, "Stollmann E+V GmbH" }, + { 0xFEFC, "Gimbal, Inc." }, + { 0xFEFD, "Gimbal, Inc." }, + { 0xFEFE, "GN ReSound A/S" }, + { 0xFEFF, "GN Netcom" }, /* SDO Uuids - https://www.bluetooth.org/en-us/specification/assigned-numbers/sdo-16-bit-uuids */ { 0xFFFE, "Alliance for Wireless Power" }, { 0, NULL } @@ -441,13 +575,13 @@ static const value_string bluetooth_company_id_vals[] = { {0x000E, "Ceva, Inc. (formerly Parthus Technologies, Inc.)"}, {0x000F, "Broadcom Corporation"}, {0x0010, "Mitel Semiconductor"}, - {0x0011, "Widcomm, Inc."}, + {0x0011, "Widcomm, Inc"}, {0x0012, "Zeevo, Inc."}, {0x0013, "Atmel Corporation"}, {0x0014, "Mitsubishi Electric Corporation"}, {0x0015, "RTX Telecom A/S"}, {0x0016, "KC Technology Inc."}, - {0x0017, "Newlogic"}, + {0x0017, "NewLogic"}, {0x0018, "Transilica, Inc."}, {0x0019, "Rohde & Schwarz GmbH & Co. KG"}, {0x001A, "TTPCom Limited"}, @@ -461,7 +595,7 @@ static const value_string bluetooth_company_id_vals[] = { {0x0022, "NEC Corporation"}, {0x0023, "WavePlus Technology Co., Ltd."}, {0x0024, "Alcatel"}, - {0x0025, "Philips Semiconductors"}, + {0x0025, "NXP Semiconductors (formerly Philips Semiconductors)"}, {0x0026, "C Technologies"}, {0x0027, "Open Interface"}, {0x0028, "R F Micro Devices"}, @@ -473,21 +607,21 @@ static const value_string bluetooth_company_id_vals[] = { {0x002E, "Norwood Systems"}, {0x002F, "MewTel Technology Inc."}, {0x0030, "ST Microelectronics"}, - {0x0031, "Synopsys"}, + {0x0031, "Synopsis"}, {0x0032, "Red-M (Communications) Ltd"}, {0x0033, "Commil Ltd"}, {0x0034, "Computer Access Technology Corporation (CATC)"}, {0x0035, "Eclipse (HQ Espana) S.L."}, - {0x0036, "Renesas Technology Corp."}, + {0x0036, "Renesas Electronics Corporation"}, {0x0037, "Mobilian Corporation"}, {0x0038, "Terax"}, {0x0039, "Integrated System Solution Corp."}, {0x003A, "Matsushita Electric Industrial Co., Ltd."}, {0x003B, "Gennum Corporation"}, - {0x003C, "Research In Motion"}, + {0x003C, "BlackBerry Limited (formerly Research In Motion)"}, {0x003D, "IPextreme, Inc."}, - {0x003E, "Systems and Chips, Inc"}, - {0x003F, "Bluetooth SIG, Inc"}, + {0x003E, "Systems and Chips, Inc."}, + {0x003F, "Bluetooth SIG, Inc."}, {0x0040, "Seiko Epson Corporation"}, {0x0041, "Integrated Silicon Solution Taiwan, Inc."}, {0x0042, "CONWISE Technology Corporation Ltd"}, @@ -504,7 +638,7 @@ static const value_string bluetooth_company_id_vals[] = { {0x004D, "Staccato Communications, Inc."}, {0x004E, "Avago Technologies"}, {0x004F, "APT Licensing Ltd."}, - {0x0050, "SiRF Technology, Inc."}, + {0x0050, "SiRF Technology"}, {0x0051, "Tzero Technologies, Inc."}, {0x0052, "J&M Corporation"}, {0x0053, "Free2move AB"}, @@ -549,7 +683,7 @@ static const value_string bluetooth_company_id_vals[] = { {0x007A, "MStar Semiconductor, Inc."}, {0x007B, "Hanlynn Technologies"}, {0x007C, "A & R Cambridge"}, - {0x007D, "Seers Technology Co. Ltd."}, + {0x007D, "Seers Technology Co. Ltd"}, {0x007E, "Sports Tracking Technologies Ltd."}, {0x007F, "Autonet Mobile"}, {0x0080, "DeLorme Publishing Company, Inc."}, @@ -558,25 +692,25 @@ static const value_string bluetooth_company_id_vals[] = { {0x0083, "TimeKeeping Systems, Inc."}, {0x0084, "Ludus Helsinki Ltd."}, {0x0085, "BlueRadios, Inc."}, - {0x0086, "equinux AG"}, + {0x0086, "equinox AG"}, {0x0087, "Garmin International, Inc."}, {0x0088, "Ecotest"}, {0x0089, "GN ReSound A/S"}, {0x008A, "Jawbone"}, - {0x008B, "Topcon Positioning Systems, LLC"}, - {0x008C, "Qualcomm Labs, Inc."}, + {0x008B, "Topcorn Positioning Systems, LLC"}, + {0x008C, "Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)"}, {0x008D, "Zscan Software"}, {0x008E, "Quintic Corp."}, - {0x008F, "Stollmann E+V GmbH"}, + {0x008F, "Stollman E+V GmbH"}, {0x0090, "Funai Electric Co., Ltd."}, - {0x0091, "Advanced PANMOBIL systems GmbH & Co. KG"}, + {0x0091, "Advanced PANMOBIL Systems GmbH & Co. KG"}, {0x0092, "ThinkOptics, Inc."}, {0x0093, "Universal Electronics, Inc."}, {0x0094, "Airoha Technology Corp."}, {0x0095, "NEC Lighting, Ltd."}, {0x0096, "ODM Technology, Inc."}, - {0x0097, "Bluetrek Technologies Limited"}, - {0x0098, "zero1.tv GmbH"}, + {0x0097, "ConnecteDevice Ltd."}, + {0x0098, "zer01.tv GmbH"}, {0x0099, "i.Tech Dynamic Global Distribution Ltd."}, {0x009A, "Alpwise"}, {0x009B, "Jiangsu Toppower Automotive Electronics Co., Ltd."}, @@ -593,7 +727,7 @@ static const value_string bluetooth_company_id_vals[] = { {0x00A6, "Panda Ocean Inc."}, {0x00A7, "Visteon Corporation"}, {0x00A8, "ARP Devices Limited"}, - {0x00A9, "Magneti Marelli S.p.A."}, + {0x00A9, "Magneti Marelli S.p.A"}, {0x00AA, "CAEN RFID srl"}, {0x00AB, "Ingenieur-Systemgruppe Zahn GmbH"}, {0x00AC, "Green Throttle Games"}, @@ -612,6 +746,257 @@ static const value_string bluetooth_company_id_vals[] = { {0x00B9, "Johnson Controls, Inc."}, {0x00BA, "Starkey Laboratories Inc."}, {0x00BB, "S-Power Electronics Limited"}, + {0x00BC, "Ace Sensor Inc"}, + {0x00BD, "Aplix Corporation"}, + {0x00BE, "AAMP of America"}, + {0x00BF, "Stalmart Technology Limited"}, + {0x00C0, "AMICCOM Electronics Corporation"}, + {0x00C1, "Shenzhen Excelsecu Data Technology Co.,Ltd"}, + {0x00C2, "Geneq Inc."}, + {0x00C3, "adidas AG"}, + {0x00C4, "LG Electronics"}, + {0x00C5, "Onset Computer Corporation"}, + {0x00C6, "Selfly BV"}, + {0x00C7, "Quuppa Oy."}, + {0x00C8, "GeLo Inc"}, + {0x00C9, "Evluma"}, + {0x00CA, "MC10"}, + {0x00CB, "Binauric SE"}, + {0x00CC, "Beats Electronics"}, + {0x00CD, "Microchip Technology Inc."}, + {0x00CE, "Elgato Systems GmbH"}, + {0x00CF, "ARCHOS SA"}, + {0x00D0, "Dexcom, Inc."}, + {0x00D1, "Polar Electro Europe B.V."}, + {0x00D2, "Dialog Semiconductor B.V."}, + {0x00D3, "Taixingbang Technology (HK) Co,. LTD."}, + {0x00D4, "Kawantech"}, + {0x00D5, "Austco Communication Systems"}, + {0x00D6, "Timex Group USA, Inc."}, + {0x00D7, "Qualcomm Technologies, Inc."}, + {0x00D8, "Qualcomm Connected Experiences, Inc."}, + {0x00D9, "Voyetra Turtle Beach"}, + {0x00DA, "txtr GmbH"}, + {0x00DB, "Biosentronics"}, + {0x00DC, "Procter & Gamble"}, + {0x00DD, "Hosiden Corporation"}, + {0x00DE, "Muzik LLC"}, + {0x00DF, "Misfit Wearables Corp"}, + {0x00E0, "Google"}, + {0x00E1, "Danlers Ltd"}, + {0x00E2, "Semilink Inc"}, + {0x00E3, "inMusic Brands, Inc"}, + {0x00E4, "L.S. Research Inc."}, + {0x00E5, "Eden Software Consultants Ltd."}, + {0x00E6, "Freshtemp"}, + {0x00E7, "KS Technologies"}, + {0x00E8, "ACTS Technologies"}, + {0x00E9, "Vtrack Systems"}, + {0x00EA, "Nielsen-Kellerman Company"}, + {0x00EB, "Server Technology, Inc."}, + {0x00EC, "BioResearch Associates"}, + {0x00ED, "Jolly Logic, LLC"}, + {0x00EE, "Above Average Outcomes, Inc."}, + {0x00EF, "Bitsplitters GmbH"}, + {0x00F0, "PayPal, Inc."}, + {0x00F1, "Witron Technology Limited"}, + {0x00F2, "Aether Things Inc. (formerly Morse Project Inc.)"}, + {0x00F3, "Kent Displays Inc."}, + {0x00F4, "Nautilus Inc."}, + {0x00F5, "Smartifier Oy"}, + {0x00F6, "Elcometer Limited"}, + {0x00F7, "VSN Technologies Inc."}, + {0x00F8, "AceUni Corp., Ltd."}, + {0x00F9, "StickNFind"}, + {0x00FA, "Crystal Code AB"}, + {0x00FB, "KOUKAAM a.s."}, + {0x00FC, "Delphi Corporation"}, + {0x00FD, "ValenceTech Limited"}, + {0x00FE, "Reserved"}, + {0x00FF, "Typo Products, LLC"}, + {0x0100, "TomTom International BV"}, + {0x0101, "Fugoo, Inc"}, + {0x0102, "Keiser Corporation"}, + {0x0103, "Bang & Olufsen A/S"}, + {0x0104, "PLUS Locations Systems Pty Ltd"}, + {0x0105, "Ubiquitous Computing Technology Corporation"}, + {0x0106, "Innovative Yachtter Solutions"}, + {0x0107, "William Demant Holding A/S"}, + {0x0108, "Chicony Electronics Co., Ltd."}, + {0x0109, "Atus BV"}, + {0x010A, "Codegate Ltd."}, + {0x010B, "ERi, Inc."}, + {0x010C, "Transducers Direct, LLC"}, + {0x010D, "Fujitsu Ten Limited"}, + {0x010E, "Audi AG"}, + {0x010F, "HiSilicon Technologies Co., Ltd."}, + {0x0110, "Nippon Seiki Co., Ltd."}, + {0x0111, "Steelseries ApS"}, + {0x0112, "vyzybl Inc."}, + {0x0113, "Openbrain Technologies, Co., Ltd."}, + {0x0114, "Xensr"}, + {0x0115, "e.solutions"}, + {0x0116, "1OAK Technologies"}, + {0x0117, "Wimoto Technologies Inc"}, + {0x0118, "Radius Networks, Inc."}, + {0x0119, "Wize Technology Co., Ltd."}, + {0x011A, "Qualcomm Labs, Inc."}, + {0x011B, "Aruba Networks"}, + {0x011C, "Baidu"}, + {0x011D, "Arendi AG"}, + {0x011E, "Skoda Auto a.s."}, + {0x011F, "Volkswagon AG"}, + {0x0120, "Porsche AG"}, + {0x0121, "Sino Wealth Electronic Ltd."}, + {0x0122, "AirTurn, Inc."}, + {0x0123, "Kinsa, Inc."}, + {0x0124, "HID Global"}, + {0x0125, "SEAT es"}, + {0x0126, "Promethean Ltd."}, + {0x0127, "Salutica Allied Solutions"}, + {0x0128, "GPSI Group Pty Ltd"}, + {0x0129, "Nimble Devices Oy"}, + {0x012A, "Changzhou Yongse Infotech Co., Ltd"}, + {0x012B, "SportIQ"}, + {0x012C, "TEMEC Instruments B.V."}, + {0x012D, "Sony Corporation"}, + {0x012E, "ASSA ABLOY"}, + {0x012F, "Clarion Co., Ltd."}, + {0x0130, "Warehouse Innovations"}, + {0x0131, "Cypress Semiconductor Corporation"}, + {0x0132, "MADS Inc"}, + {0x0133, "Blue Maestro Limited"}, + {0x0134, "Resolution Products, Inc."}, + {0x0135, "Airewear LLC"}, + {0x0136, "Seed Labs, Inc. (formerly ETC sp. z.o.o.)"}, + {0x0137, "Prestigio Plaza Ltd."}, + {0x0138, "NTEO Inc."}, + {0x0139, "Focus Systems Corporation"}, + {0x013A, "Tencent Holdings Limited"}, + {0x013B, "Allegion"}, + {0x013C, "Murata Manufacuring Co., Ltd."}, + {0x013E, "Nod, Inc."}, + {0x013F, "B&B Manufacturing Company"}, + {0x0140, "Alpine Electronics (China) Co., Ltd"}, + {0x0141, "FedEx Services"}, + {0x0142, "Grape Systems Inc."}, + {0x0143, "Bkon Connect"}, + {0x0144, "Lintech GmbH"}, + {0x0145, "Novatel Wireless"}, + {0x0146, "Ciright"}, + {0x0147, "Mighty Cast, Inc."}, + {0x0148, "Ambimat Electronics"}, + {0x0149, "Perytons Ltd."}, + {0x014A, "Tivoli Audio, LLC"}, + {0x014B, "Master Lock"}, + {0x014C, "Mesh-Net Ltd"}, + {0x014D, "Huizhou Desay SV Automotive CO., LTD."}, + {0x014E, "Tangerine, Inc."}, + {0x014F, "B&W Group Ltd."}, + {0x0150, "Pioneer Corporation"}, + {0x0151, "OnBeep"}, + {0x0152, "Vernier Software & Technology"}, + {0x0153, "ROL Ergo"}, + {0x0154, "Pebble Technology"}, + {0x0155, "NETATMO"}, + {0x0156, "Accumulate AB"}, + {0x0157, "Anhui Huami Information Technology Co., Ltd."}, + {0x0158, "Inmite s.r.o."}, + {0x0159, "ChefSteps, Inc."}, + {0x015A, "micas AG"}, + {0x015B, "Biomedical Research Ltd."}, + {0x015C, "Pitius Tec S.L."}, + {0x015D, "Estimote, Inc."}, + {0x015E, "Unikey Technologies, Inc."}, + {0x015F, "Timer Cap Co."}, + {0x0160, "AwoX"}, + {0x0161, "yikes"}, + {0x0162, "MADSGlobal NZ Ltd."}, + {0x0163, "PCH International"}, + {0x0164, "Qingdao Yeelink Information Technology Co., Ltd."}, + {0x0165, "Milwaukee Tool (formerly Milwaukee Electric Tools)"}, + {0x0166, "MISHIK Pte Ltd"}, + {0x0167, "Bayer HealthCare"}, + {0x0168, "Spicebox LLC"}, + {0x0169, "emberlight"}, + {0x016A, "Cooper-Atkins Corporation"}, + {0x016B, "Qblinks"}, + {0x016C, "MYSPHERA"}, + {0x016D, "LifeScan Inc"}, + {0x016E, "Volantic AB"}, + {0x016F, "Podo Labs, Inc"}, + {0x0170, "Roche Diabetes Care AG"}, + {0x0171, "Amazon Fulfillment Service"}, + {0x0172, "Connovate Technology Private Limited"}, + {0x0173, "Kocomojo, LLC"}, + {0x0174, "Everykey LLC"}, + {0x0175, "Dynamic Controls"}, + {0x0176, "SentriLock"}, + {0x0177, "I-SYST inc."}, + {0x0178, "CASIO COMPUTER CO., LTD."}, + {0x0179, "LAPIS Semiconductor Co., Ltd."}, + {0x017A, "Telemonitor, Inc."}, + {0x017B, "taskit GmbH"}, + {0x017C, "Daimler AG"}, + {0x017D, "BatAndCat"}, + {0x017E, "BluDotz Ltd"}, + {0x017F, "XTel ApS"}, + {0x0180, "Gigaset Communications GmbH"}, + {0x0181, "Gecko Health Innovations, Inc."}, + {0x0182, "HOP Ubiquitous"}, + {0x0183, "To Be Assigned"}, + {0x0184, "Nectar"}, + {0x0185, "bel'apps LLC"}, + {0x0186, "CORE Lighting Ltd"}, + {0x0187, "Seraphim Sense Ltd"}, + {0x0188, "Unico RBC"}, + {0x0189, "Physical Enterprises Inc."}, + {0x018A, "Able Trend Technology Limited"}, + {0x018B, "Konica Minolta, Inc."}, + {0x018C, "Wilo SE"}, + {0x018D, "Extron Design Services"}, + {0x018E, "Fitbit, Inc."}, + {0x018F, "Fireflies Systems"}, + {0x0190, "Intelletto Technologies Inc."}, + {0x0191, "FDK CORPORATION"}, + {0x0192, "Cloudleaf, Inc"}, + {0x0193, "Maveric Automation LLC"}, + {0x0194, "Acoustic Stream Corporation"}, + {0x0195, "Zuli"}, + {0x0196, "Paxton Access Ltd"}, + {0x0197, "WiSilica Inc"}, + {0x0198, "Vengit Limited"}, + {0x0199, "SALTO SYSTEMS S.L."}, + {0x019A, "T-Engine Forum"}, + {0x019B, "CUBETECH s.r.o."}, + {0x019C, "Cokiya Incorporated"}, + {0x019D, "CVS Health"}, + {0x019E, "Ceruus"}, + {0x019F, "Strainstall Ltd"}, + {0x01A0, "Channel Enterprises (HK) Ltd."}, + {0x01A1, "FIAMM"}, + {0x01A2, "GIGALANE.CO.,LTD"}, + {0x01A3, "EROAD"}, + {0x01A4, "Mine Safety Appliances"}, + {0x01A5, "Icon Health and Fitness"}, + {0x01A6, "Asandoo GmbH"}, + {0x01A7, "ENERGOUS CORPORATION"}, + {0x01A8, "Taobao"}, + {0x01A9, "Canon Inc."}, + {0x01AA, "Geophysical Technology Inc."}, + {0x01AB, "Facebook, Inc."}, + {0x01AC, "Nipro Diagnostics, Inc."}, + {0x01AD, "FlightSafety International"}, + {0x01AE, "Earlens Corporation"}, + {0x01AF, "Sunrise Micro Devices, Inc."}, + {0x01B0, "Star Micronics Co., Ltd."}, + {0x01B1, "Netizens Sp. z o.o."}, + {0x01B2, "Nymi Inc."}, + {0x01B3, "Nytec, Inc."}, + {0x01B4, "Trineo Sp. z o.o."}, + {0x01B5, "Nest Labs Inc."}, + {0x01B6, "LM Technologies Ltd"}, + {0x01B7, "General Electric Company"}, {0xFFFF, "For use in internal and interoperability tests."}, {0, NULL } }; diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c index 8c3a4be3e8..b26e3026e2 100644 --- a/epan/dissectors/packet-bthci_cmd.c +++ b/epan/dissectors/packet-bthci_cmd.c @@ -388,6 +388,8 @@ static gint hf_btcommon_eir_ad_advertising_interval = -1; static gint hf_btcommon_eir_ad_appearance = -1; static gint hf_btcommon_eir_ad_hash_c = -1; static gint hf_btcommon_eir_ad_randomizer_r = -1; +static gint hf_btcommon_eir_ad_le_secure_confirmation_value = -1; +static gint hf_btcommon_eir_ad_le_secure_random_value = -1; static gint hf_btcommon_eir_ad_oob_flags_data_present = -1; static gint hf_btcommon_eir_ad_oob_flags_le_supported_host = -1; static gint hf_btcommon_eir_ad_oob_flags_le_bredr_support = -1; @@ -1030,6 +1032,8 @@ static const value_string bthci_cmd_eir_data_type_vals[] = { {0x1F, "List of 32-bit Service Solicitation UUIDs" }, {0x20, "Service Data - 32 bit UUID" }, {0x21, "Service Data - 128 bit UUID" }, + {0x22, "LE Secure Connections Confirmation Value" }, + {0x23, "LE Secure Connections Random Value" }, {0x3D, "3D Information Data" }, {0xFF, "Manufacturer Specific" }, { 0, NULL } @@ -4976,6 +4980,14 @@ dissect_eir_ad_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) offset += 1; break; + case 0x22: /* LE Secure Connections Confirmation Value" */ + proto_tree_add_item(entry_tree, hf_btcommon_eir_ad_le_secure_confirmation_value, tvb, offset, 16, ENC_NA); + + break; + case 0x23: /* LE Secure Connections Random Value" */ + proto_tree_add_item(entry_tree, hf_btcommon_eir_ad_le_secure_random_value, tvb, offset, 16, ENC_NA); + + break; case 0x3D: /* 3D Information Data */ proto_tree_add_item(entry_tree, hf_btcommon_eir_ad_3ds_factory_test_mode, tvb, offset, 1, ENC_NA); proto_tree_add_item(entry_tree, hf_btcommon_eir_ad_3ds_reserved, tvb, offset, 1, ENC_NA); @@ -5469,6 +5481,16 @@ proto_register_btcommon(void) FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL} }, + { &hf_btcommon_eir_ad_le_secure_confirmation_value, + {"LE Secure Connections Confirmation Value", "btcommon.eir_ad.entry.le_secure_confirmation_value", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL} + }, + { &hf_btcommon_eir_ad_le_secure_random_value, + {"LE Secure Connections Random Value", "btcommon.eir_ad.entry.le_secure_random_value", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL} + }, { &hf_btcommon_eir_ad_oob_flags_reserved, { "Reserved", "btcommon.eir_ad.entry.oob_flags.oob_reserved", FT_UINT8, BASE_HEX, NULL, 0xF0, diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c index 960e329b14..9f3a1e54b7 100644 --- a/epan/dissectors/packet-bthci_evt.c +++ b/epan/dissectors/packet-bthci_evt.c @@ -494,6 +494,7 @@ static const value_string evt_lmp_vers_nr[] = { {0x05, "3.0 + HS"}, {0x06, "4.0"}, {0x07, "4.1"}, + {0x08, "4.2"}, {0, NULL } }; @@ -509,6 +510,7 @@ static const value_string evt_hci_vers_nr[] = { {0x05, "3.0 + HS"}, {0x06, "4.0"}, {0x07, "4.1"}, + {0x08, "4.2"}, {0, NULL } }; diff --git a/epan/dissectors/packet-btl2cap.c b/epan/dissectors/packet-btl2cap.c index 244b803890..074143f199 100644 --- a/epan/dissectors/packet-btl2cap.c +++ b/epan/dissectors/packet-btl2cap.c @@ -228,6 +228,7 @@ static const value_string psm_vals[] = { { 0x001D, "UDI_C-Plane" }, { 0x001F, "ATT" }, { 0x0021, "3DSP" }, + { 0x0023, "IPSP" }, { 0, NULL } }; value_string_ext ext_psm_vals = VALUE_STRING_EXT_INIT(psm_vals); diff --git a/epan/dissectors/packet-btl2cap.h b/epan/dissectors/packet-btl2cap.h index f3f7446dfa..fac0f68957 100644 --- a/epan/dissectors/packet-btl2cap.h +++ b/epan/dissectors/packet-btl2cap.h @@ -36,6 +36,7 @@ #define BTL2CAP_PSM_UDI_C_PLANE 0x001d #define BTL2CAP_PSM_ATT 0x001f #define BTL2CAP_PSM_3DS 0x0021 +#define BTL2CAP_PSM_LE_IPSP 0x0023 #define BTL2CAP_DYNAMIC_PSM_START 0x1000 diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c index c90388e288..b329c06e3c 100644 --- a/epan/dissectors/packet-btsdp.c +++ b/epan/dissectors/packet-btsdp.c @@ -115,6 +115,9 @@ static gint hf_service_attribute_id_pan_gn = -1; static gint hf_service_attribute_id_pan_panu = -1; static gint hf_service_attribute_id_pbap = -1; static gint hf_service_attribute_id_synch = -1; +static gint hf_service_attribute_id_ctn_as = -1; +static gint hf_service_attribute_id_ctn_ns = -1; +static gint hf_service_attribute_id_mps = -1; static gint hf_did_specification_id = -1; static gint hf_did_vendor_id = -1; static gint hf_did_vendor_id_bluetooth_sig = -1; @@ -318,6 +321,83 @@ static gint hf_bpp_reference_printing_top_url = -1; static gint hf_bpp_direct_printing_top_url = -1; static gint hf_bpp_device_name = -1; static gint hf_bpp_printer_admin_rui_top_url = -1; +static gint hf_ctn_instance_id = -1; +static gint hf_ctn_supported_features = -1; +static gint hf_ctn_supported_features_reserved = -1; +static gint hf_ctn_supported_features_forward = -1; +static gint hf_ctn_supported_features_delete = -1; +static gint hf_ctn_supported_features_uploading = -1; +static gint hf_ctn_supported_features_downloading = -1; +static gint hf_ctn_supported_features_browsing = -1; +static gint hf_ctn_supported_features_notification = -1; +static gint hf_ctn_supported_features_account_management = -1; +static gint hf_mps_mpsd_scenarios = -1; +static gint hf_mps_mpsd_scenarios_reserved = -1; +static gint hf_mps_mpsd_scenarios_37 = -1; +static gint hf_mps_mpsd_scenarios_36 = -1; +static gint hf_mps_mpsd_scenarios_35 = -1; +static gint hf_mps_mpsd_scenarios_34 = -1; +static gint hf_mps_mpsd_scenarios_33 = -1; +static gint hf_mps_mpsd_scenarios_32 = -1; +static gint hf_mps_mpsd_scenarios_31 = -1; +static gint hf_mps_mpsd_scenarios_30 = -1; +static gint hf_mps_mpsd_scenarios_29 = -1; +static gint hf_mps_mpsd_scenarios_28 = -1; +static gint hf_mps_mpsd_scenarios_27 = -1; +static gint hf_mps_mpsd_scenarios_26 = -1; +static gint hf_mps_mpsd_scenarios_25 = -1; +static gint hf_mps_mpsd_scenarios_24 = -1; +static gint hf_mps_mpsd_scenarios_23 = -1; +static gint hf_mps_mpsd_scenarios_22 = -1; +static gint hf_mps_mpsd_scenarios_21 = -1; +static gint hf_mps_mpsd_scenarios_20 = -1; +static gint hf_mps_mpsd_scenarios_19 = -1; +static gint hf_mps_mpsd_scenarios_18 = -1; +static gint hf_mps_mpsd_scenarios_17 = -1; +static gint hf_mps_mpsd_scenarios_16 = -1; +static gint hf_mps_mpsd_scenarios_15 = -1; +static gint hf_mps_mpsd_scenarios_14 = -1; +static gint hf_mps_mpsd_scenarios_13 = -1; +static gint hf_mps_mpsd_scenarios_12 = -1; +static gint hf_mps_mpsd_scenarios_11 = -1; +static gint hf_mps_mpsd_scenarios_10 = -1; +static gint hf_mps_mpsd_scenarios_9 = -1; +static gint hf_mps_mpsd_scenarios_8 = -1; +static gint hf_mps_mpsd_scenarios_7 = -1; +static gint hf_mps_mpsd_scenarios_6 = -1; +static gint hf_mps_mpsd_scenarios_5 = -1; +static gint hf_mps_mpsd_scenarios_4 = -1; +static gint hf_mps_mpsd_scenarios_3 = -1; +static gint hf_mps_mpsd_scenarios_2 = -1; +static gint hf_mps_mpsd_scenarios_1 = -1; +static gint hf_mps_mpsd_scenarios_0 = -1; +static gint hf_mps_mpmd_scenarios = -1; +static gint hf_mps_mpmd_scenarios_reserved = -1; +static gint hf_mps_mpmd_scenarios_18 = -1; +static gint hf_mps_mpmd_scenarios_17 = -1; +static gint hf_mps_mpmd_scenarios_16 = -1; +static gint hf_mps_mpmd_scenarios_15 = -1; +static gint hf_mps_mpmd_scenarios_14 = -1; +static gint hf_mps_mpmd_scenarios_13 = -1; +static gint hf_mps_mpmd_scenarios_12 = -1; +static gint hf_mps_mpmd_scenarios_11 = -1; +static gint hf_mps_mpmd_scenarios_10 = -1; +static gint hf_mps_mpmd_scenarios_9 = -1; +static gint hf_mps_mpmd_scenarios_8 = -1; +static gint hf_mps_mpmd_scenarios_7 = -1; +static gint hf_mps_mpmd_scenarios_6 = -1; +static gint hf_mps_mpmd_scenarios_5 = -1; +static gint hf_mps_mpmd_scenarios_4 = -1; +static gint hf_mps_mpmd_scenarios_3 = -1; +static gint hf_mps_mpmd_scenarios_2 = -1; +static gint hf_mps_mpmd_scenarios_1 = -1; +static gint hf_mps_mpmd_scenarios_0 = -1; + +static gint hf_mps_supported_profile_and_protocol_dependency = -1; +static gint hf_mps_supported_profile_and_protocol_dependency_reserved = -1; +static gint hf_mps_supported_profile_and_protocol_dependency_dis_connection_order_behaviour = -1; +static gint hf_mps_supported_profile_and_protocol_dependency_gavdp_requirements = -1; +static gint hf_mps_supported_profile_and_protocol_dependency_sniff_mode_during_streaming = -1; static gint ett_btsdp = -1; static gint ett_btsdp_ssr = -1; @@ -338,6 +418,95 @@ static gint ett_btsdp_supported_features_mdep_role = -1; static gint ett_btsdp_supported_features_mdep_description = -1; static gint ett_btsdp_protocol = -1; +static const int *hfx_ctn_supported_features[] = { + &hf_ctn_supported_features_reserved, + &hf_ctn_supported_features_forward, + &hf_ctn_supported_features_delete, + &hf_ctn_supported_features_uploading, + &hf_ctn_supported_features_downloading, + &hf_ctn_supported_features_browsing, + &hf_ctn_supported_features_notification, + &hf_ctn_supported_features_account_management, + NULL +}; + +static const int *hfx_mps_mpsd_scenarios[] = { + &hf_mps_mpsd_scenarios_reserved, + &hf_mps_mpsd_scenarios_37, + &hf_mps_mpsd_scenarios_36, + &hf_mps_mpsd_scenarios_35, + &hf_mps_mpsd_scenarios_34, + &hf_mps_mpsd_scenarios_33, + &hf_mps_mpsd_scenarios_32, + &hf_mps_mpsd_scenarios_31, + &hf_mps_mpsd_scenarios_30, + &hf_mps_mpsd_scenarios_29, + &hf_mps_mpsd_scenarios_28, + &hf_mps_mpsd_scenarios_27, + &hf_mps_mpsd_scenarios_26, + &hf_mps_mpsd_scenarios_25, + &hf_mps_mpsd_scenarios_24, + &hf_mps_mpsd_scenarios_23, + &hf_mps_mpsd_scenarios_22, + &hf_mps_mpsd_scenarios_21, + &hf_mps_mpsd_scenarios_20, + &hf_mps_mpsd_scenarios_19, + &hf_mps_mpsd_scenarios_18, + &hf_mps_mpsd_scenarios_17, + &hf_mps_mpsd_scenarios_16, + &hf_mps_mpsd_scenarios_15, + &hf_mps_mpsd_scenarios_14, + &hf_mps_mpsd_scenarios_13, + &hf_mps_mpsd_scenarios_12, + &hf_mps_mpsd_scenarios_11, + &hf_mps_mpsd_scenarios_10, + &hf_mps_mpsd_scenarios_9, + &hf_mps_mpsd_scenarios_8, + &hf_mps_mpsd_scenarios_7, + &hf_mps_mpsd_scenarios_6, + &hf_mps_mpsd_scenarios_5, + &hf_mps_mpsd_scenarios_4, + &hf_mps_mpsd_scenarios_3, + &hf_mps_mpsd_scenarios_2, + &hf_mps_mpsd_scenarios_1, + &hf_mps_mpsd_scenarios_0, + NULL +}; + +static const int *hfx_mps_mpmd_scenarios[] = { + &hf_mps_mpmd_scenarios_reserved, + &hf_mps_mpmd_scenarios_18, + &hf_mps_mpmd_scenarios_17, + &hf_mps_mpmd_scenarios_16, + &hf_mps_mpmd_scenarios_15, + &hf_mps_mpmd_scenarios_14, + &hf_mps_mpmd_scenarios_13, + &hf_mps_mpmd_scenarios_12, + &hf_mps_mpmd_scenarios_11, + &hf_mps_mpmd_scenarios_10, + &hf_mps_mpmd_scenarios_9, + &hf_mps_mpmd_scenarios_8, + &hf_mps_mpmd_scenarios_7, + &hf_mps_mpmd_scenarios_6, + &hf_mps_mpmd_scenarios_5, + &hf_mps_mpmd_scenarios_4, + &hf_mps_mpmd_scenarios_3, + &hf_mps_mpmd_scenarios_2, + &hf_mps_mpmd_scenarios_1, + &hf_mps_mpmd_scenarios_0, + NULL +}; + + + +static const int *hfx_mps_supported_profile_and_protocol_dependency[] = { + &hf_mps_supported_profile_and_protocol_dependency_reserved, + &hf_mps_supported_profile_and_protocol_dependency_dis_connection_order_behaviour, + &hf_mps_supported_profile_and_protocol_dependency_gavdp_requirements, + &hf_mps_supported_profile_and_protocol_dependency_sniff_mode_during_streaming, + NULL +}; + static expert_field ei_btsdp_continuation_state_none = EI_INIT; static expert_field ei_btsdp_continuation_state_large = EI_INIT; static expert_field ei_data_element_value_large = EI_INIT; @@ -634,6 +803,24 @@ static const value_string vs_synch_attribute_id[] = { { 0, NULL } }; +static const value_string vs_mps_attribute_id[] = { + { 0x0200, "Multiple Profiles - Single Device Supported Scenarios" }, + { 0x0201, "Multiple Profiles - Multiple Device Supported Scenarios" }, + { 0x0202, "Supported Profile and Protocol Dependency" }, + { 0, NULL } +}; + +static const value_string vs_ctn_as_attribute_id[] = { + { 0x0315, "Instance ID" }, + { 0x0317, "Supported Features" }, + { 0, NULL } +}; + +static const value_string vs_ctn_ns_attribute_id[] = { + { 0x0317, "Supported Features" }, + { 0, NULL } +}; + static const value_string did_vendor_id_source_vals[] = { { 0x0001, "Bluetooth SIG" }, { 0x0002, "USB Implementer's Forum" }, @@ -794,7 +981,6 @@ static const value_string hid_country_code_vals[] = { { 0, NULL } }; - static const value_string descriptor_list_type_vals[] = { { 0x22, "Report" }, { 0x23, "Physical"}, @@ -1930,7 +2116,7 @@ dissect_sdp_type(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, guint8 mdep_id; guint16 vendor_id_source; const guint8 *str_val; - guint16 supported_features; + guint32 supported_features; guint i_feature; guint i_protocol; guint16 psm; @@ -2966,6 +3152,55 @@ dissect_sdp_type(proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, found = FALSE; } break; + case BTSDP_CTN_ACCESS_SERVICE_UUID: + case BTSDP_CTN_NOTIFICATION_SERVICE_UUID: + if (service_uuid.bt_uuid == BTSDP_CTN_NOTIFICATION_SERVICE_UUID && attribute != 0x317) { + found = FALSE; + break; + } + switch (attribute) { + case 0x315: + proto_tree_add_item(next_tree, hf_ctn_instance_id, tvb, offset, 1, ENC_NA); + value = tvb_get_guint8(tvb, offset); + wmem_strbuf_append_printf(info_buf, "%u (0x%02x)", value, value); + + break; + case 0x317: + proto_tree_add_bitmask(next_tree, tvb, offset, hf_ctn_supported_features, ett_btsdp_supported_features, hfx_ctn_supported_features, ENC_NA); + + supported_features = tvb_get_ntohl(tvb, offset); + wmem_strbuf_append_printf(info_buf, "%s%s%s%s%s%s%s", + (supported_features & 0x01) ? "AccountManager " : "", + (supported_features & 0x02) ? "Notification " : "", + (supported_features & 0x04) ? "Browsing " : "", + (supported_features & 0x08) ? "Downloading " : "", + (supported_features & 0x10) ? "Uploading " : "", + (supported_features & 0x20) ? "Delete " : "", + (supported_features & 0x40) ? "Forward " : ""); + break; + default: + found = FALSE; + } + break; + case BTSDP_MULTI_PROFILE_UUID: + case BTSDP_MULTI_PROFILE_SC_UUID: + switch (attribute) { + case 0x200: + proto_tree_add_bitmask(next_tree, tvb, offset, hf_mps_mpsd_scenarios, ett_btsdp_supported_features, hfx_mps_mpsd_scenarios, ENC_NA); + + break; + case 0x201: + proto_tree_add_bitmask(next_tree, tvb, offset, hf_mps_mpmd_scenarios, ett_btsdp_supported_features, hfx_mps_mpmd_scenarios, ENC_NA); + + break; + case 0x202: + proto_tree_add_bitmask(next_tree, tvb, offset, hf_mps_supported_profile_and_protocol_dependency, ett_btsdp_supported_features, hfx_mps_supported_profile_and_protocol_dependency, ENC_NA); + + break; + default: + found = FALSE; + } + break; default: found = FALSE; } @@ -3426,6 +3661,22 @@ dissect_sdp_service_attribute(proto_tree *tree, tvbuff_t *tvb, gint offset, hfx_attribute_id = hf_service_attribute_id_dun; profile_speficic = "(DUN) "; break; + case BTSDP_CTN_ACCESS_SERVICE_UUID: + name_vals = vs_ctn_as_attribute_id; + hfx_attribute_id = hf_service_attribute_id_ctn_as; + profile_speficic = "(CTN AS) "; + break; + case BTSDP_CTN_NOTIFICATION_SERVICE_UUID: + name_vals = vs_ctn_ns_attribute_id; + hfx_attribute_id = hf_service_attribute_id_ctn_ns; + profile_speficic = "(CTN NS) "; + break; + case BTSDP_MULTI_PROFILE_UUID: + case BTSDP_MULTI_PROFILE_SC_UUID: + name_vals = vs_mps_attribute_id; + hfx_attribute_id = hf_service_attribute_id_mps; + profile_speficic = "(MPS) "; + break; } if (name_vals && try_val_to_str(id, name_vals)) { @@ -4581,6 +4832,21 @@ proto_register_btsdp(void) FT_UINT16, BASE_HEX, VALS(vs_synch_attribute_id), 0, NULL, HFILL } }, + { &hf_service_attribute_id_ctn_as, + { "Attribute ID", "btsdp.service.attribute", + FT_UINT16, BASE_HEX, VALS(vs_ctn_as_attribute_id), 0, + NULL, HFILL } + }, + { &hf_service_attribute_id_ctn_ns, + { "Attribute ID", "btsdp.service.attribute", + FT_UINT16, BASE_HEX, VALS(vs_ctn_ns_attribute_id), 0, + NULL, HFILL } + }, + { &hf_service_attribute_id_mps, + { "Attribute ID", "btsdp.service.attribute", + FT_UINT16, BASE_HEX, VALS(vs_mps_attribute_id), 0, + NULL, HFILL } + }, { &hf_did_specification_id, { "Specification ID", "btsdp.service.did.specification_id", FT_UINT16, BASE_HEX, NULL, 0, @@ -5081,6 +5347,386 @@ proto_register_btsdp(void) FT_UINT8, BASE_HEX, VALS(hfp_gw_network_vals), 0, NULL, HFILL } }, + { &hf_ctn_instance_id, + { "Instance ID", "btsdp.ctn.instance_id", + FT_UINT8, BASE_DEC_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ctn_supported_features, + { "Supported Features", "btsdp.ctn.supported_features", + FT_UINT32, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ctn_supported_features_reserved, + { "Reserved", "btsdp.ctn.supported_features.reserved", + FT_BOOLEAN, 32, NULL, 0xFFFFFF80, + NULL, HFILL } + }, + { &hf_ctn_supported_features_forward, + { "Forward", "btsdp.ctn.supported_features.forward", + FT_BOOLEAN, 32, NULL, 0x40, + NULL, HFILL } + }, + { &hf_ctn_supported_features_delete, + { "Delete", "btsdp.ctn.supported_features.delete", + FT_BOOLEAN, 32, NULL, 0x20, + NULL, HFILL } + }, + { &hf_ctn_supported_features_uploading, + { "Uploading", "btsdp.ctn.supported_features.uploading", + FT_BOOLEAN, 32, NULL, 0x10, + NULL, HFILL } + }, + { &hf_ctn_supported_features_downloading, + { "Downloading", "btsdp.ctn.supported_features.downloading", + FT_BOOLEAN, 32, NULL, 0x08, + NULL, HFILL } + }, + { &hf_ctn_supported_features_browsing, + { "Browsing", "btsdp.ctn.supported_features.browsing", + FT_BOOLEAN, 32, NULL, 0x04, + NULL, HFILL } + }, + { &hf_ctn_supported_features_notification, + { "Notification", "btsdp.ctn.supported_features.notification", + FT_BOOLEAN, 32, NULL, 0x02, + NULL, HFILL } + }, + { &hf_ctn_supported_features_account_management, + { "Account Management", "btsdp.ctn.supported_features.account_management", + FT_BOOLEAN, 32, NULL, 0x01, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios, + { "Supported Profile and Protocol Dependency", "btsdp.mps.mpsd_scenarios", + FT_UINT64, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_reserved, + { "Reserved", "btsdp.mps.mpsd_scenarios.reserved", + FT_UINT64, BASE_HEX, NULL, 0xFFFFFFC000000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_37, + { "Phonebook Download during Audio Streaming (A2DP-SNK_PBAP-Client)", "btsdp.mps.mpsd_scenarios.37", + FT_BOOLEAN, 64, NULL, 0x0000002000000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_36, + { "Phonebook Download during Audio Streaming (A2DP-SRC_PBAP-Server)", "btsdp.mps.mpsd_scenarios.36", + FT_BOOLEAN, 64, NULL, 0x0000001000000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_35, + { "Data communication establishment in Personal Area Network during Audio Streaming (A2DP-SNK_PAN_PANU)", "btsdp.mps.mpsd_scenarios.35", + FT_BOOLEAN, 64, NULL, 0x0000000800000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_34, + { "Data communication establishment in Personal Area Network during Audio Streaming (A2DP-SRC_PAN-NAP)", "btsdp.mps.mpsd_scenarios.34", + FT_BOOLEAN, 64, NULL, 0x0000000400000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_33, + { "Start Audio Streaming during Data communication in Personal Area Network (A2DP-SNK_PAN-PANU)", "btsdp.mps.mpsd_scenarios.33", + FT_BOOLEAN, 64, NULL, 0x0000000200000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_32, + { "Start Audio Streaming during Data communication in Personal Area Network (A2DP-SRC_PAN-NAP)", "btsdp.mps.mpsd_scenarios.32", + FT_BOOLEAN, 64, NULL, 0x0000000100000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_31, + { "Incoming voice call during Data communication in Personal Area Network (HFP-HF_PAN-PANU)", "btsdp.mps.mpsd_scenarios.31", + FT_BOOLEAN, 64, NULL, 0x0000000080000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_30, + { "Incoming voice call during Data communication in Personal Area Network (HFP-AG_PAN-NAP)", "btsdp.mps.mpsd_scenarios.30", + FT_BOOLEAN, 64, NULL, 0x0000000040000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_29, + { "Outgoing voice call during Data communication in Personal Area Network (HFP-HF_PAN-PANU)", "btsdp.mps.mpsd_scenarios.29", + FT_BOOLEAN, 64, NULL, 0x0000000020000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_28, + { "Outgoing voice call during Data communication in Personal Area Network (HFP-AG_PAN-NAP)", "btsdp.mps.mpsd_scenarios.28", + FT_BOOLEAN, 64, NULL, 0x0000000010000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_27, + { "Data communication in Personal Area Network during active voice call (HFP-HF_PAN-PANU)", "btsdp.mps.mpsd_scenarios.27", + FT_BOOLEAN, 64, NULL, 0x0000000008000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_26, + { "Data communication in Personal Area Network during active voice call (HFP-AG_PAN-NAP)", "btsdp.mps.mpsd_scenarios.26", + FT_BOOLEAN, 64, NULL, 0x0000000004000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_25, + { "Terminate voice call / data call during data communication and voice call (HFP-HF_DUN-DT)", "btsdp.mps.mpsd_scenarios.25", + FT_BOOLEAN, 64, NULL, 0x0000000002000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_24, + { "Terminate voice call / data call during data communication and voice call (HFP-AG_DUN-GW)", "btsdp.mps.mpsd_scenarios.24", + FT_BOOLEAN, 64, NULL, 0x0000000001000000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_23, + { "Data communication establishment under PSDM (DUN) during Audio Streaming (A2DP-SNK_DUN-DT)", "btsdp.mps.mpsd_scenarios.23", + FT_BOOLEAN, 64, NULL, 0x0000000000800000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_22, + { "Data communication establishment under PSDM (DUN) during Audio Streaming (A2DP-SRC_DUN-GW)", "btsdp.mps.mpsd_scenarios.22", + FT_BOOLEAN, 64, NULL, 0x0000000000400000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_21, + { "Start Audio Streaming during Data communication under PSDM (DUN) (A2DP-SNK_DUN-DT)", "btsdp.mps.mpsd_scenarios.21", + FT_BOOLEAN, 64, NULL, 0x0000000000200000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_20, + { "Start Audio Streaming during Data communication under PSDM (DUN) (A2DP-SRC_DUN-GW)", "btsdp.mps.mpsd_scenarios.20", + FT_BOOLEAN, 64, NULL, 0x0000000000100000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_19, + { "Incoming voice call during Data communication under PSDM (DUN) (HFP-HF_DUN-DT)", "btsdp.mps.mpsd_scenarios.19", + FT_BOOLEAN, 64, NULL, 0x0000000000080000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_18, + { "Incoming voice call during Data communication under PSDM (DUN) (HFP-AG_DUN-GW)", "btsdp.mps.mpsd_scenarios.18", + FT_BOOLEAN, 64, NULL, 0x0000000000040000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_17, + { "Outgoing voice call during Data communication under PSDM (DUN) (HFP-HF_DUN-DT)", "btsdp.mps.mpsd_scenarios.17", + FT_BOOLEAN, 64, NULL, 0x0000000000020000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_16, + { "Outgoing voice call during Data communication under PSDM (DUN) (HFP-AG_DUN-GW)", "btsdp.mps.mpsd_scenarios.16", + FT_BOOLEAN, 64, NULL, 0x0000000000010000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_15, + { "Data communication under PSDM (DUN) during active voice call (HFP-HF_DUN-DT)", "btsdp.mps.mpsd_scenarios.15", + FT_BOOLEAN, 64, NULL, 0x0000000000008000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_14, + { "Data communication under PSDM (DUN) during active voice call (HFP-AG_DUN-GW)", "btsdp.mps.mpsd_scenarios.14", + FT_BOOLEAN, 64, NULL, 0x0000000000004000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_13, + { "Suspend Audio Streaming after AVRCP Pause/Stop (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.13", + FT_BOOLEAN, 64, NULL, 0x0000000000002000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_12, + { "Suspend Audio Streaming after AVRCP Pause/Stop (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.12", + FT_BOOLEAN, 64, NULL, 0x0000000000001000, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_11, + { "Start Audio Streaming after AVRCP Play Command (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.11", + FT_BOOLEAN, 64, NULL, 0x0000000000000800, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_10, + { "Start Audio Streaming after AVRCP Play Command (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.10", + FT_BOOLEAN, 64, NULL, 0x0000000000000400, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_9, + { "Press Play on Audio Player during active call (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.9", + FT_BOOLEAN, 64, NULL, 0x0000000000000200, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_8, + { "Press Play on Audio Player during active call (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.8", + FT_BOOLEAN, 64, NULL, 0x0000000000000100, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_7, + { "HFP call termination during AVP connection (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.7", + FT_BOOLEAN, 64, NULL, 0x0000000000000080, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_6, + { "HFP call termination during AVP connection (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.6", + FT_BOOLEAN, 64, NULL, 0x0000000000000040, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_5, + { "Reject/Ignore Incoming Call during Audio Streaming (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.5", + FT_BOOLEAN, 64, NULL, 0x0000000000000020, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_4, + { "Reject/Ignore Incoming Call during Audio Streaming (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.4", + FT_BOOLEAN, 64, NULL, 0x0000000000000010, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_3, + { "Outgoing Call during Audio Streaming (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.3", + FT_BOOLEAN, 64, NULL, 0x0000000000000008, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_2, + { "Outgoing Call during Audio Streaming (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.2", + FT_BOOLEAN, 64, NULL, 0x0000000000000004, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_1, + { "Answer Incoming Call during Audio Streaming (HFP-HF_A2DP-SNK)", "btsdp.mps.mpsd_scenarios.1", + FT_BOOLEAN, 64, NULL, 0x0000000000000002, + NULL, HFILL } + }, + { &hf_mps_mpsd_scenarios_0, + { "Answer Incoming Call during Audio Streaming (HFP-AG_A2DP-SRC)", "btsdp.mps.mpsd_scenarios.0", + FT_BOOLEAN, 64, NULL, 0x0000000000000001, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios, + { "Supported Profile and Protocol Dependency", "btsdp.mps.mpmd_scenarios", + FT_UINT64, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_reserved, + { "Reserved", "btsdp.mps.mpmd_scenarios.reserved", + FT_UINT64, BASE_HEX, NULL, 0xFFFFFFFFFFF80000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_18, + { "Start Packet data communication during Audio streaming (A2DP-SNK_AVRCP-CT_DUN-DT)", "btsdp.mps.mpmd_scenarios.18", + FT_BOOLEAN, 64, NULL, 0x0000000000040000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_17, + { "Start Packet data communication during Audio streaming (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.17", + FT_BOOLEAN, 64, NULL, 0x0000000000020000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_16, + { "Start Audio streaming during Data communication under PSDM (A2DP-SNK_AVRCP-CT_DUN-DT)", "btsdp.mps.mpmd_scenarios.16", + FT_BOOLEAN, 64, NULL, 0x0000000000010000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_15, + { "Start Audio streaming during Data communication under PSDM (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.15", + FT_BOOLEAN, 64, NULL, 0x0000000000008000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_14, + { "Suspend Audio Streaming after AVRCP Pause/Stop (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.14", + FT_BOOLEAN, 64, NULL, 0x0000000000004000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_13, + { "Suspend Audio Streaming after AVRCP Pause/Stop (AVRCP-CT where the same device does not carry out the role of an A2DP SNK)", "btsdp.mps.mpmd_scenarios.13", + FT_BOOLEAN, 64, NULL, 0x0000000000002000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_12, + { "Start Audio Streaming after AVRCP Play Command (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.12", + FT_BOOLEAN, 64, NULL, 0x0000000000001000, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_11, + { "Start Audio Streaming after AVRCP Play Command (AVRCP-CT where the same device does not carry out the role of an A2DP SNK)", "btsdp.mps.mpmd_scenarios.11", + FT_BOOLEAN, 64, NULL, 0x0000000000000800, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_10, + { "Press Play on Audio Player during active call (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.10", + FT_BOOLEAN, 64, NULL, 0x0000000000000400, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_9, + { "Press Play on Audio Player during active call (HFP-HF_A2DP-SNK_AVRCP-CT)", "btsdp.mps.mpmd_scenarios.9", + FT_BOOLEAN, 64, NULL, 0x0000000000000200, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_8, + { "HFP Call termination during AVP connection (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.8", + FT_BOOLEAN, 64, NULL, 0x0000000000000100, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_7, + { "HFP Call termination during AVP connection (HFP-HF_ A2DP-SNK_AVRCP-CT)", "btsdp.mps.mpmd_scenarios.7", + FT_BOOLEAN, 64, NULL, 0x0000000000000080, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_6, + { "HFP Call termination during AVP connection (HFP-AG)", "btsdp.mps.mpmd_scenarios.6", + FT_BOOLEAN, 64, NULL, 0x0000000000000040, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_5, + { "Reject/Ignore Incoming Call during Audio Streaming (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.5", + FT_BOOLEAN, 64, NULL, 0x0000000000000020, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_4, + { "Reject/Ignore Incoming Call during Audio Streaming (HFP-HF_A2DP-SNK_AVRCP-CT)", "btsdp.mps.mpmd_scenarios.4", + FT_BOOLEAN, 64, NULL, 0x0000000000000010, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_3, + { "Outgoing Call during Audio Streaming (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.3", + FT_BOOLEAN, 64, NULL, 0x0000000000000008, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_2, + { "Outgoing Call during Audio Streaming (HFP-HF_A2DP-SNK_AVRCP-CT)", "btsdp.mps.mpmd_scenarios.2", + FT_BOOLEAN, 64, NULL, 0x0000000000000004, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_1, + { "Answer Incoming Call during Audio Streaming (A2DP-SRC_AVRCP-TG)", "btsdp.mps.mpmd_scenarios.1", + FT_BOOLEAN, 64, NULL, 0x0000000000000002, + NULL, HFILL } + }, + { &hf_mps_mpmd_scenarios_0, + { "Answer Incoming Call during Audio Streaming (HFP-HF_A2DP-SNK_AVRCP-CT)", "btsdp.mps.mpmd_scenarios.0", + FT_BOOLEAN, 64, NULL, 0x0000000000000001, + NULL, HFILL } + }, + { &hf_mps_supported_profile_and_protocol_dependency, + { "Supported Profile and Protocol Dependency", "btsdp.mps.supported_profile_and_protocol_dependency", + FT_UINT16, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_mps_supported_profile_and_protocol_dependency_reserved, + { "Reserved", "btsdp.mps.supported_profile_and_protocol_dependency.reserved", + FT_UINT16, BASE_HEX, NULL, 0xFFF8, + NULL, HFILL } + }, + { &hf_mps_supported_profile_and_protocol_dependency_dis_connection_order_behaviour, + { "(Dis)Connection Order/Behaviour", "btsdp.mps.supported_profile_and_protocol_dependency.dis_connection_order_behaviour", + FT_BOOLEAN, 16, NULL, 0x0004, + NULL, HFILL } + }, + { &hf_mps_supported_profile_and_protocol_dependency_gavdp_requirements, + { "GAVDP Requirements", "btsdp.mps.supported_profile_and_protocol_dependency.gavdp_requirements", + FT_BOOLEAN, 16, NULL, 0x0002, + NULL, HFILL } + }, + { &hf_mps_supported_profile_and_protocol_dependency_sniff_mode_during_streaming, + { "Sniff Mode During Streaming", "btsdp.mps.supported_profile_and_protocol_dependency.sniff_mode_during_streaming", + FT_BOOLEAN, 16, NULL, 0x0001, + NULL, HFILL } + }, { &hf_sdp_protocol_item, { "Protocol", "btsdp.protocol_item", FT_NONE, BASE_NONE, NULL, 0, @@ -5621,9 +6267,9 @@ proto_register_btsdp(void) }; static ei_register_info ei[] = { - { &ei_btsdp_continuation_state_none, { "btsdp.expert.continuation_state_none", PI_MALFORMED, PI_WARN, "There is no Continuation State", EXPFILL }}, - { &ei_btsdp_continuation_state_large, { "btsdp.expert.continuation_state_large", PI_MALFORMED, PI_WARN, "Continuation State data is longer then 16", EXPFILL }}, - { &ei_data_element_value_large, { "btsdp.expert.data_element.value.large", PI_MALFORMED, PI_WARN, "Data size exceeds the length of payload", EXPFILL }}, + { &ei_btsdp_continuation_state_none, { "btsdp.expert.continuation_state_none", PI_MALFORMED, PI_WARN, "There is no Continuation State", EXPFILL }}, + { &ei_btsdp_continuation_state_large, { "btsdp.expert.continuation_state_large", PI_MALFORMED, PI_WARN, "Continuation State data is longer then 16", EXPFILL }}, + { &ei_data_element_value_large, { "btsdp.expert.data_element.value.large", PI_MALFORMED, PI_WARN, "Data size exceeds the length of payload", EXPFILL }}, }; proto_btsdp = proto_register_protocol("Bluetooth SDP Protocol", "BT SDP", "btsdp"); diff --git a/epan/dissectors/packet-btsdp.h b/epan/dissectors/packet-btsdp.h index f2558e80e5..d92e3a77cb 100644 --- a/epan/dissectors/packet-btsdp.h +++ b/epan/dissectors/packet-btsdp.h @@ -132,6 +132,13 @@ #define BTSDP_3D_GLASSES_UUID 0x1138 #define BTSDP_3D_SYNCHRONIZATION_UUID 0x1139 +#define BTSDP_MULTI_PROFILE_UUID 0x113A +#define BTSDP_MULTI_PROFILE_SC_UUID 0x113B + +#define BTSDP_CTN_ACCESS_SERVICE_UUID 0x113C +#define BTSDP_CTN_NOTIFICATION_SERVICE_UUID 0x113D +#define BTSDP_CTN_SERVICE_UUID 0x113E + #define BTSDP_DID_SERVICE_UUID 0x1200 #define BTSDP_GENERIC_NETWORKING_SERVICE_UUID 0x1201 |