// Do NOT change this file format without updating the parsing logic in
// BluetoothService.java

// This file contains information to prevent auto pairing with Bluetooth devices.
// Blacklisting by vendor prefix address:
// The following companies are included in the list below:
// ALPS (lexus), Murata (Prius 2007, Nokia 616), TEMIC SDS (Porsche, Audi),
// Parrot, Zhongshan General K-mate Electronics, Great Well
// Electronics, Flaircomm Electronics, Jatty Electronics, Delphi,
// Clarion, Novero, Denso (Lexus, Toyota), Johnson Controls (Acura),
// Continental Automotive, Harman/Becker, Panasonic/Kyushu Ten,
// BMW (Motorola PCS), Visteon, Peugeot
AddressBlacklist=00:02:C7,00:16:FE,00:19:C1,00:1B:FB,00:1E:3D,00:21:4F,00:23:06,00:24:33,00:A0:79,00:0E:6D,00:13:E0,00:21:E8,00:60:57,00:0E:9F,00:12:1C,00:18:91,00:18:96,00:13:04,00:16:FD,00:22:A0,00:0B:4C,00:60:6F,00:23:3D,00:C0:59,00:0A:30,00:1E:AE,00:1C:D7,00:80:F0,00:12:8A,00:09:93,00:80:37

// Blacklisting by Exact Name:
ExactNameBlacklist=Motorola IHF1000,i.TechBlueBAND,X5 Stereo v1.3,KML_CAN

// Blacklisting by Partial Name (if name starts with)
PartialNameBlacklist=BMW,Audi,Parrot

// Fixed PIN keyboard blacklist. Keyboards should have variable PIN
// The keyboards below have a fixed PIN of 0000, so we will auto pair.
// Note the reverse logic in this case compared to other's in this file
// where its a blacklist for not auto pairing.
FixedPinZerosKeyboardBlacklist=00:0F:F6

// Blacklisting by addition of the address during usage
