• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()20 BeaconFenceRequest::BeaconFenceRequest()
21 {
22     callback_ = nullptr;
23     fenceId_ = "";
24     fenceExtensionAbilityName_ = "";
25     serviceUuid_ = "";
26     serviceUuidMask_ = "";
27 }
28 
BeaconFenceRequest(BeaconFenceRequest & beaconFenceRequest)29 BeaconFenceRequest::BeaconFenceRequest(BeaconFenceRequest& beaconFenceRequest)
30 {
31     beacon_ =  beaconFenceRequest.GetBeaconFence();
32     callback_ = beaconFenceRequest.GetBeaconFenceTransitionCallback();
33     fenceExtensionAbilityName_ = beaconFenceRequest.GetFenceExtensionAbilityName();
34     fenceId_ = beaconFenceRequest.GetFenceId();
35 }
36 
~BeaconFenceRequest()37 BeaconFenceRequest::~BeaconFenceRequest() {}
38 
GetBeaconFence()39 std::shared_ptr<BeaconFence> BeaconFenceRequest::GetBeaconFence()
40 {
41     return beacon_;
42 }
43 
SetBeaconFence(std::shared_ptr<BeaconFence> & beacon)44 void BeaconFenceRequest::SetBeaconFence(std::shared_ptr<BeaconFence>& beacon)
45 {
46     beacon_ = beacon;
47 }
48 
ReadFromParcel(Parcel & parcel)49 void 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)65 std::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)72 BeaconFenceRequest* BeaconFenceRequest::Unmarshalling(Parcel& parcel)
73 {
74     auto beaconFenceRequest = new BeaconFenceRequest();
75     beaconFenceRequest->ReadFromParcel(parcel);
76     return beaconFenceRequest;
77 }
78 
Marshalling(Parcel & parcel) const79 bool 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