119e95205Sopenharmony_ci/*
219e95205Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
319e95205Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
419e95205Sopenharmony_ci * you may not use this file except in compliance with the License.
519e95205Sopenharmony_ci * You may obtain a copy of the License at
619e95205Sopenharmony_ci *
719e95205Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
819e95205Sopenharmony_ci *
919e95205Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1019e95205Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1119e95205Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1219e95205Sopenharmony_ci * See the License for the specific language governing permissions and
1319e95205Sopenharmony_ci * limitations under the License.
1419e95205Sopenharmony_ci */
1519e95205Sopenharmony_ci
1619e95205Sopenharmony_ci#include "compat.h"
1719e95205Sopenharmony_ci
1819e95205Sopenharmony_ci#include <algorithm>
1919e95205Sopenharmony_ci
2019e95205Sopenharmony_cinamespace OHOS {
2119e95205Sopenharmony_cinamespace bluetooth {
2219e95205Sopenharmony_ciconst std::map<CompatType, std::vector<std::string>> Compat::COMPAT_DATA = {
2319e95205Sopenharmony_ci    {CompatType::COMPAT_DISABLE_BLE_SECURE_CONNECTIONS, {
2419e95205Sopenharmony_ci        "08:62:66",
2519e95205Sopenharmony_ci        "38:2C:4A:C9",
2619e95205Sopenharmony_ci        "38:2C:4A:E6",
2719e95205Sopenharmony_ci        "54:A0:50:D9",
2819e95205Sopenharmony_ci        "AC:9E:17",
2919e95205Sopenharmony_ci        "F0:79:59",
3019e95205Sopenharmony_ci        "80:E4:DA:70",
3119e95205Sopenharmony_ci        "1C:96:5A"}},
3219e95205Sopenharmony_ci    {CompatType::COMPAT_REJECT_NAME_REQUEST, {
3319e95205Sopenharmony_ci        "D4:7A:E2"}},
3419e95205Sopenharmony_ci    {CompatType::COMPAT_REJECT_AUTO_PAIRING, {
3519e95205Sopenharmony_ci        "34:C7:31",
3619e95205Sopenharmony_ci        "00:07:04",
3719e95205Sopenharmony_ci        "E0:75:0A",
3819e95205Sopenharmony_ci        "Audi",
3919e95205Sopenharmony_ci        "BMW",
4019e95205Sopenharmony_ci        "Parrot",
4119e95205Sopenharmony_ci        "Car",
4219e95205Sopenharmony_ci        "NISSAN",
4319e95205Sopenharmony_ci        "CAR"}},
4419e95205Sopenharmony_ci    {CompatType::COMPAT_KEYBOARD_REQUIRES_FIXED_PIN, {
4519e95205Sopenharmony_ci        "00:0F:F6"}},
4619e95205Sopenharmony_ci    {CompatType::COMPAT_GATTC_NO_SERVICE_CHANGED_IND, {
4719e95205Sopenharmony_ci        "Pixel C Keyboard"}},
4819e95205Sopenharmony_ci    {CompatType::COMPAT_REJECT_AVDTP_RECONFIGURE, {
4919e95205Sopenharmony_ci        "00:1D:86",
5019e95205Sopenharmony_ci        "KMM-BT51*HD"}},
5119e95205Sopenharmony_ci    {CompatType::COMPAT_REJECT_ABSOLUTE_VOLUME, {
5219e95205Sopenharmony_ci        "44:5E:F3",
5319e95205Sopenharmony_ci        "D4:9C:28",
5419e95205Sopenharmony_ci        "00:24:1C",
5519e95205Sopenharmony_ci        "A4:15:66",
5619e95205Sopenharmony_ci        "00:26:7E",
5719e95205Sopenharmony_ci        "90:03:B7",
5819e95205Sopenharmony_ci        "0C:A6:94",
5919e95205Sopenharmony_ci        "00:18:6B",
6019e95205Sopenharmony_ci        "B8:AD:3E",
6119e95205Sopenharmony_ci        "A0:E9:DB",
6219e95205Sopenharmony_ci        "00:14:02",
6319e95205Sopenharmony_ci        "00:11:B1",
6419e95205Sopenharmony_ci        "00:14:F1",
6519e95205Sopenharmony_ci        "94:16:25",
6619e95205Sopenharmony_ci        "9C:64:8B"}}
6719e95205Sopenharmony_ci};
6819e95205Sopenharmony_ci
6919e95205Sopenharmony_cibool Compat::CompatCheck(CompatType type, const std::string &value)
7019e95205Sopenharmony_ci{
7119e95205Sopenharmony_ci    auto data = COMPAT_DATA.find(type);
7219e95205Sopenharmony_ci    if (data != COMPAT_DATA.end()) {
7319e95205Sopenharmony_ci        for (auto it = data->second.begin(); it != data->second.end(); it++) {
7419e95205Sopenharmony_ci            if (value.compare(0, it->size(), *it) == 0) {
7519e95205Sopenharmony_ci                return true;
7619e95205Sopenharmony_ci            }
7719e95205Sopenharmony_ci        }
7819e95205Sopenharmony_ci    }
7919e95205Sopenharmony_ci    return false;
8019e95205Sopenharmony_ci}
8119e95205Sopenharmony_ci}  // namespace bluetooth
8219e95205Sopenharmony_ci}  // namespace OHOS