xref: /aosp_15_r20/hardware/interfaces/tests/safeunion/1.0/ISafeUnion.hal (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker/*
2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2018 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker *
4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker *
8*4d7e907cSAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker *
10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker */
16*4d7e907cSAndroid Build Coastguard Worker
17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected];
18*4d7e907cSAndroid Build Coastguard Worker
19*4d7e907cSAndroid Build Coastguard Workerimport [email protected]::Monostate;
20*4d7e907cSAndroid Build Coastguard Worker
21*4d7e907cSAndroid Build Coastguard Workerinterface ISafeUnion {
22*4d7e907cSAndroid Build Coastguard Worker
23*4d7e907cSAndroid Build Coastguard Worker    enum BitField : uint8_t {
24*4d7e907cSAndroid Build Coastguard Worker        V0 = 1 << 0,
25*4d7e907cSAndroid Build Coastguard Worker        V1 = 1 << 1,
26*4d7e907cSAndroid Build Coastguard Worker        V2 = 1 << 2,
27*4d7e907cSAndroid Build Coastguard Worker        V3 = 1 << 3,
28*4d7e907cSAndroid Build Coastguard Worker    };
29*4d7e907cSAndroid Build Coastguard Worker
30*4d7e907cSAndroid Build Coastguard Worker    struct J {
31*4d7e907cSAndroid Build Coastguard Worker        vec<uint32_t> j1;
32*4d7e907cSAndroid Build Coastguard Worker        uint8_t[65] j2;
33*4d7e907cSAndroid Build Coastguard Worker        string j3;
34*4d7e907cSAndroid Build Coastguard Worker    };
35*4d7e907cSAndroid Build Coastguard Worker
36*4d7e907cSAndroid Build Coastguard Worker    safe_union SmallSafeUnion {
37*4d7e907cSAndroid Build Coastguard Worker        Monostate noinit;
38*4d7e907cSAndroid Build Coastguard Worker
39*4d7e907cSAndroid Build Coastguard Worker        uint8_t a;
40*4d7e907cSAndroid Build Coastguard Worker    };
41*4d7e907cSAndroid Build Coastguard Worker
42*4d7e907cSAndroid Build Coastguard Worker    safe_union LargeSafeUnion {
43*4d7e907cSAndroid Build Coastguard Worker        Monostate noinit;
44*4d7e907cSAndroid Build Coastguard Worker
45*4d7e907cSAndroid Build Coastguard Worker        int8_t a;
46*4d7e907cSAndroid Build Coastguard Worker        uint16_t b;
47*4d7e907cSAndroid Build Coastguard Worker        int32_t c;
48*4d7e907cSAndroid Build Coastguard Worker        uint64_t d;
49*4d7e907cSAndroid Build Coastguard Worker
50*4d7e907cSAndroid Build Coastguard Worker        int8_t[13] e;
51*4d7e907cSAndroid Build Coastguard Worker        int64_t[5] f;
52*4d7e907cSAndroid Build Coastguard Worker
53*4d7e907cSAndroid Build Coastguard Worker        string g;
54*4d7e907cSAndroid Build Coastguard Worker        vec<bool> h;
55*4d7e907cSAndroid Build Coastguard Worker        vec<uint64_t> i;
56*4d7e907cSAndroid Build Coastguard Worker
57*4d7e907cSAndroid Build Coastguard Worker        J j;
58*4d7e907cSAndroid Build Coastguard Worker        struct K {
59*4d7e907cSAndroid Build Coastguard Worker            uint8_t k1;
60*4d7e907cSAndroid Build Coastguard Worker            uint64_t k2;
61*4d7e907cSAndroid Build Coastguard Worker        } k;
62*4d7e907cSAndroid Build Coastguard Worker
63*4d7e907cSAndroid Build Coastguard Worker        SmallSafeUnion l;
64*4d7e907cSAndroid Build Coastguard Worker
65*4d7e907cSAndroid Build Coastguard Worker        BitField m;
66*4d7e907cSAndroid Build Coastguard Worker        bitfield<BitField> n;
67*4d7e907cSAndroid Build Coastguard Worker    };
68*4d7e907cSAndroid Build Coastguard Worker
69*4d7e907cSAndroid Build Coastguard Worker    safe_union InterfaceTypeSafeUnion {
70*4d7e907cSAndroid Build Coastguard Worker        Monostate noinit;
71*4d7e907cSAndroid Build Coastguard Worker
72*4d7e907cSAndroid Build Coastguard Worker        uint32_t a;
73*4d7e907cSAndroid Build Coastguard Worker        int8_t[7] b;
74*4d7e907cSAndroid Build Coastguard Worker        interface c;
75*4d7e907cSAndroid Build Coastguard Worker        string d;
76*4d7e907cSAndroid Build Coastguard Worker        vec<string> e;
77*4d7e907cSAndroid Build Coastguard Worker        handle f;
78*4d7e907cSAndroid Build Coastguard Worker        vec<handle> g;
79*4d7e907cSAndroid Build Coastguard Worker    };
80*4d7e907cSAndroid Build Coastguard Worker
81*4d7e907cSAndroid Build Coastguard Worker    safe_union HandleTypeSafeUnion {
82*4d7e907cSAndroid Build Coastguard Worker        Monostate noinit;
83*4d7e907cSAndroid Build Coastguard Worker
84*4d7e907cSAndroid Build Coastguard Worker        handle a;
85*4d7e907cSAndroid Build Coastguard Worker        handle[5] b;
86*4d7e907cSAndroid Build Coastguard Worker        vec<handle> c;
87*4d7e907cSAndroid Build Coastguard Worker    };
88*4d7e907cSAndroid Build Coastguard Worker
89*4d7e907cSAndroid Build Coastguard Worker    newLargeSafeUnion() generates (LargeSafeUnion myUnion);
90*4d7e907cSAndroid Build Coastguard Worker    setA(LargeSafeUnion myUnion, int8_t a) generates (LargeSafeUnion myUnion);
91*4d7e907cSAndroid Build Coastguard Worker    setB(LargeSafeUnion myUnion, uint16_t b) generates (LargeSafeUnion myUnion);
92*4d7e907cSAndroid Build Coastguard Worker    setC(LargeSafeUnion myUnion, int32_t c) generates (LargeSafeUnion myUnion);
93*4d7e907cSAndroid Build Coastguard Worker    setD(LargeSafeUnion myUnion, uint64_t d) generates (LargeSafeUnion myUnion);
94*4d7e907cSAndroid Build Coastguard Worker    setE(LargeSafeUnion myUnion, int8_t[13] e) generates (LargeSafeUnion myUnion);
95*4d7e907cSAndroid Build Coastguard Worker    setF(LargeSafeUnion myUnion, int64_t[5] f) generates (LargeSafeUnion myUnion);
96*4d7e907cSAndroid Build Coastguard Worker    setG(LargeSafeUnion myUnion, string g) generates (LargeSafeUnion myUnion);
97*4d7e907cSAndroid Build Coastguard Worker    setH(LargeSafeUnion myUnion, vec<bool> h) generates (LargeSafeUnion myUnion);
98*4d7e907cSAndroid Build Coastguard Worker    setI(LargeSafeUnion myUnion, vec<uint64_t> i) generates (LargeSafeUnion myUnion);
99*4d7e907cSAndroid Build Coastguard Worker    setJ(LargeSafeUnion myUnion, J j) generates (LargeSafeUnion myUnion);
100*4d7e907cSAndroid Build Coastguard Worker    setK(LargeSafeUnion myUnion, LargeSafeUnion.K k) generates (LargeSafeUnion myUnion);
101*4d7e907cSAndroid Build Coastguard Worker    setL(LargeSafeUnion myUnion, SmallSafeUnion l) generates (LargeSafeUnion myUnion);
102*4d7e907cSAndroid Build Coastguard Worker    setM(LargeSafeUnion myUnion, BitField m) generates (LargeSafeUnion myUnion);
103*4d7e907cSAndroid Build Coastguard Worker    setN(LargeSafeUnion myUnion, bitfield<BitField> m) generates (LargeSafeUnion myUnion);
104*4d7e907cSAndroid Build Coastguard Worker
105*4d7e907cSAndroid Build Coastguard Worker    newInterfaceTypeSafeUnion() generates (InterfaceTypeSafeUnion myUnion);
106*4d7e907cSAndroid Build Coastguard Worker    setInterfaceA(InterfaceTypeSafeUnion myUnion, uint32_t a) generates (InterfaceTypeSafeUnion myUnion);
107*4d7e907cSAndroid Build Coastguard Worker    setInterfaceB(InterfaceTypeSafeUnion myUnion, int8_t[7] b) generates (InterfaceTypeSafeUnion myUnion);
108*4d7e907cSAndroid Build Coastguard Worker    setInterfaceC(InterfaceTypeSafeUnion myUnion, interface c) generates (InterfaceTypeSafeUnion myUnion);
109*4d7e907cSAndroid Build Coastguard Worker    setInterfaceD(InterfaceTypeSafeUnion myUnion, string d) generates (InterfaceTypeSafeUnion myUnion);
110*4d7e907cSAndroid Build Coastguard Worker    setInterfaceE(InterfaceTypeSafeUnion myUnion, vec<string> e) generates (InterfaceTypeSafeUnion myUnion);
111*4d7e907cSAndroid Build Coastguard Worker    setInterfaceF(InterfaceTypeSafeUnion myUnion, handle f) generates (InterfaceTypeSafeUnion myUnion);
112*4d7e907cSAndroid Build Coastguard Worker    setInterfaceG(InterfaceTypeSafeUnion myUnion, vec<handle> g) generates (InterfaceTypeSafeUnion myUnion);
113*4d7e907cSAndroid Build Coastguard Worker
114*4d7e907cSAndroid Build Coastguard Worker    newHandleTypeSafeUnion() generates (HandleTypeSafeUnion myUnion);
115*4d7e907cSAndroid Build Coastguard Worker    setHandleA(HandleTypeSafeUnion myUnion, handle a) generates (HandleTypeSafeUnion myUnion);
116*4d7e907cSAndroid Build Coastguard Worker    setHandleB(HandleTypeSafeUnion myUnion, handle[5] b) generates (HandleTypeSafeUnion myUnion);
117*4d7e907cSAndroid Build Coastguard Worker    setHandleC(HandleTypeSafeUnion myUnion, vec<handle> c) generates (HandleTypeSafeUnion myUnion);
118*4d7e907cSAndroid Build Coastguard Worker};
119