1 /* 2 * Copyright (C) 2022 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 "satellite_status.h" 17 #include <parcel.h> 18 #include "common_utils.h" 19 20 namespace OHOS { 21 namespace Location { SatelliteStatus()22SatelliteStatus::SatelliteStatus() 23 { 24 satellitesNumber_ = 0; 25 } 26 SatelliteStatus(SatelliteStatus & satelliteStatus)27SatelliteStatus::SatelliteStatus(SatelliteStatus& satelliteStatus) 28 { 29 satellitesNumber_ = satelliteStatus.GetSatellitesNumber(); 30 satelliteIds_ = satelliteStatus.GetSatelliteIds(); 31 carrierToNoiseDensitys_ = satelliteStatus.GetCarrierToNoiseDensitys(); 32 altitudes_ = satelliteStatus.GetAltitudes(); 33 azimuths_ = satelliteStatus.GetAzimuths(); 34 carrierFrequencies_ = satelliteStatus.GetCarrierFrequencies(); 35 constellationTypes_ = satelliteStatus.GetConstellationTypes(); 36 additionalInfoList_ = satelliteStatus.GetSatelliteAdditionalInfoList(); 37 } 38 ReadFromParcel(Parcel & parcel)39void SatelliteStatus::ReadFromParcel(Parcel& parcel) 40 { 41 std::unique_lock<std::mutex> lock(mutex_); 42 satellitesNumber_ = parcel.ReadInt64(); 43 satellitesNumber_ = satellitesNumber_ > MAXIMUM_INTERATION ? MAXIMUM_INTERATION : satellitesNumber_; 44 for (int i = 0; i < satellitesNumber_; i++) { 45 satelliteIds_.push_back(parcel.ReadInt64()); 46 carrierToNoiseDensitys_.push_back(parcel.ReadDouble()); 47 altitudes_.push_back(parcel.ReadDouble()); 48 azimuths_.push_back(parcel.ReadDouble()); 49 carrierFrequencies_.push_back(parcel.ReadDouble()); 50 constellationTypes_.push_back(parcel.ReadInt64()); 51 additionalInfoList_.push_back(parcel.ReadInt64()); 52 } 53 } 54 Marshalling(Parcel & parcel) const55bool SatelliteStatus::Marshalling(Parcel& parcel) const 56 { 57 CHK_PARCEL_RETURN_VALUE(parcel.WriteInt64(satellitesNumber_)); 58 for (int i = 0; i < satellitesNumber_; i++) { 59 CHK_PARCEL_RETURN_VALUE(parcel.WriteInt64(satelliteIds_[i])); 60 CHK_PARCEL_RETURN_VALUE(parcel.WriteDouble(carrierToNoiseDensitys_[i])); 61 CHK_PARCEL_RETURN_VALUE(parcel.WriteDouble(altitudes_[i])); 62 CHK_PARCEL_RETURN_VALUE(parcel.WriteDouble(azimuths_[i])); 63 CHK_PARCEL_RETURN_VALUE(parcel.WriteDouble(carrierFrequencies_[i])); 64 CHK_PARCEL_RETURN_VALUE(parcel.WriteInt64(constellationTypes_[i])); 65 CHK_PARCEL_RETURN_VALUE(parcel.WriteInt64(additionalInfoList_[i])); 66 } 67 return true; 68 } 69 Unmarshalling(Parcel & parcel)70std::unique_ptr<SatelliteStatus> SatelliteStatus::Unmarshalling(Parcel& parcel) 71 { 72 std::unique_ptr<SatelliteStatus> status = std::make_unique<SatelliteStatus>(); 73 status->ReadFromParcel(parcel); 74 return status; 75 } 76 } // namespace Location 77 } // namespace OHOS