195489c19Sopenharmony_ci/*
295489c19Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
495489c19Sopenharmony_ci * you may not use this file except in compliance with the License.
595489c19Sopenharmony_ci * You may obtain a copy of the License at
695489c19Sopenharmony_ci *
795489c19Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
895489c19Sopenharmony_ci *
995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and
1395489c19Sopenharmony_ci * limitations under the License.
1495489c19Sopenharmony_ci */
1595489c19Sopenharmony_ci
1695489c19Sopenharmony_ci/**
1795489c19Sopenharmony_ci * @addtogroup Bluetooth
1895489c19Sopenharmony_ci * @{
1995489c19Sopenharmony_ci *
2095489c19Sopenharmony_ci * @brief Defines device class.
2195489c19Sopenharmony_ci *
2295489c19Sopenharmony_ci * @since 1.0
2395489c19Sopenharmony_ci * @version 1.0
2495489c19Sopenharmony_ci */
2595489c19Sopenharmony_ci
2695489c19Sopenharmony_ci/**
2795489c19Sopenharmony_ci * @file bluetooth_device_class.h
2895489c19Sopenharmony_ci *
2995489c19Sopenharmony_ci * @brief Bluetooth device class.
3095489c19Sopenharmony_ci *
3195489c19Sopenharmony_ci * @since 1.0
3295489c19Sopenharmony_ci * @version 1.0
3395489c19Sopenharmony_ci */
3495489c19Sopenharmony_ci
3595489c19Sopenharmony_ci#ifndef BLUETOOTH_DEVICE_CLASS_H
3695489c19Sopenharmony_ci#define BLUETOOTH_DEVICE_CLASS_H
3795489c19Sopenharmony_ci
3895489c19Sopenharmony_ci#include "bluetooth_def.h"
3995489c19Sopenharmony_ci
4095489c19Sopenharmony_cinamespace OHOS {
4195489c19Sopenharmony_cinamespace Bluetooth {
4295489c19Sopenharmony_ci/**
4395489c19Sopenharmony_ci * @brief Represents device class.
4495489c19Sopenharmony_ci *
4595489c19Sopenharmony_ci * @since 1.0
4695489c19Sopenharmony_ci * @version 1.0
4795489c19Sopenharmony_ci */
4895489c19Sopenharmony_ciclass BLUETOOTH_API BluetoothDeviceClass {
4995489c19Sopenharmony_cipublic:
5095489c19Sopenharmony_ci    /**
5195489c19Sopenharmony_ci     * @brief A constructor used to create a <b>BluetoothDeviceClass</b> instance.
5295489c19Sopenharmony_ci     *
5395489c19Sopenharmony_ci     * @since 1.0
5495489c19Sopenharmony_ci     * @version 1.0
5595489c19Sopenharmony_ci     */
5695489c19Sopenharmony_ci    BluetoothDeviceClass();
5795489c19Sopenharmony_ci
5895489c19Sopenharmony_ci    /**
5995489c19Sopenharmony_ci     * @brief A constructor used to create a <b>BluetoothDeviceClass</b> instance.
6095489c19Sopenharmony_ci     *
6195489c19Sopenharmony_ci     * @param deviceClass Device class to create an <b>BluetoothDeviceClass</b> instance.
6295489c19Sopenharmony_ci     * @since 1.0
6395489c19Sopenharmony_ci     * @version 1.0
6495489c19Sopenharmony_ci     */
6595489c19Sopenharmony_ci    explicit BluetoothDeviceClass(int deviceClass);
6695489c19Sopenharmony_ci
6795489c19Sopenharmony_ci    /**
6895489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BluetoothDeviceClass</b> instance.
6995489c19Sopenharmony_ci     *
7095489c19Sopenharmony_ci     * @since 1.0
7195489c19Sopenharmony_ci     * @version 1.0
7295489c19Sopenharmony_ci     */
7395489c19Sopenharmony_ci    ~BluetoothDeviceClass();
7495489c19Sopenharmony_ci
7595489c19Sopenharmony_ci    /**
7695489c19Sopenharmony_ci     * @brief Get major class.
7795489c19Sopenharmony_ci     *
7895489c19Sopenharmony_ci     * @return Returns device major class.
7995489c19Sopenharmony_ci     * @since 1.0
8095489c19Sopenharmony_ci     * @version 1.0
8195489c19Sopenharmony_ci     */
8295489c19Sopenharmony_ci    int GetMajorClass() const;
8395489c19Sopenharmony_ci
8495489c19Sopenharmony_ci    /**
8595489c19Sopenharmony_ci     * @brief Get major minor class.
8695489c19Sopenharmony_ci     *
8795489c19Sopenharmony_ci     * @return Returns device major minor class.
8895489c19Sopenharmony_ci     * @since 1.0
8995489c19Sopenharmony_ci     * @version 1.0
9095489c19Sopenharmony_ci     */
9195489c19Sopenharmony_ci    int GetMajorMinorClass() const;
9295489c19Sopenharmony_ci
9395489c19Sopenharmony_ci    /**
9495489c19Sopenharmony_ci     * @brief Get class of device.
9595489c19Sopenharmony_ci     *
9695489c19Sopenharmony_ci     * @return Returns the class of device.
9795489c19Sopenharmony_ci     * @since 1.0
9895489c19Sopenharmony_ci     * @version 1.0
9995489c19Sopenharmony_ci     */
10095489c19Sopenharmony_ci    int GetClassOfDevice() const;
10195489c19Sopenharmony_ci
10295489c19Sopenharmony_ci    /**
10395489c19Sopenharmony_ci     * @brief Check if device supporte some profiles.
10495489c19Sopenharmony_ci     *
10595489c19Sopenharmony_ci     * @param profileId Profile Id.
10695489c19Sopenharmony_ci     * @return Returns <b>true</b> if device supported this profile;
10795489c19Sopenharmony_ci     *         returns <b>false</b> if device did not support this profile.
10895489c19Sopenharmony_ci     * @since 1.0
10995489c19Sopenharmony_ci     * @version 1.0
11095489c19Sopenharmony_ci     */
11195489c19Sopenharmony_ci    bool IsProfileSupported(int profileId) const;
11295489c19Sopenharmony_ci
11395489c19Sopenharmony_ci    /**
11495489c19Sopenharmony_ci     * @brief Check if device supporte some services.
11595489c19Sopenharmony_ci     *
11695489c19Sopenharmony_ci     * @param profileId Profile Id.
11795489c19Sopenharmony_ci     * @return Returns <b>true</b> if device supported this service;
11895489c19Sopenharmony_ci     *         returns <b>false</b> if device did not support this service.
11995489c19Sopenharmony_ci     * @since 1.0
12095489c19Sopenharmony_ci     * @version 1.0
12195489c19Sopenharmony_ci     */
12295489c19Sopenharmony_ci    bool IsServiceSupported(int service) const;
12395489c19Sopenharmony_ci
12495489c19Sopenharmony_ciprivate:
12595489c19Sopenharmony_ci    bool IsA2dpSupported() const;
12695489c19Sopenharmony_ci    bool IsA2dpSinkSupported() const;
12795489c19Sopenharmony_ci    bool IsHeadSetSupported() const;
12895489c19Sopenharmony_ci    bool IsOppSupported() const;
12995489c19Sopenharmony_ci    int class_;
13095489c19Sopenharmony_ci};
13195489c19Sopenharmony_ci} // namespace Bluetooth
13295489c19Sopenharmony_ci} // namespace OHOS
13395489c19Sopenharmony_ci
13495489c19Sopenharmony_ci#endif  // BLUETOOTH_DEVICE_CLASS_H
135