xref: /aosp_15_r20/hardware/interfaces/tests/baz/1.0/default/Baz.cpp (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker  * Copyright (C) 2017 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 Worker #include "Baz.h"
18*4d7e907cSAndroid Build Coastguard Worker #include <android-base/logging.h>
19*4d7e907cSAndroid Build Coastguard Worker 
20*4d7e907cSAndroid Build Coastguard Worker namespace android {
21*4d7e907cSAndroid Build Coastguard Worker namespace hardware {
22*4d7e907cSAndroid Build Coastguard Worker namespace tests {
23*4d7e907cSAndroid Build Coastguard Worker namespace baz {
24*4d7e907cSAndroid Build Coastguard Worker namespace V1_0 {
25*4d7e907cSAndroid Build Coastguard Worker namespace implementation {
26*4d7e907cSAndroid Build Coastguard Worker 
27*4d7e907cSAndroid Build Coastguard Worker struct BazCallback : public IBazCallback {
28*4d7e907cSAndroid Build Coastguard Worker     Return<void> heyItsMe(const sp<IBazCallback> &cb) override;
29*4d7e907cSAndroid Build Coastguard Worker     Return<void> hey() override;
30*4d7e907cSAndroid Build Coastguard Worker };
31*4d7e907cSAndroid Build Coastguard Worker 
heyItsMe(const sp<IBazCallback> & cb)32*4d7e907cSAndroid Build Coastguard Worker Return<void> BazCallback::heyItsMe(
33*4d7e907cSAndroid Build Coastguard Worker         const sp<IBazCallback> &cb) {
34*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "SERVER: heyItsMe cb = " << cb.get();
35*4d7e907cSAndroid Build Coastguard Worker 
36*4d7e907cSAndroid Build Coastguard Worker     return Void();
37*4d7e907cSAndroid Build Coastguard Worker }
38*4d7e907cSAndroid Build Coastguard Worker 
hey()39*4d7e907cSAndroid Build Coastguard Worker Return<void> BazCallback::hey() {
40*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "SERVER: hey";
41*4d7e907cSAndroid Build Coastguard Worker 
42*4d7e907cSAndroid Build Coastguard Worker     return Void();
43*4d7e907cSAndroid Build Coastguard Worker }
44*4d7e907cSAndroid Build Coastguard Worker 
45*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::tests::baz::V1_0::IBase follow.
isJava()46*4d7e907cSAndroid Build Coastguard Worker Return<bool> Baz::isJava() {
47*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::isJava";
48*4d7e907cSAndroid Build Coastguard Worker 
49*4d7e907cSAndroid Build Coastguard Worker     return false;
50*4d7e907cSAndroid Build Coastguard Worker }
51*4d7e907cSAndroid Build Coastguard Worker 
someBaseMethod()52*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someBaseMethod() {
53*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someBaseMethod";
54*4d7e907cSAndroid Build Coastguard Worker 
55*4d7e907cSAndroid Build Coastguard Worker     return Void();
56*4d7e907cSAndroid Build Coastguard Worker }
57*4d7e907cSAndroid Build Coastguard Worker 
someBoolMethod(bool x)58*4d7e907cSAndroid Build Coastguard Worker Return<bool> Baz::someBoolMethod(bool x) {
59*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someBoolMethod(" << std::to_string(x) << ")";
60*4d7e907cSAndroid Build Coastguard Worker 
61*4d7e907cSAndroid Build Coastguard Worker     return !x;
62*4d7e907cSAndroid Build Coastguard Worker }
63*4d7e907cSAndroid Build Coastguard Worker 
someBoolArrayMethod(const hidl_array<bool,3> & x,someBoolArrayMethod_cb _hidl_cb)64*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someBoolArrayMethod(const hidl_array<bool, 3>& x,
65*4d7e907cSAndroid Build Coastguard Worker                                       someBoolArrayMethod_cb _hidl_cb) {
66*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someBoolArrayMethod(" << toString(x) << ")";
67*4d7e907cSAndroid Build Coastguard Worker 
68*4d7e907cSAndroid Build Coastguard Worker     hidl_array<bool, 4> out;
69*4d7e907cSAndroid Build Coastguard Worker     out[0] = !x[0];
70*4d7e907cSAndroid Build Coastguard Worker     out[1] = !x[1];
71*4d7e907cSAndroid Build Coastguard Worker     out[2] = !x[2];
72*4d7e907cSAndroid Build Coastguard Worker     out[3] = true;
73*4d7e907cSAndroid Build Coastguard Worker 
74*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
75*4d7e907cSAndroid Build Coastguard Worker 
76*4d7e907cSAndroid Build Coastguard Worker     return Void();
77*4d7e907cSAndroid Build Coastguard Worker }
78*4d7e907cSAndroid Build Coastguard Worker 
someBoolVectorMethod(const hidl_vec<bool> & x,someBoolVectorMethod_cb _hidl_cb)79*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someBoolVectorMethod(const hidl_vec<bool>& x, someBoolVectorMethod_cb _hidl_cb) {
80*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someBoolVectorMethod(" << toString(x) << ")";
81*4d7e907cSAndroid Build Coastguard Worker 
82*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<bool> out;
83*4d7e907cSAndroid Build Coastguard Worker     out.resize(x.size());
84*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < x.size(); ++i) {
85*4d7e907cSAndroid Build Coastguard Worker         out[i] = !x[i];
86*4d7e907cSAndroid Build Coastguard Worker     }
87*4d7e907cSAndroid Build Coastguard Worker 
88*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
89*4d7e907cSAndroid Build Coastguard Worker 
90*4d7e907cSAndroid Build Coastguard Worker     return Void();
91*4d7e907cSAndroid Build Coastguard Worker }
92*4d7e907cSAndroid Build Coastguard Worker 
someOtherBaseMethod(const IBase::Foo & foo,someOtherBaseMethod_cb _hidl_cb)93*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someOtherBaseMethod(const IBase::Foo& foo, someOtherBaseMethod_cb _hidl_cb) {
94*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someOtherBaseMethod "
95*4d7e907cSAndroid Build Coastguard Worker               << toString(foo);
96*4d7e907cSAndroid Build Coastguard Worker 
97*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(foo);
98*4d7e907cSAndroid Build Coastguard Worker 
99*4d7e907cSAndroid Build Coastguard Worker     return Void();
100*4d7e907cSAndroid Build Coastguard Worker }
101*4d7e907cSAndroid Build Coastguard Worker 
someMethodWithFooArrays(const hidl_array<IBase::Foo,2> & fooInput,someMethodWithFooArrays_cb _hidl_cb)102*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someMethodWithFooArrays(const hidl_array<IBase::Foo, 2>& fooInput,
103*4d7e907cSAndroid Build Coastguard Worker                                           someMethodWithFooArrays_cb _hidl_cb) {
104*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someMethodWithFooArrays "
105*4d7e907cSAndroid Build Coastguard Worker               << toString(fooInput);
106*4d7e907cSAndroid Build Coastguard Worker 
107*4d7e907cSAndroid Build Coastguard Worker     hidl_array<IBaz::Foo, 2> fooOutput;
108*4d7e907cSAndroid Build Coastguard Worker     fooOutput[0] = fooInput[1];
109*4d7e907cSAndroid Build Coastguard Worker     fooOutput[1] = fooInput[0];
110*4d7e907cSAndroid Build Coastguard Worker 
111*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(fooOutput);
112*4d7e907cSAndroid Build Coastguard Worker 
113*4d7e907cSAndroid Build Coastguard Worker     return Void();
114*4d7e907cSAndroid Build Coastguard Worker }
115*4d7e907cSAndroid Build Coastguard Worker 
someMethodWithFooVectors(const hidl_vec<IBase::Foo> & fooInput,someMethodWithFooVectors_cb _hidl_cb)116*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someMethodWithFooVectors(const hidl_vec<IBase::Foo>& fooInput,
117*4d7e907cSAndroid Build Coastguard Worker                                            someMethodWithFooVectors_cb _hidl_cb) {
118*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someMethodWithFooVectors "
119*4d7e907cSAndroid Build Coastguard Worker               << toString(fooInput);
120*4d7e907cSAndroid Build Coastguard Worker 
121*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<IBaz::Foo> fooOutput;
122*4d7e907cSAndroid Build Coastguard Worker     fooOutput.resize(2);
123*4d7e907cSAndroid Build Coastguard Worker     fooOutput[0] = fooInput[1];
124*4d7e907cSAndroid Build Coastguard Worker     fooOutput[1] = fooInput[0];
125*4d7e907cSAndroid Build Coastguard Worker 
126*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(fooOutput);
127*4d7e907cSAndroid Build Coastguard Worker 
128*4d7e907cSAndroid Build Coastguard Worker     return Void();
129*4d7e907cSAndroid Build Coastguard Worker }
130*4d7e907cSAndroid Build Coastguard Worker 
someMethodWithVectorOfArray(const IBase::VectorOfArray & in,someMethodWithVectorOfArray_cb _hidl_cb)131*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someMethodWithVectorOfArray(const IBase::VectorOfArray& in,
132*4d7e907cSAndroid Build Coastguard Worker                                               someMethodWithVectorOfArray_cb _hidl_cb) {
133*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someMethodWithVectorOfArray "
134*4d7e907cSAndroid Build Coastguard Worker               << toString(in);
135*4d7e907cSAndroid Build Coastguard Worker 
136*4d7e907cSAndroid Build Coastguard Worker     IBase::VectorOfArray out;
137*4d7e907cSAndroid Build Coastguard Worker 
138*4d7e907cSAndroid Build Coastguard Worker     const size_t n = in.addresses.size();
139*4d7e907cSAndroid Build Coastguard Worker     out.addresses.resize(n);
140*4d7e907cSAndroid Build Coastguard Worker 
141*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < n; ++i) {
142*4d7e907cSAndroid Build Coastguard Worker         out.addresses[i] = in.addresses[n - 1 - i];
143*4d7e907cSAndroid Build Coastguard Worker     }
144*4d7e907cSAndroid Build Coastguard Worker 
145*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
146*4d7e907cSAndroid Build Coastguard Worker 
147*4d7e907cSAndroid Build Coastguard Worker     return Void();
148*4d7e907cSAndroid Build Coastguard Worker }
149*4d7e907cSAndroid Build Coastguard Worker 
someMethodTakingAVectorOfArray(const hidl_vec<hidl_array<uint8_t,6>> & in,someMethodTakingAVectorOfArray_cb _hidl_cb)150*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::someMethodTakingAVectorOfArray(const hidl_vec<hidl_array<uint8_t, 6>>& in,
151*4d7e907cSAndroid Build Coastguard Worker                                                  someMethodTakingAVectorOfArray_cb _hidl_cb) {
152*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::someMethodTakingAVectorOfArray "
153*4d7e907cSAndroid Build Coastguard Worker               << toString(in);
154*4d7e907cSAndroid Build Coastguard Worker 
155*4d7e907cSAndroid Build Coastguard Worker     const size_t n = in.size();
156*4d7e907cSAndroid Build Coastguard Worker 
157*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<hidl_array<uint8_t, 6> > out;
158*4d7e907cSAndroid Build Coastguard Worker     out.resize(n);
159*4d7e907cSAndroid Build Coastguard Worker 
160*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < n; ++i) {
161*4d7e907cSAndroid Build Coastguard Worker         out[i] = in[n - 1 - i];
162*4d7e907cSAndroid Build Coastguard Worker     }
163*4d7e907cSAndroid Build Coastguard Worker 
164*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
165*4d7e907cSAndroid Build Coastguard Worker 
166*4d7e907cSAndroid Build Coastguard Worker     return Void();
167*4d7e907cSAndroid Build Coastguard Worker }
168*4d7e907cSAndroid Build Coastguard Worker 
transpose(const IBase::StringMatrix5x3 & in,transpose_cb _hidl_cb)169*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::transpose(const IBase::StringMatrix5x3& in, transpose_cb _hidl_cb) {
170*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::transpose " << toString(in);
171*4d7e907cSAndroid Build Coastguard Worker 
172*4d7e907cSAndroid Build Coastguard Worker     IBase::StringMatrix3x5 out;
173*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < 3; ++i) {
174*4d7e907cSAndroid Build Coastguard Worker         for (size_t j = 0; j < 5; ++j) {
175*4d7e907cSAndroid Build Coastguard Worker             out.s[i][j] = in.s[j][i];
176*4d7e907cSAndroid Build Coastguard Worker         }
177*4d7e907cSAndroid Build Coastguard Worker     }
178*4d7e907cSAndroid Build Coastguard Worker 
179*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
180*4d7e907cSAndroid Build Coastguard Worker 
181*4d7e907cSAndroid Build Coastguard Worker     return Void();
182*4d7e907cSAndroid Build Coastguard Worker }
183*4d7e907cSAndroid Build Coastguard Worker 
transpose2(const hidl_array<hidl_string,5,3> & in,transpose2_cb _hidl_cb)184*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::transpose2(const hidl_array<hidl_string, 5, 3>& in, transpose2_cb _hidl_cb) {
185*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::transpose2 " << toString(in);
186*4d7e907cSAndroid Build Coastguard Worker 
187*4d7e907cSAndroid Build Coastguard Worker     hidl_array<hidl_string, 3, 5> out;
188*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < 3; ++i) {
189*4d7e907cSAndroid Build Coastguard Worker         for (size_t j = 0; j < 5; ++j) {
190*4d7e907cSAndroid Build Coastguard Worker             out[i][j] = in[j][i];
191*4d7e907cSAndroid Build Coastguard Worker         }
192*4d7e907cSAndroid Build Coastguard Worker     }
193*4d7e907cSAndroid Build Coastguard Worker 
194*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
195*4d7e907cSAndroid Build Coastguard Worker 
196*4d7e907cSAndroid Build Coastguard Worker     return Void();
197*4d7e907cSAndroid Build Coastguard Worker }
198*4d7e907cSAndroid Build Coastguard Worker 
takeAMask(IBase::BitField bf,uint8_t first,const IBase::MyMask & second,uint8_t third,takeAMask_cb _hidl_cb)199*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::takeAMask(IBase::BitField bf,
200*4d7e907cSAndroid Build Coastguard Worker                             uint8_t first,
201*4d7e907cSAndroid Build Coastguard Worker                             const IBase::MyMask& second,
202*4d7e907cSAndroid Build Coastguard Worker                             uint8_t third,
203*4d7e907cSAndroid Build Coastguard Worker                             takeAMask_cb _hidl_cb) {
204*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(bf, bf | first, second.value & bf, (bf | bf) & third);
205*4d7e907cSAndroid Build Coastguard Worker     return Void();
206*4d7e907cSAndroid Build Coastguard Worker }
207*4d7e907cSAndroid Build Coastguard Worker 
testArrays(const IBase::LotsOfPrimitiveArrays & in,testArrays_cb _hidl_cb)208*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::testArrays(
209*4d7e907cSAndroid Build Coastguard Worker         const IBase::LotsOfPrimitiveArrays &in,
210*4d7e907cSAndroid Build Coastguard Worker         testArrays_cb _hidl_cb) {
211*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(in);
212*4d7e907cSAndroid Build Coastguard Worker     return Void();
213*4d7e907cSAndroid Build Coastguard Worker }
214*4d7e907cSAndroid Build Coastguard Worker 
testByteVecs(const hidl_vec<IBase::ByteOneDim> & in,testByteVecs_cb _hidl_cb)215*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::testByteVecs(
216*4d7e907cSAndroid Build Coastguard Worker         const hidl_vec<IBase::ByteOneDim> &in,
217*4d7e907cSAndroid Build Coastguard Worker         testByteVecs_cb _hidl_cb) {
218*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(in);
219*4d7e907cSAndroid Build Coastguard Worker     return Void();
220*4d7e907cSAndroid Build Coastguard Worker }
221*4d7e907cSAndroid Build Coastguard Worker 
testBooleanVecs(const hidl_vec<IBase::BooleanOneDim> & in,testBooleanVecs_cb _hidl_cb)222*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::testBooleanVecs(
223*4d7e907cSAndroid Build Coastguard Worker         const hidl_vec<IBase::BooleanOneDim> &in,
224*4d7e907cSAndroid Build Coastguard Worker         testBooleanVecs_cb _hidl_cb) {
225*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(in);
226*4d7e907cSAndroid Build Coastguard Worker     return Void();
227*4d7e907cSAndroid Build Coastguard Worker }
228*4d7e907cSAndroid Build Coastguard Worker 
testDoubleVecs(const hidl_vec<IBase::DoubleOneDim> & in,testDoubleVecs_cb _hidl_cb)229*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::testDoubleVecs(
230*4d7e907cSAndroid Build Coastguard Worker         const hidl_vec<IBase::DoubleOneDim> &in,
231*4d7e907cSAndroid Build Coastguard Worker         testDoubleVecs_cb _hidl_cb) {
232*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(in);
233*4d7e907cSAndroid Build Coastguard Worker     return Void();
234*4d7e907cSAndroid Build Coastguard Worker }
235*4d7e907cSAndroid Build Coastguard Worker 
236*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hardware::tests::baz::V1_0::IBaz follow.
237*4d7e907cSAndroid Build Coastguard Worker 
doThis(float param)238*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::doThis(float param) {
239*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::doThis(" << param << ")";
240*4d7e907cSAndroid Build Coastguard Worker 
241*4d7e907cSAndroid Build Coastguard Worker     return Void();
242*4d7e907cSAndroid Build Coastguard Worker }
243*4d7e907cSAndroid Build Coastguard Worker 
doThatAndReturnSomething(int64_t param)244*4d7e907cSAndroid Build Coastguard Worker Return<int32_t> Baz::doThatAndReturnSomething(int64_t param) {
245*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::doThatAndReturnSomething(" << param << ")";
246*4d7e907cSAndroid Build Coastguard Worker 
247*4d7e907cSAndroid Build Coastguard Worker     return 666;
248*4d7e907cSAndroid Build Coastguard Worker }
249*4d7e907cSAndroid Build Coastguard Worker 
doQuiteABit(int32_t a,int64_t b,float c,double d)250*4d7e907cSAndroid Build Coastguard Worker Return<double> Baz::doQuiteABit(int32_t a, int64_t b, float c, double d) {
251*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::doQuiteABit("
252*4d7e907cSAndroid Build Coastguard Worker               << a
253*4d7e907cSAndroid Build Coastguard Worker               << ", "
254*4d7e907cSAndroid Build Coastguard Worker               << b
255*4d7e907cSAndroid Build Coastguard Worker               << ", "
256*4d7e907cSAndroid Build Coastguard Worker               << c
257*4d7e907cSAndroid Build Coastguard Worker               << ", "
258*4d7e907cSAndroid Build Coastguard Worker               << d
259*4d7e907cSAndroid Build Coastguard Worker               << ")";
260*4d7e907cSAndroid Build Coastguard Worker 
261*4d7e907cSAndroid Build Coastguard Worker     return 666.5;
262*4d7e907cSAndroid Build Coastguard Worker }
263*4d7e907cSAndroid Build Coastguard Worker 
doSomethingElse(const hidl_array<int32_t,15> & param,doSomethingElse_cb _hidl_cb)264*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::doSomethingElse(const hidl_array<int32_t, 15>& param,
265*4d7e907cSAndroid Build Coastguard Worker                                   doSomethingElse_cb _hidl_cb) {
266*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "Baz::doSomethingElse(...)";
267*4d7e907cSAndroid Build Coastguard Worker 
268*4d7e907cSAndroid Build Coastguard Worker     hidl_array<int32_t, 32> result;
269*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < 15; ++i) {
270*4d7e907cSAndroid Build Coastguard Worker         result[i] = 2 * param[i];
271*4d7e907cSAndroid Build Coastguard Worker         result[15 + i] = param[i];
272*4d7e907cSAndroid Build Coastguard Worker     }
273*4d7e907cSAndroid Build Coastguard Worker     result[30] = 1;
274*4d7e907cSAndroid Build Coastguard Worker     result[31] = 2;
275*4d7e907cSAndroid Build Coastguard Worker 
276*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(result);
277*4d7e907cSAndroid Build Coastguard Worker 
278*4d7e907cSAndroid Build Coastguard Worker     return Void();
279*4d7e907cSAndroid Build Coastguard Worker }
280*4d7e907cSAndroid Build Coastguard Worker 
doStuffAndReturnAString(doStuffAndReturnAString_cb _hidl_cb)281*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::doStuffAndReturnAString(doStuffAndReturnAString_cb _hidl_cb) {
282*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "doStuffAndReturnAString";
283*4d7e907cSAndroid Build Coastguard Worker 
284*4d7e907cSAndroid Build Coastguard Worker     hidl_string s;
285*4d7e907cSAndroid Build Coastguard Worker     s = "Hello, world!";
286*4d7e907cSAndroid Build Coastguard Worker 
287*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(s);
288*4d7e907cSAndroid Build Coastguard Worker 
289*4d7e907cSAndroid Build Coastguard Worker     return Void();
290*4d7e907cSAndroid Build Coastguard Worker }
291*4d7e907cSAndroid Build Coastguard Worker 
mapThisVector(const hidl_vec<int32_t> & param,mapThisVector_cb _hidl_cb)292*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::mapThisVector(const hidl_vec<int32_t>& param, mapThisVector_cb _hidl_cb) {
293*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "mapThisVector";
294*4d7e907cSAndroid Build Coastguard Worker 
295*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<int32_t> out;
296*4d7e907cSAndroid Build Coastguard Worker     out.resize(param.size());
297*4d7e907cSAndroid Build Coastguard Worker     for (size_t i = 0; i < param.size(); ++i) {
298*4d7e907cSAndroid Build Coastguard Worker         out[i] = param[i] * 2;
299*4d7e907cSAndroid Build Coastguard Worker     }
300*4d7e907cSAndroid Build Coastguard Worker 
301*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(out);
302*4d7e907cSAndroid Build Coastguard Worker 
303*4d7e907cSAndroid Build Coastguard Worker     return Void();
304*4d7e907cSAndroid Build Coastguard Worker }
305*4d7e907cSAndroid Build Coastguard Worker 
callMe(const sp<IBazCallback> & cb)306*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::callMe(const sp<IBazCallback>& cb) {
307*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "callMe " << cb.get();
308*4d7e907cSAndroid Build Coastguard Worker 
309*4d7e907cSAndroid Build Coastguard Worker     if (cb != NULL) {
310*4d7e907cSAndroid Build Coastguard Worker         sp<IBazCallback> my_cb = new BazCallback;
311*4d7e907cSAndroid Build Coastguard Worker         cb->heyItsMe(my_cb);
312*4d7e907cSAndroid Build Coastguard Worker     }
313*4d7e907cSAndroid Build Coastguard Worker 
314*4d7e907cSAndroid Build Coastguard Worker     return Void();
315*4d7e907cSAndroid Build Coastguard Worker }
316*4d7e907cSAndroid Build Coastguard Worker 
callMeLater(const sp<IBazCallback> & cb)317*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::callMeLater(const sp<IBazCallback>& cb) {
318*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "callMeLater " << cb.get();
319*4d7e907cSAndroid Build Coastguard Worker 
320*4d7e907cSAndroid Build Coastguard Worker     mStoredCallback = cb;
321*4d7e907cSAndroid Build Coastguard Worker 
322*4d7e907cSAndroid Build Coastguard Worker     return Void();
323*4d7e907cSAndroid Build Coastguard Worker }
324*4d7e907cSAndroid Build Coastguard Worker 
iAmFreeNow()325*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::iAmFreeNow() {
326*4d7e907cSAndroid Build Coastguard Worker     if (mStoredCallback != nullptr) {
327*4d7e907cSAndroid Build Coastguard Worker         mStoredCallback->hey();
328*4d7e907cSAndroid Build Coastguard Worker     }
329*4d7e907cSAndroid Build Coastguard Worker     return Void();
330*4d7e907cSAndroid Build Coastguard Worker }
331*4d7e907cSAndroid Build Coastguard Worker 
dieNow()332*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::dieNow() {
333*4d7e907cSAndroid Build Coastguard Worker     exit(1);
334*4d7e907cSAndroid Build Coastguard Worker     return Void();
335*4d7e907cSAndroid Build Coastguard Worker }
336*4d7e907cSAndroid Build Coastguard Worker 
useAnEnum(IBaz::SomeEnum zzz)337*4d7e907cSAndroid Build Coastguard Worker Return<IBaz::SomeEnum> Baz::useAnEnum(IBaz::SomeEnum zzz) {
338*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "useAnEnum " << (int)zzz;
339*4d7e907cSAndroid Build Coastguard Worker 
340*4d7e907cSAndroid Build Coastguard Worker     return SomeEnum::quux;
341*4d7e907cSAndroid Build Coastguard Worker }
342*4d7e907cSAndroid Build Coastguard Worker 
haveSomeStrings(const hidl_array<hidl_string,3> & array,haveSomeStrings_cb _hidl_cb)343*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::haveSomeStrings(const hidl_array<hidl_string, 3>& array,
344*4d7e907cSAndroid Build Coastguard Worker                                   haveSomeStrings_cb _hidl_cb) {
345*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "haveSomeStrings("
346*4d7e907cSAndroid Build Coastguard Worker               << toString(array)
347*4d7e907cSAndroid Build Coastguard Worker               << ")";
348*4d7e907cSAndroid Build Coastguard Worker 
349*4d7e907cSAndroid Build Coastguard Worker     hidl_array<hidl_string, 2> result;
350*4d7e907cSAndroid Build Coastguard Worker     result[0] = "Hello";
351*4d7e907cSAndroid Build Coastguard Worker     result[1] = "World";
352*4d7e907cSAndroid Build Coastguard Worker 
353*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(result);
354*4d7e907cSAndroid Build Coastguard Worker 
355*4d7e907cSAndroid Build Coastguard Worker     return Void();
356*4d7e907cSAndroid Build Coastguard Worker }
357*4d7e907cSAndroid Build Coastguard Worker 
haveAStringVec(const hidl_vec<hidl_string> & vector,haveAStringVec_cb _hidl_cb)358*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::haveAStringVec(const hidl_vec<hidl_string>& vector,
359*4d7e907cSAndroid Build Coastguard Worker                                  haveAStringVec_cb _hidl_cb) {
360*4d7e907cSAndroid Build Coastguard Worker     LOG(INFO) << "haveAStringVec(" << toString(vector) << ")";
361*4d7e907cSAndroid Build Coastguard Worker 
362*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<hidl_string> result;
363*4d7e907cSAndroid Build Coastguard Worker     result.resize(2);
364*4d7e907cSAndroid Build Coastguard Worker 
365*4d7e907cSAndroid Build Coastguard Worker     result[0] = "Hello";
366*4d7e907cSAndroid Build Coastguard Worker     result[1] = "World";
367*4d7e907cSAndroid Build Coastguard Worker 
368*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(result);
369*4d7e907cSAndroid Build Coastguard Worker 
370*4d7e907cSAndroid Build Coastguard Worker     return Void();
371*4d7e907cSAndroid Build Coastguard Worker }
372*4d7e907cSAndroid Build Coastguard Worker 
repeatBitfieldVec(const hidl_vec<uint8_t> & vector,repeatBitfieldVec_cb _hidl_cb)373*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::repeatBitfieldVec(const hidl_vec<uint8_t>& vector,
374*4d7e907cSAndroid Build Coastguard Worker                                     repeatBitfieldVec_cb _hidl_cb) {
375*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(vector);
376*4d7e907cSAndroid Build Coastguard Worker     return Void();
377*4d7e907cSAndroid Build Coastguard Worker }
378*4d7e907cSAndroid Build Coastguard Worker 
returnABunchOfStrings(returnABunchOfStrings_cb _hidl_cb)379*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::returnABunchOfStrings(returnABunchOfStrings_cb _hidl_cb) {
380*4d7e907cSAndroid Build Coastguard Worker     hidl_string eins; eins = "Eins";
381*4d7e907cSAndroid Build Coastguard Worker     hidl_string zwei; zwei = "Zwei";
382*4d7e907cSAndroid Build Coastguard Worker     hidl_string drei; drei = "Drei";
383*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(eins, zwei, drei);
384*4d7e907cSAndroid Build Coastguard Worker 
385*4d7e907cSAndroid Build Coastguard Worker     return Void();
386*4d7e907cSAndroid Build Coastguard Worker }
387*4d7e907cSAndroid Build Coastguard Worker 
returnABitField()388*4d7e907cSAndroid Build Coastguard Worker Return<uint8_t> Baz::returnABitField() {
389*4d7e907cSAndroid Build Coastguard Worker     return 0;
390*4d7e907cSAndroid Build Coastguard Worker }
391*4d7e907cSAndroid Build Coastguard Worker 
size(uint32_t size)392*4d7e907cSAndroid Build Coastguard Worker Return<uint32_t> Baz::size(uint32_t size) {
393*4d7e907cSAndroid Build Coastguard Worker     return size;
394*4d7e907cSAndroid Build Coastguard Worker }
395*4d7e907cSAndroid Build Coastguard Worker 
getNestedStructs(getNestedStructs_cb _hidl_cb)396*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::getNestedStructs(getNestedStructs_cb _hidl_cb) {
397*4d7e907cSAndroid Build Coastguard Worker     int size = 5;
398*4d7e907cSAndroid Build Coastguard Worker     hidl_vec<IBaz::NestedStruct> result;
399*4d7e907cSAndroid Build Coastguard Worker     result.resize(size);
400*4d7e907cSAndroid Build Coastguard Worker     for (int i = 0; i < size; i++) {
401*4d7e907cSAndroid Build Coastguard Worker         result[i].a = i;
402*4d7e907cSAndroid Build Coastguard Worker         if (i == 1) {
403*4d7e907cSAndroid Build Coastguard Worker             result[i].matrices.resize(6);
404*4d7e907cSAndroid Build Coastguard Worker         }
405*4d7e907cSAndroid Build Coastguard Worker     }
406*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(result);
407*4d7e907cSAndroid Build Coastguard Worker     return Void();
408*4d7e907cSAndroid Build Coastguard Worker }
409*4d7e907cSAndroid Build Coastguard Worker 
haveSomeStructWithInterface(const StructWithInterface & swi,haveSomeStructWithInterface_cb _hidl_cb)410*4d7e907cSAndroid Build Coastguard Worker Return<void> Baz::haveSomeStructWithInterface(const StructWithInterface& swi,
411*4d7e907cSAndroid Build Coastguard Worker                                               haveSomeStructWithInterface_cb _hidl_cb) {
412*4d7e907cSAndroid Build Coastguard Worker     _hidl_cb(swi);
413*4d7e907cSAndroid Build Coastguard Worker     return Void();
414*4d7e907cSAndroid Build Coastguard Worker }
415*4d7e907cSAndroid Build Coastguard Worker // Methods from ::android::hidl::base::V1_0::IBase follow.
416*4d7e907cSAndroid Build Coastguard Worker 
HIDL_FETCH_IBaz(const char *)417*4d7e907cSAndroid Build Coastguard Worker IBaz* HIDL_FETCH_IBaz(const char* /* name */) {
418*4d7e907cSAndroid Build Coastguard Worker     return new Baz();
419*4d7e907cSAndroid Build Coastguard Worker }
420*4d7e907cSAndroid Build Coastguard Worker 
421*4d7e907cSAndroid Build Coastguard Worker }  // namespace implementation
422*4d7e907cSAndroid Build Coastguard Worker }  // namespace V1_0
423*4d7e907cSAndroid Build Coastguard Worker }  // namespace baz
424*4d7e907cSAndroid Build Coastguard Worker }  // namespace tests
425*4d7e907cSAndroid Build Coastguard Worker }  // namespace hardware
426*4d7e907cSAndroid Build Coastguard Worker }  // namespace android
427