• 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 #include "device_manager_ffi.h"
16 
17 #include <string>
18 
19 #include "device_manager.h"
20 #include "device_manager_impl.h"
21 #include "dm_log.h"
22 
23 extern "C" {
FfiOHOSDistributedDeviceManagerCreateDeviceManager(const char * name,int32_t * errCode)24 int64_t FfiOHOSDistributedDeviceManagerCreateDeviceManager(const char *name, int32_t *errCode)
25 {
26     auto deviceManager = OHOS::FFI::FFIData::Create<OHOS::DistributedHardware::DeviceManagerFfiImpl>(
27         std::string(name), errCode);
28     if (deviceManager == nullptr) {
29         return 0;
30     }
31     return deviceManager->GetID();
32 }
33 
FfiOHOSDistributedDeviceManagerReleaseDeviceManager(int64_t id,int32_t * errCode)34 void FfiOHOSDistributedDeviceManagerReleaseDeviceManager(int64_t id, int32_t *errCode)
35 {
36     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
37     if (instance == nullptr) {
38         LOGE("instance is nullptr");
39         int32_t errSerive = 11600102;
40         *errCode = errSerive;
41         return;
42     }
43     *errCode = instance->ReleaseDeviceManager();
44 }
45 
FfiOHOSDistributedDeviceManagerGetAvailableDeviceList(int64_t id,FfiDeviceBasicInfoArray * deviceInfoList,int32_t * errCode)46 void FfiOHOSDistributedDeviceManagerGetAvailableDeviceList(
47     int64_t id, FfiDeviceBasicInfoArray *deviceInfoList, int32_t *errCode)
48 {
49     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
50     if (instance == nullptr) {
51         LOGE("instance is nullptr");
52         int32_t errSerive = 11600102;
53         *errCode = errSerive;
54         return;
55     }
56     *errCode = instance->GetAvailableDeviceList(*deviceInfoList);
57 }
58 
FfiOHOSDistributedDeviceManagerFreeDeviceInfoList(FfiDeviceBasicInfoArray deviceInfoList)59 void FfiOHOSDistributedDeviceManagerFreeDeviceInfoList(FfiDeviceBasicInfoArray deviceInfoList)
60 {
61     OHOS::DistributedHardware::DeviceManagerFfiImpl::DeviceListFree(deviceInfoList);
62 }
63 
FfiOHOSDistributedDeviceManagerGetLocalDeviceNetworkId(int64_t id,int32_t * errCode)64 const char *FfiOHOSDistributedDeviceManagerGetLocalDeviceNetworkId(int64_t id, int32_t *errCode)
65 {
66     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
67     const char *networkIdPtr = nullptr;
68     if (instance == nullptr) {
69         LOGE("instance is nullptr");
70         int32_t errSerive = 11600102;
71         *errCode = errSerive;
72         return networkIdPtr;
73     }
74     *errCode = instance->GetLocalDeviceNetworkId(networkIdPtr);
75     return networkIdPtr;
76 }
77 
FfiOHOSDistributedDeviceManagerGetLocalDeviceName(int64_t id,int32_t * errCode)78 const char *FfiOHOSDistributedDeviceManagerGetLocalDeviceName(int64_t id, int32_t *errCode)
79 {
80     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
81     const char *deviceName = nullptr;
82     if (instance == nullptr) {
83         LOGE("instance is nullptr");
84         int32_t errSerive = 11600102;
85         *errCode = errSerive;
86         return deviceName;
87     }
88     *errCode = instance->GetLocalDeviceName(deviceName);
89     return deviceName;
90 }
91 
FfiOHOSDistributedDeviceManagerGetLocalDeviceType(int64_t id,int32_t * errCode)92 int32_t FfiOHOSDistributedDeviceManagerGetLocalDeviceType(int64_t id, int32_t *errCode)
93 {
94     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
95     int32_t deviceType = 0;
96     if (instance == nullptr) {
97         LOGE("instance is nullptr");
98         int32_t errSerive = 11600102;
99         *errCode = errSerive;
100         return deviceType;
101     }
102     *errCode = instance->GetLocalDeviceType(deviceType);
103     return deviceType;
104 }
105 
FfiOHOSDistributedDeviceManagerGetLocalDeviceId(int64_t id,int32_t * errCode)106 const char *FfiOHOSDistributedDeviceManagerGetLocalDeviceId(int64_t id, int32_t *errCode)
107 {
108     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
109     const char *deviceId = nullptr;
110     if (instance == nullptr) {
111         LOGE("instance is nullptr");
112         int32_t errSerive = 11600102;
113         *errCode = errSerive;
114         return deviceId;
115     }
116     *errCode = instance->GetLocalDeviceId(deviceId);
117     return deviceId;
118 }
119 
FfiOHOSDistributedDeviceManagerGetDeviceName(int64_t id,const char * networkId,int32_t * errCode)120 const char *FfiOHOSDistributedDeviceManagerGetDeviceName(int64_t id, const char *networkId, int32_t *errCode)
121 {
122     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
123     const char *deviceName = nullptr;
124     if (instance == nullptr) {
125         LOGE("instance is nullptr");
126         int32_t errSerive = 11600102;
127         *errCode = errSerive;
128         return deviceName;
129     }
130     *errCode = instance->GetDeviceName(networkId, deviceName);
131     return deviceName;
132 }
133 
FfiOHOSDistributedDeviceManagerGetDeviceType(int64_t id,const char * networkId,int32_t * errCode)134 int32_t FfiOHOSDistributedDeviceManagerGetDeviceType(int64_t id, const char *networkId, int32_t *errCode)
135 {
136     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
137     int32_t deviceType = 0;
138     if (instance == nullptr) {
139         LOGE("instance is nullptr");
140         int32_t errSerive = 11600102;
141         *errCode = errSerive;
142         return deviceType;
143     }
144     *errCode = instance->GetDeviceType(networkId, deviceType);
145     return deviceType;
146 }
147 
FfiOHOSDistributedDeviceManagerStartDiscovering(int64_t id,const char * extra,int32_t * errCode)148 void FfiOHOSDistributedDeviceManagerStartDiscovering(int64_t id, const char *extra, int32_t *errCode)
149 {
150     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
151     if (instance == nullptr) {
152         LOGE("instance is nullptr");
153         int32_t errSerive = 11600102;
154         *errCode = errSerive;
155         return;
156     }
157     *errCode = instance->StartDiscovering(extra);
158 }
159 
FfiOHOSDistributedDeviceManagerStopDiscovering(int64_t id,int32_t * errCode)160 void FfiOHOSDistributedDeviceManagerStopDiscovering(int64_t id, int32_t *errCode)
161 {
162     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
163     if (instance == nullptr) {
164         LOGE("instance is nullptr");
165         int32_t errSerive = 11600102;
166         *errCode = errSerive;
167         return;
168     }
169     *errCode = instance->StopDiscovering();
170 }
171 
FfiOHOSDistributedDeviceManagerBindTarget(int64_t id,const char * deviceId,const char * bindParam,bool isMetaType,int32_t * errCode)172 void FfiOHOSDistributedDeviceManagerBindTarget(
173     int64_t id, const char *deviceId, const char *bindParam, bool isMetaType, int32_t *errCode)
174 {
175     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
176     if (instance == nullptr) {
177         LOGE("instance is nullptr");
178         int32_t errSerive = 11600102;
179         *errCode = errSerive;
180         return;
181     }
182     *errCode = instance->BindTarget(deviceId, bindParam, isMetaType);
183 }
184 
FfiOHOSDistributedDeviceManagerUnbindTarget(int64_t id,const char * deviceId,int32_t * errCode)185 void FfiOHOSDistributedDeviceManagerUnbindTarget(int64_t id, const char *deviceId, int32_t *errCode)
186 {
187     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
188     if (instance == nullptr) {
189         LOGE("instance is nullptr");
190         int32_t errSerive = 11600102;
191         *errCode = errSerive;
192         return;
193     }
194     *errCode = instance->UnbindTarget(deviceId);
195 }
196 
FfiOHOSDistributedDeviceManagerOn(int64_t id,const char * type,void * callback,int32_t * errCode)197 void FfiOHOSDistributedDeviceManagerOn(int64_t id, const char *type, void *callback, int32_t *errCode)
198 {
199     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
200     if (instance == nullptr) {
201         LOGE("instance is nullptr");
202         int32_t errSerive = 11600102;
203         *errCode = errSerive;
204         return;
205     }
206     *errCode = instance->EventOn(type, callback);
207 }
208 
FfiOHOSDistributedDeviceManagerOff(int64_t id,const char * type,int32_t * errCode)209 void FfiOHOSDistributedDeviceManagerOff(int64_t id, const char *type, int32_t *errCode)
210 {
211     auto instance = OHOS::FFI::FFIData::GetData<OHOS::DistributedHardware::DeviceManagerFfiImpl>(id);
212     if (instance == nullptr) {
213         LOGE("instance is nullptr");
214         int32_t errSerive = 11600102;
215         *errCode = errSerive;
216         return;
217     }
218     *errCode = instance->EventOff(type);
219 }
220 }
221