1/* 2 * Copyright (c) 2023-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#include "device_profile.h" 17#include "cJSON.h" 18#include "distributed_device_profile_constants.h" 19#include "macro_utils.h" 20#include "profile_utils.h" 21 22namespace OHOS { 23namespace DistributedDeviceProfile { 24namespace { 25 const std::string TAG = "DeviceProfile"; 26} 27std::string DeviceProfile::GetDeviceId() const 28{ 29 return deviceId_; 30} 31 32void DeviceProfile::SetDeviceId(const std::string& deviceId) 33{ 34 deviceId_ = deviceId; 35} 36 37std::string DeviceProfile::GetDeviceTypeName() const 38{ 39 return deviceTypeName_; 40} 41 42void DeviceProfile::SetDeviceTypeName(const std::string &deviceTypeName) 43{ 44 deviceTypeName_ = deviceTypeName; 45} 46 47int32_t DeviceProfile::GetDeviceTypeId() const 48{ 49 return deviceTypeId_; 50} 51 52void DeviceProfile::SetDeviceTypeId(int32_t deviceTypeId) 53{ 54 deviceTypeId_ = deviceTypeId; 55} 56 57std::string DeviceProfile::GetDeviceName() const 58{ 59 return deviceName_; 60} 61 62void DeviceProfile::SetDeviceName(const std::string& deviceName) 63{ 64 deviceName_ = deviceName; 65} 66 67std::string DeviceProfile::GetManufactureName() const 68{ 69 return manufactureName_; 70} 71 72void DeviceProfile::SetManufactureName(std::string manufactureName) 73{ 74 manufactureName_ = manufactureName; 75} 76 77std::string DeviceProfile::GetDeviceModel() const 78{ 79 return deviceModel_; 80} 81 82void DeviceProfile::SetDeviceModel(const std::string &deviceModel) 83{ 84 deviceModel_ = deviceModel; 85} 86 87int64_t DeviceProfile::GetStorageCapability() const 88{ 89 return storageCapability_; 90} 91 92void DeviceProfile::SetStorageCapability(int64_t storageCapability) 93{ 94 storageCapability_ = storageCapability; 95} 96 97int32_t DeviceProfile::GetOsApiLevel() const 98{ 99 return osApiLevel_; 100} 101 102void DeviceProfile::SetOsApiLevel(int32_t osApiLevel) 103{ 104 osApiLevel_ = osApiLevel; 105} 106 107std::string DeviceProfile::GetOsVersion() const 108{ 109 return osVersion_; 110} 111 112void DeviceProfile::SetOsVersion(const std::string& osVersion) 113{ 114 osVersion_ = osVersion; 115} 116 117int32_t DeviceProfile::GetOsType() const 118{ 119 return osType_; 120} 121 122void DeviceProfile::SetOsType(int32_t osType) 123{ 124 osType_ = osType; 125} 126 127std::string DeviceProfile::GetOsSysCap() const 128{ 129 return osSysCap_; 130} 131 132void DeviceProfile::SetOsSysCap(const std::string& osSysCap) 133{ 134 osSysCap_ = osSysCap; 135} 136 137bool DeviceProfile::Marshalling(MessageParcel& parcel) const 138{ 139 WRITE_HELPER_RET(parcel, String, deviceId_, false); 140 WRITE_HELPER_RET(parcel, String, deviceTypeName_, false); 141 WRITE_HELPER_RET(parcel, Int32, deviceTypeId_, false); 142 WRITE_HELPER_RET(parcel, String, deviceName_, false); 143 WRITE_HELPER_RET(parcel, String, manufactureName_, false); 144 WRITE_HELPER_RET(parcel, String, deviceModel_, false); 145 WRITE_HELPER_RET(parcel, Int64, storageCapability_, false); 146 WRITE_HELPER_RET(parcel, String, osSysCap_, false); 147 WRITE_HELPER_RET(parcel, Int32, osApiLevel_, false); 148 WRITE_HELPER_RET(parcel, String, osVersion_, false); 149 WRITE_HELPER_RET(parcel, Int32, osType_, false); 150 return true; 151} 152 153bool DeviceProfile::UnMarshalling(MessageParcel& parcel) 154{ 155 READ_HELPER_RET(parcel, String, deviceId_, false); 156 READ_HELPER_RET(parcel, String, deviceTypeName_, false); 157 READ_HELPER_RET(parcel, Int32, deviceTypeId_, false); 158 READ_HELPER_RET(parcel, String, deviceName_, false); 159 READ_HELPER_RET(parcel, String, manufactureName_, false); 160 READ_HELPER_RET(parcel, String, deviceModel_, false); 161 READ_HELPER_RET(parcel, Int64, storageCapability_, false); 162 READ_HELPER_RET(parcel, String, osSysCap_, false); 163 READ_HELPER_RET(parcel, Int32, osApiLevel_, false); 164 READ_HELPER_RET(parcel, String, osVersion_, false); 165 READ_HELPER_RET(parcel, Int32, osType_, false); 166 return true; 167} 168 169bool DeviceProfile::operator!=(const DeviceProfile& deviceProfile) const 170{ 171 bool isNotEqual = (deviceId_ != deviceProfile.GetDeviceId() || deviceTypeName_ != deviceProfile.GetDeviceTypeName() 172 || deviceTypeId_ != deviceProfile.GetDeviceTypeId() || deviceName_ != deviceProfile.GetDeviceName() || 173 manufactureName_ != deviceProfile.GetManufactureName() || deviceModel_ != deviceProfile.GetDeviceModel() || 174 storageCapability_ != deviceProfile.GetStorageCapability() || osSysCap_ != deviceProfile.GetOsSysCap() || 175 osApiLevel_ != deviceProfile.GetOsApiLevel() || osVersion_ != deviceProfile.GetOsVersion() || osType_ != 176 deviceProfile.GetOsType()); 177 if (isNotEqual) { 178 return true; 179 } else { 180 return false; 181 } 182} 183 184std::string DeviceProfile::dump() const 185{ 186 cJSON* json = cJSON_CreateObject(); 187 if (!cJSON_IsObject(json)) { 188 cJSON_Delete(json); 189 return EMPTY_STRING; 190 } 191 cJSON_AddStringToObject(json, DEVICE_ID.c_str(), ProfileUtils::GetAnonyString(deviceId_).c_str()); 192 cJSON_AddStringToObject(json, DEVICE_TYPE_NAME.c_str(), deviceTypeName_.c_str()); 193 cJSON_AddNumberToObject(json, DEVICE_TYPE_ID.c_str(), deviceTypeId_); 194 cJSON_AddStringToObject(json, DEVICE_NAME.c_str(), deviceName_.c_str()); 195 cJSON_AddStringToObject(json, MANUFACTURE_NAME.c_str(), manufactureName_.c_str()); 196 cJSON_AddStringToObject(json, DEVICE_MODEL.c_str(), deviceModel_.c_str()); 197 cJSON_AddNumberToObject(json, STORAGE_CAPACITY.c_str(), storageCapability_); 198 cJSON_AddStringToObject(json, OS_SYS_CAPACITY.c_str(), osSysCap_.c_str()); 199 cJSON_AddNumberToObject(json, OS_API_LEVEL.c_str(), osApiLevel_); 200 cJSON_AddStringToObject(json, OS_VERSION.c_str(), osVersion_.c_str()); 201 cJSON_AddNumberToObject(json, OS_TYPE.c_str(), osType_); 202 char* jsonChars = cJSON_PrintUnformatted(json); 203 if (jsonChars == NULL) { 204 cJSON_Delete(json); 205 HILOGE("cJSON formatted to string failed!"); 206 return EMPTY_STRING; 207 } 208 std::string jsonStr = jsonChars; 209 cJSON_Delete(json); 210 cJSON_free(jsonChars); 211 return jsonStr; 212} 213 214std::string DeviceProfile::AnnoymizeDump() const 215{ 216 cJSON* json = cJSON_CreateObject(); 217 if (!cJSON_IsObject(json)) { 218 cJSON_Delete(json); 219 return EMPTY_STRING; 220 } 221 cJSON_AddStringToObject(json, DEVICE_ID.c_str(), ProfileUtils::GetAnonyString(deviceId_).c_str()); 222 cJSON_AddStringToObject(json, DEVICE_TYPE_NAME.c_str(), deviceTypeName_.c_str()); 223 cJSON_AddNumberToObject(json, DEVICE_TYPE_ID.c_str(), deviceTypeId_); 224 cJSON_AddStringToObject(json, DEVICE_NAME.c_str(), deviceName_.c_str()); 225 cJSON_AddStringToObject(json, MANUFACTURE_NAME.c_str(), manufactureName_.c_str()); 226 cJSON_AddStringToObject(json, DEVICE_MODEL.c_str(), deviceModel_.c_str()); 227 cJSON_AddStringToObject(json, STORAGE_CAPACITY.c_str(), 228 ProfileUtils::GetAnonyString(std::to_string(storageCapability_)).c_str()); 229 cJSON_AddStringToObject(json, OS_SYS_CAPACITY.c_str(), 230 ProfileUtils::GetAnonyString(osSysCap_).c_str()); 231 cJSON_AddStringToObject(json, OS_API_LEVEL.c_str(), 232 ProfileUtils::GetAnonyString(std::to_string(osApiLevel_)).c_str()); 233 cJSON_AddStringToObject(json, OS_VERSION.c_str(), 234 ProfileUtils::GetAnonyString(osVersion_).c_str()); 235 cJSON_AddStringToObject(json, OS_TYPE.c_str(), 236 ProfileUtils::GetAnonyString(std::to_string(osType_)).c_str()); 237 char* jsonChars = cJSON_PrintUnformatted(json); 238 if (jsonChars == NULL) { 239 cJSON_Delete(json); 240 HILOGE("cJSON formatted to string failed!"); 241 return EMPTY_STRING; 242 } 243 std::string jsonStr = jsonChars; 244 cJSON_Delete(json); 245 cJSON_free(jsonChars); 246 return jsonStr; 247} 248} // namespace DistributedDeviceProfile 249} // namespace OHOS