1bae4d13cSopenharmony_ci/* 2bae4d13cSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3bae4d13cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4bae4d13cSopenharmony_ci * you may not use this file except in compliance with the License. 5bae4d13cSopenharmony_ci * You may obtain a copy of the License at 6bae4d13cSopenharmony_ci * 7bae4d13cSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8bae4d13cSopenharmony_ci * 9bae4d13cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10bae4d13cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11bae4d13cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12bae4d13cSopenharmony_ci * See the License for the specific language governing permissions and 13bae4d13cSopenharmony_ci * limitations under the License. 14bae4d13cSopenharmony_ci */ 15bae4d13cSopenharmony_ci 16bae4d13cSopenharmony_ci#include "sensor.h" 17bae4d13cSopenharmony_ci 18bae4d13cSopenharmony_ci#include "sensor_errors.h" 19bae4d13cSopenharmony_ci 20bae4d13cSopenharmony_ci#undef LOG_TAG 21bae4d13cSopenharmony_ci#define LOG_TAG "Sensor" 22bae4d13cSopenharmony_ci 23bae4d13cSopenharmony_cinamespace OHOS { 24bae4d13cSopenharmony_cinamespace Sensors { 25bae4d13cSopenharmony_ciusing namespace OHOS::HiviewDFX; 26bae4d13cSopenharmony_ci 27bae4d13cSopenharmony_ciSensor::Sensor() 28bae4d13cSopenharmony_ci : sensorId_(0), 29bae4d13cSopenharmony_ci sensorTypeId_(0), 30bae4d13cSopenharmony_ci sensorName_(""), 31bae4d13cSopenharmony_ci vendorName_(""), 32bae4d13cSopenharmony_ci firmwareVersion_(""), 33bae4d13cSopenharmony_ci hardwareVersion_(""), 34bae4d13cSopenharmony_ci maxRange_(0.0), 35bae4d13cSopenharmony_ci resolution_(0.0), 36bae4d13cSopenharmony_ci power_(0.0), 37bae4d13cSopenharmony_ci flags_(0), 38bae4d13cSopenharmony_ci fifoMaxEventCount_(0), 39bae4d13cSopenharmony_ci minSamplePeriodNs_(0), 40bae4d13cSopenharmony_ci maxSamplePeriodNs_(0) 41bae4d13cSopenharmony_ci{} 42bae4d13cSopenharmony_ci 43bae4d13cSopenharmony_ciint32_t Sensor::GetSensorId() const 44bae4d13cSopenharmony_ci{ 45bae4d13cSopenharmony_ci return sensorId_; 46bae4d13cSopenharmony_ci} 47bae4d13cSopenharmony_ci 48bae4d13cSopenharmony_civoid Sensor::SetSensorId(int32_t sensorId) 49bae4d13cSopenharmony_ci{ 50bae4d13cSopenharmony_ci sensorId_ = sensorId; 51bae4d13cSopenharmony_ci} 52bae4d13cSopenharmony_ci 53bae4d13cSopenharmony_ciint32_t Sensor::GetSensorTypeId() const 54bae4d13cSopenharmony_ci{ 55bae4d13cSopenharmony_ci return sensorTypeId_; 56bae4d13cSopenharmony_ci} 57bae4d13cSopenharmony_ci 58bae4d13cSopenharmony_civoid Sensor::SetSensorTypeId(int32_t sensorTypeId) 59bae4d13cSopenharmony_ci{ 60bae4d13cSopenharmony_ci sensorTypeId_ = sensorTypeId; 61bae4d13cSopenharmony_ci} 62bae4d13cSopenharmony_ci 63bae4d13cSopenharmony_cistd::string Sensor::GetSensorName() const 64bae4d13cSopenharmony_ci{ 65bae4d13cSopenharmony_ci return sensorName_; 66bae4d13cSopenharmony_ci} 67bae4d13cSopenharmony_ci 68bae4d13cSopenharmony_civoid Sensor::SetSensorName(const std::string &sensorName) 69bae4d13cSopenharmony_ci{ 70bae4d13cSopenharmony_ci sensorName_ = sensorName; 71bae4d13cSopenharmony_ci} 72bae4d13cSopenharmony_ci 73bae4d13cSopenharmony_cistd::string Sensor::GetVendorName() const 74bae4d13cSopenharmony_ci{ 75bae4d13cSopenharmony_ci return vendorName_; 76bae4d13cSopenharmony_ci} 77bae4d13cSopenharmony_ci 78bae4d13cSopenharmony_civoid Sensor::SetVendorName(const std::string &vendorName) 79bae4d13cSopenharmony_ci{ 80bae4d13cSopenharmony_ci vendorName_ = vendorName; 81bae4d13cSopenharmony_ci} 82bae4d13cSopenharmony_ci 83bae4d13cSopenharmony_cistd::string Sensor::GetHardwareVersion() const 84bae4d13cSopenharmony_ci{ 85bae4d13cSopenharmony_ci return hardwareVersion_; 86bae4d13cSopenharmony_ci} 87bae4d13cSopenharmony_ci 88bae4d13cSopenharmony_civoid Sensor::SetHardwareVersion(const std::string &hardwareVersion) 89bae4d13cSopenharmony_ci{ 90bae4d13cSopenharmony_ci hardwareVersion_ = hardwareVersion; 91bae4d13cSopenharmony_ci} 92bae4d13cSopenharmony_ci 93bae4d13cSopenharmony_cistd::string Sensor::GetFirmwareVersion() const 94bae4d13cSopenharmony_ci{ 95bae4d13cSopenharmony_ci return firmwareVersion_; 96bae4d13cSopenharmony_ci} 97bae4d13cSopenharmony_ci 98bae4d13cSopenharmony_civoid Sensor::SetFirmwareVersion(const std::string &firmwareVersion) 99bae4d13cSopenharmony_ci{ 100bae4d13cSopenharmony_ci firmwareVersion_ = firmwareVersion; 101bae4d13cSopenharmony_ci} 102bae4d13cSopenharmony_ci 103bae4d13cSopenharmony_cifloat Sensor::GetMaxRange() const 104bae4d13cSopenharmony_ci{ 105bae4d13cSopenharmony_ci return maxRange_; 106bae4d13cSopenharmony_ci} 107bae4d13cSopenharmony_ci 108bae4d13cSopenharmony_civoid Sensor::SetMaxRange(float maxRange) 109bae4d13cSopenharmony_ci{ 110bae4d13cSopenharmony_ci maxRange_ = maxRange; 111bae4d13cSopenharmony_ci} 112bae4d13cSopenharmony_ci 113bae4d13cSopenharmony_cifloat Sensor::GetResolution() const 114bae4d13cSopenharmony_ci{ 115bae4d13cSopenharmony_ci return resolution_; 116bae4d13cSopenharmony_ci} 117bae4d13cSopenharmony_ci 118bae4d13cSopenharmony_civoid Sensor::SetResolution(float resolution) 119bae4d13cSopenharmony_ci{ 120bae4d13cSopenharmony_ci resolution_ = resolution; 121bae4d13cSopenharmony_ci} 122bae4d13cSopenharmony_ci 123bae4d13cSopenharmony_cifloat Sensor::GetPower() const 124bae4d13cSopenharmony_ci{ 125bae4d13cSopenharmony_ci return power_; 126bae4d13cSopenharmony_ci} 127bae4d13cSopenharmony_ci 128bae4d13cSopenharmony_civoid Sensor::SetPower(float power) 129bae4d13cSopenharmony_ci{ 130bae4d13cSopenharmony_ci power_ = power; 131bae4d13cSopenharmony_ci} 132bae4d13cSopenharmony_ci 133bae4d13cSopenharmony_ciuint32_t Sensor::Sensor::GetFlags() const 134bae4d13cSopenharmony_ci{ 135bae4d13cSopenharmony_ci return flags_; 136bae4d13cSopenharmony_ci} 137bae4d13cSopenharmony_ci 138bae4d13cSopenharmony_civoid Sensor::SetFlags(uint32_t flags) 139bae4d13cSopenharmony_ci{ 140bae4d13cSopenharmony_ci flags_ = flags; 141bae4d13cSopenharmony_ci} 142bae4d13cSopenharmony_ci 143bae4d13cSopenharmony_ciint32_t Sensor::GetFifoMaxEventCount() const 144bae4d13cSopenharmony_ci{ 145bae4d13cSopenharmony_ci return fifoMaxEventCount_; 146bae4d13cSopenharmony_ci} 147bae4d13cSopenharmony_ci 148bae4d13cSopenharmony_civoid Sensor::SetFifoMaxEventCount(int32_t fifoMaxEventCount) 149bae4d13cSopenharmony_ci{ 150bae4d13cSopenharmony_ci fifoMaxEventCount_ = fifoMaxEventCount; 151bae4d13cSopenharmony_ci} 152bae4d13cSopenharmony_ci 153bae4d13cSopenharmony_ciint64_t Sensor::GetMinSamplePeriodNs() const 154bae4d13cSopenharmony_ci{ 155bae4d13cSopenharmony_ci return minSamplePeriodNs_; 156bae4d13cSopenharmony_ci} 157bae4d13cSopenharmony_ci 158bae4d13cSopenharmony_civoid Sensor::SetMinSamplePeriodNs(int64_t minSamplePeriodNs) 159bae4d13cSopenharmony_ci{ 160bae4d13cSopenharmony_ci minSamplePeriodNs_ = minSamplePeriodNs; 161bae4d13cSopenharmony_ci} 162bae4d13cSopenharmony_ci 163bae4d13cSopenharmony_ciint64_t Sensor::GetMaxSamplePeriodNs() const 164bae4d13cSopenharmony_ci{ 165bae4d13cSopenharmony_ci return maxSamplePeriodNs_; 166bae4d13cSopenharmony_ci} 167bae4d13cSopenharmony_ci 168bae4d13cSopenharmony_civoid Sensor::SetMaxSamplePeriodNs(int64_t maxSamplePeriodNs) 169bae4d13cSopenharmony_ci{ 170bae4d13cSopenharmony_ci maxSamplePeriodNs_ = maxSamplePeriodNs; 171bae4d13cSopenharmony_ci} 172bae4d13cSopenharmony_ci 173bae4d13cSopenharmony_cibool Sensor::Marshalling(Parcel &parcel) const 174bae4d13cSopenharmony_ci{ 175bae4d13cSopenharmony_ci if (!parcel.WriteInt32(sensorId_)) { 176bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write sensorId failed"); 177bae4d13cSopenharmony_ci return false; 178bae4d13cSopenharmony_ci } 179bae4d13cSopenharmony_ci if (!parcel.WriteInt32(sensorTypeId_)) { 180bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write sensorTypeId failed"); 181bae4d13cSopenharmony_ci return false; 182bae4d13cSopenharmony_ci } 183bae4d13cSopenharmony_ci if (!parcel.WriteString(sensorName_)) { 184bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write sensorName failed"); 185bae4d13cSopenharmony_ci return false; 186bae4d13cSopenharmony_ci } 187bae4d13cSopenharmony_ci if (!parcel.WriteString(vendorName_)) { 188bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write vendorName failed"); 189bae4d13cSopenharmony_ci return false; 190bae4d13cSopenharmony_ci } 191bae4d13cSopenharmony_ci if (!parcel.WriteString(firmwareVersion_)) { 192bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write firmwareVersion failed"); 193bae4d13cSopenharmony_ci return false; 194bae4d13cSopenharmony_ci } 195bae4d13cSopenharmony_ci if (!parcel.WriteString(hardwareVersion_)) { 196bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write hardwareVersion failed"); 197bae4d13cSopenharmony_ci return false; 198bae4d13cSopenharmony_ci } 199bae4d13cSopenharmony_ci if (!parcel.WriteFloat(maxRange_)) { 200bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write maxRange failed"); 201bae4d13cSopenharmony_ci return false; 202bae4d13cSopenharmony_ci } 203bae4d13cSopenharmony_ci if (!parcel.WriteFloat(resolution_)) { 204bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write resolution failed"); 205bae4d13cSopenharmony_ci return false; 206bae4d13cSopenharmony_ci } 207bae4d13cSopenharmony_ci if (!parcel.WriteFloat(power_)) { 208bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write power failed"); 209bae4d13cSopenharmony_ci return false; 210bae4d13cSopenharmony_ci } 211bae4d13cSopenharmony_ci if (!parcel.WriteUint32(flags_)) { 212bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write flags failed"); 213bae4d13cSopenharmony_ci return false; 214bae4d13cSopenharmony_ci } 215bae4d13cSopenharmony_ci if (!parcel.WriteInt32(fifoMaxEventCount_)) { 216bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write fifoMaxEventCount failed"); 217bae4d13cSopenharmony_ci return false; 218bae4d13cSopenharmony_ci } 219bae4d13cSopenharmony_ci if (!parcel.WriteInt64(minSamplePeriodNs_)) { 220bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write minSamplePeriodNs failed"); 221bae4d13cSopenharmony_ci return false; 222bae4d13cSopenharmony_ci } 223bae4d13cSopenharmony_ci if (!parcel.WriteInt64(maxSamplePeriodNs_)) { 224bae4d13cSopenharmony_ci SEN_HILOGE("Failed, write maxSamplePeriodNs failed"); 225bae4d13cSopenharmony_ci return false; 226bae4d13cSopenharmony_ci } 227bae4d13cSopenharmony_ci return true; 228bae4d13cSopenharmony_ci} 229bae4d13cSopenharmony_ci 230bae4d13cSopenharmony_cistd::unique_ptr<Sensor> Sensor::Unmarshalling(Parcel &parcel) 231bae4d13cSopenharmony_ci{ 232bae4d13cSopenharmony_ci auto sensor = std::make_unique<Sensor>(); 233bae4d13cSopenharmony_ci if (!sensor->ReadFromParcel(parcel)) { 234bae4d13cSopenharmony_ci SEN_HILOGE("ReadFromParcel is failed"); 235bae4d13cSopenharmony_ci return nullptr; 236bae4d13cSopenharmony_ci } 237bae4d13cSopenharmony_ci return sensor; 238bae4d13cSopenharmony_ci} 239bae4d13cSopenharmony_ci 240bae4d13cSopenharmony_cibool Sensor::ReadFromParcel(Parcel &parcel) 241bae4d13cSopenharmony_ci{ 242bae4d13cSopenharmony_ci if ((!parcel.ReadInt32(sensorId_)) || 243bae4d13cSopenharmony_ci (!parcel.ReadInt32(sensorTypeId_)) || 244bae4d13cSopenharmony_ci (!parcel.ReadString(sensorName_)) || 245bae4d13cSopenharmony_ci (!parcel.ReadString(vendorName_)) || 246bae4d13cSopenharmony_ci (!parcel.ReadString(firmwareVersion_)) || 247bae4d13cSopenharmony_ci (!parcel.ReadString(hardwareVersion_)) || 248bae4d13cSopenharmony_ci (!parcel.ReadFloat(power_)) || 249bae4d13cSopenharmony_ci (!parcel.ReadFloat(maxRange_)) || 250bae4d13cSopenharmony_ci (!parcel.ReadFloat(resolution_)) || 251bae4d13cSopenharmony_ci (!parcel.ReadUint32(flags_)) || 252bae4d13cSopenharmony_ci (!parcel.ReadInt32(fifoMaxEventCount_)) || 253bae4d13cSopenharmony_ci (!parcel.ReadInt64(minSamplePeriodNs_)) || 254bae4d13cSopenharmony_ci (!parcel.ReadInt64(maxSamplePeriodNs_))) { 255bae4d13cSopenharmony_ci return false; 256bae4d13cSopenharmony_ci } 257bae4d13cSopenharmony_ci return true; 258bae4d13cSopenharmony_ci} 259bae4d13cSopenharmony_ci} // namespace Sensors 260bae4d13cSopenharmony_ci} // namespace OHOS 261