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