1 /* 2 * Copyright (C) 2025 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 "beacon_fence_request.h" 17 18 namespace OHOS { 19 namespace Location { BeaconFenceRequest()20BeaconFenceRequest::BeaconFenceRequest() 21 { 22 callback_ = nullptr; 23 fenceId_ = ""; 24 fenceExtensionAbilityName_ = ""; 25 serviceUuid_ = ""; 26 serviceUuidMask_ = ""; 27 } 28 BeaconFenceRequest(BeaconFenceRequest & beaconFenceRequest)29BeaconFenceRequest::BeaconFenceRequest(BeaconFenceRequest& beaconFenceRequest) 30 { 31 beacon_ = beaconFenceRequest.GetBeaconFence(); 32 callback_ = beaconFenceRequest.GetBeaconFenceTransitionCallback(); 33 fenceExtensionAbilityName_ = beaconFenceRequest.GetFenceExtensionAbilityName(); 34 fenceId_ = beaconFenceRequest.GetFenceId(); 35 } 36 ~BeaconFenceRequest()37BeaconFenceRequest::~BeaconFenceRequest() {} 38 GetBeaconFence()39std::shared_ptr<BeaconFence> BeaconFenceRequest::GetBeaconFence() 40 { 41 return beacon_; 42 } 43 SetBeaconFence(std::shared_ptr<BeaconFence> & beacon)44void BeaconFenceRequest::SetBeaconFence(std::shared_ptr<BeaconFence>& beacon) 45 { 46 beacon_ = beacon; 47 } 48 ReadFromParcel(Parcel & parcel)49void BeaconFenceRequest::ReadFromParcel(Parcel& parcel) 50 { 51 std::unique_lock<std::mutex> lock(beaconFenceRequestMutex_); 52 std::shared_ptr<BeaconFence> beacon = std::make_shared<BeaconFence>(); 53 beacon->SetIdentifier(Str16ToStr8(parcel.ReadString16())); 54 beacon->SetBeaconFenceInfoType(static_cast<BeaconFenceInfoType>(parcel.ReadInt32())); 55 BeaconManufactureData manufactureData; 56 manufactureData.manufactureId = parcel.ReadInt32(); 57 parcel.ReadUInt8Vector(&manufactureData.manufactureData); 58 parcel.ReadUInt8Vector(&manufactureData.manufactureDataMask); 59 beacon->SetBeaconManufactureData(manufactureData); 60 SetBeaconFence(beacon); 61 callback_ = parcel.ReadObject<IRemoteObject>(); 62 fenceExtensionAbilityName_ = Str16ToStr8(parcel.ReadString16()); 63 } 64 UnmarshallingShared(Parcel & parcel)65std::shared_ptr<BeaconFenceRequest> BeaconFenceRequest::UnmarshallingShared(Parcel& parcel) 66 { 67 std::unique_ptr<BeaconFenceRequest> beaconFenceRequest = std::make_unique<BeaconFenceRequest>(); 68 beaconFenceRequest->ReadFromParcel(parcel); 69 return beaconFenceRequest; 70 } 71 Unmarshalling(Parcel & parcel)72BeaconFenceRequest* BeaconFenceRequest::Unmarshalling(Parcel& parcel) 73 { 74 auto beaconFenceRequest = new BeaconFenceRequest(); 75 beaconFenceRequest->ReadFromParcel(parcel); 76 return beaconFenceRequest; 77 } 78 Marshalling(Parcel & parcel) const79bool BeaconFenceRequest::Marshalling(Parcel& parcel) const 80 { 81 std::unique_lock<std::mutex> lock(beaconFenceRequestMutex_); 82 return parcel.WriteString16(Str8ToStr16(beacon_->GetIdentifier())) && 83 parcel.WriteInt32(static_cast<int>(beacon_->GetBeaconFenceInfoType())) && 84 parcel.WriteInt32(beacon_->GetBeaconManufactureData().manufactureId) && 85 parcel.WriteUInt8Vector(beacon_->GetBeaconManufactureData().manufactureData) && 86 parcel.WriteUInt8Vector(beacon_->GetBeaconManufactureData().manufactureDataMask) && 87 parcel.WriteRemoteObject(callback_) && 88 parcel.WriteString16(Str8ToStr16(fenceExtensionAbilityName_)); 89 } 90 } // namespace Location 91 } // namespace OHOS