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 a bluetooth system that provides basic blurtooth connection and profile functions,
2195489c19Sopenharmony_ci *        including A2DP, AVRCP, BLE, GATT, HFP, MAP, PBAP, and SPP, etc.
2295489c19Sopenharmony_ci *
2395489c19Sopenharmony_ci * @since 6
2495489c19Sopenharmony_ci */
2595489c19Sopenharmony_ci
2695489c19Sopenharmony_ci/**
2795489c19Sopenharmony_ci * @file bluetooth_socket.h
2895489c19Sopenharmony_ci *
2995489c19Sopenharmony_ci * @brief Declares spp socket framework functions, including basic functions.
3095489c19Sopenharmony_ci *
3195489c19Sopenharmony_ci * @since 6
3295489c19Sopenharmony_ci */
3395489c19Sopenharmony_ci
3495489c19Sopenharmony_ci#ifndef BLUETOOTH_SOCKET_H
3595489c19Sopenharmony_ci#define BLUETOOTH_SOCKET_H
3695489c19Sopenharmony_ci
3795489c19Sopenharmony_ci#include <string>
3895489c19Sopenharmony_ci#include <vector>
3995489c19Sopenharmony_ci#include <memory>
4095489c19Sopenharmony_ci
4195489c19Sopenharmony_ci#include "bluetooth_remote_device.h"
4295489c19Sopenharmony_ci#include "bluetooth_socket_inputstream.h"
4395489c19Sopenharmony_ci#include "bluetooth_socket_outputstream.h"
4495489c19Sopenharmony_ci
4595489c19Sopenharmony_cinamespace OHOS {
4695489c19Sopenharmony_cinamespace Bluetooth {
4795489c19Sopenharmony_cienum BtSocketType {
4895489c19Sopenharmony_ci    TYPE_RFCOMM = 0x0,
4995489c19Sopenharmony_ci    TYPE_L2CAP = 0x01,
5095489c19Sopenharmony_ci    TYPE_L2CAP_LE = 0x02,
5195489c19Sopenharmony_ci};
5295489c19Sopenharmony_ci
5395489c19Sopenharmony_cienum SocketState {
5495489c19Sopenharmony_ci    SOCKET_INIT,
5595489c19Sopenharmony_ci    SOCKET_CONNECTED,
5695489c19Sopenharmony_ci    SOCKET_LISTENING,
5795489c19Sopenharmony_ci    SOCKET_CLOSED,
5895489c19Sopenharmony_ci};
5995489c19Sopenharmony_ci
6095489c19Sopenharmony_ciconst int FLAG_ENCRYPT = 1;
6195489c19Sopenharmony_ciconst int FLAG_AUTH = 1 << 1;
6295489c19Sopenharmony_ci
6395489c19Sopenharmony_ciconst int SPP_SOCKET_PSM_VALUE = -1;
6495489c19Sopenharmony_ci
6595489c19Sopenharmony_citypedef struct {
6695489c19Sopenharmony_ci    BluetoothRemoteDevice addr;
6795489c19Sopenharmony_ci    UUID uuid;
6895489c19Sopenharmony_ci    int status;
6995489c19Sopenharmony_ci    int result;
7095489c19Sopenharmony_ci    int type;
7195489c19Sopenharmony_ci    int psm;
7295489c19Sopenharmony_ci} CallbackConnectParam;
7395489c19Sopenharmony_ci
7495489c19Sopenharmony_ci/**
7595489c19Sopenharmony_ci * @brief Represents bluetooth connection callbcak.
7695489c19Sopenharmony_ci */
7795489c19Sopenharmony_ciclass BluetoothConnectionObserver {
7895489c19Sopenharmony_cipublic:
7995489c19Sopenharmony_ci    /**
8095489c19Sopenharmony_ci     * @brief delete the BluetoothConnectionObserver instance.
8195489c19Sopenharmony_ci     */
8295489c19Sopenharmony_ci    virtual ~BluetoothConnectionObserver() = default;
8395489c19Sopenharmony_ci
8495489c19Sopenharmony_ci    /**
8595489c19Sopenharmony_ci     * @brief notify connection status and result.
8695489c19Sopenharmony_ci     */
8795489c19Sopenharmony_ci    virtual void OnConnectionStateChanged(const CallbackConnectParam &callbackConnectParam) = 0;
8895489c19Sopenharmony_ci};
8995489c19Sopenharmony_ci
9095489c19Sopenharmony_ci/**
9195489c19Sopenharmony_ci * @brief Class for client socket functions.
9295489c19Sopenharmony_ci *
9395489c19Sopenharmony_ci * @since 6
9495489c19Sopenharmony_ci */
9595489c19Sopenharmony_ciclass BLUETOOTH_API ClientSocket : public std::enable_shared_from_this<ClientSocket> {
9695489c19Sopenharmony_cipublic:
9795489c19Sopenharmony_ci    /**
9895489c19Sopenharmony_ci     * @brief init socketClient.
9995489c19Sopenharmony_ci     *
10095489c19Sopenharmony_ci     * @return init   api init result.
10195489c19Sopenharmony_ci     * @since 6
10295489c19Sopenharmony_ci     *
10395489c19Sopenharmony_ci     */
10495489c19Sopenharmony_ci    bool Init();
10595489c19Sopenharmony_ci
10695489c19Sopenharmony_ci    /**
10795489c19Sopenharmony_ci     * @brief A constructor used to create an ClientSocket instance.
10895489c19Sopenharmony_ci     *
10995489c19Sopenharmony_ci     * @param bda Remote device object.
11095489c19Sopenharmony_ci     * @param uuid Uuid.
11195489c19Sopenharmony_ci     * @param type Socket type.
11295489c19Sopenharmony_ci     * @param auth Connection state.
11395489c19Sopenharmony_ci     * @since 6
11495489c19Sopenharmony_ci     */
11595489c19Sopenharmony_ci    ClientSocket(const BluetoothRemoteDevice &bda, UUID uuid, BtSocketType type, bool auth);
11695489c19Sopenharmony_ci
11795489c19Sopenharmony_ci    /**
11895489c19Sopenharmony_ci     * @brief A constructor used to create an ClientSocket instance. This constructor to construct the
11995489c19Sopenharmony_ci     * ClientSocket object when the Accept function is called.
12095489c19Sopenharmony_ci     *
12195489c19Sopenharmony_ci     * @param fd Socket fd.
12295489c19Sopenharmony_ci     * @param address Remote bluetooth address.
12395489c19Sopenharmony_ci     * @param type Socket type.
12495489c19Sopenharmony_ci     * @since 6
12595489c19Sopenharmony_ci     */
12695489c19Sopenharmony_ci    ClientSocket(int fd, std::string address, BtSocketType type);
12795489c19Sopenharmony_ci
12895489c19Sopenharmony_ci    /**
12995489c19Sopenharmony_ci     * @brief A constructor used to create an ClientSocket instance.
13095489c19Sopenharmony_ci     *
13195489c19Sopenharmony_ci     * @param bda Remote device object.
13295489c19Sopenharmony_ci     * @param uuid Uuid.
13395489c19Sopenharmony_ci     * @param type Socket type.
13495489c19Sopenharmony_ci     * @param auth Connection state.
13595489c19Sopenharmony_ci     * @param observer Connection callback.
13695489c19Sopenharmony_ci     * @since 6
13795489c19Sopenharmony_ci     */
13895489c19Sopenharmony_ci    ClientSocket(const BluetoothRemoteDevice &bda, UUID uuid, BtSocketType type, bool auth,
13995489c19Sopenharmony_ci        std::shared_ptr<BluetoothConnectionObserver> observer);
14095489c19Sopenharmony_ci
14195489c19Sopenharmony_ci    /**
14295489c19Sopenharmony_ci     * @brief Destroy the ClientSocket object.
14395489c19Sopenharmony_ci     *
14495489c19Sopenharmony_ci     * @since 6
14595489c19Sopenharmony_ci     */
14695489c19Sopenharmony_ci    virtual ~ClientSocket();
14795489c19Sopenharmony_ci
14895489c19Sopenharmony_ci    /**
14995489c19Sopenharmony_ci     * @brief The function is used to connect to a remote device.
15095489c19Sopenharmony_ci     *
15195489c19Sopenharmony_ci     * @param psm dynamic PSM value from remote device.
15295489c19Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
15395489c19Sopenharmony_ci     *         Returns <b>-1</b> if the operation fails.
15495489c19Sopenharmony_ci     * @since 6
15595489c19Sopenharmony_ci     */
15695489c19Sopenharmony_ci    int Connect(int psm);
15795489c19Sopenharmony_ci
15895489c19Sopenharmony_ci    /**
15995489c19Sopenharmony_ci     * @brief Client disconnected.
16095489c19Sopenharmony_ci     *
16195489c19Sopenharmony_ci     * @since 6
16295489c19Sopenharmony_ci     */
16395489c19Sopenharmony_ci    void Close();
16495489c19Sopenharmony_ci
16595489c19Sopenharmony_ci    /**
16695489c19Sopenharmony_ci     * @brief Get the input stream with this socket.
16795489c19Sopenharmony_ci     *
16895489c19Sopenharmony_ci     * @return Returns the object of the InputStream class.
16995489c19Sopenharmony_ci     * @since 6
17095489c19Sopenharmony_ci     */
17195489c19Sopenharmony_ci    std::shared_ptr<InputStream> GetInputStream();
17295489c19Sopenharmony_ci
17395489c19Sopenharmony_ci    /**
17495489c19Sopenharmony_ci     * @brief Get the output stream with this socket.
17595489c19Sopenharmony_ci     *
17695489c19Sopenharmony_ci     * @return Returns the object of the OutputStream class.
17795489c19Sopenharmony_ci     * @since 6
17895489c19Sopenharmony_ci     */
17995489c19Sopenharmony_ci    std::shared_ptr<OutputStream> GetOutputStream();
18095489c19Sopenharmony_ci
18195489c19Sopenharmony_ci    /**
18295489c19Sopenharmony_ci     * @brief Get the remote device with this socket.
18395489c19Sopenharmony_ci     *
18495489c19Sopenharmony_ci     * @return Remote device.
18595489c19Sopenharmony_ci     * @since 6
18695489c19Sopenharmony_ci     */
18795489c19Sopenharmony_ci    BluetoothRemoteDevice &GetRemoteDevice();
18895489c19Sopenharmony_ci
18995489c19Sopenharmony_ci    /**
19095489c19Sopenharmony_ci     * @brief Get the connection status of this socket.
19195489c19Sopenharmony_ci     *
19295489c19Sopenharmony_ci     * @return Returns <b>true</b> is connected.
19395489c19Sopenharmony_ci     *         Returns <b>false</b> is not connected.
19495489c19Sopenharmony_ci     * @since 6
19595489c19Sopenharmony_ci     */
19695489c19Sopenharmony_ci    bool IsConnected() const;
19795489c19Sopenharmony_ci
19895489c19Sopenharmony_ci    /**
19995489c19Sopenharmony_ci     * @brief Set socket send & recv buffer size, The size limit ranges from 4KB to 50KB.
20095489c19Sopenharmony_ci     *
20195489c19Sopenharmony_ci     * @return the operation status
20295489c19Sopenharmony_ci     * @since 6
20395489c19Sopenharmony_ci     */
20495489c19Sopenharmony_ci    int SetBufferSize(int bufferSize);
20595489c19Sopenharmony_ci
20695489c19Sopenharmony_ci    /**
20795489c19Sopenharmony_ci     * @brief update coc connection params
20895489c19Sopenharmony_ci     *
20995489c19Sopenharmony_ci     * @param CocUpdateSocketParam coc socket params.
21095489c19Sopenharmony_ci     * @return Returns <b>0</b> if the operation is successful.
21195489c19Sopenharmony_ci     *         Returns <b>-1</b> if the operation fails.
21295489c19Sopenharmony_ci     * @since 6
21395489c19Sopenharmony_ci     */
21495489c19Sopenharmony_ci    int UpdateCocConnectionParams(CocUpdateSocketParam &param);
21595489c19Sopenharmony_ci
21695489c19Sopenharmony_ci    /**
21795489c19Sopenharmony_ci     * @brief Get client socket fd
21895489c19Sopenharmony_ci     *
21995489c19Sopenharmony_ci     * @return int fd
22095489c19Sopenharmony_ci     * @since 6
22195489c19Sopenharmony_ci     */
22295489c19Sopenharmony_ci    int GetSocketFd();
22395489c19Sopenharmony_ci
22495489c19Sopenharmony_ci    /**
22595489c19Sopenharmony_ci     * @brief Get dynamic PSM value for TYPE_L2CAP_LE.
22695489c19Sopenharmony_ci     *
22795489c19Sopenharmony_ci     * @return int psm.
22895489c19Sopenharmony_ci     * @since 6
22995489c19Sopenharmony_ci     */
23095489c19Sopenharmony_ci    int GetL2capPsm();
23195489c19Sopenharmony_ci
23295489c19Sopenharmony_ci    /**
23395489c19Sopenharmony_ci     * @brief Get client channel number for TYPE_RFCOMM.
23495489c19Sopenharmony_ci     *
23595489c19Sopenharmony_ci     * @return int scn.
23695489c19Sopenharmony_ci     * @since 6
23795489c19Sopenharmony_ci     */
23895489c19Sopenharmony_ci
23995489c19Sopenharmony_ci    int GetRfcommScn();
24095489c19Sopenharmony_ci
24195489c19Sopenharmony_ci    /**
24295489c19Sopenharmony_ci     * @brief Get the maximum supported transmit packet size for the underlying transport
24395489c19Sopenharmony_ci     *
24495489c19Sopenharmony_ci     * @return int the maximum supported transmit packet size
24595489c19Sopenharmony_ci     * @since 6
24695489c19Sopenharmony_ci     */
24795489c19Sopenharmony_ci    uint32_t GetMaxTransmitPacketSize();
24895489c19Sopenharmony_ci
24995489c19Sopenharmony_ci    /**
25095489c19Sopenharmony_ci     * @brief Get the maximum supported receive packet size for the underlying transport
25195489c19Sopenharmony_ci     *
25295489c19Sopenharmony_ci     * @return int the maximum supported receive packet size
25395489c19Sopenharmony_ci     * @since 6
25495489c19Sopenharmony_ci     */
25595489c19Sopenharmony_ci    uint32_t GetMaxReceivePacketSize();
25695489c19Sopenharmony_ci
25795489c19Sopenharmony_ciprivate:
25895489c19Sopenharmony_ci    ClientSocket() = delete;
25995489c19Sopenharmony_ci    BLUETOOTH_DECLARE_IMPL();
26095489c19Sopenharmony_ci};
26195489c19Sopenharmony_ci
26295489c19Sopenharmony_ci/**
26395489c19Sopenharmony_ci * @brief Class for server socket functions.
26495489c19Sopenharmony_ci *
26595489c19Sopenharmony_ci * @since 6
26695489c19Sopenharmony_ci */
26795489c19Sopenharmony_ciclass BLUETOOTH_API ServerSocket {
26895489c19Sopenharmony_cipublic:
26995489c19Sopenharmony_ci    /**
27095489c19Sopenharmony_ci     * @brief A constructor used to create an ServerSocket instance.
27195489c19Sopenharmony_ci     *
27295489c19Sopenharmony_ci     * @param name Server name.
27395489c19Sopenharmony_ci     * @param uuid Uuid.
27495489c19Sopenharmony_ci     * @param type Socket type.
27595489c19Sopenharmony_ci     * @param encrypt Remote device auth and encrypt connection.
27695489c19Sopenharmony_ci     * @since 6
27795489c19Sopenharmony_ci     */
27895489c19Sopenharmony_ci    ServerSocket(const std::string &name, UUID uuid, BtSocketType type, bool encrypt);
27995489c19Sopenharmony_ci
28095489c19Sopenharmony_ci    /**
28195489c19Sopenharmony_ci     * @brief Destroy the ServerSocket object.
28295489c19Sopenharmony_ci     *
28395489c19Sopenharmony_ci     * @since 6
28495489c19Sopenharmony_ci     */
28595489c19Sopenharmony_ci    ~ServerSocket();
28695489c19Sopenharmony_ci
28795489c19Sopenharmony_ci    /**
28895489c19Sopenharmony_ci     * @brief Listen the client connect event.
28995489c19Sopenharmony_ci     *
29095489c19Sopenharmony_ci     * @return listen error code.
29195489c19Sopenharmony_ci     * @since 6
29295489c19Sopenharmony_ci     */
29395489c19Sopenharmony_ci    int Listen();
29495489c19Sopenharmony_ci
29595489c19Sopenharmony_ci    /**
29695489c19Sopenharmony_ci     * @brief Accept a client connection and return an acceptClientSocket to interact with the client.
29795489c19Sopenharmony_ci     *
29895489c19Sopenharmony_ci     * @param timeout Timeout for the accept.
29995489c19Sopenharmony_ci     * @return A ClientSocket.
30095489c19Sopenharmony_ci     * @since 6
30195489c19Sopenharmony_ci     */
30295489c19Sopenharmony_ci    std::shared_ptr<ClientSocket> Accept(int timeout);
30395489c19Sopenharmony_ci
30495489c19Sopenharmony_ci    /**
30595489c19Sopenharmony_ci     * @brief Server disconnected.
30695489c19Sopenharmony_ci     *
30795489c19Sopenharmony_ci     * @since 6
30895489c19Sopenharmony_ci     */
30995489c19Sopenharmony_ci    void Close();
31095489c19Sopenharmony_ci
31195489c19Sopenharmony_ci    /**
31295489c19Sopenharmony_ci     * @brief Get the server socket type and server name.
31395489c19Sopenharmony_ci     *
31495489c19Sopenharmony_ci     * @return A string.
31595489c19Sopenharmony_ci     * @since 6
31695489c19Sopenharmony_ci     */
31795489c19Sopenharmony_ci    const std::string &GetStringTag();
31895489c19Sopenharmony_ci
31995489c19Sopenharmony_ci    /**
32095489c19Sopenharmony_ci     * @brief Get dynamic PSM value for TYPE_L2CAP.
32195489c19Sopenharmony_ci     *
32295489c19Sopenharmony_ci     * @return int psm.
32395489c19Sopenharmony_ci     * @since 6
32495489c19Sopenharmony_ci     */
32595489c19Sopenharmony_ci    int GetL2capPsm();
32695489c19Sopenharmony_ci
32795489c19Sopenharmony_ci    /**
32895489c19Sopenharmony_ci     * @brief Get server channel number for TYPE_RFCOMM.
32995489c19Sopenharmony_ci     *
33095489c19Sopenharmony_ci     * @return int scn.
33195489c19Sopenharmony_ci     * @since 6
33295489c19Sopenharmony_ci     */
33395489c19Sopenharmony_ci
33495489c19Sopenharmony_ci    int GetRfcommScn();
33595489c19Sopenharmony_ci
33695489c19Sopenharmony_ci    /**
33795489c19Sopenharmony_ci     * @brief Get the maximum supported transmit packet size for the underlying transport
33895489c19Sopenharmony_ci     *
33995489c19Sopenharmony_ci     * @return int the maximum supported transmit packet size
34095489c19Sopenharmony_ci     * @since 6
34195489c19Sopenharmony_ci     */
34295489c19Sopenharmony_ci    uint32_t GetMaxTransmitPacketSize();
34395489c19Sopenharmony_ci
34495489c19Sopenharmony_ci    /**
34595489c19Sopenharmony_ci     * @brief Get the maximum supported receive packet size for the underlying transport
34695489c19Sopenharmony_ci     *
34795489c19Sopenharmony_ci     * @return int the maximum supported receive packet size
34895489c19Sopenharmony_ci     * @since 6
34995489c19Sopenharmony_ci     */
35095489c19Sopenharmony_ci    uint32_t GetMaxReceivePacketSize();
35195489c19Sopenharmony_ci
35295489c19Sopenharmony_ci    /**
35395489c19Sopenharmony_ci     * @brief Get server socket fd
35495489c19Sopenharmony_ci     *
35595489c19Sopenharmony_ci     * @return int fd.
35695489c19Sopenharmony_ci     * @since 6
35795489c19Sopenharmony_ci     */
35895489c19Sopenharmony_ci    int GetSocketFd();
35995489c19Sopenharmony_ci
36095489c19Sopenharmony_ciprivate:
36195489c19Sopenharmony_ci    BLUETOOTH_DECLARE_IMPL();
36295489c19Sopenharmony_ci};
36395489c19Sopenharmony_ci
36495489c19Sopenharmony_ciclass BLUETOOTH_API SocketFactory {
36595489c19Sopenharmony_cipublic:
36695489c19Sopenharmony_ci    /**
36795489c19Sopenharmony_ci     * @brief Create a server record to listen to the insecure rfcomm.
36895489c19Sopenharmony_ci     *
36995489c19Sopenharmony_ci     * @param name Server name.
37095489c19Sopenharmony_ci     * @param uuid Uuid.
37195489c19Sopenharmony_ci     * @return A ServerSocket.
37295489c19Sopenharmony_ci     * @since 6
37395489c19Sopenharmony_ci     */
37495489c19Sopenharmony_ci    static std::shared_ptr<ServerSocket> DataListenInsecureRfcommByServiceRecord(
37595489c19Sopenharmony_ci        const std::string &name, const UUID &uuid);
37695489c19Sopenharmony_ci
37795489c19Sopenharmony_ci    /**
37895489c19Sopenharmony_ci     * @brief Create a server record to listen to the rfcomm.
37995489c19Sopenharmony_ci     *
38095489c19Sopenharmony_ci     * @param name Server name.
38195489c19Sopenharmony_ci     * @param uuid Uuid.
38295489c19Sopenharmony_ci     * @return A ServerSocket.
38395489c19Sopenharmony_ci     * @since 6
38495489c19Sopenharmony_ci     */
38595489c19Sopenharmony_ci    static std::shared_ptr<ServerSocket> DataListenRfcommByServiceRecord(const std::string &name, const UUID &uuid);
38695489c19Sopenharmony_ci
38795489c19Sopenharmony_ci    /**
38895489c19Sopenharmony_ci     * @brief Build insecure rfcomm data socket by service record.
38995489c19Sopenharmony_ci     *
39095489c19Sopenharmony_ci     * @param device Remote device object.
39195489c19Sopenharmony_ci     * @param uuid Uuid.
39295489c19Sopenharmony_ci     * @return A ClientSocket.
39395489c19Sopenharmony_ci     * @since 6
39495489c19Sopenharmony_ci     */
39595489c19Sopenharmony_ci    static std::shared_ptr<ClientSocket> BuildInsecureRfcommDataSocketByServiceRecord(
39695489c19Sopenharmony_ci        const BluetoothRemoteDevice &device, const UUID &uuid);
39795489c19Sopenharmony_ci
39895489c19Sopenharmony_ci    /**
39995489c19Sopenharmony_ci     * @brief Build rfcomm data socket by service record.
40095489c19Sopenharmony_ci     *
40195489c19Sopenharmony_ci     * @param device Remote device object.
40295489c19Sopenharmony_ci     * @param uuid Uuid.
40395489c19Sopenharmony_ci     * @return A ClientSocket.
40495489c19Sopenharmony_ci     * @since 6
40595489c19Sopenharmony_ci     */
40695489c19Sopenharmony_ci    static std::shared_ptr<ClientSocket> BuildRfcommDataSocketByServiceRecord(
40795489c19Sopenharmony_ci        const BluetoothRemoteDevice &device, const UUID &uuid);
40895489c19Sopenharmony_ci};
40995489c19Sopenharmony_ci} // namespace Bluetooth
41095489c19Sopenharmony_ci} // namespace OHOS
41195489c19Sopenharmony_ci#endif  // BLUETOOTH_SOCKET_H