aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2014-12-31 10:53:25 +0100
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2015-01-08 16:00:18 +0000
commit8bfd306a27e6b18499eef3921bbdd44982bc38a8 (patch)
tree1b501e9f6cd0617eb6dc25bbbb8f403bbe30df7a
parent90453a4918349baadfdbeb22080258005f3fe5b8 (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.c465
-rw-r--r--epan/dissectors/packet-bthci_cmd.c22
-rw-r--r--epan/dissectors/packet-bthci_evt.c2
-rw-r--r--epan/dissectors/packet-btl2cap.c1
-rw-r--r--epan/dissectors/packet-btl2cap.h1
-rw-r--r--epan/dissectors/packet-btsdp.c656
-rw-r--r--epan/dissectors/packet-btsdp.h7
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