1 #include "android/hardware/nfc/1.0/NfcClientCallback.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::nfc::V1_0;
11 namespace android {
12 namespace vts {
GetService(bool get_stub,const char * service_name)13 bool FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback::GetService(bool get_stub, const char* service_name) {
14 static bool initialized = false;
15 if (!initialized) {
16 LOG(INFO) << "HIDL getService";
17 if (service_name) {
18 LOG(INFO) << " - service name: " << service_name;
19 }
20 hw_binder_proxy_ = ::android::hardware::nfc::V1_0::INfcClientCallback::getService(service_name, get_stub);
21 if (hw_binder_proxy_ == nullptr) {
22 LOG(ERROR) << "getService() returned a null pointer.";
23 return false;
24 }
25 LOG(DEBUG) << "hw_binder_proxy_ = " << hw_binder_proxy_.get();
26 initialized = true;
27 }
28 return true;
29 }
30
31
sendEvent(::android::hardware::nfc::V1_0::NfcEvent arg0,::android::hardware::nfc::V1_0::NfcStatus arg1)32 ::android::hardware::Return<void> Vts_android_hardware_nfc_V1_0_INfcClientCallback::sendEvent(
33 ::android::hardware::nfc::V1_0::NfcEvent arg0 __attribute__((__unused__)),
34 ::android::hardware::nfc::V1_0::NfcStatus arg1 __attribute__((__unused__))) {
35 LOG(INFO) << "sendEvent called";
36 AndroidSystemCallbackRequestMessage callback_message;
37 callback_message.set_id(GetCallbackID("sendEvent"));
38 callback_message.set_name("Vts_android_hardware_nfc_V1_0_INfcClientCallback::sendEvent");
39 VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
40 var_msg0->set_type(TYPE_ENUM);
41 SetResult__android__hardware__nfc__V1_0__NfcEvent(var_msg0, arg0);
42 VariableSpecificationMessage* var_msg1 = callback_message.add_arg();
43 var_msg1->set_type(TYPE_ENUM);
44 SetResult__android__hardware__nfc__V1_0__NfcStatus(var_msg1, arg1);
45 RpcCallToAgent(callback_message, callback_socket_name_);
46 return ::android::hardware::Void();
47 }
48
sendData(const::android::hardware::hidl_vec<uint8_t> & arg0)49 ::android::hardware::Return<void> Vts_android_hardware_nfc_V1_0_INfcClientCallback::sendData(
50 const ::android::hardware::hidl_vec<uint8_t>& arg0 __attribute__((__unused__))) {
51 LOG(INFO) << "sendData called";
52 AndroidSystemCallbackRequestMessage callback_message;
53 callback_message.set_id(GetCallbackID("sendData"));
54 callback_message.set_name("Vts_android_hardware_nfc_V1_0_INfcClientCallback::sendData");
55 VariableSpecificationMessage* var_msg0 = callback_message.add_arg();
56 var_msg0->set_type(TYPE_VECTOR);
57 var_msg0->set_vector_size(arg0.size());
58 for (int i = 0; i < (int)arg0.size(); i++) {
59 auto *var_msg0_vector_i = var_msg0->add_vector_value();
60 var_msg0_vector_i->set_type(TYPE_SCALAR);
61 var_msg0_vector_i->set_scalar_type("uint8_t");
62 var_msg0_vector_i->mutable_scalar_value()->set_uint8_t(arg0[i]);
63 }
64 RpcCallToAgent(callback_message, callback_socket_name_);
65 return ::android::hardware::Void();
66 }
67
VtsFuzzerCreateVts_android_hardware_nfc_V1_0_INfcClientCallback(const string & callback_socket_name)68 sp<::android::hardware::nfc::V1_0::INfcClientCallback> VtsFuzzerCreateVts_android_hardware_nfc_V1_0_INfcClientCallback(const string& callback_socket_name) {
69 static sp<::android::hardware::nfc::V1_0::INfcClientCallback> result;
70 result = new Vts_android_hardware_nfc_V1_0_INfcClientCallback(callback_socket_name);
71 return result;
72 }
73
Fuzz(FunctionSpecificationMessage *,void **,const string &)74 bool FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback::Fuzz(
75 FunctionSpecificationMessage* /*func_msg*/,
76 void** /*result*/, const string& /*callback_socket_name*/) {
77 return true;
78 }
GetAttribute(FunctionSpecificationMessage *,void **)79 bool FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback::GetAttribute(
80 FunctionSpecificationMessage* /*func_msg*/,
81 void** /*result*/) {
82 LOG(ERROR) << "attribute not found.";
83 return false;
84 }
CallFunction(const FunctionSpecificationMessage & func_msg,const string & callback_socket_name,FunctionSpecificationMessage * result_msg)85 bool FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback::CallFunction(
86 const FunctionSpecificationMessage& func_msg,
87 const string& callback_socket_name __attribute__((__unused__)),
88 FunctionSpecificationMessage* result_msg) {
89 const char* func_name = func_msg.name().c_str();
90 if (hw_binder_proxy_ == nullptr) {
91 LOG(ERROR) << "hw_binder_proxy_ is null. ";
92 return false;
93 }
94 if (!strcmp(func_name, "sendEvent")) {
95 ::android::hardware::nfc::V1_0::NfcEvent arg0;
96 MessageTo__android__hardware__nfc__V1_0__NfcEvent(func_msg.arg(0), &(arg0), callback_socket_name);
97 ::android::hardware::nfc::V1_0::NfcStatus arg1;
98 MessageTo__android__hardware__nfc__V1_0__NfcStatus(func_msg.arg(1), &(arg1), callback_socket_name);
99 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
100 hw_binder_proxy_->sendEvent(arg0, arg1);
101 result_msg->set_name("sendEvent");
102 return true;
103 }
104 if (!strcmp(func_name, "sendData")) {
105 ::android::hardware::hidl_vec<uint8_t> arg0;
106 arg0.resize(func_msg.arg(0).vector_value_size());
107 for (int arg0_index = 0; arg0_index < func_msg.arg(0).vector_value_size(); arg0_index++) {
108 arg0[arg0_index] = func_msg.arg(0).vector_value(arg0_index).scalar_value().uint8_t();
109 }
110 LOG(DEBUG) << "local_device = " << hw_binder_proxy_.get();
111 hw_binder_proxy_->sendData(arg0);
112 result_msg->set_name("sendData");
113 return true;
114 }
115 if (!strcmp(func_name, "notifySyspropsChanged")) {
116 LOG(INFO) << "Call notifySyspropsChanged";
117 hw_binder_proxy_->notifySyspropsChanged();
118 result_msg->set_name("notifySyspropsChanged");
119 return true;
120 }
121 return false;
122 }
123
VerifyResults(const FunctionSpecificationMessage & expected_result,const FunctionSpecificationMessage & actual_result)124 bool FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback::VerifyResults(const FunctionSpecificationMessage& expected_result __attribute__((__unused__)),
125 const FunctionSpecificationMessage& actual_result __attribute__((__unused__))) {
126 if (!strcmp(actual_result.name().c_str(), "sendEvent")) {
127 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
128 return true;
129 }
130 if (!strcmp(actual_result.name().c_str(), "sendData")) {
131 if (actual_result.return_type_hidl_size() != expected_result.return_type_hidl_size() ) { return false; }
132 return true;
133 }
134 return false;
135 }
136
137 extern "C" {
vts_func_4_android_hardware_nfc_V1_0_INfcClientCallback_()138 android::vts::DriverBase* vts_func_4_android_hardware_nfc_V1_0_INfcClientCallback_() {
139 return (android::vts::DriverBase*) new android::vts::FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback();
140 }
141
vts_func_4_android_hardware_nfc_V1_0_INfcClientCallback_with_arg(uint64_t hw_binder_proxy)142 android::vts::DriverBase* vts_func_4_android_hardware_nfc_V1_0_INfcClientCallback_with_arg(uint64_t hw_binder_proxy) {
143 ::android::hardware::nfc::V1_0::INfcClientCallback* arg = nullptr;
144 if (hw_binder_proxy) {
145 arg = reinterpret_cast<::android::hardware::nfc::V1_0::INfcClientCallback*>(hw_binder_proxy);
146 } else {
147 LOG(INFO) << " Creating DriverBase with null proxy.";
148 }
149 android::vts::DriverBase* result =
150 new android::vts::FuzzerExtended_android_hardware_nfc_V1_0_INfcClientCallback(
151 arg);
152 if (arg != nullptr) {
153 arg->decStrong(arg);
154 }
155 return result;
156 }
157
158 }
159 } // namespace vts
160 } // namespace android
161