11b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju/* 21b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * Copyright (C) 2017 The Android Open Source Project 31b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * 41b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * Licensed under the Apache License, Version 2.0 (the "License"); 51b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * you may not use this file except in compliance with the License. 61b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * You may obtain a copy of the License at 71b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * 81b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * http://www.apache.org/licenses/LICENSE-2.0 91b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * 101b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * Unless required by applicable law or agreed to in writing, software 111b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * distributed under the License is distributed on an "AS IS" BASIS, 121b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * See the License for the specific language governing permissions and 141b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju * limitations under the License. 151b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju */ 161b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju 176cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju#include "Baz.h" 186cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju#include <android-base/logging.h> 196cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 206cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace android { 216cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace hardware { 226cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace tests { 236cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace baz { 246cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace V1_0 { 256cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajunamespace implementation { 266cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 276cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsarajustruct BazCallback : public IBazCallback { 286cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju Return<void> heyItsMe(const sp<IBazCallback> &cb) override; 296cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju Return<void> hey() override; 306cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju}; 316cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 326cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> BazCallback::heyItsMe( 336cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju const sp<IBazCallback> &cb) { 346cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "SERVER: heyItsMe cb = " << cb.get(); 356cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 366cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 376cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 386cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 396cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> BazCallback::hey() { 406cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "SERVER: hey"; 416cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 426cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 436cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 446cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 456cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju// Methods from ::android::hardware::tests::baz::V1_0::IBase follow. 466cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someBaseMethod() { 476cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someBaseMethod"; 486cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 496cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 506cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 516cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 526cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<bool> Baz::someBoolMethod(bool x) { 531b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "Baz::someBoolMethod(" << std::to_string(x) << ")"; 546cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 556cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return !x; 566cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 576cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 586cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someBoolArrayMethod(const hidl_array<bool, 3>& x, 596cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju someBoolArrayMethod_cb _hidl_cb) { 601b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "Baz::someBoolArrayMethod(" << toString(x) << ")"; 616cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 626cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_array<bool, 4> out; 636cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[0] = !x[0]; 646cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[1] = !x[1]; 656cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[2] = !x[2]; 666cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[3] = true; 676cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 686cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 696cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 706cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 716cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 726cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 736cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someBoolVectorMethod(const hidl_vec<bool>& x, someBoolVectorMethod_cb _hidl_cb) { 741b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "Baz::someBoolVectorMethod(" << toString(x) << ")"; 756cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 766cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<bool> out; 776cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.resize(x.size()); 786cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < x.size(); ++i) { 796cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[i] = !x[i]; 806cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 816cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 826cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 836cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 846cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 856cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 866cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 876cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someOtherBaseMethod(const IBase::Foo& foo, someOtherBaseMethod_cb _hidl_cb) { 886cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someOtherBaseMethod " 891b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(foo); 906cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 916cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(foo); 926cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 936cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 946cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 956cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 966cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someMethodWithFooArrays(const hidl_array<IBase::Foo, 2>& fooInput, 976cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju someMethodWithFooArrays_cb _hidl_cb) { 986cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someMethodWithFooArrays " 991b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(fooInput); 1006cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1016cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_array<IBaz::Foo, 2> fooOutput; 1026cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju fooOutput[0] = fooInput[1]; 1036cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju fooOutput[1] = fooInput[0]; 1046cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1056cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(fooOutput); 1066cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1076cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1086cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1096cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1106cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someMethodWithFooVectors(const hidl_vec<IBase::Foo>& fooInput, 1116cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju someMethodWithFooVectors_cb _hidl_cb) { 1126cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someMethodWithFooVectors " 1131b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(fooInput); 1146cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1156cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<IBaz::Foo> fooOutput; 1166cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju fooOutput.resize(2); 1176cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju fooOutput[0] = fooInput[1]; 1186cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju fooOutput[1] = fooInput[0]; 1196cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1206cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(fooOutput); 1216cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1226cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1236cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1246cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1256cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someMethodWithVectorOfArray(const IBase::VectorOfArray& in, 1266cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju someMethodWithVectorOfArray_cb _hidl_cb) { 1276cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someMethodWithVectorOfArray " 1281b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(in); 1296cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1306cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju IBase::VectorOfArray out; 1316cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1326cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju const size_t n = in.addresses.size(); 1336cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.addresses.resize(n); 1346cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1356cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < n; ++i) { 1366cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.addresses[i] = in.addresses[n - 1 - i]; 1376cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1386cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1396cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 1406cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1416cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1426cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1436cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1446cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::someMethodTakingAVectorOfArray(const hidl_vec<hidl_array<uint8_t, 6>>& in, 1456cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju someMethodTakingAVectorOfArray_cb _hidl_cb) { 1466cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::someMethodTakingAVectorOfArray " 1471b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(in); 1486cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1496cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju const size_t n = in.size(); 1506cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1516cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<hidl_array<uint8_t, 6> > out; 1526cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.resize(n); 1536cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1546cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < n; ++i) { 1556cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[i] = in[n - 1 - i]; 1566cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1576cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1586cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 1596cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1606cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1616cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1626cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1636cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::transpose(const IBase::StringMatrix5x3& in, transpose_cb _hidl_cb) { 1641b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "Baz::transpose " << toString(in); 1656cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1666cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju IBase::StringMatrix3x5 out; 1676cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < 3; ++i) { 1686cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t j = 0; j < 5; ++j) { 1696cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.s[i][j] = in.s[j][i]; 1706cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1716cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1726cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1736cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 1746cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1756cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1766cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1776cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1786cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::transpose2(const hidl_array<hidl_string, 5, 3>& in, transpose2_cb _hidl_cb) { 1791b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "Baz::transpose2 " << toString(in); 1806cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1816cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_array<hidl_string, 3, 5> out; 1826cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < 3; ++i) { 1836cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t j = 0; j < 5; ++j) { 1846cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[i][j] = in[j][i]; 1856cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1866cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 1876cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1886cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 1896cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1906cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 1916cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 1926cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 1936cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::takeAMask(IBase::BitField bf, 1946cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju uint8_t first, 1956cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju const IBase::MyMask& second, 1966cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju uint8_t third, 1976cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju takeAMask_cb _hidl_cb) { 1986cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(bf, bf | first, second.value & bf, (bf | bf) & third); 1996cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 2006cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2016cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 202aaa67596dff0833f124bd111da746e39c5c5bcecAndreas HuberReturn<void> Baz::testArrays( 203aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber const IBase::LotsOfPrimitiveArrays &in, 204aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber testArrays_cb _hidl_cb) { 205aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber _hidl_cb(in); 206aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber return Void(); 207aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber} 208aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber 209aaa67596dff0833f124bd111da746e39c5c5bcecAndreas HuberReturn<void> Baz::testByteVecs( 210aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber const hidl_vec<IBase::ByteOneDim> &in, 211aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber testByteVecs_cb _hidl_cb) { 212aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber _hidl_cb(in); 213aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber return Void(); 214aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber} 215aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber 216aaa67596dff0833f124bd111da746e39c5c5bcecAndreas HuberReturn<void> Baz::testBooleanVecs( 217aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber const hidl_vec<IBase::BooleanOneDim> &in, 218aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber testBooleanVecs_cb _hidl_cb) { 219aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber _hidl_cb(in); 220aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber return Void(); 221aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber} 222aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber 223aaa67596dff0833f124bd111da746e39c5c5bcecAndreas HuberReturn<void> Baz::testDoubleVecs( 224aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber const hidl_vec<IBase::DoubleOneDim> &in, 225aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber testDoubleVecs_cb _hidl_cb) { 226aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber _hidl_cb(in); 227aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber return Void(); 228aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber} 229aaa67596dff0833f124bd111da746e39c5c5bcecAndreas Huber 2306cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju// Methods from ::android::hardware::tests::baz::V1_0::IBaz follow. 2316cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2326cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::doThis(float param) { 2336cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::doThis(" << param << ")"; 2346cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2356cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 2366cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2376cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2386cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<int32_t> Baz::doThatAndReturnSomething(int64_t param) { 2396cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::doThatAndReturnSomething(" << param << ")"; 2406cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2416cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return 666; 2426cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2436cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2446cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<double> Baz::doQuiteABit(int32_t a, int64_t b, float c, double d) { 2456cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::doQuiteABit(" 2466cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << a 2476cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << ", " 2486cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << b 2496cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << ", " 2506cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << c 2516cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << ", " 2526cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << d 2536cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << ")"; 2546cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2556cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return 666.5; 2566cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2576cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2586cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::doSomethingElse(const hidl_array<int32_t, 15>& param, 2596cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju doSomethingElse_cb _hidl_cb) { 2606cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "Baz::doSomethingElse(...)"; 2616cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2626cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_array<int32_t, 32> result; 2636cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < 15; ++i) { 2646cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[i] = 2 * param[i]; 2656cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[15 + i] = param[i]; 2666cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 2676cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[30] = 1; 2686cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[31] = 2; 2696cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2706cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(result); 2716cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2726cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 2736cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2746cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2756cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::doStuffAndReturnAString(doStuffAndReturnAString_cb _hidl_cb) { 2766cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "doStuffAndReturnAString"; 2776cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2786cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_string s; 2796cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju s = "Hello, world!"; 2806cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2816cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(s); 2826cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2836cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 2846cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2856cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2866cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::mapThisVector(const hidl_vec<int32_t>& param, mapThisVector_cb _hidl_cb) { 2876cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "mapThisVector"; 2886cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2896cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<int32_t> out; 2906cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out.resize(param.size()); 2916cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (size_t i = 0; i < param.size(); ++i) { 2926cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju out[i] = param[i] * 2; 2936cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 2946cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2956cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(out); 2966cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 2976cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 2986cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 2996cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3006cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::callMe(const sp<IBazCallback>& cb) { 3016cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "callMe " << cb.get(); 3026cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3036cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju if (cb != NULL) { 3046cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju sp<IBazCallback> my_cb = new BazCallback; 3056cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju cb->heyItsMe(my_cb); 3066cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 3076cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3086cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3096cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3106cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3116cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::callMeLater(const sp<IBazCallback>& cb) { 3126cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "callMeLater " << cb.get(); 3136cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3146cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju mStoredCallback = cb; 3156cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3166cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3176cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3186cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3196cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::iAmFreeNow() { 3206cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju if (mStoredCallback != nullptr) { 3216cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju mStoredCallback->hey(); 3226cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 3236cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3246cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3256cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3266cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::dieNow() { 3276cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju exit(1); 3286cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3296cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3306cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3316cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<IBaz::SomeEnum> Baz::useAnEnum(IBaz::SomeEnum zzz) { 3326cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "useAnEnum " << (int)zzz; 3336cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3346cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return SomeEnum::goober; 3356cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3366cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3376cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::haveSomeStrings(const hidl_array<hidl_string, 3>& array, 3386cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju haveSomeStrings_cb _hidl_cb) { 3396cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju LOG(INFO) << "haveSomeStrings(" 3401b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju << toString(array) 3416cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju << ")"; 3426cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3436cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_array<hidl_string, 2> result; 3446cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[0] = "Hello"; 3456cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[1] = "World"; 3466cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3476cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(result); 3486cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3496cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3506cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3516cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3526cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::haveAStringVec(const hidl_vec<hidl_string>& vector, 3536cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju haveAStringVec_cb _hidl_cb) { 3541b019d5a6ccd39bda7cad3d824c3966c7feba93bHridya Valsaraju LOG(INFO) << "haveAStringVec(" << toString(vector) << ")"; 3556cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3566cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<hidl_string> result; 3576cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result.resize(2); 3586cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3596cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[0] = "Hello"; 3606cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[1] = "World"; 3616cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3626cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(result); 3636cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3646cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3656cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3666cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3676cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::returnABunchOfStrings(returnABunchOfStrings_cb _hidl_cb) { 3686cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_string eins; eins = "Eins"; 3696cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_string zwei; zwei = "Zwei"; 3706cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_string drei; drei = "Drei"; 3716cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(eins, zwei, drei); 3726cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3736cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3746cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3756cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3766cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<uint8_t> Baz::returnABitField() { 3776cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return 0; 3786cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3796cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3806cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<uint32_t> Baz::size(uint32_t size) { 3816cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return size; 3826cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3836cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 3846cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuReturn<void> Baz::getNestedStructs(getNestedStructs_cb _hidl_cb) { 3856cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju int size = 5; 3866cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju hidl_vec<IBaz::NestedStruct> result; 3876cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result.resize(size); 3886cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju for (int i = 0; i < size; i++) { 3896cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[i].a = i; 3906cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju if (i == 1) { 3916cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju result[i].matrices.resize(6); 3926cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 3936cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju } 3946cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju _hidl_cb(result); 3956cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return Void(); 3966cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 3970cd07d214bcf92a35b78a2066fe835ed018450b9Howard Chen 3980cd07d214bcf92a35b78a2066fe835ed018450b9Howard ChenReturn<void> Baz::haveSomeStructWithInterface(const StructWithInterface& swi, 3990cd07d214bcf92a35b78a2066fe835ed018450b9Howard Chen haveSomeStructWithInterface_cb _hidl_cb) { 4000cd07d214bcf92a35b78a2066fe835ed018450b9Howard Chen _hidl_cb(swi); 4010cd07d214bcf92a35b78a2066fe835ed018450b9Howard Chen return Void(); 4020cd07d214bcf92a35b78a2066fe835ed018450b9Howard Chen} 4036cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju// Methods from ::android::hidl::base::V1_0::IBase follow. 4046cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 4056cf95f371084d2d93d850f95e1739d7680adc6b0Hridya ValsarajuIBaz* HIDL_FETCH_IBaz(const char* /* name */) { 4066cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju return new Baz(); 4076cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} 4086cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju 4096cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace implementation 4106cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace V1_0 4116cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace baz 4126cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace tests 4136cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace hardware 4146cf95f371084d2d93d850f95e1739d7680adc6b0Hridya Valsaraju} // namespace android 415