1 /****************************************************************************** 2 * 3 * Copyright (C) 2015 Google, Inc. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 #pragma once 20 21 #include "device/include/interop.h" 22 23 typedef struct { 24 bt_bdaddr_t addr; 25 size_t length; 26 interop_feature_t feature; 27 } interop_addr_entry_t; 28 29 static const interop_addr_entry_t interop_addr_database[] = { 30 // Nexus Remote (Spike) 31 // Note: May affect other Asus brand devices 32 {{{0x08, 0x62, 0x66, 0,0,0}}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 33 {{{0x38, 0x2c, 0x4a, 0xc9, 0,0}}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 34 {{{0x38, 0x2c, 0x4a, 0xe6, 0,0}}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 35 {{{0x54, 0xa0, 0x50, 0xd9, 0,0}}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 36 {{{0xac, 0x9e, 0x17, 0,0,0}}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 37 {{{0xf0, 0x79, 0x59, 0,0,0}}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 38 39 // Ausdom M05 - unacceptably loud volume 40 {{{0xa0, 0xe9, 0xdb, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 41 42 // BMW car kits (Harman/Becker) 43 {{{0x9c, 0xdf, 0x03, 0,0,0}}, 3, INTEROP_AUTO_RETRY_PAIRING}, 44 45 // Flic smart button 46 {{{0x80, 0xe4, 0xda, 0x70, 0,0}}, 4, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 47 48 // iKross IKBT83B HS - unacceptably loud volume 49 {{{0x00, 0x14, 0x02, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 50 51 // Jabra EXTREME 2 - unacceptably loud volume 52 {{{0x1c, 0x48, 0xf9, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 53 54 // JayBird BlueBuds X - low granularity on volume control 55 {{{0x44, 0x5e, 0xf3, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 56 {{{0xd4, 0x9c, 0x28, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 57 58 // JayBird Family 59 {{{0x00, 0x18, 0x91, 0,0,0}}, 3, INTEROP_2MBPS_LINK_ONLY}, 60 61 // LG Tone HBS-730 - unacceptably loud volume 62 {{{0x00, 0x18, 0x6b, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 63 {{{0xb8, 0xad, 0x3e, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 64 65 // LG Tone HV-800 - unacceptably loud volume 66 {{{0xa0, 0xe9, 0xdb, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 67 68 // Motorola Key Link 69 {{{0x1c, 0x96, 0x5a, 0,0,0}}, 3, INTEROP_DISABLE_LE_SECURE_CONNECTIONS}, 70 71 // Mpow Cheetah - unacceptably loud volume 72 {{{0x00, 0x11, 0xb1, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 73 74 // Nissan car kits (ALPS) - auto-pairing fails and rejects next pairing 75 {{{0x34, 0xc7, 0x31, 0,0,0}}, 3, INTEROP_DISABLE_AUTO_PAIRING}, 76 77 // SOL REPUBLIC Tracks Air - unable to adjust volume back off from max 78 {{{0xa4, 0x15, 0x66, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 79 80 // Subaru car kits (ALPS) - auto-pairing fails and rejects next pairing 81 {{{0x00, 0x07, 0x04, 0,0,0}}, 3, INTEROP_DISABLE_AUTO_PAIRING}, 82 {{{0xe0, 0x75, 0x0a, 0,0,0}}, 3, INTEROP_DISABLE_AUTO_PAIRING}, 83 84 // Swage Rokitboost HS - unacceptably loud volume 85 {{{0x00, 0x14, 0xf1, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 86 87 // VW Car Kit - not enough granularity with volume 88 {{{0x00, 0x26, 0x7e, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 89 {{{0x90, 0x03, 0xb7, 0,0,0}}, 3, INTEROP_DISABLE_ABSOLUTE_VOLUME}, 90 91 // Unknown keyboard (carried over from auto_pair_devlist.conf) 92 {{{0x00, 0x0F, 0xF6, 0,0,0}}, 3, INTEROP_KEYBOARD_REQUIRES_FIXED_PIN}, 93 }; 94 95 typedef struct { 96 char name[20]; 97 size_t length; 98 interop_feature_t feature; 99 } interop_name_entry_t; 100 101 static const interop_name_entry_t interop_name_database[] = { 102 // Carried over from auto_pair_devlist.conf migration 103 {"Audi", 4, INTEROP_DISABLE_AUTO_PAIRING}, 104 {"BMW", 3, INTEROP_DISABLE_AUTO_PAIRING}, 105 {"Parrot", 6, INTEROP_DISABLE_AUTO_PAIRING}, 106 {"Car", 3, INTEROP_DISABLE_AUTO_PAIRING}, 107 108 // Nissan Quest rejects pairing after "0000" 109 {"NISSAN", 6, INTEROP_DISABLE_AUTO_PAIRING}, 110 111 // Subaru car kits ("CAR M_MEDIA") 112 {"CAR", 3, INTEROP_DISABLE_AUTO_PAIRING}, 113 }; 114 115