1 #include "android/hardware/tests/msgq/1.0/TestMsgQ.vts.h" 2 #include "vts_measurement.h" 3 #include <android-base/logging.h> 4 #include <android/hidl/allocator/1.0/IAllocator.h> 5 #include <fmq/MessageQueue.h> 6 #include <sys/stat.h> 7 #include <unistd.h> 8 9 10 using namespace android::hardware::tests::msgq::V1_0; 11 namespace android { 12 namespace vts { 13 ::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits EnumValue__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(const ScalarDataValueMessage& arg) { 14 return (::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits) arg.uint32_t(); 15 } 16 uint32_t Random__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits() { 17 uint32_t choice = (uint32_t) rand() / 2; 18 if (choice == (uint32_t) 1UL) return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY); 19 if (choice == (uint32_t) 2UL) return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_FULL); 20 return static_cast<uint32_t>(::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY); 21 } 22 bool Verify__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(const VariableSpecificationMessage& expected_result __attribute__((__unused__)), const VariableSpecificationMessage& actual_result __attribute__((__unused__))){ 23 if (actual_result.scalar_value().uint32_t() != expected_result.scalar_value().uint32_t()) { return false; } 24 return true; 25 } 26 27 void SetResult__android__hardware__tests__msgq__V1_0__ITestMsgQ__EventFlagBits(VariableSpecificationMessage* result_msg, ::android::hardware::tests::msgq::V1_0::ITestMsgQ::EventFlagBits result_value __attribute__((__unused__))){ 28 result_msg->set_type(TYPE_ENUM); 29 result_msg->set_scalar_type("uint32_t"); 30 result_msg->mutable_scalar_value()->set_uint32_t(static_cast<uint32_t>(result_value)); 31 } 32 33 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::GetService(bool get_stub, const char* service_name) { 34 static bool initialized = false; 35 if (!initialized) { 36 LOG(INFO) << "HIDL getService"; 37 if (service_name) { 38 LOG(INFO) << " - service name: " << service_name; 39 } 40 hw_binder_proxy_ = ::android::hardware::tests::msgq::V1_0::ITestMsgQ::getService(service_name, get_stub); 41 if (hw_binder_proxy_ == nullptr) { 42 LOG(ERROR) << "getService() returned a null pointer."; 43 return false; 44 } 45 LOG(DEBUG) << "hw_binder_proxy_ = " << hw_binder_proxy_.get(); 46 initialized = true; 47 } 48 return true; 49 } 50 51 52 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::configureFmqSyncReadWrite( 53 std::function<void(bool arg0,const ::android::hardware::MQDescriptorSync<uint16_t>& arg1)> cb) { 54 LOG(INFO) << "configureFmqSyncReadWrite called"; 55 AndroidSystemCallbackRequestMessage callback_message; 56 callback_message.set_id(GetCallbackID("configureFmqSyncReadWrite")); 57 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::configureFmqSyncReadWrite"); 58 RpcCallToAgent(callback_message, callback_socket_name_); 59 cb(static_cast<bool>(0), ::android::hardware::MQDescriptorSync<uint16_t>()); 60 return ::android::hardware::Void(); 61 } 62 63 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::getFmqUnsyncWrite( 64 bool arg0 __attribute__((__unused__)), std::function<void(bool arg0,const ::android::hardware::MQDescriptorUnsync<uint16_t>& arg1)> cb) { 65 LOG(INFO) << "getFmqUnsyncWrite called"; 66 AndroidSystemCallbackRequestMessage callback_message; 67 callback_message.set_id(GetCallbackID("getFmqUnsyncWrite")); 68 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::getFmqUnsyncWrite"); 69 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 70 var_msg0->set_type(TYPE_SCALAR); 71 var_msg0->set_scalar_type("bool_t"); 72 var_msg0->mutable_scalar_value()->set_bool_t(arg0); 73 RpcCallToAgent(callback_message, callback_socket_name_); 74 cb(static_cast<bool>(0), ::android::hardware::MQDescriptorUnsync<uint16_t>()); 75 return ::android::hardware::Void(); 76 } 77 78 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqSync( 79 int32_t arg0 __attribute__((__unused__))) { 80 LOG(INFO) << "requestWriteFmqSync called"; 81 AndroidSystemCallbackRequestMessage callback_message; 82 callback_message.set_id(GetCallbackID("requestWriteFmqSync")); 83 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqSync"); 84 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 85 var_msg0->set_type(TYPE_SCALAR); 86 var_msg0->set_scalar_type("int32_t"); 87 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 88 RpcCallToAgent(callback_message, callback_socket_name_); 89 return static_cast<bool>(0); 90 } 91 92 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqSync( 93 int32_t arg0 __attribute__((__unused__))) { 94 LOG(INFO) << "requestReadFmqSync called"; 95 AndroidSystemCallbackRequestMessage callback_message; 96 callback_message.set_id(GetCallbackID("requestReadFmqSync")); 97 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqSync"); 98 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 99 var_msg0->set_type(TYPE_SCALAR); 100 var_msg0->set_scalar_type("int32_t"); 101 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 102 RpcCallToAgent(callback_message, callback_socket_name_); 103 return static_cast<bool>(0); 104 } 105 106 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqUnsync( 107 int32_t arg0 __attribute__((__unused__))) { 108 LOG(INFO) << "requestWriteFmqUnsync called"; 109 AndroidSystemCallbackRequestMessage callback_message; 110 callback_message.set_id(GetCallbackID("requestWriteFmqUnsync")); 111 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestWriteFmqUnsync"); 112 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 113 var_msg0->set_type(TYPE_SCALAR); 114 var_msg0->set_scalar_type("int32_t"); 115 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 116 RpcCallToAgent(callback_message, callback_socket_name_); 117 return static_cast<bool>(0); 118 } 119 120 ::android::hardware::Return<bool> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqUnsync( 121 int32_t arg0 __attribute__((__unused__))) { 122 LOG(INFO) << "requestReadFmqUnsync called"; 123 AndroidSystemCallbackRequestMessage callback_message; 124 callback_message.set_id(GetCallbackID("requestReadFmqUnsync")); 125 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestReadFmqUnsync"); 126 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 127 var_msg0->set_type(TYPE_SCALAR); 128 var_msg0->set_scalar_type("int32_t"); 129 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 130 RpcCallToAgent(callback_message, callback_socket_name_); 131 return static_cast<bool>(0); 132 } 133 134 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingRead( 135 int32_t arg0 __attribute__((__unused__))) { 136 LOG(INFO) << "requestBlockingRead called"; 137 AndroidSystemCallbackRequestMessage callback_message; 138 callback_message.set_id(GetCallbackID("requestBlockingRead")); 139 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingRead"); 140 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 141 var_msg0->set_type(TYPE_SCALAR); 142 var_msg0->set_scalar_type("int32_t"); 143 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 144 RpcCallToAgent(callback_message, callback_socket_name_); 145 return ::android::hardware::Void(); 146 } 147 148 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadDefaultEventFlagBits( 149 int32_t arg0 __attribute__((__unused__))) { 150 LOG(INFO) << "requestBlockingReadDefaultEventFlagBits called"; 151 AndroidSystemCallbackRequestMessage callback_message; 152 callback_message.set_id(GetCallbackID("requestBlockingReadDefaultEventFlagBits")); 153 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadDefaultEventFlagBits"); 154 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 155 var_msg0->set_type(TYPE_SCALAR); 156 var_msg0->set_scalar_type("int32_t"); 157 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 158 RpcCallToAgent(callback_message, callback_socket_name_); 159 return ::android::hardware::Void(); 160 } 161 162 ::android::hardware::Return<void> Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadRepeat( 163 int32_t arg0 __attribute__((__unused__)), 164 int32_t arg1 __attribute__((__unused__))) { 165 LOG(INFO) << "requestBlockingReadRepeat called"; 166 AndroidSystemCallbackRequestMessage callback_message; 167 callback_message.set_id(GetCallbackID("requestBlockingReadRepeat")); 168 callback_message.set_name("Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ::requestBlockingReadRepeat"); 169 VariableSpecificationMessage* var_msg0 = callback_message.add_arg(); 170 var_msg0->set_type(TYPE_SCALAR); 171 var_msg0->set_scalar_type("int32_t"); 172 var_msg0->mutable_scalar_value()->set_int32_t(arg0); 173 VariableSpecificationMessage* var_msg1 = callback_message.add_arg(); 174 var_msg1->set_type(TYPE_SCALAR); 175 var_msg1->set_scalar_type("int32_t"); 176 var_msg1->mutable_scalar_value()->set_int32_t(arg1); 177 RpcCallToAgent(callback_message, callback_socket_name_); 178 return ::android::hardware::Void(); 179 } 180 181 sp<::android::hardware::tests::msgq::V1_0::ITestMsgQ> VtsFuzzerCreateVts_android_hardware_tests_msgq_V1_0_ITestMsgQ(const string& callback_socket_name) { 182 static sp<::android::hardware::tests::msgq::V1_0::ITestMsgQ> result; 183 result = new Vts_android_hardware_tests_msgq_V1_0_ITestMsgQ(callback_socket_name); 184 return result; 185 } 186 187 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::Fuzz( 188 FunctionSpecificationMessage* /*func_msg*/, 189 void** /*result*/, const string& /*callback_socket_name*/) { 190 return true; 191 } 192 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::GetAttribute( 193 FunctionSpecificationMessage* /*func_msg*/, 194 void** /*result*/) { 195 LOG(ERROR) << "attribute not found."; 196 return false; 197 } 198 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::CallFunction( 199 const FunctionSpecificationMessage& func_msg, 200 const string& callback_socket_name __attribute__((__unused__)), 201 FunctionSpecificationMessage* result_msg) { 202 const char* func_name = func_msg.name().c_str(); 203 if (hw_binder_proxy_ == nullptr) { 204 LOG(ERROR) << "hw_binder_proxy_ is null. "; 205 return false; 206 } 207 if (!strcmp(func_name, "configureFmqSyncReadWrite")) { 208 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 209 bool result0; 210 std::unique_ptr<::android::hardware::MQDescriptorSync<uint16_t>> result1; 211 hw_binder_proxy_->configureFmqSyncReadWrite([&](bool arg0,const ::android::hardware::MQDescriptorSync<uint16_t>& arg1){ 212 LOG(INFO) << "callback configureFmqSyncReadWrite called"; 213 result0 = arg0; 214 result1.reset(new (std::nothrow) ::android::hardware::MQDescriptorSync<uint16_t>(arg1)); 215 }); 216 result_msg->set_name("configureFmqSyncReadWrite"); 217 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 218 result_val_0->set_type(TYPE_SCALAR); 219 result_val_0->set_scalar_type("bool_t"); 220 result_val_0->mutable_scalar_value()->set_bool_t(result0); 221 VariableSpecificationMessage* result_val_1 = result_msg->add_return_type_hidl(); 222 result_val_1->set_type(TYPE_FMQ_SYNC); 223 /* ERROR: TYPE_FMQ_SYNC is not supported yet. */ 224 return true; 225 } 226 if (!strcmp(func_name, "getFmqUnsyncWrite")) { 227 bool arg0 = 0; 228 arg0 = func_msg.arg(0).scalar_value().bool_t(); 229 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 230 bool result0; 231 std::unique_ptr<::android::hardware::MQDescriptorUnsync<uint16_t>> result1; 232 hw_binder_proxy_->getFmqUnsyncWrite(arg0, [&](bool arg0,const ::android::hardware::MQDescriptorUnsync<uint16_t>& arg1){ 233 LOG(INFO) << "callback getFmqUnsyncWrite called"; 234 result0 = arg0; 235 result1.reset(new (std::nothrow) ::android::hardware::MQDescriptorUnsync<uint16_t>(arg1)); 236 }); 237 result_msg->set_name("getFmqUnsyncWrite"); 238 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 239 result_val_0->set_type(TYPE_SCALAR); 240 result_val_0->set_scalar_type("bool_t"); 241 result_val_0->mutable_scalar_value()->set_bool_t(result0); 242 VariableSpecificationMessage* result_val_1 = result_msg->add_return_type_hidl(); 243 result_val_1->set_type(TYPE_FMQ_UNSYNC); 244 /* ERROR: TYPE_FMQ_UNSYNC is not supported yet. */ 245 return true; 246 } 247 if (!strcmp(func_name, "requestWriteFmqSync")) { 248 int32_t arg0 = 0; 249 arg0 = func_msg.arg(0).scalar_value().int32_t(); 250 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 251 bool result0; 252 result0 = hw_binder_proxy_->requestWriteFmqSync(arg0); 253 result_msg->set_name("requestWriteFmqSync"); 254 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 255 result_val_0->set_type(TYPE_SCALAR); 256 result_val_0->set_scalar_type("bool_t"); 257 result_val_0->mutable_scalar_value()->set_bool_t(result0); 258 return true; 259 } 260 if (!strcmp(func_name, "requestReadFmqSync")) { 261 int32_t arg0 = 0; 262 arg0 = func_msg.arg(0).scalar_value().int32_t(); 263 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 264 bool result0; 265 result0 = hw_binder_proxy_->requestReadFmqSync(arg0); 266 result_msg->set_name("requestReadFmqSync"); 267 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 268 result_val_0->set_type(TYPE_SCALAR); 269 result_val_0->set_scalar_type("bool_t"); 270 result_val_0->mutable_scalar_value()->set_bool_t(result0); 271 return true; 272 } 273 if (!strcmp(func_name, "requestWriteFmqUnsync")) { 274 int32_t arg0 = 0; 275 arg0 = func_msg.arg(0).scalar_value().int32_t(); 276 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 277 bool result0; 278 result0 = hw_binder_proxy_->requestWriteFmqUnsync(arg0); 279 result_msg->set_name("requestWriteFmqUnsync"); 280 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 281 result_val_0->set_type(TYPE_SCALAR); 282 result_val_0->set_scalar_type("bool_t"); 283 result_val_0->mutable_scalar_value()->set_bool_t(result0); 284 return true; 285 } 286 if (!strcmp(func_name, "requestReadFmqUnsync")) { 287 int32_t arg0 = 0; 288 arg0 = func_msg.arg(0).scalar_value().int32_t(); 289 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 290 bool result0; 291 result0 = hw_binder_proxy_->requestReadFmqUnsync(arg0); 292 result_msg->set_name("requestReadFmqUnsync"); 293 VariableSpecificationMessage* result_val_0 = result_msg->add_return_type_hidl(); 294 result_val_0->set_type(TYPE_SCALAR); 295 result_val_0->set_scalar_type("bool_t"); 296 result_val_0->mutable_scalar_value()->set_bool_t(result0); 297 return true; 298 } 299 if (!strcmp(func_name, "requestBlockingRead")) { 300 int32_t arg0 = 0; 301 arg0 = func_msg.arg(0).scalar_value().int32_t(); 302 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 303 hw_binder_proxy_->requestBlockingRead(arg0); 304 result_msg->set_name("requestBlockingRead"); 305 return true; 306 } 307 if (!strcmp(func_name, "requestBlockingReadDefaultEventFlagBits")) { 308 int32_t arg0 = 0; 309 arg0 = func_msg.arg(0).scalar_value().int32_t(); 310 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 311 hw_binder_proxy_->requestBlockingReadDefaultEventFlagBits(arg0); 312 result_msg->set_name("requestBlockingReadDefaultEventFlagBits"); 313 return true; 314 } 315 if (!strcmp(func_name, "requestBlockingReadRepeat")) { 316 int32_t arg0 = 0; 317 arg0 = func_msg.arg(0).scalar_value().int32_t(); 318 int32_t arg1 = 0; 319 arg1 = func_msg.arg(1).scalar_value().int32_t(); 320 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get(); 321 hw_binder_proxy_->requestBlockingReadRepeat(arg0, arg1); 322 result_msg->set_name("requestBlockingReadRepeat"); 323 return true; 324 } 325 if (!strcmp(func_name, "notifySyspropsChanged")) { 326 LOG(INFO) << "Call notifySyspropsChanged"; 327 hw_binder_proxy_->notifySyspropsChanged(); 328 result_msg->set_name("notifySyspropsChanged"); 329 return true; 330 } 331 return false; 332 } 333 334 bool FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ::VerifyResults(const FunctionSpecificationMessage& expected_result __attribute__((__unused__)), 335 const FunctionSpecificationMessage& actual_result __attribute__((__unused__))) { 336 if (!strcmp(actual_result.name().c_str(), "configureFmqSyncReadWrite")) { 337 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 338 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 339 /* ERROR: TYPE_FMQ_SYNC is not supported yet. */ 340 return true; 341 } 342 if (!strcmp(actual_result.name().c_str(), "getFmqUnsyncWrite")) { 343 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 344 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 345 /* ERROR: TYPE_FMQ_UNSYNC is not supported yet. */ 346 return true; 347 } 348 if (!strcmp(actual_result.name().c_str(), "requestWriteFmqSync")) { 349 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 350 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 351 return true; 352 } 353 if (!strcmp(actual_result.name().c_str(), "requestReadFmqSync")) { 354 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 355 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 356 return true; 357 } 358 if (!strcmp(actual_result.name().c_str(), "requestWriteFmqUnsync")) { 359 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 360 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 361 return true; 362 } 363 if (!strcmp(actual_result.name().c_str(), "requestReadFmqUnsync")) { 364 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 365 if (actual_result.return_type_hidl(0).scalar_value().bool_t() != expected_result.return_type_hidl(0).scalar_value().bool_t()) { return false; } 366 return true; 367 } 368 if (!strcmp(actual_result.name().c_str(), "requestBlockingRead")) { 369 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 370 return true; 371 } 372 if (!strcmp(actual_result.name().c_str(), "requestBlockingReadDefaultEventFlagBits")) { 373 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 374 return true; 375 } 376 if (!strcmp(actual_result.name().c_str(), "requestBlockingReadRepeat")) { 377 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; } 378 return true; 379 } 380 return false; 381 } 382 383 extern "C" { 384 android::vts::DriverBase* vts_func_4_android_hardware_tests_msgq_V1_0_ITestMsgQ_() { 385 return (android::vts::DriverBase*) new android::vts::FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ(); 386 } 387 388 android::vts::DriverBase* vts_func_4_android_hardware_tests_msgq_V1_0_ITestMsgQ_with_arg(uint64_t hw_binder_proxy) { 389 ::android::hardware::tests::msgq::V1_0::ITestMsgQ* arg = nullptr; 390 if (hw_binder_proxy) { 391 arg = reinterpret_cast<::android::hardware::tests::msgq::V1_0::ITestMsgQ*>(hw_binder_proxy); 392 } else { 393 LOG(INFO) << " Creating DriverBase with null proxy."; 394 } 395 android::vts::DriverBase* result = 396 new android::vts::FuzzerExtended_android_hardware_tests_msgq_V1_0_ITestMsgQ( 397 arg); 398 if (arg != nullptr) { 399 arg->decStrong(arg); 400 } 401 return result; 402 } 403 404 } 405 } // namespace vts 406 } // namespace android 407