• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef BLUETOOTH_CONNECTION_IMPL_H
16 #define BLUETOOTH_CONNECTION_IMPL_H
17 
18 #include "bluetooth_connection_ffi.h"
19 #include "bluetooth_host.h"
20 #include "cj_common_ffi.h"
21 #include "native/ffi_remote_data.h"
22 
23 namespace OHOS {
24 namespace CJSystemapi {
25 namespace CJBluetoothConnection {
26 using Bluetooth::BluetoothDeviceClass;
27 using Bluetooth::BluetoothHostObserver;
28 using Bluetooth::BluetoothRemoteDevice;
29 using Bluetooth::BluetoothRemoteDeviceObserver;
30 using Bluetooth::DeviceBatteryInfo;
31 using Bluetooth::ParcelUuid;
32 
33 class ConnectionImpl {
34 public:
35     ConnectionImpl() = default;
36     ~ConnectionImpl() = default;
37 
38     static void PairDevice(std::string deviceId, int32_t* errCode);
39     static char* GetRemoteDeviceName(std::string deviceId, int32_t* errCode);
40     static DeviceClass GetRemoteDeviceClass(std::string deviceId, int32_t* errCode);
41     static CArrString GetRemoteProfileUuids(std::string deviceId, int32_t* errCode);
42     static char* GetLocalName(int32_t* errCode);
43     static CArrString GetPairedDevices(int32_t* errCode);
44     static int32_t GetPairState(std::string deviceId, int32_t* errCode);
45     static int32_t GetProfileConnectionState(int32_t profileId, int32_t* errCode);
46     static void SetDevicePairingConfirmation(std::string deviceId, bool accept, int32_t* errCode);
47     static void SetDevicePinCode(std::string deviceId, std::string code, int32_t* errCode);
48     static void SetLocalName(std::string localName, int32_t* errCode);
49     static void SetBluetoothScanMode(int32_t mode, int32_t duration, int32_t* errCode);
50     static int32_t GetBluetoothScanMode(int32_t* errCode);
51     static void StartBluetoothDiscovery(int32_t* errCode);
52     static void StopBluetoothDiscovery(int32_t* errCode);
53     static bool IsBluetoothDiscovering(int32_t* errCode);
54     static void SetRemoteDeviceName(std::string deviceId, std::string name, int32_t* errCode);
55     static CBatteryInfo GetRemoteDeviceBatteryInfo(std::string deviceId, int32_t* errCode);
56     static void RegisterConnectionObserver(int32_t callbackType, void (*callback)(), int32_t* errCode);
57 };
58 
59 class CjBluetoothConnectionObserver : public BluetoothHostObserver {
60 public:
61     CjBluetoothConnectionObserver();
62     ~CjBluetoothConnectionObserver() override = default;
63 
OnStateChanged(const int transport,const int status)64     void OnStateChanged(const int transport, const int status) override {};
OnDiscoveryStateChanged(int status)65     void OnDiscoveryStateChanged(int status) override {};
66     void OnDiscoveryResult(
67         const BluetoothRemoteDevice& device, int rssi, const std::string deviceName, int deviceClass) override;
OnPairRequested(const BluetoothRemoteDevice & device)68     void OnPairRequested(const BluetoothRemoteDevice& device) override {};
69     void OnPairConfirmed(const BluetoothRemoteDevice& device, int reqType, int number) override;
OnScanModeChanged(int mode)70     void OnScanModeChanged(int mode) override {};
OnDeviceNameChanged(const std::string & deviceName)71     void OnDeviceNameChanged(const std::string& deviceName) override {};
OnDeviceAddrChanged(const std::string & address)72     void OnDeviceAddrChanged(const std::string& address) override {};
73 
74     void RegisterDeviceFindFunc(std::function<void(CArrString)> cjCallback);
75     void RegisterPinRequestFunc(std::function<void(CPinRequiredParam)> cjCallback);
76 
77 private:
78     std::function<void(CArrString)> deviceFindFunc { nullptr };
79     std::function<void(CPinRequiredParam)> pinRequestFunc { nullptr };
80 };
81 
82 class CjBluetoothRemoteDeviceObserver : public BluetoothRemoteDeviceObserver {
83 public:
84     CjBluetoothRemoteDeviceObserver();
85     ~CjBluetoothRemoteDeviceObserver() override = default;
86 
OnAclStateChanged(const BluetoothRemoteDevice & device,int state,unsigned int reason)87     void OnAclStateChanged(const BluetoothRemoteDevice& device, int state, unsigned int reason) override {};
88     void OnPairStatusChanged(const BluetoothRemoteDevice& device, int status, int cause) override;
OnRemoteUuidChanged(const BluetoothRemoteDevice & device,const std::vector<ParcelUuid> & uuids)89     void OnRemoteUuidChanged(const BluetoothRemoteDevice& device, const std::vector<ParcelUuid>& uuids) override {};
OnRemoteNameChanged(const BluetoothRemoteDevice & device,const std::string & deviceName)90     void OnRemoteNameChanged(const BluetoothRemoteDevice& device, const std::string& deviceName) override {};
OnRemoteAliasChanged(const BluetoothRemoteDevice & device,const std::string & alias)91     void OnRemoteAliasChanged(const BluetoothRemoteDevice& device, const std::string& alias) override {};
OnRemoteCodChanged(const BluetoothRemoteDevice & device,const BluetoothDeviceClass & cod)92     void OnRemoteCodChanged(const BluetoothRemoteDevice& device, const BluetoothDeviceClass& cod) override {};
OnRemoteBatteryLevelChanged(const BluetoothRemoteDevice & device,int batteryLevel)93     void OnRemoteBatteryLevelChanged(const BluetoothRemoteDevice& device, int batteryLevel) override {};
OnReadRemoteRssiEvent(const BluetoothRemoteDevice & device,int rssi,int status)94     void OnReadRemoteRssiEvent(const BluetoothRemoteDevice& device, int rssi, int status) override {};
95     void OnRemoteBatteryChanged(const BluetoothRemoteDevice& device, const DeviceBatteryInfo& batteryInfo) override;
96 
97     void RegisterBondStateFunc(std::function<void(CBondStateParam)> cjCallback);
98     void RegisterBatteryChangeFunc(std::function<void(CBatteryInfo)> cjCallback);
99 
100 private:
101     std::function<void(CBondStateParam)> bondStateFunc { nullptr };
102     std::function<void(CBatteryInfo)> batteryChangeFunc { nullptr };
103 };
104 } // namespace CJBluetoothConnection
105 } // namespace CJSystemapi
106 } // namespace OHOS
107 
108 #endif // BLUETOOTH_CONNECTION_IMPL_H