Home | History | Annotate | Download | only in include
      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