Merge "Audio: Do not sanitize android.hardware.audio@2.0-service"
[android/platform-hardware-interfaces.git] / tests / safeunion / 1.0 / ISafeUnion.hal
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
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  */
17 package android.hardware.tests.safeunion@1.0;
19 import IOtherInterface;
21 import android.hidl.safe_union@1.0::Monostate;
23 interface ISafeUnion {
25     enum BitField : uint8_t {
26         V0 = 1 << 0,
27         V1 = 1 << 1,
28         V2 = 1 << 2,
29         V3 = 1 << 3,
30     };
32     struct J {
33         vec<uint32_t> j1;
34         uint8_t[65] j2;
35         string j3;
36     };
38     safe_union SmallSafeUnion {
39         Monostate noinit;
41         uint8_t a;
42     };
44     safe_union LargeSafeUnion {
45         Monostate noinit;
47         int8_t a;
48         uint16_t b;
49         int32_t c;
50         uint64_t d;
52         int8_t[13] e;
53         int64_t[5] f;
55         string g;
56         vec<bool> h;
57         vec<uint64_t> i;
59         J j;
60         struct K {
61             uint8_t k1;
62             uint64_t k2;
63         } k;
65         SmallSafeUnion l;
67         BitField m;
68         bitfield<BitField> n;
69     };
71     safe_union InterfaceTypeSafeUnion {
72         Monostate noinit;
74         uint32_t a;
75         int8_t[7] b;
76         IOtherInterface c;
77         string d;
78         vec<string> e;
79         handle f;
80         vec<handle> g;
81     };
83     safe_union HandleTypeSafeUnion {
84         Monostate noinit;
86         handle a;
87         handle[5] b;
88         vec<handle> c;
89     };
91     newLargeSafeUnion() generates (LargeSafeUnion myUnion);
92     setA(LargeSafeUnion myUnion, int8_t a) generates (LargeSafeUnion myUnion);
93     setB(LargeSafeUnion myUnion, uint16_t b) generates (LargeSafeUnion myUnion);
94     setC(LargeSafeUnion myUnion, int32_t c) generates (LargeSafeUnion myUnion);
95     setD(LargeSafeUnion myUnion, uint64_t d) generates (LargeSafeUnion myUnion);
96     setE(LargeSafeUnion myUnion, int8_t[13] e) generates (LargeSafeUnion myUnion);
97     setF(LargeSafeUnion myUnion, int64_t[5] f) generates (LargeSafeUnion myUnion);
98     setG(LargeSafeUnion myUnion, string g) generates (LargeSafeUnion myUnion);
99     setH(LargeSafeUnion myUnion, vec<bool> h) generates (LargeSafeUnion myUnion);
100     setI(LargeSafeUnion myUnion, vec<uint64_t> i) generates (LargeSafeUnion myUnion);
101     setJ(LargeSafeUnion myUnion, J j) generates (LargeSafeUnion myUnion);
102     setK(LargeSafeUnion myUnion, LargeSafeUnion.K k) generates (LargeSafeUnion myUnion);
103     setL(LargeSafeUnion myUnion, SmallSafeUnion l) generates (LargeSafeUnion myUnion);
104     setM(LargeSafeUnion myUnion, BitField m) generates (LargeSafeUnion myUnion);
105     setN(LargeSafeUnion myUnion, bitfield<BitField> m) generates (LargeSafeUnion myUnion);
107     newInterfaceTypeSafeUnion() generates (InterfaceTypeSafeUnion myUnion);
108     setInterfaceA(InterfaceTypeSafeUnion myUnion, uint32_t a) generates (InterfaceTypeSafeUnion myUnion);
109     setInterfaceB(InterfaceTypeSafeUnion myUnion, int8_t[7] b) generates (InterfaceTypeSafeUnion myUnion);
110     setInterfaceC(InterfaceTypeSafeUnion myUnion, IOtherInterface c) generates (InterfaceTypeSafeUnion myUnion);
111     setInterfaceD(InterfaceTypeSafeUnion myUnion, string d) generates (InterfaceTypeSafeUnion myUnion);
112     setInterfaceE(InterfaceTypeSafeUnion myUnion, vec<string> e) generates (InterfaceTypeSafeUnion myUnion);
113     setInterfaceF(InterfaceTypeSafeUnion myUnion, handle f) generates (InterfaceTypeSafeUnion myUnion);
114     setInterfaceG(InterfaceTypeSafeUnion myUnion, vec<handle> g) generates (InterfaceTypeSafeUnion myUnion);
116     newHandleTypeSafeUnion() generates (HandleTypeSafeUnion myUnion);
117     setHandleA(HandleTypeSafeUnion myUnion, handle a) generates (HandleTypeSafeUnion myUnion);
118     setHandleB(HandleTypeSafeUnion myUnion, handle[5] b) generates (HandleTypeSafeUnion myUnion);
119     setHandleC(HandleTypeSafeUnion myUnion, vec<handle> c) generates (HandleTypeSafeUnion myUnion);
120 };