1 #include "android/hardware/tests/bar/1.0/Bar.vts.h"
2 #include <cutils/properties.h>
3 #include <cutils/ashmem.h>
4 #include <fcntl.h>
5 #include <sys/stat.h>
6
7 using namespace android::hardware::tests::bar::V1_0;
8 using namespace android::hardware;
9
10 #define TRACEFILEPREFIX "/data/local/tmp/"
11
12 namespace android {
13 namespace vts {
profile____android__hardware__tests__bar__V1_0__IBar__SomethingRelated(VariableSpecificationMessage * arg_name,::android::hardware::tests::bar::V1_0::IBar::SomethingRelated arg_val_name)14 void profile____android__hardware__tests__bar__V1_0__IBar__SomethingRelated(VariableSpecificationMessage* arg_name,
15 ::android::hardware::tests::bar::V1_0::IBar::SomethingRelated arg_val_name __attribute__((__unused__))) {
16 arg_name->set_type(TYPE_STRUCT);
17 auto *arg_name_myRelated __attribute__((__unused__)) = arg_name->add_struct_value();
18 arg_name_myRelated->set_type(TYPE_STRUCT);
19 profile____android__hardware__tests__foo__V1_0__Unrelated(arg_name_myRelated, arg_val_name.myRelated);
20 }
21
22
HIDL_INSTRUMENTATION_FUNCTION_android_hardware_tests_bar_V1_0_IBar(details::HidlInstrumentor::InstrumentationEvent event,const char * package,const char * version,const char * interface,const char * method,std::vector<void * > * args)23 void HIDL_INSTRUMENTATION_FUNCTION_android_hardware_tests_bar_V1_0_IBar(
24 details::HidlInstrumentor::InstrumentationEvent event __attribute__((__unused__)),
25 const char* package,
26 const char* version,
27 const char* interface,
28 const char* method __attribute__((__unused__)),
29 std::vector<void *> *args __attribute__((__unused__))) {
30 if (strcmp(package, "android.hardware.tests.bar") != 0) {
31 LOG(WARNING) << "incorrect package. Expect: android.hardware.tests.bar actual: " << package;
32 }
33 std::string version_str = std::string(version);
34 int major_version = stoi(version_str.substr(0, version_str.find('.')));
35 int minor_version = stoi(version_str.substr(version_str.find('.') + 1));
36 if (major_version != 1 || minor_version > 0) {
37 LOG(WARNING) << "incorrect version. Expect: 1.0 or lower (if version != x.0), actual: " << version;
38 }
39 if (strcmp(interface, "IBar") != 0) {
40 LOG(WARNING) << "incorrect interface. Expect: IBar actual: " << interface;
41 }
42
43 VtsProfilingInterface& profiler = VtsProfilingInterface::getInstance(TRACEFILEPREFIX);
44
45 bool profiling_for_args = property_get_bool("hal.instrumentation.profile.args", true);
46 if (strcmp(method, "convertToBoolIfSmall") == 0) {
47 FunctionSpecificationMessage msg;
48 msg.set_name("convertToBoolIfSmall");
49 if (profiling_for_args) {
50 if (!args) {
51 LOG(WARNING) << "no argument passed";
52 } else {
53 switch (event) {
54 case details::HidlInstrumentor::CLIENT_API_ENTRY:
55 case details::HidlInstrumentor::SERVER_API_ENTRY:
56 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
57 {
58 if ((*args).size() != 2) {
59 LOG(ERROR) << "Number of arguments does not match. expect: 2, actual: " << (*args).size() << ", method name: convertToBoolIfSmall, event type: " << event;
60 break;
61 }
62 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
63 ::android::hardware::tests::foo::V1_0::IFoo::Discriminator *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::Discriminator*> ((*args)[0]);
64 if (arg_val_0 != nullptr) {
65 arg_0->set_type(TYPE_ENUM);
66 profile____android__hardware__tests__foo__V1_0__IFoo__Discriminator(arg_0, (*arg_val_0));
67 } else {
68 LOG(WARNING) << "argument 0 is null.";
69 }
70 auto *arg_1 __attribute__((__unused__)) = msg.add_arg();
71 ::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::Union> *arg_val_1 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::Union>*> ((*args)[1]);
72 if (arg_val_1 != nullptr) {
73 arg_1->set_type(TYPE_VECTOR);
74 arg_1->set_vector_size((*arg_val_1).size());
75 for (int arg_1_index = 0; arg_1_index < (int)(*arg_val_1).size(); arg_1_index++) {
76 auto *arg_1_vector_arg_1_index __attribute__((__unused__)) = arg_1->add_vector_value();
77 arg_1_vector_arg_1_index->set_type(TYPE_UNION);
78 profile____android__hardware__tests__foo__V1_0__IFoo__Union(arg_1_vector_arg_1_index, (*arg_val_1)[arg_1_index]);
79 }
80 } else {
81 LOG(WARNING) << "argument 1 is null.";
82 }
83 break;
84 }
85 case details::HidlInstrumentor::CLIENT_API_EXIT:
86 case details::HidlInstrumentor::SERVER_API_EXIT:
87 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
88 {
89 if ((*args).size() != 1) {
90 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: convertToBoolIfSmall, event type: " << event;
91 break;
92 }
93 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
94 ::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::ContainsUnion> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::ContainsUnion>*> ((*args)[0]);
95 if (result_val_0 != nullptr) {
96 result_0->set_type(TYPE_VECTOR);
97 result_0->set_vector_size((*result_val_0).size());
98 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
99 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
100 result_0_vector_result_0_index->set_type(TYPE_STRUCT);
101 profile____android__hardware__tests__foo__V1_0__IFoo__ContainsUnion(result_0_vector_result_0_index, (*result_val_0)[result_0_index]);
102 }
103 } else {
104 LOG(WARNING) << "return value 0 is null.";
105 }
106 break;
107 }
108 default:
109 {
110 LOG(WARNING) << "not supported. ";
111 break;
112 }
113 }
114 }
115 }
116 profiler.AddTraceEvent(event, package, version, interface, msg);
117 }
118 if (strcmp(method, "doThis") == 0) {
119 FunctionSpecificationMessage msg;
120 msg.set_name("doThis");
121 if (profiling_for_args) {
122 if (!args) {
123 LOG(WARNING) << "no argument passed";
124 } else {
125 switch (event) {
126 case details::HidlInstrumentor::CLIENT_API_ENTRY:
127 case details::HidlInstrumentor::SERVER_API_ENTRY:
128 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
129 {
130 if ((*args).size() != 1) {
131 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: doThis, event type: " << event;
132 break;
133 }
134 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
135 float *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<float*> ((*args)[0]);
136 if (arg_val_0 != nullptr) {
137 arg_0->set_type(TYPE_SCALAR);
138 arg_0->mutable_scalar_value()->set_float_t((*arg_val_0));
139 } else {
140 LOG(WARNING) << "argument 0 is null.";
141 }
142 break;
143 }
144 case details::HidlInstrumentor::CLIENT_API_EXIT:
145 case details::HidlInstrumentor::SERVER_API_EXIT:
146 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
147 {
148 if ((*args).size() != 0) {
149 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: doThis, event type: " << event;
150 break;
151 }
152 break;
153 }
154 default:
155 {
156 LOG(WARNING) << "not supported. ";
157 break;
158 }
159 }
160 }
161 }
162 profiler.AddTraceEvent(event, package, version, interface, msg);
163 }
164 if (strcmp(method, "doThatAndReturnSomething") == 0) {
165 FunctionSpecificationMessage msg;
166 msg.set_name("doThatAndReturnSomething");
167 if (profiling_for_args) {
168 if (!args) {
169 LOG(WARNING) << "no argument passed";
170 } else {
171 switch (event) {
172 case details::HidlInstrumentor::CLIENT_API_ENTRY:
173 case details::HidlInstrumentor::SERVER_API_ENTRY:
174 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
175 {
176 if ((*args).size() != 1) {
177 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: doThatAndReturnSomething, event type: " << event;
178 break;
179 }
180 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
181 int64_t *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<int64_t*> ((*args)[0]);
182 if (arg_val_0 != nullptr) {
183 arg_0->set_type(TYPE_SCALAR);
184 arg_0->mutable_scalar_value()->set_int64_t((*arg_val_0));
185 } else {
186 LOG(WARNING) << "argument 0 is null.";
187 }
188 break;
189 }
190 case details::HidlInstrumentor::CLIENT_API_EXIT:
191 case details::HidlInstrumentor::SERVER_API_EXIT:
192 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
193 {
194 if ((*args).size() != 1) {
195 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: doThatAndReturnSomething, event type: " << event;
196 break;
197 }
198 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
199 int32_t *result_val_0 __attribute__((__unused__)) = reinterpret_cast<int32_t*> ((*args)[0]);
200 if (result_val_0 != nullptr) {
201 result_0->set_type(TYPE_SCALAR);
202 result_0->mutable_scalar_value()->set_int32_t((*result_val_0));
203 } else {
204 LOG(WARNING) << "return value 0 is null.";
205 }
206 break;
207 }
208 default:
209 {
210 LOG(WARNING) << "not supported. ";
211 break;
212 }
213 }
214 }
215 }
216 profiler.AddTraceEvent(event, package, version, interface, msg);
217 }
218 if (strcmp(method, "doQuiteABit") == 0) {
219 FunctionSpecificationMessage msg;
220 msg.set_name("doQuiteABit");
221 if (profiling_for_args) {
222 if (!args) {
223 LOG(WARNING) << "no argument passed";
224 } else {
225 switch (event) {
226 case details::HidlInstrumentor::CLIENT_API_ENTRY:
227 case details::HidlInstrumentor::SERVER_API_ENTRY:
228 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
229 {
230 if ((*args).size() != 4) {
231 LOG(ERROR) << "Number of arguments does not match. expect: 4, actual: " << (*args).size() << ", method name: doQuiteABit, event type: " << event;
232 break;
233 }
234 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
235 int32_t *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<int32_t*> ((*args)[0]);
236 if (arg_val_0 != nullptr) {
237 arg_0->set_type(TYPE_SCALAR);
238 arg_0->mutable_scalar_value()->set_int32_t((*arg_val_0));
239 } else {
240 LOG(WARNING) << "argument 0 is null.";
241 }
242 auto *arg_1 __attribute__((__unused__)) = msg.add_arg();
243 int64_t *arg_val_1 __attribute__((__unused__)) = reinterpret_cast<int64_t*> ((*args)[1]);
244 if (arg_val_1 != nullptr) {
245 arg_1->set_type(TYPE_SCALAR);
246 arg_1->mutable_scalar_value()->set_int64_t((*arg_val_1));
247 } else {
248 LOG(WARNING) << "argument 1 is null.";
249 }
250 auto *arg_2 __attribute__((__unused__)) = msg.add_arg();
251 float *arg_val_2 __attribute__((__unused__)) = reinterpret_cast<float*> ((*args)[2]);
252 if (arg_val_2 != nullptr) {
253 arg_2->set_type(TYPE_SCALAR);
254 arg_2->mutable_scalar_value()->set_float_t((*arg_val_2));
255 } else {
256 LOG(WARNING) << "argument 2 is null.";
257 }
258 auto *arg_3 __attribute__((__unused__)) = msg.add_arg();
259 double *arg_val_3 __attribute__((__unused__)) = reinterpret_cast<double*> ((*args)[3]);
260 if (arg_val_3 != nullptr) {
261 arg_3->set_type(TYPE_SCALAR);
262 arg_3->mutable_scalar_value()->set_double_t((*arg_val_3));
263 } else {
264 LOG(WARNING) << "argument 3 is null.";
265 }
266 break;
267 }
268 case details::HidlInstrumentor::CLIENT_API_EXIT:
269 case details::HidlInstrumentor::SERVER_API_EXIT:
270 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
271 {
272 if ((*args).size() != 1) {
273 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: doQuiteABit, event type: " << event;
274 break;
275 }
276 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
277 double *result_val_0 __attribute__((__unused__)) = reinterpret_cast<double*> ((*args)[0]);
278 if (result_val_0 != nullptr) {
279 result_0->set_type(TYPE_SCALAR);
280 result_0->mutable_scalar_value()->set_double_t((*result_val_0));
281 } else {
282 LOG(WARNING) << "return value 0 is null.";
283 }
284 break;
285 }
286 default:
287 {
288 LOG(WARNING) << "not supported. ";
289 break;
290 }
291 }
292 }
293 }
294 profiler.AddTraceEvent(event, package, version, interface, msg);
295 }
296 if (strcmp(method, "doSomethingElse") == 0) {
297 FunctionSpecificationMessage msg;
298 msg.set_name("doSomethingElse");
299 if (profiling_for_args) {
300 if (!args) {
301 LOG(WARNING) << "no argument passed";
302 } else {
303 switch (event) {
304 case details::HidlInstrumentor::CLIENT_API_ENTRY:
305 case details::HidlInstrumentor::SERVER_API_ENTRY:
306 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
307 {
308 if ((*args).size() != 1) {
309 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: doSomethingElse, event type: " << event;
310 break;
311 }
312 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
313 ::android::hardware::hidl_array<int32_t, 15> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<int32_t, 15>*> ((*args)[0]);
314 if (arg_val_0 != nullptr) {
315 arg_0->set_type(TYPE_ARRAY);
316 arg_0->set_vector_size(15);
317 for (int arg_0_index = 0; arg_0_index < 15; arg_0_index++) {
318 auto *arg_0_array_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
319 arg_0_array_arg_0_index->set_type(TYPE_SCALAR);
320 arg_0_array_arg_0_index->mutable_scalar_value()->set_int32_t((*arg_val_0)[arg_0_index]);
321 }
322 } else {
323 LOG(WARNING) << "argument 0 is null.";
324 }
325 break;
326 }
327 case details::HidlInstrumentor::CLIENT_API_EXIT:
328 case details::HidlInstrumentor::SERVER_API_EXIT:
329 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
330 {
331 if ((*args).size() != 1) {
332 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: doSomethingElse, event type: " << event;
333 break;
334 }
335 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
336 ::android::hardware::hidl_array<int32_t, 32> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<int32_t, 32>*> ((*args)[0]);
337 if (result_val_0 != nullptr) {
338 result_0->set_type(TYPE_ARRAY);
339 result_0->set_vector_size(32);
340 for (int result_0_index = 0; result_0_index < 32; result_0_index++) {
341 auto *result_0_array_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
342 result_0_array_result_0_index->set_type(TYPE_SCALAR);
343 result_0_array_result_0_index->mutable_scalar_value()->set_int32_t((*result_val_0)[result_0_index]);
344 }
345 } else {
346 LOG(WARNING) << "return value 0 is null.";
347 }
348 break;
349 }
350 default:
351 {
352 LOG(WARNING) << "not supported. ";
353 break;
354 }
355 }
356 }
357 }
358 profiler.AddTraceEvent(event, package, version, interface, msg);
359 }
360 if (strcmp(method, "doStuffAndReturnAString") == 0) {
361 FunctionSpecificationMessage msg;
362 msg.set_name("doStuffAndReturnAString");
363 if (profiling_for_args) {
364 if (!args) {
365 LOG(WARNING) << "no argument passed";
366 } else {
367 switch (event) {
368 case details::HidlInstrumentor::CLIENT_API_ENTRY:
369 case details::HidlInstrumentor::SERVER_API_ENTRY:
370 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
371 {
372 if ((*args).size() != 0) {
373 LOG(ERROR) << "Number of arguments does not match. expect: 0, actual: " << (*args).size() << ", method name: doStuffAndReturnAString, event type: " << event;
374 break;
375 }
376 break;
377 }
378 case details::HidlInstrumentor::CLIENT_API_EXIT:
379 case details::HidlInstrumentor::SERVER_API_EXIT:
380 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
381 {
382 if ((*args).size() != 1) {
383 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: doStuffAndReturnAString, event type: " << event;
384 break;
385 }
386 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
387 ::android::hardware::hidl_string *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_string*> ((*args)[0]);
388 if (result_val_0 != nullptr) {
389 result_0->set_type(TYPE_STRING);
390 result_0->mutable_string_value()->set_message((*result_val_0).c_str());
391 result_0->mutable_string_value()->set_length((*result_val_0).size());
392 } else {
393 LOG(WARNING) << "return value 0 is null.";
394 }
395 break;
396 }
397 default:
398 {
399 LOG(WARNING) << "not supported. ";
400 break;
401 }
402 }
403 }
404 }
405 profiler.AddTraceEvent(event, package, version, interface, msg);
406 }
407 if (strcmp(method, "mapThisVector") == 0) {
408 FunctionSpecificationMessage msg;
409 msg.set_name("mapThisVector");
410 if (profiling_for_args) {
411 if (!args) {
412 LOG(WARNING) << "no argument passed";
413 } else {
414 switch (event) {
415 case details::HidlInstrumentor::CLIENT_API_ENTRY:
416 case details::HidlInstrumentor::SERVER_API_ENTRY:
417 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
418 {
419 if ((*args).size() != 1) {
420 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: mapThisVector, event type: " << event;
421 break;
422 }
423 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
424 ::android::hardware::hidl_vec<int32_t> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<int32_t>*> ((*args)[0]);
425 if (arg_val_0 != nullptr) {
426 arg_0->set_type(TYPE_VECTOR);
427 arg_0->set_vector_size((*arg_val_0).size());
428 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
429 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
430 arg_0_vector_arg_0_index->set_type(TYPE_SCALAR);
431 arg_0_vector_arg_0_index->mutable_scalar_value()->set_int32_t((*arg_val_0)[arg_0_index]);
432 }
433 } else {
434 LOG(WARNING) << "argument 0 is null.";
435 }
436 break;
437 }
438 case details::HidlInstrumentor::CLIENT_API_EXIT:
439 case details::HidlInstrumentor::SERVER_API_EXIT:
440 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
441 {
442 if ((*args).size() != 1) {
443 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: mapThisVector, event type: " << event;
444 break;
445 }
446 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
447 ::android::hardware::hidl_vec<int32_t> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<int32_t>*> ((*args)[0]);
448 if (result_val_0 != nullptr) {
449 result_0->set_type(TYPE_VECTOR);
450 result_0->set_vector_size((*result_val_0).size());
451 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
452 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
453 result_0_vector_result_0_index->set_type(TYPE_SCALAR);
454 result_0_vector_result_0_index->mutable_scalar_value()->set_int32_t((*result_val_0)[result_0_index]);
455 }
456 } else {
457 LOG(WARNING) << "return value 0 is null.";
458 }
459 break;
460 }
461 default:
462 {
463 LOG(WARNING) << "not supported. ";
464 break;
465 }
466 }
467 }
468 }
469 profiler.AddTraceEvent(event, package, version, interface, msg);
470 }
471 if (strcmp(method, "callMe") == 0) {
472 FunctionSpecificationMessage msg;
473 msg.set_name("callMe");
474 if (profiling_for_args) {
475 if (!args) {
476 LOG(WARNING) << "no argument passed";
477 } else {
478 switch (event) {
479 case details::HidlInstrumentor::CLIENT_API_ENTRY:
480 case details::HidlInstrumentor::SERVER_API_ENTRY:
481 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
482 {
483 if ((*args).size() != 1) {
484 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: callMe, event type: " << event;
485 break;
486 }
487 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
488 sp<::android::hardware::tests::foo::V1_0::IFooCallback> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<sp<::android::hardware::tests::foo::V1_0::IFooCallback>*> ((*args)[0]);
489 if (arg_val_0 != nullptr) {
490 arg_0->set_type(TYPE_HIDL_CALLBACK);
491 arg_0->set_predefined_type("::android::hardware::tests::foo::V1_0::IFooCallback");
492 } else {
493 LOG(WARNING) << "argument 0 is null.";
494 }
495 break;
496 }
497 case details::HidlInstrumentor::CLIENT_API_EXIT:
498 case details::HidlInstrumentor::SERVER_API_EXIT:
499 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
500 {
501 if ((*args).size() != 0) {
502 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: callMe, event type: " << event;
503 break;
504 }
505 break;
506 }
507 default:
508 {
509 LOG(WARNING) << "not supported. ";
510 break;
511 }
512 }
513 }
514 }
515 profiler.AddTraceEvent(event, package, version, interface, msg);
516 }
517 if (strcmp(method, "useAnEnum") == 0) {
518 FunctionSpecificationMessage msg;
519 msg.set_name("useAnEnum");
520 if (profiling_for_args) {
521 if (!args) {
522 LOG(WARNING) << "no argument passed";
523 } else {
524 switch (event) {
525 case details::HidlInstrumentor::CLIENT_API_ENTRY:
526 case details::HidlInstrumentor::SERVER_API_ENTRY:
527 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
528 {
529 if ((*args).size() != 1) {
530 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: useAnEnum, event type: " << event;
531 break;
532 }
533 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
534 ::android::hardware::tests::foo::V1_0::IFoo::SomeEnum *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::SomeEnum*> ((*args)[0]);
535 if (arg_val_0 != nullptr) {
536 arg_0->set_type(TYPE_ENUM);
537 profile____android__hardware__tests__foo__V1_0__IFoo__SomeEnum(arg_0, (*arg_val_0));
538 } else {
539 LOG(WARNING) << "argument 0 is null.";
540 }
541 break;
542 }
543 case details::HidlInstrumentor::CLIENT_API_EXIT:
544 case details::HidlInstrumentor::SERVER_API_EXIT:
545 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
546 {
547 if ((*args).size() != 1) {
548 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: useAnEnum, event type: " << event;
549 break;
550 }
551 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
552 ::android::hardware::tests::foo::V1_0::IFoo::SomeEnum *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::SomeEnum*> ((*args)[0]);
553 if (result_val_0 != nullptr) {
554 result_0->set_type(TYPE_ENUM);
555 profile____android__hardware__tests__foo__V1_0__IFoo__SomeEnum(result_0, (*result_val_0));
556 } else {
557 LOG(WARNING) << "return value 0 is null.";
558 }
559 break;
560 }
561 default:
562 {
563 LOG(WARNING) << "not supported. ";
564 break;
565 }
566 }
567 }
568 }
569 profiler.AddTraceEvent(event, package, version, interface, msg);
570 }
571 if (strcmp(method, "haveAGooberVec") == 0) {
572 FunctionSpecificationMessage msg;
573 msg.set_name("haveAGooberVec");
574 if (profiling_for_args) {
575 if (!args) {
576 LOG(WARNING) << "no argument passed";
577 } else {
578 switch (event) {
579 case details::HidlInstrumentor::CLIENT_API_ENTRY:
580 case details::HidlInstrumentor::SERVER_API_ENTRY:
581 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
582 {
583 if ((*args).size() != 1) {
584 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAGooberVec, event type: " << event;
585 break;
586 }
587 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
588 ::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::Goober> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::tests::foo::V1_0::IFoo::Goober>*> ((*args)[0]);
589 if (arg_val_0 != nullptr) {
590 arg_0->set_type(TYPE_VECTOR);
591 arg_0->set_vector_size((*arg_val_0).size());
592 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
593 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
594 arg_0_vector_arg_0_index->set_type(TYPE_STRUCT);
595 profile____android__hardware__tests__foo__V1_0__IFoo__Goober(arg_0_vector_arg_0_index, (*arg_val_0)[arg_0_index]);
596 }
597 } else {
598 LOG(WARNING) << "argument 0 is null.";
599 }
600 break;
601 }
602 case details::HidlInstrumentor::CLIENT_API_EXIT:
603 case details::HidlInstrumentor::SERVER_API_EXIT:
604 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
605 {
606 if ((*args).size() != 0) {
607 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: haveAGooberVec, event type: " << event;
608 break;
609 }
610 break;
611 }
612 default:
613 {
614 LOG(WARNING) << "not supported. ";
615 break;
616 }
617 }
618 }
619 }
620 profiler.AddTraceEvent(event, package, version, interface, msg);
621 }
622 if (strcmp(method, "haveAGoober") == 0) {
623 FunctionSpecificationMessage msg;
624 msg.set_name("haveAGoober");
625 if (profiling_for_args) {
626 if (!args) {
627 LOG(WARNING) << "no argument passed";
628 } else {
629 switch (event) {
630 case details::HidlInstrumentor::CLIENT_API_ENTRY:
631 case details::HidlInstrumentor::SERVER_API_ENTRY:
632 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
633 {
634 if ((*args).size() != 1) {
635 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAGoober, event type: " << event;
636 break;
637 }
638 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
639 ::android::hardware::tests::foo::V1_0::IFoo::Goober *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::Goober*> ((*args)[0]);
640 if (arg_val_0 != nullptr) {
641 arg_0->set_type(TYPE_STRUCT);
642 profile____android__hardware__tests__foo__V1_0__IFoo__Goober(arg_0, (*arg_val_0));
643 } else {
644 LOG(WARNING) << "argument 0 is null.";
645 }
646 break;
647 }
648 case details::HidlInstrumentor::CLIENT_API_EXIT:
649 case details::HidlInstrumentor::SERVER_API_EXIT:
650 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
651 {
652 if ((*args).size() != 0) {
653 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: haveAGoober, event type: " << event;
654 break;
655 }
656 break;
657 }
658 default:
659 {
660 LOG(WARNING) << "not supported. ";
661 break;
662 }
663 }
664 }
665 }
666 profiler.AddTraceEvent(event, package, version, interface, msg);
667 }
668 if (strcmp(method, "haveAGooberArray") == 0) {
669 FunctionSpecificationMessage msg;
670 msg.set_name("haveAGooberArray");
671 if (profiling_for_args) {
672 if (!args) {
673 LOG(WARNING) << "no argument passed";
674 } else {
675 switch (event) {
676 case details::HidlInstrumentor::CLIENT_API_ENTRY:
677 case details::HidlInstrumentor::SERVER_API_ENTRY:
678 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
679 {
680 if ((*args).size() != 1) {
681 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAGooberArray, event type: " << event;
682 break;
683 }
684 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
685 ::android::hardware::hidl_array<::android::hardware::tests::foo::V1_0::IFoo::Goober, 20> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<::android::hardware::tests::foo::V1_0::IFoo::Goober, 20>*> ((*args)[0]);
686 if (arg_val_0 != nullptr) {
687 arg_0->set_type(TYPE_ARRAY);
688 arg_0->set_vector_size(20);
689 for (int arg_0_index = 0; arg_0_index < 20; arg_0_index++) {
690 auto *arg_0_array_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
691 arg_0_array_arg_0_index->set_type(TYPE_STRUCT);
692 auto *arg_0_array_arg_0_index_q __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
693 arg_0_array_arg_0_index_q->set_type(TYPE_SCALAR);
694 arg_0_array_arg_0_index_q->mutable_scalar_value()->set_int32_t((*arg_val_0)[arg_0_index].q);
695 auto *arg_0_array_arg_0_index_name __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
696 arg_0_array_arg_0_index_name->set_type(TYPE_STRING);
697 arg_0_array_arg_0_index_name->mutable_string_value()->set_message((*arg_val_0)[arg_0_index].name.c_str());
698 arg_0_array_arg_0_index_name->mutable_string_value()->set_length((*arg_val_0)[arg_0_index].name.size());
699 auto *arg_0_array_arg_0_index_address __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
700 arg_0_array_arg_0_index_address->set_type(TYPE_STRING);
701 arg_0_array_arg_0_index_address->mutable_string_value()->set_message((*arg_val_0)[arg_0_index].address.c_str());
702 arg_0_array_arg_0_index_address->mutable_string_value()->set_length((*arg_val_0)[arg_0_index].address.size());
703 auto *arg_0_array_arg_0_index_numbers __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
704 arg_0_array_arg_0_index_numbers->set_type(TYPE_ARRAY);
705 arg_0_array_arg_0_index_numbers->set_vector_size(10);
706 for (int arg_0_array_arg_0_index_numbers_index = 0; arg_0_array_arg_0_index_numbers_index < 10; arg_0_array_arg_0_index_numbers_index++) {
707 auto *arg_0_array_arg_0_index_numbers_array_arg_0_array_arg_0_index_numbers_index __attribute__((__unused__)) = arg_0_array_arg_0_index_numbers->add_vector_value();
708 arg_0_array_arg_0_index_numbers_array_arg_0_array_arg_0_index_numbers_index->set_type(TYPE_SCALAR);
709 arg_0_array_arg_0_index_numbers_array_arg_0_array_arg_0_index_numbers_index->mutable_scalar_value()->set_double_t((*arg_val_0)[arg_0_index].numbers[arg_0_array_arg_0_index_numbers_index]);
710 }
711 auto *arg_0_array_arg_0_index_fumble __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
712 arg_0_array_arg_0_index_fumble->set_type(TYPE_STRUCT);
713 profile____android__hardware__tests__foo__V1_0__IFoo__Fumble(arg_0_array_arg_0_index_fumble, (*arg_val_0)[arg_0_index].fumble);
714 auto *arg_0_array_arg_0_index_gumble __attribute__((__unused__)) = arg_0_array_arg_0_index->add_struct_value();
715 arg_0_array_arg_0_index_gumble->set_type(TYPE_STRUCT);
716 profile____android__hardware__tests__foo__V1_0__IFoo__Fumble(arg_0_array_arg_0_index_gumble, (*arg_val_0)[arg_0_index].gumble);
717 }
718 } else {
719 LOG(WARNING) << "argument 0 is null.";
720 }
721 break;
722 }
723 case details::HidlInstrumentor::CLIENT_API_EXIT:
724 case details::HidlInstrumentor::SERVER_API_EXIT:
725 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
726 {
727 if ((*args).size() != 0) {
728 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: haveAGooberArray, event type: " << event;
729 break;
730 }
731 break;
732 }
733 default:
734 {
735 LOG(WARNING) << "not supported. ";
736 break;
737 }
738 }
739 }
740 }
741 profiler.AddTraceEvent(event, package, version, interface, msg);
742 }
743 if (strcmp(method, "haveATypeFromAnotherFile") == 0) {
744 FunctionSpecificationMessage msg;
745 msg.set_name("haveATypeFromAnotherFile");
746 if (profiling_for_args) {
747 if (!args) {
748 LOG(WARNING) << "no argument passed";
749 } else {
750 switch (event) {
751 case details::HidlInstrumentor::CLIENT_API_ENTRY:
752 case details::HidlInstrumentor::SERVER_API_ENTRY:
753 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
754 {
755 if ((*args).size() != 1) {
756 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveATypeFromAnotherFile, event type: " << event;
757 break;
758 }
759 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
760 ::android::hardware::tests::foo::V1_0::Abc *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::Abc*> ((*args)[0]);
761 if (arg_val_0 != nullptr) {
762 arg_0->set_type(TYPE_STRUCT);
763 profile____android__hardware__tests__foo__V1_0__Abc(arg_0, (*arg_val_0));
764 } else {
765 LOG(WARNING) << "argument 0 is null.";
766 }
767 break;
768 }
769 case details::HidlInstrumentor::CLIENT_API_EXIT:
770 case details::HidlInstrumentor::SERVER_API_EXIT:
771 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
772 {
773 if ((*args).size() != 0) {
774 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: haveATypeFromAnotherFile, event type: " << event;
775 break;
776 }
777 break;
778 }
779 default:
780 {
781 LOG(WARNING) << "not supported. ";
782 break;
783 }
784 }
785 }
786 }
787 profiler.AddTraceEvent(event, package, version, interface, msg);
788 }
789 if (strcmp(method, "haveSomeStrings") == 0) {
790 FunctionSpecificationMessage msg;
791 msg.set_name("haveSomeStrings");
792 if (profiling_for_args) {
793 if (!args) {
794 LOG(WARNING) << "no argument passed";
795 } else {
796 switch (event) {
797 case details::HidlInstrumentor::CLIENT_API_ENTRY:
798 case details::HidlInstrumentor::SERVER_API_ENTRY:
799 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
800 {
801 if ((*args).size() != 1) {
802 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveSomeStrings, event type: " << event;
803 break;
804 }
805 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
806 ::android::hardware::hidl_array<::android::hardware::hidl_string, 3> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<::android::hardware::hidl_string, 3>*> ((*args)[0]);
807 if (arg_val_0 != nullptr) {
808 arg_0->set_type(TYPE_ARRAY);
809 arg_0->set_vector_size(3);
810 for (int arg_0_index = 0; arg_0_index < 3; arg_0_index++) {
811 auto *arg_0_array_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
812 arg_0_array_arg_0_index->set_type(TYPE_STRING);
813 arg_0_array_arg_0_index->mutable_string_value()->set_message((*arg_val_0)[arg_0_index].c_str());
814 arg_0_array_arg_0_index->mutable_string_value()->set_length((*arg_val_0)[arg_0_index].size());
815 }
816 } else {
817 LOG(WARNING) << "argument 0 is null.";
818 }
819 break;
820 }
821 case details::HidlInstrumentor::CLIENT_API_EXIT:
822 case details::HidlInstrumentor::SERVER_API_EXIT:
823 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
824 {
825 if ((*args).size() != 1) {
826 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: haveSomeStrings, event type: " << event;
827 break;
828 }
829 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
830 ::android::hardware::hidl_array<::android::hardware::hidl_string, 2> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<::android::hardware::hidl_string, 2>*> ((*args)[0]);
831 if (result_val_0 != nullptr) {
832 result_0->set_type(TYPE_ARRAY);
833 result_0->set_vector_size(2);
834 for (int result_0_index = 0; result_0_index < 2; result_0_index++) {
835 auto *result_0_array_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
836 result_0_array_result_0_index->set_type(TYPE_STRING);
837 result_0_array_result_0_index->mutable_string_value()->set_message((*result_val_0)[result_0_index].c_str());
838 result_0_array_result_0_index->mutable_string_value()->set_length((*result_val_0)[result_0_index].size());
839 }
840 } else {
841 LOG(WARNING) << "return value 0 is null.";
842 }
843 break;
844 }
845 default:
846 {
847 LOG(WARNING) << "not supported. ";
848 break;
849 }
850 }
851 }
852 }
853 profiler.AddTraceEvent(event, package, version, interface, msg);
854 }
855 if (strcmp(method, "haveAStringVec") == 0) {
856 FunctionSpecificationMessage msg;
857 msg.set_name("haveAStringVec");
858 if (profiling_for_args) {
859 if (!args) {
860 LOG(WARNING) << "no argument passed";
861 } else {
862 switch (event) {
863 case details::HidlInstrumentor::CLIENT_API_ENTRY:
864 case details::HidlInstrumentor::SERVER_API_ENTRY:
865 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
866 {
867 if ((*args).size() != 1) {
868 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAStringVec, event type: " << event;
869 break;
870 }
871 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
872 ::android::hardware::hidl_vec<::android::hardware::hidl_string> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::hidl_string>*> ((*args)[0]);
873 if (arg_val_0 != nullptr) {
874 arg_0->set_type(TYPE_VECTOR);
875 arg_0->set_vector_size((*arg_val_0).size());
876 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
877 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
878 arg_0_vector_arg_0_index->set_type(TYPE_STRING);
879 arg_0_vector_arg_0_index->mutable_string_value()->set_message((*arg_val_0)[arg_0_index].c_str());
880 arg_0_vector_arg_0_index->mutable_string_value()->set_length((*arg_val_0)[arg_0_index].size());
881 }
882 } else {
883 LOG(WARNING) << "argument 0 is null.";
884 }
885 break;
886 }
887 case details::HidlInstrumentor::CLIENT_API_EXIT:
888 case details::HidlInstrumentor::SERVER_API_EXIT:
889 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
890 {
891 if ((*args).size() != 1) {
892 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAStringVec, event type: " << event;
893 break;
894 }
895 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
896 ::android::hardware::hidl_vec<::android::hardware::hidl_string> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::hidl_string>*> ((*args)[0]);
897 if (result_val_0 != nullptr) {
898 result_0->set_type(TYPE_VECTOR);
899 result_0->set_vector_size((*result_val_0).size());
900 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
901 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
902 result_0_vector_result_0_index->set_type(TYPE_STRING);
903 result_0_vector_result_0_index->mutable_string_value()->set_message((*result_val_0)[result_0_index].c_str());
904 result_0_vector_result_0_index->mutable_string_value()->set_length((*result_val_0)[result_0_index].size());
905 }
906 } else {
907 LOG(WARNING) << "return value 0 is null.";
908 }
909 break;
910 }
911 default:
912 {
913 LOG(WARNING) << "not supported. ";
914 break;
915 }
916 }
917 }
918 }
919 profiler.AddTraceEvent(event, package, version, interface, msg);
920 }
921 if (strcmp(method, "transposeMe") == 0) {
922 FunctionSpecificationMessage msg;
923 msg.set_name("transposeMe");
924 if (profiling_for_args) {
925 if (!args) {
926 LOG(WARNING) << "no argument passed";
927 } else {
928 switch (event) {
929 case details::HidlInstrumentor::CLIENT_API_ENTRY:
930 case details::HidlInstrumentor::SERVER_API_ENTRY:
931 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
932 {
933 if ((*args).size() != 1) {
934 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: transposeMe, event type: " << event;
935 break;
936 }
937 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
938 ::android::hardware::hidl_array<float, 3, 5> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<float, 3, 5>*> ((*args)[0]);
939 if (arg_val_0 != nullptr) {
940 arg_0->set_type(TYPE_ARRAY);
941 arg_0->set_vector_size(3);
942 for (int arg_0_index = 0; arg_0_index < 3; arg_0_index++) {
943 auto *arg_0_array_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
944 arg_0_array_arg_0_index->set_type(TYPE_ARRAY);
945 arg_0_array_arg_0_index->set_vector_size(5);
946 for (int arg_0_array_arg_0_index_index = 0; arg_0_array_arg_0_index_index < 5; arg_0_array_arg_0_index_index++) {
947 auto *arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index __attribute__((__unused__)) = arg_0_array_arg_0_index->add_vector_value();
948 arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index->set_type(TYPE_SCALAR);
949 arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index->mutable_scalar_value()->set_float_t((*arg_val_0)[arg_0_index][arg_0_array_arg_0_index_index]);
950 }
951 }
952 } else {
953 LOG(WARNING) << "argument 0 is null.";
954 }
955 break;
956 }
957 case details::HidlInstrumentor::CLIENT_API_EXIT:
958 case details::HidlInstrumentor::SERVER_API_EXIT:
959 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
960 {
961 if ((*args).size() != 1) {
962 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: transposeMe, event type: " << event;
963 break;
964 }
965 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
966 ::android::hardware::hidl_array<float, 5, 3> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<float, 5, 3>*> ((*args)[0]);
967 if (result_val_0 != nullptr) {
968 result_0->set_type(TYPE_ARRAY);
969 result_0->set_vector_size(5);
970 for (int result_0_index = 0; result_0_index < 5; result_0_index++) {
971 auto *result_0_array_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
972 result_0_array_result_0_index->set_type(TYPE_ARRAY);
973 result_0_array_result_0_index->set_vector_size(3);
974 for (int result_0_array_result_0_index_index = 0; result_0_array_result_0_index_index < 3; result_0_array_result_0_index_index++) {
975 auto *result_0_array_result_0_index_array_result_0_array_result_0_index_index __attribute__((__unused__)) = result_0_array_result_0_index->add_vector_value();
976 result_0_array_result_0_index_array_result_0_array_result_0_index_index->set_type(TYPE_SCALAR);
977 result_0_array_result_0_index_array_result_0_array_result_0_index_index->mutable_scalar_value()->set_float_t((*result_val_0)[result_0_index][result_0_array_result_0_index_index]);
978 }
979 }
980 } else {
981 LOG(WARNING) << "return value 0 is null.";
982 }
983 break;
984 }
985 default:
986 {
987 LOG(WARNING) << "not supported. ";
988 break;
989 }
990 }
991 }
992 }
993 profiler.AddTraceEvent(event, package, version, interface, msg);
994 }
995 if (strcmp(method, "callingDrWho") == 0) {
996 FunctionSpecificationMessage msg;
997 msg.set_name("callingDrWho");
998 if (profiling_for_args) {
999 if (!args) {
1000 LOG(WARNING) << "no argument passed";
1001 } else {
1002 switch (event) {
1003 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1004 case details::HidlInstrumentor::SERVER_API_ENTRY:
1005 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1006 {
1007 if ((*args).size() != 1) {
1008 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: callingDrWho, event type: " << event;
1009 break;
1010 }
1011 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1012 ::android::hardware::tests::foo::V1_0::IFoo::MultiDimensional *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::MultiDimensional*> ((*args)[0]);
1013 if (arg_val_0 != nullptr) {
1014 arg_0->set_type(TYPE_STRUCT);
1015 profile____android__hardware__tests__foo__V1_0__IFoo__MultiDimensional(arg_0, (*arg_val_0));
1016 } else {
1017 LOG(WARNING) << "argument 0 is null.";
1018 }
1019 break;
1020 }
1021 case details::HidlInstrumentor::CLIENT_API_EXIT:
1022 case details::HidlInstrumentor::SERVER_API_EXIT:
1023 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1024 {
1025 if ((*args).size() != 1) {
1026 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: callingDrWho, event type: " << event;
1027 break;
1028 }
1029 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1030 ::android::hardware::tests::foo::V1_0::IFoo::MultiDimensional *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::MultiDimensional*> ((*args)[0]);
1031 if (result_val_0 != nullptr) {
1032 result_0->set_type(TYPE_STRUCT);
1033 profile____android__hardware__tests__foo__V1_0__IFoo__MultiDimensional(result_0, (*result_val_0));
1034 } else {
1035 LOG(WARNING) << "return value 0 is null.";
1036 }
1037 break;
1038 }
1039 default:
1040 {
1041 LOG(WARNING) << "not supported. ";
1042 break;
1043 }
1044 }
1045 }
1046 }
1047 profiler.AddTraceEvent(event, package, version, interface, msg);
1048 }
1049 if (strcmp(method, "transpose") == 0) {
1050 FunctionSpecificationMessage msg;
1051 msg.set_name("transpose");
1052 if (profiling_for_args) {
1053 if (!args) {
1054 LOG(WARNING) << "no argument passed";
1055 } else {
1056 switch (event) {
1057 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1058 case details::HidlInstrumentor::SERVER_API_ENTRY:
1059 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1060 {
1061 if ((*args).size() != 1) {
1062 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: transpose, event type: " << event;
1063 break;
1064 }
1065 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1066 ::android::hardware::tests::foo::V1_0::IFoo::StringMatrix5x3 *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::StringMatrix5x3*> ((*args)[0]);
1067 if (arg_val_0 != nullptr) {
1068 arg_0->set_type(TYPE_STRUCT);
1069 profile____android__hardware__tests__foo__V1_0__IFoo__StringMatrix5x3(arg_0, (*arg_val_0));
1070 } else {
1071 LOG(WARNING) << "argument 0 is null.";
1072 }
1073 break;
1074 }
1075 case details::HidlInstrumentor::CLIENT_API_EXIT:
1076 case details::HidlInstrumentor::SERVER_API_EXIT:
1077 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1078 {
1079 if ((*args).size() != 1) {
1080 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: transpose, event type: " << event;
1081 break;
1082 }
1083 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1084 ::android::hardware::tests::foo::V1_0::IFoo::StringMatrix3x5 *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::StringMatrix3x5*> ((*args)[0]);
1085 if (result_val_0 != nullptr) {
1086 result_0->set_type(TYPE_STRUCT);
1087 profile____android__hardware__tests__foo__V1_0__IFoo__StringMatrix3x5(result_0, (*result_val_0));
1088 } else {
1089 LOG(WARNING) << "return value 0 is null.";
1090 }
1091 break;
1092 }
1093 default:
1094 {
1095 LOG(WARNING) << "not supported. ";
1096 break;
1097 }
1098 }
1099 }
1100 }
1101 profiler.AddTraceEvent(event, package, version, interface, msg);
1102 }
1103 if (strcmp(method, "transpose2") == 0) {
1104 FunctionSpecificationMessage msg;
1105 msg.set_name("transpose2");
1106 if (profiling_for_args) {
1107 if (!args) {
1108 LOG(WARNING) << "no argument passed";
1109 } else {
1110 switch (event) {
1111 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1112 case details::HidlInstrumentor::SERVER_API_ENTRY:
1113 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1114 {
1115 if ((*args).size() != 1) {
1116 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: transpose2, event type: " << event;
1117 break;
1118 }
1119 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1120 ::android::hardware::hidl_array<::android::hardware::hidl_string, 5, 3> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<::android::hardware::hidl_string, 5, 3>*> ((*args)[0]);
1121 if (arg_val_0 != nullptr) {
1122 arg_0->set_type(TYPE_ARRAY);
1123 arg_0->set_vector_size(5);
1124 for (int arg_0_index = 0; arg_0_index < 5; arg_0_index++) {
1125 auto *arg_0_array_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
1126 arg_0_array_arg_0_index->set_type(TYPE_ARRAY);
1127 arg_0_array_arg_0_index->set_vector_size(3);
1128 for (int arg_0_array_arg_0_index_index = 0; arg_0_array_arg_0_index_index < 3; arg_0_array_arg_0_index_index++) {
1129 auto *arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index __attribute__((__unused__)) = arg_0_array_arg_0_index->add_vector_value();
1130 arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index->set_type(TYPE_STRING);
1131 arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index->mutable_string_value()->set_message((*arg_val_0)[arg_0_index][arg_0_array_arg_0_index_index].c_str());
1132 arg_0_array_arg_0_index_array_arg_0_array_arg_0_index_index->mutable_string_value()->set_length((*arg_val_0)[arg_0_index][arg_0_array_arg_0_index_index].size());
1133 }
1134 }
1135 } else {
1136 LOG(WARNING) << "argument 0 is null.";
1137 }
1138 break;
1139 }
1140 case details::HidlInstrumentor::CLIENT_API_EXIT:
1141 case details::HidlInstrumentor::SERVER_API_EXIT:
1142 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1143 {
1144 if ((*args).size() != 1) {
1145 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: transpose2, event type: " << event;
1146 break;
1147 }
1148 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1149 ::android::hardware::hidl_array<::android::hardware::hidl_string, 3, 5> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_array<::android::hardware::hidl_string, 3, 5>*> ((*args)[0]);
1150 if (result_val_0 != nullptr) {
1151 result_0->set_type(TYPE_ARRAY);
1152 result_0->set_vector_size(3);
1153 for (int result_0_index = 0; result_0_index < 3; result_0_index++) {
1154 auto *result_0_array_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1155 result_0_array_result_0_index->set_type(TYPE_ARRAY);
1156 result_0_array_result_0_index->set_vector_size(5);
1157 for (int result_0_array_result_0_index_index = 0; result_0_array_result_0_index_index < 5; result_0_array_result_0_index_index++) {
1158 auto *result_0_array_result_0_index_array_result_0_array_result_0_index_index __attribute__((__unused__)) = result_0_array_result_0_index->add_vector_value();
1159 result_0_array_result_0_index_array_result_0_array_result_0_index_index->set_type(TYPE_STRING);
1160 result_0_array_result_0_index_array_result_0_array_result_0_index_index->mutable_string_value()->set_message((*result_val_0)[result_0_index][result_0_array_result_0_index_index].c_str());
1161 result_0_array_result_0_index_array_result_0_array_result_0_index_index->mutable_string_value()->set_length((*result_val_0)[result_0_index][result_0_array_result_0_index_index].size());
1162 }
1163 }
1164 } else {
1165 LOG(WARNING) << "return value 0 is null.";
1166 }
1167 break;
1168 }
1169 default:
1170 {
1171 LOG(WARNING) << "not supported. ";
1172 break;
1173 }
1174 }
1175 }
1176 }
1177 profiler.AddTraceEvent(event, package, version, interface, msg);
1178 }
1179 if (strcmp(method, "sendVec") == 0) {
1180 FunctionSpecificationMessage msg;
1181 msg.set_name("sendVec");
1182 if (profiling_for_args) {
1183 if (!args) {
1184 LOG(WARNING) << "no argument passed";
1185 } else {
1186 switch (event) {
1187 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1188 case details::HidlInstrumentor::SERVER_API_ENTRY:
1189 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1190 {
1191 if ((*args).size() != 1) {
1192 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: sendVec, event type: " << event;
1193 break;
1194 }
1195 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1196 ::android::hardware::hidl_vec<uint8_t> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<uint8_t>*> ((*args)[0]);
1197 if (arg_val_0 != nullptr) {
1198 arg_0->set_type(TYPE_VECTOR);
1199 arg_0->set_vector_size((*arg_val_0).size());
1200 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
1201 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
1202 arg_0_vector_arg_0_index->set_type(TYPE_SCALAR);
1203 arg_0_vector_arg_0_index->mutable_scalar_value()->set_uint8_t((*arg_val_0)[arg_0_index]);
1204 }
1205 } else {
1206 LOG(WARNING) << "argument 0 is null.";
1207 }
1208 break;
1209 }
1210 case details::HidlInstrumentor::CLIENT_API_EXIT:
1211 case details::HidlInstrumentor::SERVER_API_EXIT:
1212 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1213 {
1214 if ((*args).size() != 1) {
1215 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: sendVec, event type: " << event;
1216 break;
1217 }
1218 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1219 ::android::hardware::hidl_vec<uint8_t> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<uint8_t>*> ((*args)[0]);
1220 if (result_val_0 != nullptr) {
1221 result_0->set_type(TYPE_VECTOR);
1222 result_0->set_vector_size((*result_val_0).size());
1223 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
1224 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1225 result_0_vector_result_0_index->set_type(TYPE_SCALAR);
1226 result_0_vector_result_0_index->mutable_scalar_value()->set_uint8_t((*result_val_0)[result_0_index]);
1227 }
1228 } else {
1229 LOG(WARNING) << "return value 0 is null.";
1230 }
1231 break;
1232 }
1233 default:
1234 {
1235 LOG(WARNING) << "not supported. ";
1236 break;
1237 }
1238 }
1239 }
1240 }
1241 profiler.AddTraceEvent(event, package, version, interface, msg);
1242 }
1243 if (strcmp(method, "sendVecVec") == 0) {
1244 FunctionSpecificationMessage msg;
1245 msg.set_name("sendVecVec");
1246 if (profiling_for_args) {
1247 if (!args) {
1248 LOG(WARNING) << "no argument passed";
1249 } else {
1250 switch (event) {
1251 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1252 case details::HidlInstrumentor::SERVER_API_ENTRY:
1253 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1254 {
1255 if ((*args).size() != 0) {
1256 LOG(ERROR) << "Number of arguments does not match. expect: 0, actual: " << (*args).size() << ", method name: sendVecVec, event type: " << event;
1257 break;
1258 }
1259 break;
1260 }
1261 case details::HidlInstrumentor::CLIENT_API_EXIT:
1262 case details::HidlInstrumentor::SERVER_API_EXIT:
1263 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1264 {
1265 if ((*args).size() != 1) {
1266 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: sendVecVec, event type: " << event;
1267 break;
1268 }
1269 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1270 ::android::hardware::hidl_vec<::android::hardware::hidl_vec<uint8_t>> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::hidl_vec<uint8_t>>*> ((*args)[0]);
1271 if (result_val_0 != nullptr) {
1272 result_0->set_type(TYPE_VECTOR);
1273 result_0->set_vector_size((*result_val_0).size());
1274 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
1275 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1276 result_0_vector_result_0_index->set_type(TYPE_VECTOR);
1277 result_0_vector_result_0_index->set_vector_size((*result_val_0)[result_0_index].size());
1278 for (int result_0_vector_result_0_index_index = 0; result_0_vector_result_0_index_index < (int)(*result_val_0)[result_0_index].size(); result_0_vector_result_0_index_index++) {
1279 auto *result_0_vector_result_0_index_vector_result_0_vector_result_0_index_index __attribute__((__unused__)) = result_0_vector_result_0_index->add_vector_value();
1280 result_0_vector_result_0_index_vector_result_0_vector_result_0_index_index->set_type(TYPE_SCALAR);
1281 result_0_vector_result_0_index_vector_result_0_vector_result_0_index_index->mutable_scalar_value()->set_uint8_t((*result_val_0)[result_0_index][result_0_vector_result_0_index_index]);
1282 }
1283 }
1284 } else {
1285 LOG(WARNING) << "return value 0 is null.";
1286 }
1287 break;
1288 }
1289 default:
1290 {
1291 LOG(WARNING) << "not supported. ";
1292 break;
1293 }
1294 }
1295 }
1296 }
1297 profiler.AddTraceEvent(event, package, version, interface, msg);
1298 }
1299 if (strcmp(method, "haveAVectorOfInterfaces") == 0) {
1300 FunctionSpecificationMessage msg;
1301 msg.set_name("haveAVectorOfInterfaces");
1302 if (profiling_for_args) {
1303 if (!args) {
1304 LOG(WARNING) << "no argument passed";
1305 } else {
1306 switch (event) {
1307 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1308 case details::HidlInstrumentor::SERVER_API_ENTRY:
1309 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1310 {
1311 if ((*args).size() != 1) {
1312 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAVectorOfInterfaces, event type: " << event;
1313 break;
1314 }
1315 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1316 ::android::hardware::hidl_vec<sp<::android::hardware::tests::foo::V1_0::ISimple>> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<sp<::android::hardware::tests::foo::V1_0::ISimple>>*> ((*args)[0]);
1317 if (arg_val_0 != nullptr) {
1318 arg_0->set_type(TYPE_VECTOR);
1319 arg_0->set_vector_size((*arg_val_0).size());
1320 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
1321 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
1322 arg_0_vector_arg_0_index->set_type(TYPE_HIDL_INTERFACE);
1323 arg_0_vector_arg_0_index->set_predefined_type("::android::hardware::tests::foo::V1_0::ISimple");
1324 }
1325 } else {
1326 LOG(WARNING) << "argument 0 is null.";
1327 }
1328 break;
1329 }
1330 case details::HidlInstrumentor::CLIENT_API_EXIT:
1331 case details::HidlInstrumentor::SERVER_API_EXIT:
1332 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1333 {
1334 if ((*args).size() != 1) {
1335 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAVectorOfInterfaces, event type: " << event;
1336 break;
1337 }
1338 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1339 ::android::hardware::hidl_vec<sp<::android::hardware::tests::foo::V1_0::ISimple>> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<sp<::android::hardware::tests::foo::V1_0::ISimple>>*> ((*args)[0]);
1340 if (result_val_0 != nullptr) {
1341 result_0->set_type(TYPE_VECTOR);
1342 result_0->set_vector_size((*result_val_0).size());
1343 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
1344 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1345 result_0_vector_result_0_index->set_type(TYPE_HIDL_INTERFACE);
1346 result_0_vector_result_0_index->set_predefined_type("::android::hardware::tests::foo::V1_0::ISimple");
1347 }
1348 } else {
1349 LOG(WARNING) << "return value 0 is null.";
1350 }
1351 break;
1352 }
1353 default:
1354 {
1355 LOG(WARNING) << "not supported. ";
1356 break;
1357 }
1358 }
1359 }
1360 }
1361 profiler.AddTraceEvent(event, package, version, interface, msg);
1362 }
1363 if (strcmp(method, "haveAVectorOfGenericInterfaces") == 0) {
1364 FunctionSpecificationMessage msg;
1365 msg.set_name("haveAVectorOfGenericInterfaces");
1366 if (profiling_for_args) {
1367 if (!args) {
1368 LOG(WARNING) << "no argument passed";
1369 } else {
1370 switch (event) {
1371 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1372 case details::HidlInstrumentor::SERVER_API_ENTRY:
1373 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1374 {
1375 if ((*args).size() != 1) {
1376 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAVectorOfGenericInterfaces, event type: " << event;
1377 break;
1378 }
1379 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1380 ::android::hardware::hidl_vec<sp<::android::hidl::base::V1_0::IBase>> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<sp<::android::hidl::base::V1_0::IBase>>*> ((*args)[0]);
1381 if (arg_val_0 != nullptr) {
1382 arg_0->set_type(TYPE_VECTOR);
1383 arg_0->set_vector_size((*arg_val_0).size());
1384 for (int arg_0_index = 0; arg_0_index < (int)(*arg_val_0).size(); arg_0_index++) {
1385 auto *arg_0_vector_arg_0_index __attribute__((__unused__)) = arg_0->add_vector_value();
1386 arg_0_vector_arg_0_index->set_type(TYPE_HIDL_INTERFACE);
1387 arg_0_vector_arg_0_index->set_predefined_type("::android::hidl::base::V1_0::IBase");
1388 }
1389 } else {
1390 LOG(WARNING) << "argument 0 is null.";
1391 }
1392 break;
1393 }
1394 case details::HidlInstrumentor::CLIENT_API_EXIT:
1395 case details::HidlInstrumentor::SERVER_API_EXIT:
1396 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1397 {
1398 if ((*args).size() != 1) {
1399 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAVectorOfGenericInterfaces, event type: " << event;
1400 break;
1401 }
1402 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1403 ::android::hardware::hidl_vec<sp<::android::hidl::base::V1_0::IBase>> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<sp<::android::hidl::base::V1_0::IBase>>*> ((*args)[0]);
1404 if (result_val_0 != nullptr) {
1405 result_0->set_type(TYPE_VECTOR);
1406 result_0->set_vector_size((*result_val_0).size());
1407 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
1408 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1409 result_0_vector_result_0_index->set_type(TYPE_HIDL_INTERFACE);
1410 result_0_vector_result_0_index->set_predefined_type("::android::hidl::base::V1_0::IBase");
1411 }
1412 } else {
1413 LOG(WARNING) << "return value 0 is null.";
1414 }
1415 break;
1416 }
1417 default:
1418 {
1419 LOG(WARNING) << "not supported. ";
1420 break;
1421 }
1422 }
1423 }
1424 }
1425 profiler.AddTraceEvent(event, package, version, interface, msg);
1426 }
1427 if (strcmp(method, "echoNullInterface") == 0) {
1428 FunctionSpecificationMessage msg;
1429 msg.set_name("echoNullInterface");
1430 if (profiling_for_args) {
1431 if (!args) {
1432 LOG(WARNING) << "no argument passed";
1433 } else {
1434 switch (event) {
1435 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1436 case details::HidlInstrumentor::SERVER_API_ENTRY:
1437 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1438 {
1439 if ((*args).size() != 1) {
1440 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: echoNullInterface, event type: " << event;
1441 break;
1442 }
1443 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1444 sp<::android::hardware::tests::foo::V1_0::IFooCallback> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<sp<::android::hardware::tests::foo::V1_0::IFooCallback>*> ((*args)[0]);
1445 if (arg_val_0 != nullptr) {
1446 arg_0->set_type(TYPE_HIDL_CALLBACK);
1447 arg_0->set_predefined_type("::android::hardware::tests::foo::V1_0::IFooCallback");
1448 } else {
1449 LOG(WARNING) << "argument 0 is null.";
1450 }
1451 break;
1452 }
1453 case details::HidlInstrumentor::CLIENT_API_EXIT:
1454 case details::HidlInstrumentor::SERVER_API_EXIT:
1455 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1456 {
1457 if ((*args).size() != 2) {
1458 LOG(ERROR) << "Number of return values does not match. expect: 2, actual: " << (*args).size() << ", method name: echoNullInterface, event type: " << event;
1459 break;
1460 }
1461 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1462 bool *result_val_0 __attribute__((__unused__)) = reinterpret_cast<bool*> ((*args)[0]);
1463 if (result_val_0 != nullptr) {
1464 result_0->set_type(TYPE_SCALAR);
1465 result_0->mutable_scalar_value()->set_bool_t((*result_val_0));
1466 } else {
1467 LOG(WARNING) << "return value 0 is null.";
1468 }
1469 auto *result_1 __attribute__((__unused__)) = msg.add_return_type_hidl();
1470 sp<::android::hardware::tests::foo::V1_0::IFooCallback> *result_val_1 __attribute__((__unused__)) = reinterpret_cast<sp<::android::hardware::tests::foo::V1_0::IFooCallback>*> ((*args)[1]);
1471 if (result_val_1 != nullptr) {
1472 result_1->set_type(TYPE_HIDL_CALLBACK);
1473 result_1->set_predefined_type("::android::hardware::tests::foo::V1_0::IFooCallback");
1474 } else {
1475 LOG(WARNING) << "return value 1 is null.";
1476 }
1477 break;
1478 }
1479 default:
1480 {
1481 LOG(WARNING) << "not supported. ";
1482 break;
1483 }
1484 }
1485 }
1486 }
1487 profiler.AddTraceEvent(event, package, version, interface, msg);
1488 }
1489 if (strcmp(method, "createMyHandle") == 0) {
1490 FunctionSpecificationMessage msg;
1491 msg.set_name("createMyHandle");
1492 if (profiling_for_args) {
1493 if (!args) {
1494 LOG(WARNING) << "no argument passed";
1495 } else {
1496 switch (event) {
1497 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1498 case details::HidlInstrumentor::SERVER_API_ENTRY:
1499 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1500 {
1501 if ((*args).size() != 0) {
1502 LOG(ERROR) << "Number of arguments does not match. expect: 0, actual: " << (*args).size() << ", method name: createMyHandle, event type: " << event;
1503 break;
1504 }
1505 break;
1506 }
1507 case details::HidlInstrumentor::CLIENT_API_EXIT:
1508 case details::HidlInstrumentor::SERVER_API_EXIT:
1509 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1510 {
1511 if ((*args).size() != 1) {
1512 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: createMyHandle, event type: " << event;
1513 break;
1514 }
1515 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1516 ::android::hardware::tests::foo::V1_0::IFoo::MyHandle *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::MyHandle*> ((*args)[0]);
1517 if (result_val_0 != nullptr) {
1518 result_0->set_type(TYPE_STRUCT);
1519 profile____android__hardware__tests__foo__V1_0__IFoo__MyHandle(result_0, (*result_val_0));
1520 } else {
1521 LOG(WARNING) << "return value 0 is null.";
1522 }
1523 break;
1524 }
1525 default:
1526 {
1527 LOG(WARNING) << "not supported. ";
1528 break;
1529 }
1530 }
1531 }
1532 }
1533 profiler.AddTraceEvent(event, package, version, interface, msg);
1534 }
1535 if (strcmp(method, "createHandles") == 0) {
1536 FunctionSpecificationMessage msg;
1537 msg.set_name("createHandles");
1538 if (profiling_for_args) {
1539 if (!args) {
1540 LOG(WARNING) << "no argument passed";
1541 } else {
1542 switch (event) {
1543 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1544 case details::HidlInstrumentor::SERVER_API_ENTRY:
1545 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1546 {
1547 if ((*args).size() != 1) {
1548 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: createHandles, event type: " << event;
1549 break;
1550 }
1551 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1552 uint32_t *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<uint32_t*> ((*args)[0]);
1553 if (arg_val_0 != nullptr) {
1554 arg_0->set_type(TYPE_SCALAR);
1555 arg_0->mutable_scalar_value()->set_uint32_t((*arg_val_0));
1556 } else {
1557 LOG(WARNING) << "argument 0 is null.";
1558 }
1559 break;
1560 }
1561 case details::HidlInstrumentor::CLIENT_API_EXIT:
1562 case details::HidlInstrumentor::SERVER_API_EXIT:
1563 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1564 {
1565 if ((*args).size() != 1) {
1566 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: createHandles, event type: " << event;
1567 break;
1568 }
1569 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1570 ::android::hardware::hidl_vec<::android::hardware::hidl_handle> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_vec<::android::hardware::hidl_handle>*> ((*args)[0]);
1571 if (result_val_0 != nullptr) {
1572 result_0->set_type(TYPE_VECTOR);
1573 result_0->set_vector_size((*result_val_0).size());
1574 for (int result_0_index = 0; result_0_index < (int)(*result_val_0).size(); result_0_index++) {
1575 auto *result_0_vector_result_0_index __attribute__((__unused__)) = result_0->add_vector_value();
1576 result_0_vector_result_0_index->set_type(TYPE_HANDLE);
1577 auto result_0_vector_result_0_index_h = (*result_val_0)[result_0_index].getNativeHandle();
1578 if (result_0_vector_result_0_index_h) {
1579 result_0_vector_result_0_index->mutable_handle_value()->set_version(result_0_vector_result_0_index_h->version);
1580 result_0_vector_result_0_index->mutable_handle_value()->set_num_ints(result_0_vector_result_0_index_h->numInts);
1581 result_0_vector_result_0_index->mutable_handle_value()->set_num_fds(result_0_vector_result_0_index_h->numFds);
1582 for (int i = 0; i < result_0_vector_result_0_index_h->numInts + result_0_vector_result_0_index_h->numFds; i++) {
1583 if(i < result_0_vector_result_0_index_h->numFds) {
1584 auto* fd_val_i = result_0_vector_result_0_index->mutable_handle_value()->add_fd_val();
1585 char filePath[PATH_MAX];
1586 string procPath = "/proc/self/fd/" + to_string(result_0_vector_result_0_index_h->data[i]);
1587 ssize_t r = readlink(procPath.c_str(), filePath, sizeof(filePath));
1588 if (r == -1) {
1589 LOG(ERROR) << "Unable to get file path";
1590 continue;
1591 }
1592 filePath[r] = '\0';
1593 fd_val_i->set_file_name(filePath);
1594 struct stat statbuf;
1595 fstat(result_0_vector_result_0_index_h->data[i], &statbuf);
1596 fd_val_i->set_mode(statbuf.st_mode);
1597 if (S_ISREG(statbuf.st_mode) || S_ISDIR(statbuf.st_mode)) {
1598 fd_val_i->set_type(S_ISREG(statbuf.st_mode)? FILE_TYPE: DIR_TYPE);
1599 int flags = fcntl(result_0_vector_result_0_index_h->data[i], F_GETFL);
1600 fd_val_i->set_flags(flags);
1601 }
1602 else if (S_ISCHR(statbuf.st_mode) || S_ISBLK(statbuf.st_mode)) {
1603 fd_val_i->set_type(DEV_TYPE);
1604 if (strcmp(filePath, "/dev/ashmem") == 0) {
1605 int size = ashmem_get_size_region(result_0_vector_result_0_index_h->data[i]);
1606 fd_val_i->mutable_memory()->set_size(size);
1607 }
1608 }
1609 else if (S_ISFIFO(statbuf.st_mode)){
1610 fd_val_i->set_type(PIPE_TYPE);
1611 }
1612 else if (S_ISSOCK(statbuf.st_mode)) {
1613 fd_val_i->set_type(SOCKET_TYPE);
1614 }
1615 else {
1616 fd_val_i->set_type(LINK_TYPE);
1617 }
1618 } else {
1619 result_0_vector_result_0_index->mutable_handle_value()->add_int_val(result_0_vector_result_0_index_h->data[i]);
1620 }
1621 }
1622 } else {
1623 LOG(WARNING) << "null handle";
1624 result_0_vector_result_0_index->mutable_handle_value()->set_hidl_handle_address(0);
1625 }
1626 }
1627 } else {
1628 LOG(WARNING) << "return value 0 is null.";
1629 }
1630 break;
1631 }
1632 default:
1633 {
1634 LOG(WARNING) << "not supported. ";
1635 break;
1636 }
1637 }
1638 }
1639 }
1640 profiler.AddTraceEvent(event, package, version, interface, msg);
1641 }
1642 if (strcmp(method, "closeHandles") == 0) {
1643 FunctionSpecificationMessage msg;
1644 msg.set_name("closeHandles");
1645 if (profiling_for_args) {
1646 if (!args) {
1647 LOG(WARNING) << "no argument passed";
1648 } else {
1649 switch (event) {
1650 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1651 case details::HidlInstrumentor::SERVER_API_ENTRY:
1652 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1653 {
1654 if ((*args).size() != 0) {
1655 LOG(ERROR) << "Number of arguments does not match. expect: 0, actual: " << (*args).size() << ", method name: closeHandles, event type: " << event;
1656 break;
1657 }
1658 break;
1659 }
1660 case details::HidlInstrumentor::CLIENT_API_EXIT:
1661 case details::HidlInstrumentor::SERVER_API_EXIT:
1662 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1663 {
1664 if ((*args).size() != 0) {
1665 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: closeHandles, event type: " << event;
1666 break;
1667 }
1668 break;
1669 }
1670 default:
1671 {
1672 LOG(WARNING) << "not supported. ";
1673 break;
1674 }
1675 }
1676 }
1677 }
1678 profiler.AddTraceEvent(event, package, version, interface, msg);
1679 }
1680 if (strcmp(method, "repeatWithFmq") == 0) {
1681 FunctionSpecificationMessage msg;
1682 msg.set_name("repeatWithFmq");
1683 if (profiling_for_args) {
1684 if (!args) {
1685 LOG(WARNING) << "no argument passed";
1686 } else {
1687 switch (event) {
1688 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1689 case details::HidlInstrumentor::SERVER_API_ENTRY:
1690 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1691 {
1692 if ((*args).size() != 1) {
1693 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: repeatWithFmq, event type: " << event;
1694 break;
1695 }
1696 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1697 ::android::hardware::tests::foo::V1_0::IFoo::WithFmq *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::WithFmq*> ((*args)[0]);
1698 if (arg_val_0 != nullptr) {
1699 arg_0->set_type(TYPE_STRUCT);
1700 profile____android__hardware__tests__foo__V1_0__IFoo__WithFmq(arg_0, (*arg_val_0));
1701 } else {
1702 LOG(WARNING) << "argument 0 is null.";
1703 }
1704 break;
1705 }
1706 case details::HidlInstrumentor::CLIENT_API_EXIT:
1707 case details::HidlInstrumentor::SERVER_API_EXIT:
1708 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1709 {
1710 if ((*args).size() != 1) {
1711 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: repeatWithFmq, event type: " << event;
1712 break;
1713 }
1714 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1715 ::android::hardware::tests::foo::V1_0::IFoo::WithFmq *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::WithFmq*> ((*args)[0]);
1716 if (result_val_0 != nullptr) {
1717 result_0->set_type(TYPE_STRUCT);
1718 profile____android__hardware__tests__foo__V1_0__IFoo__WithFmq(result_0, (*result_val_0));
1719 } else {
1720 LOG(WARNING) << "return value 0 is null.";
1721 }
1722 break;
1723 }
1724 default:
1725 {
1726 LOG(WARNING) << "not supported. ";
1727 break;
1728 }
1729 }
1730 }
1731 }
1732 profiler.AddTraceEvent(event, package, version, interface, msg);
1733 }
1734 if (strcmp(method, "thisIsNew") == 0) {
1735 FunctionSpecificationMessage msg;
1736 msg.set_name("thisIsNew");
1737 if (profiling_for_args) {
1738 if (!args) {
1739 LOG(WARNING) << "no argument passed";
1740 } else {
1741 switch (event) {
1742 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1743 case details::HidlInstrumentor::SERVER_API_ENTRY:
1744 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1745 {
1746 if ((*args).size() != 0) {
1747 LOG(ERROR) << "Number of arguments does not match. expect: 0, actual: " << (*args).size() << ", method name: thisIsNew, event type: " << event;
1748 break;
1749 }
1750 break;
1751 }
1752 case details::HidlInstrumentor::CLIENT_API_EXIT:
1753 case details::HidlInstrumentor::SERVER_API_EXIT:
1754 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1755 {
1756 if ((*args).size() != 0) {
1757 LOG(ERROR) << "Number of return values does not match. expect: 0, actual: " << (*args).size() << ", method name: thisIsNew, event type: " << event;
1758 break;
1759 }
1760 break;
1761 }
1762 default:
1763 {
1764 LOG(WARNING) << "not supported. ";
1765 break;
1766 }
1767 }
1768 }
1769 }
1770 profiler.AddTraceEvent(event, package, version, interface, msg);
1771 }
1772 if (strcmp(method, "expectNullHandle") == 0) {
1773 FunctionSpecificationMessage msg;
1774 msg.set_name("expectNullHandle");
1775 if (profiling_for_args) {
1776 if (!args) {
1777 LOG(WARNING) << "no argument passed";
1778 } else {
1779 switch (event) {
1780 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1781 case details::HidlInstrumentor::SERVER_API_ENTRY:
1782 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1783 {
1784 if ((*args).size() != 2) {
1785 LOG(ERROR) << "Number of arguments does not match. expect: 2, actual: " << (*args).size() << ", method name: expectNullHandle, event type: " << event;
1786 break;
1787 }
1788 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1789 ::android::hardware::hidl_handle *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::hidl_handle*> ((*args)[0]);
1790 if (arg_val_0 != nullptr) {
1791 arg_0->set_type(TYPE_HANDLE);
1792 auto arg_0_h = (*arg_val_0).getNativeHandle();
1793 if (arg_0_h) {
1794 arg_0->mutable_handle_value()->set_version(arg_0_h->version);
1795 arg_0->mutable_handle_value()->set_num_ints(arg_0_h->numInts);
1796 arg_0->mutable_handle_value()->set_num_fds(arg_0_h->numFds);
1797 for (int i = 0; i < arg_0_h->numInts + arg_0_h->numFds; i++) {
1798 if(i < arg_0_h->numFds) {
1799 auto* fd_val_i = arg_0->mutable_handle_value()->add_fd_val();
1800 char filePath[PATH_MAX];
1801 string procPath = "/proc/self/fd/" + to_string(arg_0_h->data[i]);
1802 ssize_t r = readlink(procPath.c_str(), filePath, sizeof(filePath));
1803 if (r == -1) {
1804 LOG(ERROR) << "Unable to get file path";
1805 continue;
1806 }
1807 filePath[r] = '\0';
1808 fd_val_i->set_file_name(filePath);
1809 struct stat statbuf;
1810 fstat(arg_0_h->data[i], &statbuf);
1811 fd_val_i->set_mode(statbuf.st_mode);
1812 if (S_ISREG(statbuf.st_mode) || S_ISDIR(statbuf.st_mode)) {
1813 fd_val_i->set_type(S_ISREG(statbuf.st_mode)? FILE_TYPE: DIR_TYPE);
1814 int flags = fcntl(arg_0_h->data[i], F_GETFL);
1815 fd_val_i->set_flags(flags);
1816 }
1817 else if (S_ISCHR(statbuf.st_mode) || S_ISBLK(statbuf.st_mode)) {
1818 fd_val_i->set_type(DEV_TYPE);
1819 if (strcmp(filePath, "/dev/ashmem") == 0) {
1820 int size = ashmem_get_size_region(arg_0_h->data[i]);
1821 fd_val_i->mutable_memory()->set_size(size);
1822 }
1823 }
1824 else if (S_ISFIFO(statbuf.st_mode)){
1825 fd_val_i->set_type(PIPE_TYPE);
1826 }
1827 else if (S_ISSOCK(statbuf.st_mode)) {
1828 fd_val_i->set_type(SOCKET_TYPE);
1829 }
1830 else {
1831 fd_val_i->set_type(LINK_TYPE);
1832 }
1833 } else {
1834 arg_0->mutable_handle_value()->add_int_val(arg_0_h->data[i]);
1835 }
1836 }
1837 } else {
1838 LOG(WARNING) << "null handle";
1839 arg_0->mutable_handle_value()->set_hidl_handle_address(0);
1840 }
1841 } else {
1842 LOG(WARNING) << "argument 0 is null.";
1843 }
1844 auto *arg_1 __attribute__((__unused__)) = msg.add_arg();
1845 ::android::hardware::tests::foo::V1_0::Abc *arg_val_1 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::Abc*> ((*args)[1]);
1846 if (arg_val_1 != nullptr) {
1847 arg_1->set_type(TYPE_STRUCT);
1848 profile____android__hardware__tests__foo__V1_0__Abc(arg_1, (*arg_val_1));
1849 } else {
1850 LOG(WARNING) << "argument 1 is null.";
1851 }
1852 break;
1853 }
1854 case details::HidlInstrumentor::CLIENT_API_EXIT:
1855 case details::HidlInstrumentor::SERVER_API_EXIT:
1856 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1857 {
1858 if ((*args).size() != 2) {
1859 LOG(ERROR) << "Number of return values does not match. expect: 2, actual: " << (*args).size() << ", method name: expectNullHandle, event type: " << event;
1860 break;
1861 }
1862 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1863 bool *result_val_0 __attribute__((__unused__)) = reinterpret_cast<bool*> ((*args)[0]);
1864 if (result_val_0 != nullptr) {
1865 result_0->set_type(TYPE_SCALAR);
1866 result_0->mutable_scalar_value()->set_bool_t((*result_val_0));
1867 } else {
1868 LOG(WARNING) << "return value 0 is null.";
1869 }
1870 auto *result_1 __attribute__((__unused__)) = msg.add_return_type_hidl();
1871 bool *result_val_1 __attribute__((__unused__)) = reinterpret_cast<bool*> ((*args)[1]);
1872 if (result_val_1 != nullptr) {
1873 result_1->set_type(TYPE_SCALAR);
1874 result_1->mutable_scalar_value()->set_bool_t((*result_val_1));
1875 } else {
1876 LOG(WARNING) << "return value 1 is null.";
1877 }
1878 break;
1879 }
1880 default:
1881 {
1882 LOG(WARNING) << "not supported. ";
1883 break;
1884 }
1885 }
1886 }
1887 }
1888 profiler.AddTraceEvent(event, package, version, interface, msg);
1889 }
1890 if (strcmp(method, "takeAMask") == 0) {
1891 FunctionSpecificationMessage msg;
1892 msg.set_name("takeAMask");
1893 if (profiling_for_args) {
1894 if (!args) {
1895 LOG(WARNING) << "no argument passed";
1896 } else {
1897 switch (event) {
1898 case details::HidlInstrumentor::CLIENT_API_ENTRY:
1899 case details::HidlInstrumentor::SERVER_API_ENTRY:
1900 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
1901 {
1902 if ((*args).size() != 4) {
1903 LOG(ERROR) << "Number of arguments does not match. expect: 4, actual: " << (*args).size() << ", method name: takeAMask, event type: " << event;
1904 break;
1905 }
1906 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
1907 ::android::hardware::tests::foo::V1_0::IFoo::BitField *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::BitField*> ((*args)[0]);
1908 if (arg_val_0 != nullptr) {
1909 arg_0->set_type(TYPE_ENUM);
1910 profile____android__hardware__tests__foo__V1_0__IFoo__BitField(arg_0, (*arg_val_0));
1911 } else {
1912 LOG(WARNING) << "argument 0 is null.";
1913 }
1914 auto *arg_1 __attribute__((__unused__)) = msg.add_arg();
1915 uint8_t *arg_val_1 __attribute__((__unused__)) = reinterpret_cast<uint8_t*> ((*args)[1]);
1916 if (arg_val_1 != nullptr) {
1917 arg_1->set_type(TYPE_MASK);
1918 arg_1->set_scalar_type("uint8_t");
1919 arg_1->mutable_scalar_value()->set_uint8_t((*arg_val_1));
1920 } else {
1921 LOG(WARNING) << "argument 1 is null.";
1922 }
1923 auto *arg_2 __attribute__((__unused__)) = msg.add_arg();
1924 ::android::hardware::tests::foo::V1_0::IFoo::MyMask *arg_val_2 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::MyMask*> ((*args)[2]);
1925 if (arg_val_2 != nullptr) {
1926 arg_2->set_type(TYPE_STRUCT);
1927 profile____android__hardware__tests__foo__V1_0__IFoo__MyMask(arg_2, (*arg_val_2));
1928 } else {
1929 LOG(WARNING) << "argument 2 is null.";
1930 }
1931 auto *arg_3 __attribute__((__unused__)) = msg.add_arg();
1932 uint8_t *arg_val_3 __attribute__((__unused__)) = reinterpret_cast<uint8_t*> ((*args)[3]);
1933 if (arg_val_3 != nullptr) {
1934 arg_3->set_type(TYPE_MASK);
1935 arg_3->set_scalar_type("uint8_t");
1936 arg_3->mutable_scalar_value()->set_uint8_t((*arg_val_3));
1937 } else {
1938 LOG(WARNING) << "argument 3 is null.";
1939 }
1940 break;
1941 }
1942 case details::HidlInstrumentor::CLIENT_API_EXIT:
1943 case details::HidlInstrumentor::SERVER_API_EXIT:
1944 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
1945 {
1946 if ((*args).size() != 4) {
1947 LOG(ERROR) << "Number of return values does not match. expect: 4, actual: " << (*args).size() << ", method name: takeAMask, event type: " << event;
1948 break;
1949 }
1950 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
1951 ::android::hardware::tests::foo::V1_0::IFoo::BitField *result_val_0 __attribute__((__unused__)) = reinterpret_cast<::android::hardware::tests::foo::V1_0::IFoo::BitField*> ((*args)[0]);
1952 if (result_val_0 != nullptr) {
1953 result_0->set_type(TYPE_ENUM);
1954 profile____android__hardware__tests__foo__V1_0__IFoo__BitField(result_0, (*result_val_0));
1955 } else {
1956 LOG(WARNING) << "return value 0 is null.";
1957 }
1958 auto *result_1 __attribute__((__unused__)) = msg.add_return_type_hidl();
1959 uint8_t *result_val_1 __attribute__((__unused__)) = reinterpret_cast<uint8_t*> ((*args)[1]);
1960 if (result_val_1 != nullptr) {
1961 result_1->set_type(TYPE_SCALAR);
1962 result_1->mutable_scalar_value()->set_uint8_t((*result_val_1));
1963 } else {
1964 LOG(WARNING) << "return value 1 is null.";
1965 }
1966 auto *result_2 __attribute__((__unused__)) = msg.add_return_type_hidl();
1967 uint8_t *result_val_2 __attribute__((__unused__)) = reinterpret_cast<uint8_t*> ((*args)[2]);
1968 if (result_val_2 != nullptr) {
1969 result_2->set_type(TYPE_SCALAR);
1970 result_2->mutable_scalar_value()->set_uint8_t((*result_val_2));
1971 } else {
1972 LOG(WARNING) << "return value 2 is null.";
1973 }
1974 auto *result_3 __attribute__((__unused__)) = msg.add_return_type_hidl();
1975 uint8_t *result_val_3 __attribute__((__unused__)) = reinterpret_cast<uint8_t*> ((*args)[3]);
1976 if (result_val_3 != nullptr) {
1977 result_3->set_type(TYPE_SCALAR);
1978 result_3->mutable_scalar_value()->set_uint8_t((*result_val_3));
1979 } else {
1980 LOG(WARNING) << "return value 3 is null.";
1981 }
1982 break;
1983 }
1984 default:
1985 {
1986 LOG(WARNING) << "not supported. ";
1987 break;
1988 }
1989 }
1990 }
1991 }
1992 profiler.AddTraceEvent(event, package, version, interface, msg);
1993 }
1994 if (strcmp(method, "haveAInterface") == 0) {
1995 FunctionSpecificationMessage msg;
1996 msg.set_name("haveAInterface");
1997 if (profiling_for_args) {
1998 if (!args) {
1999 LOG(WARNING) << "no argument passed";
2000 } else {
2001 switch (event) {
2002 case details::HidlInstrumentor::CLIENT_API_ENTRY:
2003 case details::HidlInstrumentor::SERVER_API_ENTRY:
2004 case details::HidlInstrumentor::PASSTHROUGH_ENTRY:
2005 {
2006 if ((*args).size() != 1) {
2007 LOG(ERROR) << "Number of arguments does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAInterface, event type: " << event;
2008 break;
2009 }
2010 auto *arg_0 __attribute__((__unused__)) = msg.add_arg();
2011 sp<::android::hardware::tests::foo::V1_0::ISimple> *arg_val_0 __attribute__((__unused__)) = reinterpret_cast<sp<::android::hardware::tests::foo::V1_0::ISimple>*> ((*args)[0]);
2012 if (arg_val_0 != nullptr) {
2013 arg_0->set_type(TYPE_HIDL_INTERFACE);
2014 arg_0->set_predefined_type("::android::hardware::tests::foo::V1_0::ISimple");
2015 } else {
2016 LOG(WARNING) << "argument 0 is null.";
2017 }
2018 break;
2019 }
2020 case details::HidlInstrumentor::CLIENT_API_EXIT:
2021 case details::HidlInstrumentor::SERVER_API_EXIT:
2022 case details::HidlInstrumentor::PASSTHROUGH_EXIT:
2023 {
2024 if ((*args).size() != 1) {
2025 LOG(ERROR) << "Number of return values does not match. expect: 1, actual: " << (*args).size() << ", method name: haveAInterface, event type: " << event;
2026 break;
2027 }
2028 auto *result_0 __attribute__((__unused__)) = msg.add_return_type_hidl();
2029 sp<::android::hardware::tests::foo::V1_0::ISimple> *result_val_0 __attribute__((__unused__)) = reinterpret_cast<sp<::android::hardware::tests::foo::V1_0::ISimple>*> ((*args)[0]);
2030 if (result_val_0 != nullptr) {
2031 result_0->set_type(TYPE_HIDL_INTERFACE);
2032 result_0->set_predefined_type("::android::hardware::tests::foo::V1_0::ISimple");
2033 } else {
2034 LOG(WARNING) << "return value 0 is null.";
2035 }
2036 break;
2037 }
2038 default:
2039 {
2040 LOG(WARNING) << "not supported. ";
2041 break;
2042 }
2043 }
2044 }
2045 }
2046 profiler.AddTraceEvent(event, package, version, interface, msg);
2047 }
2048 }
2049
2050 } // namespace vts
2051 } // namespace android
2052