1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @addtogroup Bluetooth
18 * @{
19 *
20 * @brief Provide functions for querying the status of bluetooth switch.
21 * @since 13
22 */
23/**
24 * @file oh_bluetooth.h
25 * @kit ConnectivityKit
26 * @brief Define interfaces for querying bluetooth switch status.
27 * @library libbluetooth.so
28 * @syscap SystemCapability.Communication.Bluetooth.Core
29 * @since 13
30 */
31
32#ifndef OH_BLUETOOTH_H
33#define OH_BLUETOOTH_H
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/**
40 * @brief Enumeration state of bluetooth switch.
41 *
42 * @since 13
43 */
44typedef enum Bluetooth_SwitchState {
45    /** Indicates the local bluetooth is off. */
46    BLUETOOTH_STATE_OFF = 0,
47    /** Indicates the local bluetooth is turning on. */
48    BLUETOOTH_STATE_TURNING_ON = 1,
49    /** Indicates the local bluetooth is on, and ready for use. */
50    BLUETOOTH_STATE_ON = 2,
51    /** Indicates the local bluetooth is turning off. */
52    BLUETOOTH_STATE_TURNING_OFF = 3,
53    /** Indicates the local bluetooth is turning LE mode on. */
54    BLUETOOTH_STATE_BLE_TURNING_ON = 4,
55    /** Indicates the local bluetooth is in LE only mode. */
56    BLUETOOTH_STATE_BLE_ON = 5,
57    /** Indicates the local bluetooth is turning off LE only mode. */
58    BLUETOOTH_STATE_BLE_TURNING_OFF = 6
59} Bluetooth_SwitchState;
60
61/**
62 * @brief Enumeration the bluetooth result codes.
63 *
64 * @since 13
65 */
66typedef enum Bluetooth_ResultCode {
67    /**
68     * @error The operation is successful.
69     */
70    BLUETOOTH_SUCCESS = 0,
71    /**
72     * @error Parameter error. Possible reasons: 1. The input parameter is a null pointer;
73     * 2. Parameter values exceed the defined range.
74     */
75    BLUETOOTH_INVALID_PARAM = 401,
76} Bluetooth_ResultCode;
77
78/**
79 * @brief Get the bluetooth switch state.
80 *
81 * @param state - It is a pointer used to receive bluetooth switch status values.
82 * The caller needs to pass in a non empty boolean pointer, otherwise an error will be returned.
83 * For a detailed definition, please refer to {@link Bluetooth_SwitchState}.
84 * @return Bluetooth functions result code.
85 *     For a detailed definition, please refer to {@link Bluetooth_ResultCode}.
86 *     {@link BLUETOOTH_SUCCESS} Successfully obtained the bluetooth switch status.
87 *     {@link BLUETOOTH_INVALID_PARAM} The input parameter enabled is a null pointer.
88 * @since 13
89 */
90Bluetooth_ResultCode OH_Bluetooth_GetBluetoothSwitchState(Bluetooth_SwitchState *state);
91#ifdef __cplusplus
92}
93#endif
94/** @} */
95#endif // OH_BLUETOOTH_H