1 //
2 //  Copyright (C) 2015 Google, Inc.
3 //
4 //  Licensed under the Apache License, Version 2.0 (the "License");
5 //  you may not use this file except in compliance with the License.
6 //  You may obtain a copy of the License at:
7 //
8 //  http://www.apache.org/licenses/LICENSE-2.0
9 //
10 //  Unless required by applicable law or agreed to in writing, software
11 //  distributed under the License is distributed on an "AS IS" BASIS,
12 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 //  See the License for the specific language governing permissions and
14 //  limitations under the License.
15 //
16 
17 #pragma once
18 
19 #include <memory>
20 
21 #include <binder/Parcel.h>
22 
23 #include <bluetooth/advertise_data.h>
24 #include <bluetooth/advertise_settings.h>
25 #include <bluetooth/gatt_identifier.h>
26 #include <bluetooth/scan_filter.h>
27 #include <bluetooth/scan_result.h>
28 #include <bluetooth/scan_settings.h>
29 #include <bluetooth/uuid.h>
30 
31 namespace ipc {
32 namespace binder {
33 
34 // Java Parcel meta-data constants.
35 const int kParcelValList = 11;
36 
37 // Helpers for converting bluetooth::AdvertiseData to/from Parcel
38 
39 void WriteAdvertiseDataToParcel(
40     const bluetooth::AdvertiseData& data,
41     android::Parcel* parcel);
42 
43 std::unique_ptr<bluetooth::AdvertiseData> CreateAdvertiseDataFromParcel(
44     const android::Parcel& parcel);
45 
46 // Helpers for converting bluetooth::AdvertiseSettings to/from Parcel
47 
48 void WriteAdvertiseSettingsToParcel(
49     const bluetooth::AdvertiseSettings& settings,
50     android::Parcel* parcel);
51 
52 std::unique_ptr<bluetooth::AdvertiseSettings> CreateAdvertiseSettingsFromParcel(
53     const android::Parcel& parcel);
54 
55 // Helpers for converting bluetooth::UUID to/from Parcel
56 
57 void WriteUUIDToParcel(const bluetooth::UUID& uuid, android::Parcel* parcel);
58 
59 std::unique_ptr<bluetooth::UUID> CreateUUIDFromParcel(
60     const android::Parcel& parcel);
61 
62 // Helpers for converting bluetooth::GattIdentifier to/from Parcel
63 
64 void WriteGattIdentifierToParcel(
65     const bluetooth::GattIdentifier& gatt_id,
66     android::Parcel* parcel);
67 
68 std::unique_ptr<bluetooth::GattIdentifier> CreateGattIdentifierFromParcel(
69     const android::Parcel& parcel);
70 
71 // Helpers for converting bluetooth::ScanFilter to/from Parcel
72 
73 void WriteScanFilterToParcel(
74     const bluetooth::ScanFilter& filter,
75     android::Parcel* parcel);
76 
77 std::unique_ptr<bluetooth::ScanFilter> CreateScanFilterFromParcel(
78     const android::Parcel& parcel);
79 
80 // Helpers for converting bluetooth::ScanSettings to/from Parcel
81 
82 void WriteScanSettingsToParcel(
83     const bluetooth::ScanSettings& settings,
84     android::Parcel* parcel);
85 
86 std::unique_ptr<bluetooth::ScanSettings> CreateScanSettingsFromParcel(
87     const android::Parcel& parcel);
88 
89 // Helpers for converting bluetooth::ScanResult to/from Parcel
90 
91 void WriteScanResultToParcel(
92     const bluetooth::ScanResult& scan_result,
93     android::Parcel* parcel);
94 
95 std::unique_ptr<bluetooth::ScanResult> CreateScanResultFromParcel(
96     const android::Parcel& parcel);
97 
98 }  // namespace binder
99 }  // namespace ipc
100