Merge "Fix fingerprint crypto operations."
diff --git a/audio/2.0/IDevicesFactory.hal b/audio/2.0/IDevicesFactory.hal
index f1dc7d3..0ef6bc5 100644
--- a/audio/2.0/IDevicesFactory.hal
+++ b/audio/2.0/IDevicesFactory.hal
@@ -26,7 +26,8 @@
PRIMARY,
A2DP,
USB,
- R_SUBMIX
+ R_SUBMIX,
+ STUB
};
/*
diff --git a/audio/2.0/default/DevicesFactory.cpp b/audio/2.0/default/DevicesFactory.cpp
index 12ef2c8..8825107 100644
--- a/audio/2.0/default/DevicesFactory.cpp
+++ b/audio/2.0/default/DevicesFactory.cpp
@@ -37,6 +37,7 @@
case IDevicesFactory::Device::A2DP: return AUDIO_HARDWARE_MODULE_ID_A2DP;
case IDevicesFactory::Device::USB: return AUDIO_HARDWARE_MODULE_ID_USB;
case IDevicesFactory::Device::R_SUBMIX: return AUDIO_HARDWARE_MODULE_ID_REMOTE_SUBMIX;
+ case IDevicesFactory::Device::STUB: return AUDIO_HARDWARE_MODULE_ID_STUB;
}
}
diff --git a/audio/Android.mk b/audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/Android.mk
similarity index 75%
copy from audio/Android.mk
copy to audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/Android.mk
index f9e3276..430600d 100644
--- a/audio/Android.mk
+++ b/audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/Android.mk
@@ -16,4 +16,8 @@
LOCAL_PATH := $(call my-dir)
-include $(call all-subdir-makefiles)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := HalAudioEffectHidlTargetBasicProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/audio/effect/hidl/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/AndroidTest.xml b/audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..7febf26
--- /dev/null
+++ b/audio/effect/2.0/vts/functional/vts/testcases/hal/audio/effect/hidl/target_profiling/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Audio Effect HIDL HAL's basic target-side, profiling test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="HalAudioEffectHidlTargetBasicProfilingTest" />
+ <option name="binary-test-sources" value="
+ _32bit::DATA/nativetest/audio_effect_hidl_hal_test/audio_effect_hidl_hal_test,
+ _64bit::DATA/nativetest64/audio_effect_hidl_hal_test/audio_effect_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="1m" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
diff --git a/biometrics/fingerprint/2.1/Android.mk b/biometrics/fingerprint/2.1/Android.mk
index c1412a8..22da268 100644
--- a/biometrics/fingerprint/2.1/Android.mk
+++ b/biometrics/fingerprint/2.1/Android.mk
@@ -217,6 +217,8 @@
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBiometricsFingerprintClientCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
@@ -446,6 +448,8 @@
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IBiometricsFingerprintClientCallback.hal
+$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
+$(GEN): $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
diff --git a/bluetooth/1.0/IBluetoothHci.hal b/bluetooth/1.0/IBluetoothHci.hal
index 10cf914..8722616 100644
--- a/bluetooth/1.0/IBluetoothHci.hal
+++ b/bluetooth/1.0/IBluetoothHci.hal
@@ -35,12 +35,18 @@
* required to communicate with the Bluetooth hardware in the
* device.
*
+ * The |oninitializationComplete| callback must be invoked in response
+ * to this function to indicate success before any other function
+ * (sendHciCommand, sendAclData, * sendScoData) is invoked on this
+ * interface.
+ *
* @param callback implements IBluetoothHciCallbacks which will
* receive callbacks when incoming HCI packets are received
* from the controller to be sent to the host.
- * @return status result of the initialization
*/
- initialize(IBluetoothHciCallbacks callback) generates (Status status);
+ @entry
+ @callflow(next={"sendHciCommand", "sendAclData", "sendScoData", "close"})
+ initialize(IBluetoothHciCallbacks callback);
/**
* Send an HCI command (as specified in the Bluetooth Specification
@@ -49,6 +55,7 @@
*
* @param command is the HCI command to be sent
*/
+ @callflow(next={"sendHciCommand", "sendAclData", "sendScoData", "close"})
sendHciCommand(HciPacket command);
/**
@@ -57,6 +64,7 @@
* Packets must be processed in order.
* @param data HCI data packet to be sent
*/
+ @callflow(next={"sendHciCommand", "sendAclData", "sendScoData", "close"})
sendAclData(HciPacket data);
/**
@@ -65,10 +73,12 @@
* Packets must be processed in order.
* @param data HCI data packet to be sent
*/
+ @callflow(next={"sendHciCommand", "sendAclData", "sendScoData", "close"})
sendScoData(HciPacket data);
/**
* Close the HCI interface
*/
+ @exit
close();
};
diff --git a/bluetooth/1.0/IBluetoothHciCallbacks.hal b/bluetooth/1.0/IBluetoothHciCallbacks.hal
index afaab6c..15db1ce 100644
--- a/bluetooth/1.0/IBluetoothHciCallbacks.hal
+++ b/bluetooth/1.0/IBluetoothHciCallbacks.hal
@@ -19,21 +19,27 @@
/* The interface from the Bluetooth Controller to the stack. */
interface IBluetoothHciCallbacks {
/**
+ * Invoked when the Bluetooth controller initialization has been
+ * completed.
+ */
+ initializationComplete(Status status);
+
+ /**
* This function is invoked when an HCI event is received from the
* Bluetooth controller to be forwarded to the Bluetooth stack.
* @param event is the HCI event to be sent to the Bluetooth stack.
*/
- oneway hciEventReceived(HciPacket event);
+ hciEventReceived(HciPacket event);
/**
* Send an ACL data packet form the controller to the host.
* @param data the ACL HCI packet to be passed to the host stack
*/
- oneway aclDataReceived(HciPacket data);
+ aclDataReceived(HciPacket data);
/**
* Send a SCO data packet form the controller to the host.
* @param data the SCO HCI packet to be passed to the host stack
*/
- oneway scoDataReceived(HciPacket data);
+ scoDataReceived(HciPacket data);
};
diff --git a/bluetooth/1.0/default/bluetooth_hci.cc b/bluetooth/1.0/default/bluetooth_hci.cc
index d12bfb9..1559119 100644
--- a/bluetooth/1.0/default/bluetooth_hci.cc
+++ b/bluetooth/1.0/default/bluetooth_hci.cc
@@ -30,12 +30,16 @@
static const uint8_t HCI_DATA_TYPE_ACL = 2;
static const uint8_t HCI_DATA_TYPE_SCO = 3;
-Return<Status> BluetoothHci::initialize(
+Return<void> BluetoothHci::initialize(
const ::android::sp<IBluetoothHciCallbacks>& cb) {
ALOGW("BluetoothHci::initialize()");
event_cb_ = cb;
bool rc = VendorInterface::Initialize(
+ [this](bool status) {
+ event_cb_->initializationComplete(
+ status ? Status::SUCCESS : Status::INITIALIZATION_ERROR);
+ },
[this](HciPacketType type, const hidl_vec<uint8_t>& packet) {
switch (type) {
case HCI_PACKET_TYPE_EVENT:
@@ -52,9 +56,8 @@
break;
}
});
- if (!rc) return Status::INITIALIZATION_ERROR;
-
- return Status::SUCCESS;
+ if (!rc) event_cb_->initializationComplete(Status::INITIALIZATION_ERROR);
+ return Void();
}
Return<void> BluetoothHci::close() {
diff --git a/bluetooth/1.0/default/bluetooth_hci.h b/bluetooth/1.0/default/bluetooth_hci.h
index d297570..da1b411 100644
--- a/bluetooth/1.0/default/bluetooth_hci.h
+++ b/bluetooth/1.0/default/bluetooth_hci.h
@@ -32,7 +32,7 @@
class BluetoothHci : public IBluetoothHci {
public:
- Return<Status> initialize(
+ Return<void> initialize(
const ::android::sp<IBluetoothHciCallbacks>& cb) override;
Return<void> sendHciCommand(const hidl_vec<uint8_t>& packet) override;
Return<void> sendAclData(const hidl_vec<uint8_t>& data) override;
diff --git a/bluetooth/1.0/default/service.cpp b/bluetooth/1.0/default/service.cpp
index a3c3cad..fa5106f 100644
--- a/bluetooth/1.0/default/service.cpp
+++ b/bluetooth/1.0/default/service.cpp
@@ -25,5 +25,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IBluetoothHci>("bluetooth");
+ return defaultPassthroughServiceImplementation<IBluetoothHci>();
}
diff --git a/bluetooth/1.0/default/vendor_interface.cc b/bluetooth/1.0/default/vendor_interface.cc
index 905e1a6..20b30ae 100644
--- a/bluetooth/1.0/default/vendor_interface.cc
+++ b/bluetooth/1.0/default/vendor_interface.cc
@@ -35,6 +35,7 @@
namespace {
using android::hardware::bluetooth::V1_0::implementation::VendorInterface;
+using android::hardware::hidl_vec;
tINT_CMD_CBACK internal_command_cb;
VendorInterface* g_vendor_interface = nullptr;
@@ -46,17 +47,14 @@
0, HCI_LENGTH_OFFSET_CMD, HCI_LENGTH_OFFSET_ACL, HCI_LENGTH_OFFSET_SCO,
HCI_LENGTH_OFFSET_EVT};
-size_t HciGetPacketLengthForType(
- HciPacketType type, const android::hardware::hidl_vec<uint8_t>& packet) {
+size_t HciGetPacketLengthForType(HciPacketType type,
+ const hidl_vec<uint8_t>& packet) {
size_t offset = packet_length_offset_for_type[type];
- if (type == HCI_PACKET_TYPE_ACL_DATA) {
- return (((packet[offset + 1]) << 8) | packet[offset]);
- }
- return packet[offset];
+ if (type != HCI_PACKET_TYPE_ACL_DATA) return packet[offset];
+ return (((packet[offset + 1]) << 8) | packet[offset]);
}
-HC_BT_HDR* WrapPacketAndCopy(uint16_t event,
- const android::hardware::hidl_vec<uint8_t>& data) {
+HC_BT_HDR* WrapPacketAndCopy(uint16_t event, const hidl_vec<uint8_t>& data) {
size_t packet_size = data.size() + sizeof(HC_BT_HDR);
HC_BT_HDR* packet = reinterpret_cast<HC_BT_HDR*>(new uint8_t[packet_size]);
packet->offset = 0;
@@ -71,17 +69,16 @@
uint8_t transmit_cb(uint16_t opcode, void* buffer, tINT_CMD_CBACK callback) {
ALOGV("%s opcode: 0x%04x, ptr: %p", __func__, opcode, buffer);
- HC_BT_HDR* bt_hdr = reinterpret_cast<HC_BT_HDR*>(buffer);
-
internal_command_cb = callback;
uint8_t type = HCI_PACKET_TYPE_COMMAND;
- VendorInterface::get()->SendPrivate(&type, 1);
- VendorInterface::get()->SendPrivate(bt_hdr->data, bt_hdr->len);
+ VendorInterface::get()->Send(&type, 1);
+ HC_BT_HDR* bt_hdr = reinterpret_cast<HC_BT_HDR*>(buffer);
+ VendorInterface::get()->Send(bt_hdr->data, bt_hdr->len);
return true;
}
void firmware_config_cb(bt_vendor_op_result_t result) {
- ALOGD("%s result: %d", __func__, result);
+ ALOGV("%s result: %d", __func__, result);
VendorInterface::get()->OnFirmwareConfigured(result);
}
@@ -131,10 +128,28 @@
namespace V1_0 {
namespace implementation {
-bool VendorInterface::Initialize(PacketReadCallback packet_read_cb) {
+class FirmwareStartupTimer {
+ public:
+ FirmwareStartupTimer() : start_time_(std::chrono::steady_clock::now()) {}
+
+ ~FirmwareStartupTimer() {
+ std::chrono::duration<double> duration =
+ std::chrono::steady_clock::now() - start_time_;
+ double s = duration.count();
+ if (s == 0) return;
+ ALOGD("Firmware configured in %.3fs", s);
+ }
+
+ private:
+ std::chrono::steady_clock::time_point start_time_;
+};
+
+bool VendorInterface::Initialize(
+ InitializeCompleteCallback initialize_complete_cb,
+ PacketReadCallback packet_read_cb) {
assert(!g_vendor_interface);
g_vendor_interface = new VendorInterface();
- return g_vendor_interface->Open(packet_read_cb);
+ return g_vendor_interface->Open(initialize_complete_cb, packet_read_cb);
}
void VendorInterface::Shutdown() {
@@ -146,8 +161,9 @@
VendorInterface* VendorInterface::get() { return g_vendor_interface; }
-bool VendorInterface::Open(PacketReadCallback packet_read_cb) {
- firmware_configured_ = false;
+bool VendorInterface::Open(InitializeCompleteCallback initialize_complete_cb,
+ PacketReadCallback packet_read_cb) {
+ initialize_complete_cb_ = initialize_complete_cb;
packet_read_cb_ = packet_read_cb;
// Initialize vendor interface
@@ -209,6 +225,7 @@
[this](int fd) { OnDataReady(fd); });
// Start configuring the firmware
+ firmware_startup_timer_ = new FirmwareStartupTimer();
lib_interface_->op(BT_VND_OP_FW_CFG, nullptr);
return true;
@@ -229,31 +246,13 @@
lib_handle_ = nullptr;
}
- firmware_configured_ = false;
+ if (firmware_startup_timer_ != nullptr) {
+ delete firmware_startup_timer_;
+ firmware_startup_timer_ = nullptr;
+ }
}
size_t VendorInterface::Send(const uint8_t* data, size_t length) {
- if (firmware_configured_ && queued_data_.size() == 0)
- return SendPrivate(data, length);
-
- if (!firmware_configured_) {
- ALOGI("%s queueing command", __func__);
- queued_data_.resize(queued_data_.size() + length);
- uint8_t* append_ptr = &queued_data_[queued_data_.size() - length];
- memcpy(append_ptr, data, length);
- return length;
- }
-
- ALOGI("%s sending queued command", __func__);
- SendPrivate(queued_data_.data(), queued_data_.size());
- queued_data_.resize(0);
-
- ALOGI("%s done sending queued command", __func__);
-
- return SendPrivate(data, length);
-}
-
-size_t VendorInterface::SendPrivate(const uint8_t* data, size_t length) {
if (uart_fd_ == INVALID_FD) return 0;
size_t transmitted_length = 0;
@@ -280,9 +279,18 @@
}
void VendorInterface::OnFirmwareConfigured(uint8_t result) {
- ALOGI("%s: result = %d", __func__, result);
- firmware_configured_ = true;
- VendorInterface::get()->Send(NULL, 0);
+ ALOGD("%s result: %d", __func__, result);
+ internal_command_cb = nullptr;
+
+ if (firmware_startup_timer_ != nullptr) {
+ delete firmware_startup_timer_;
+ firmware_startup_timer_ = nullptr;
+ }
+
+ if (initialize_complete_cb_ != nullptr) {
+ initialize_complete_cb_(result == 0);
+ initialize_complete_cb_ = nullptr;
+ }
}
void VendorInterface::OnDataReady(int fd) {
@@ -331,16 +339,17 @@
hci_packet_bytes_remaining_ -= bytes_read;
hci_packet_bytes_read_ += bytes_read;
if (hci_packet_bytes_remaining_ == 0) {
- if (firmware_configured_) {
- if (packet_read_cb_ != nullptr) {
- packet_read_cb_(hci_packet_type_, hci_packet_);
- }
+ if (internal_command_cb != nullptr) {
+ HC_BT_HDR* bt_hdr =
+ WrapPacketAndCopy(HCI_PACKET_TYPE_EVENT, hci_packet_);
+ internal_command_cb(bt_hdr);
+ } else if (packet_read_cb_ != nullptr &&
+ initialize_complete_cb_ == nullptr) {
+ packet_read_cb_(hci_packet_type_, hci_packet_);
} else {
- if (internal_command_cb != nullptr) {
- HC_BT_HDR* bt_hdr =
- WrapPacketAndCopy(HCI_PACKET_TYPE_EVENT, hci_packet_);
- internal_command_cb(bt_hdr);
- }
+ ALOGE(
+ "%s HCI_PAYLOAD received without packet_read_cb or pending init.",
+ __func__);
}
hci_parser_state_ = HCI_IDLE;
}
diff --git a/bluetooth/1.0/default/vendor_interface.h b/bluetooth/1.0/default/vendor_interface.h
index 73ff2eb..450b99c 100644
--- a/bluetooth/1.0/default/vendor_interface.h
+++ b/bluetooth/1.0/default/vendor_interface.h
@@ -29,55 +29,50 @@
namespace implementation {
using ::android::hardware::hidl_vec;
+using InitializeCompleteCallback = std::function<void(bool success)>;
using PacketReadCallback =
std::function<void(HciPacketType, const hidl_vec<uint8_t> &)>;
+class FirmwareStartupTimer;
+
class VendorInterface {
public:
- static bool Initialize(PacketReadCallback packet_read_cb);
+ static bool Initialize(InitializeCompleteCallback initialize_complete_cb,
+ PacketReadCallback packet_read_cb);
static void Shutdown();
- static VendorInterface* get();
+ static VendorInterface *get();
size_t Send(const uint8_t *data, size_t length);
void OnFirmwareConfigured(uint8_t result);
- // Actually send the data.
- size_t SendPrivate(const uint8_t *data, size_t length);
-
private:
- VendorInterface() { queued_data_.resize(0); }
virtual ~VendorInterface() = default;
- bool Open(PacketReadCallback packet_read_cb);
+ bool Open(InitializeCompleteCallback initialize_complete_cb, PacketReadCallback packet_read_cb);
void Close();
void OnDataReady(int fd);
- // Queue data from Send() until the interface is ready.
- hidl_vec<uint8_t> queued_data_;
-
void *lib_handle_;
bt_vendor_interface_t *lib_interface_;
AsyncFdWatcher fd_watcher_;
int uart_fd_;
PacketReadCallback packet_read_cb_;
- bool firmware_configured_;
+ InitializeCompleteCallback initialize_complete_cb_;
- enum HciParserState {
- HCI_IDLE,
- HCI_TYPE_READY,
- HCI_PAYLOAD
- };
+ enum HciParserState { HCI_IDLE, HCI_TYPE_READY, HCI_PAYLOAD };
HciParserState hci_parser_state_{HCI_IDLE};
HciPacketType hci_packet_type_{HCI_PACKET_TYPE_UNKNOWN};
hidl_vec<uint8_t> hci_packet_;
size_t hci_packet_bytes_remaining_;
size_t hci_packet_bytes_read_;
+
+ FirmwareStartupTimer *firmware_startup_timer_;
};
-} // namespace implementation
-} // namespace V1_0
-} // namespace bluetooth
-} // namespace hardware
-} // namespace android
+} // namespace implementation
+} // namespace V1_0
+} // namespace bluetooth
+} // namespace hardware
+} // namespace android
diff --git a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp b/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
index 2a4bbdd..683029e 100644
--- a/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
+++ b/bluetooth/1.0/vts/functional/bluetooth_hidl_hal_test.cpp
@@ -36,13 +36,12 @@
using ::android::hardware::Void;
using ::android::sp;
-#define Bluetooth_HCI_SERVICE_NAME "bluetooth"
-
#define HCI_MINIMUM_HCI_VERSION 5 // Bluetooth Core Specification 3.0 + HS
#define HCI_MINIMUM_LMP_VERSION 5 // Bluetooth Core Specification 3.0 + HS
#define NUM_HCI_COMMANDS_BANDWIDTH 1000
#define NUM_SCO_PACKETS_BANDWIDTH 1000
#define NUM_ACL_PACKETS_BANDWIDTH 1000
+#define WAIT_FOR_INIT_TIMEOUT std::chrono::milliseconds(2000)
#define WAIT_FOR_HCI_EVENT_TIMEOUT std::chrono::milliseconds(2000)
#define WAIT_FOR_SCO_DATA_TIMEOUT std::chrono::milliseconds(1000)
#define WAIT_FOR_ACL_DATA_TIMEOUT std::chrono::milliseconds(1000)
@@ -122,8 +121,8 @@
public:
virtual void SetUp() override {
// currently test passthrough mode only
- bluetooth = IBluetoothHci::getService(Bluetooth_HCI_SERVICE_NAME);
- ALOGW("%s: getService(%s) is %s", __func__, Bluetooth_HCI_SERVICE_NAME,
+ bluetooth = IBluetoothHci::getService();
+ ALOGW("%s: getService() for bluetooth is %s", __func__,
bluetooth->isRemote() ? "remote" : "local");
ASSERT_NE(bluetooth, nullptr);
@@ -135,6 +134,8 @@
max_acl_data_packets = 0;
max_sco_data_packets = 0;
+ initialized = false;
+ initialized_count = 0;
event_count = 0;
acl_count = 0;
sco_count = 0;
@@ -142,9 +143,12 @@
acl_cb_count = 0;
sco_cb_count = 0;
- // Collision with android::hardware::Status
- EXPECT_EQ(android::hardware::bluetooth::V1_0::Status::SUCCESS,
- bluetooth->initialize(bluetooth_cb));
+ ASSERT_EQ(initialized, false);
+ bluetooth->initialize(bluetooth_cb);
+
+ wait_for_init_callback();
+
+ ASSERT_EQ(initialized, true);
}
virtual void TearDown() override {
@@ -167,6 +171,26 @@
void wait_for_command_complete_event(hidl_vec<uint8_t> cmd);
int wait_for_completed_packets_event(uint16_t handle);
+ // Inform the test about the initialization callback
+ inline void notify_initialized() {
+ std::unique_lock<std::mutex> lock(initialized_mutex);
+ initialized_count++;
+ initialized_condition.notify_one();
+ }
+
+ // Test code calls this function to wait for the init callback
+ inline void wait_for_init_callback() {
+ std::unique_lock<std::mutex> lock(initialized_mutex);
+
+ auto start_time = std::chrono::steady_clock::now();
+ while (initialized_count == 0)
+ if (initialized_condition.wait_until(lock,
+ start_time + WAIT_FOR_INIT_TIMEOUT) ==
+ std::cv_status::timeout)
+ return;
+ initialized_count--;
+ }
+
// Inform the test about an event callback
inline void notify_event_received() {
std::unique_lock<std::mutex> lock(event_mutex);
@@ -230,6 +254,13 @@
virtual ~BluetoothHciCallbacks() = default;
+ Return<void> initializationComplete(Status status) override {
+ parent_.initialized = true;
+ parent_.notify_initialized();
+ ALOGV("%s (status = %d)", __func__, static_cast<int>(status));
+ return Void();
+ };
+
Return<void> hciEventReceived(
const ::android::hardware::hidl_vec<uint8_t>& event) override {
parent_.event_cb_count++;
@@ -262,6 +293,8 @@
std::queue<hidl_vec<uint8_t>> acl_queue;
std::queue<hidl_vec<uint8_t>> sco_queue;
+ bool initialized;
+
int event_cb_count;
int sco_cb_count;
int acl_cb_count;
@@ -272,12 +305,15 @@
int max_sco_data_packets;
private:
+ std::mutex initialized_mutex;
std::mutex event_mutex;
std::mutex sco_mutex;
std::mutex acl_mutex;
+ std::condition_variable initialized_condition;
std::condition_variable event_condition;
std::condition_variable sco_condition;
std::condition_variable acl_condition;
+ int initialized_count;
int event_count;
int sco_count;
int acl_count;
diff --git a/audio/Android.mk b/boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/Android.mk
similarity index 78%
rename from audio/Android.mk
rename to boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/Android.mk
index f9e3276..f7414df 100644
--- a/audio/Android.mk
+++ b/boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/Android.mk
@@ -16,4 +16,8 @@
LOCAL_PATH := $(call my-dir)
-include $(call all-subdir-makefiles)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := HalBootHidlTargetProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/boot/hidl/target
+include test/vts/tools/build/Android.host_config.mk
diff --git a/boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/AndroidTest.xml b/boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..dbc6300
--- /dev/null
+++ b/boot/1.0/vts/functional/vts/testcases/hal/boot/hidl/target_profiling/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS Boot HIDL HAL's target-side test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="HalBootHidlTargetProfilingTest"/>
+ <option name="binary-test-sources" value="
+ _32bit::DATA/nativetest/boot_hidl_hal_test/boot_hidl_hal_test,
+ _64bit::DATA/nativetest64/boot_hidl_hal_test/boot_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="5m" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
diff --git a/boot/Android.mk b/boot/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/boot/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/broadcastradio/Android.mk b/broadcastradio/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/broadcastradio/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/drm/1.0/default/Android.mk b/drm/1.0/default/Android.mk
new file mode 100644
index 0000000..87a0019
--- /dev/null
+++ b/drm/1.0/default/Android.mk
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.drm@1.0-service
+LOCAL_INIT_RC := android.hardware.drm@1.0-service.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+ service.cpp \
+
+LOCAL_SHARED_LIBRARIES := \
+ libhidlbase \
+ libhidltransport \
+ liblog \
+ libhwbinder \
+ libutils \
+ libhardware \
+ android.hardware.drm.drm@1.0 \
+ android.hardware.drm.crypto@1.0 \
+ android.hidl.memory@1.0 \
+
+
+LOCAL_C_INCLUDES := \
+ hardware/interfaces/drm
+
+# TODO: The legacy DRM plugins only support 32-bit. They need
+# to be migrated to 64-bit (b/18948909)
+LOCAL_32_BIT_ONLY := true
+
+include $(BUILD_EXECUTABLE)
diff --git a/drm/1.0/default/android.hardware.drm@1.0-service.rc b/drm/1.0/default/android.hardware.drm@1.0-service.rc
new file mode 100644
index 0000000..281dc4b
--- /dev/null
+++ b/drm/1.0/default/android.hardware.drm@1.0-service.rc
@@ -0,0 +1,6 @@
+service drm-hal-1-0 /system/bin/hw/android.hardware.drm@1.0-service
+ class hal
+ user media
+ group mediadrm drmrpc
+ ioprio rt 4
+ writepid /dev/cpuset/foreground/tasks
diff --git a/drm/1.0/default/service.cpp b/drm/1.0/default/service.cpp
new file mode 100644
index 0000000..3531e03
--- /dev/null
+++ b/drm/1.0/default/service.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "android.hardware.drm@1.0-service"
+
+#include <crypto/1.0/default/CryptoFactory.h>
+#include <drm/1.0/default/DrmFactory.h>
+
+#include <hidl/HidlTransportSupport.h>
+#include <hidl/LegacySupport.h>
+
+using android::hardware::configureRpcThreadpool;
+using android::hardware::joinRpcThreadpool;
+using android::hardware::registerPassthroughServiceImplementation;
+
+using android::hardware::drm::crypto::V1_0::ICryptoFactory;
+using android::hardware::drm::drm::V1_0::IDrmFactory;
+
+int main() {
+ ALOGD("android.hardware.drm@1.0-service starting...");
+ configureRpcThreadpool(8, true /* callerWillJoin */);
+ registerPassthroughServiceImplementation<IDrmFactory>("drm");
+ registerPassthroughServiceImplementation<ICryptoFactory>("crypto");
+ joinRpcThreadpool();
+}
diff --git a/drm/crypto/1.0/ICryptoPlugin.hal b/drm/crypto/1.0/ICryptoPlugin.hal
index e892e3c..52c1d02 100644
--- a/drm/crypto/1.0/ICryptoPlugin.hal
+++ b/drm/crypto/1.0/ICryptoPlugin.hal
@@ -73,6 +73,8 @@
* of clear and encrypted bytes to process. This allows the decrypt
* call to operate on a range of subsamples in a single call
* @param source the input buffer for the decryption
+ * @param offset the offset of the first byte of encrypted data from
+ * the base of the source buffer
* @param destination the output buffer for the decryption
* @return status the status of the call. The status must be OK or one of
* the following errors: ERROR_DRM_NO_LICENSE if no license keys have been
@@ -83,9 +85,12 @@
* ERROR_DRM_SESSION_NOT_OPENED if the decrypt session is not opened, or
* ERROR_DRM_CANNOT_HANDLE in other failure cases.
* @return bytesWritten the number of bytes output from the decryption
+ * @return detailedError if the error is a vendor-specific error, the
+ * vendor's crypto HAL may provide a detailed error string to help
+ * describe the error.
*/
decrypt(bool secure, uint8_t[16] keyId, uint8_t[16] iv, Mode mode,
Pattern pattern, vec<SubSample> subSamples,
- memory source, DestinationBuffer destination)
- generates(Status status, uint32_t bytesWritten);
+ memory source, uint32_t offset, DestinationBuffer destination)
+ generates(Status status, uint32_t bytesWritten, string detailedError);
};
diff --git a/drm/crypto/1.0/default/Android.mk b/drm/crypto/1.0/default/Android.mk
index 83794ac..27fca98 100644
--- a/drm/crypto/1.0/default/Android.mk
+++ b/drm/crypto/1.0/default/Android.mk
@@ -32,10 +32,15 @@
libmediadrm \
libstagefright_foundation \
android.hardware.drm.crypto@1.0 \
- android.hidl.memory@1.0
+ android.hidl.memory@1.0 \
LOCAL_C_INCLUDES := \
frameworks/native/include \
frameworks/av/include
+# TODO: The legacy DRM plugins only support 32-bit. They need
+# to be migrated to 64-bit (b/18948909)
+LOCAL_32_BIT_ONLY := true
+
+
include $(BUILD_SHARED_LIBRARY)
diff --git a/drm/crypto/1.0/default/CryptoFactory.cpp b/drm/crypto/1.0/default/CryptoFactory.cpp
index 187d564..9519d01 100644
--- a/drm/crypto/1.0/default/CryptoFactory.cpp
+++ b/drm/crypto/1.0/default/CryptoFactory.cpp
@@ -27,7 +27,8 @@
namespace implementation {
CryptoFactory::CryptoFactory() :
- loader("/vendor/lib/mediadrm", "createCryptoFactory") {}
+ loader("/vendor/lib/mediadrm", "createCryptoFactory") {
+ }
// Methods from ::android::hardware::drm::crypto::V1_0::ICryptoFactory follow.
Return<bool> CryptoFactory::isCryptoSchemeSupported(
@@ -42,7 +43,6 @@
Return<void> CryptoFactory::createPlugin(const hidl_array<uint8_t, 16>& uuid,
const hidl_vec<uint8_t>& initData, createPlugin_cb _hidl_cb) {
-
for (size_t i = 0; i < loader.factoryCount(); i++) {
if (loader.getFactory(i)->isCryptoSchemeSupported(uuid.data())) {
android::CryptoPlugin *legacyPlugin = NULL;
@@ -62,7 +62,7 @@
return Void();
}
- ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char /* *name */) {
+ ICryptoFactory* HIDL_FETCH_ICryptoFactory(const char* /* name */) {
return new CryptoFactory();
}
diff --git a/drm/crypto/1.0/default/CryptoPlugin.cpp b/drm/crypto/1.0/default/CryptoPlugin.cpp
index 7921852..81365c8 100644
--- a/drm/crypto/1.0/default/CryptoPlugin.cpp
+++ b/drm/crypto/1.0/default/CryptoPlugin.cpp
@@ -21,6 +21,7 @@
#include <hidlmemory/mapping.h>
#include <android/hidl/memory/1.0/IMemory.h>
+#include <utils/Log.h>
using android::hidl::memory::V1_0::IMemory;
@@ -53,7 +54,8 @@
const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode,
const Pattern& pattern, const hidl_vec<SubSample>& subSamples,
- const hidl_memory &source, const DestinationBuffer& destination,
+ const hidl_memory& source, uint32_t offset,
+ const DestinationBuffer& destination,
decrypt_cb _hidl_cb) {
android::CryptoPlugin::Mode legacyMode;
@@ -87,25 +89,32 @@
AString detailMessage;
+ sp<IMemory> sharedSourceMemory = mapMemory(source);
+
+ void *srcPtr = static_cast<void *>(sharedSourceMemory->getPointer());
+ uint8_t *offsetSrc = static_cast<uint8_t *>(srcPtr) + offset;
+ srcPtr = static_cast<void *>(offsetSrc);
+
+ sp<IMemory> sharedDestinationMemory;
void *destPtr = NULL;
- sp<IMemory> sharedMemory;
if (destination.type == BufferType::SHARED_MEMORY) {
- sharedMemory = mapMemory(source);
- destPtr = sharedMemory->getPointer();
- sharedMemory->update();
+ sharedDestinationMemory = mapMemory(destination.nonsecureMemory);
+ sharedDestinationMemory->update();
+ destPtr = sharedDestinationMemory->getPointer();
} else if (destination.type == BufferType::NATIVE_HANDLE) {
native_handle_t *handle = const_cast<native_handle_t *>(
destination.secureMemory.getNativeHandle());
destPtr = static_cast<void *>(handle);
}
ssize_t result = mLegacyPlugin->decrypt(secure, keyId.data(), iv.data(),
- legacyMode, legacyPattern, sharedMemory->getPointer(),
- legacySubSamples, subSamples.size(), destPtr, &detailMessage);
+ legacyMode, legacyPattern, srcPtr, legacySubSamples,
+ subSamples.size(), destPtr, &detailMessage);
if (destination.type == BufferType::SHARED_MEMORY) {
- sharedMemory->commit();
+ sharedDestinationMemory->commit();
}
+
delete[] legacySubSamples;
uint32_t status;
@@ -119,7 +128,7 @@
bytesWritten = 0;
}
- _hidl_cb(toStatus(status), bytesWritten);
+ _hidl_cb(toStatus(status), bytesWritten, detailMessage.c_str());
return Void();
}
diff --git a/drm/crypto/1.0/default/CryptoPlugin.h b/drm/crypto/1.0/default/CryptoPlugin.h
index b17dade..b1473f1 100644
--- a/drm/crypto/1.0/default/CryptoPlugin.h
+++ b/drm/crypto/1.0/default/CryptoPlugin.h
@@ -42,6 +42,7 @@
struct CryptoPlugin : public ICryptoPlugin {
CryptoPlugin(android::CryptoPlugin *plugin) : mLegacyPlugin(plugin) {}
+
~CryptoPlugin() {delete mLegacyPlugin;}
// Methods from ::android::hardware::drm::crypto::V1_0::ICryptoPlugin
@@ -58,7 +59,8 @@
Return<void> decrypt(bool secure, const hidl_array<uint8_t, 16>& keyId,
const hidl_array<uint8_t, 16>& iv, Mode mode, const Pattern& pattern,
const hidl_vec<SubSample>& subSamples, const hidl_memory& source,
- const DestinationBuffer& destination, decrypt_cb _hidl_cb) override;
+ uint32_t offset, const DestinationBuffer& destination,
+ decrypt_cb _hidl_cb) override;
private:
android::CryptoPlugin *mLegacyPlugin;
diff --git a/drm/drm/1.0/Android.mk b/drm/drm/1.0/Android.mk
deleted file mode 100644
index 35d3463..0000000
--- a/drm/drm/1.0/Android.mk
+++ /dev/null
@@ -1,476 +0,0 @@
-# This file is autogenerated by hidl-gen. Do not edit manually.
-
-LOCAL_PATH := $(call my-dir)
-
-################################################################################
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.drm.drm@1.0-java
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-intermediates := $(local-generated-sources-dir)
-
-HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
-
-LOCAL_JAVA_LIBRARIES := \
- android.hidl.base@1.0-java \
-
-
-#
-# Build types.hal (EventType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/EventType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.EventType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyRequestType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyRequestType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyRequestType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyStatus)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyStatusType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyStatusType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyStatusType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyValue)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyValue.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyValue
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SecureStop)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/SecureStop.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.SecureStop
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Status)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/Status.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.Status
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmFactory.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmFactory.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmFactory.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmFactory
-
-$(GEN): $(LOCAL_PATH)/IDrmFactory.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmPlugin.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmPlugin.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmPlugin
-
-$(GEN): $(LOCAL_PATH)/IDrmPlugin.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmPluginListener.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmPluginListener.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmPluginListener
-
-$(GEN): $(LOCAL_PATH)/IDrmPluginListener.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-include $(BUILD_JAVA_LIBRARY)
-
-
-################################################################################
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.drm.drm@1.0-java-static
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-intermediates := $(local-generated-sources-dir)
-
-HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
- android.hidl.base@1.0-java-static \
-
-
-#
-# Build types.hal (EventType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/EventType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.EventType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyRequestType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyRequestType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyRequestType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyStatus)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyStatus.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyStatus
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyStatusType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyStatusType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyStatusType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyType)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyType.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyType
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (KeyValue)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/KeyValue.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.KeyValue
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (SecureStop)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/SecureStop.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.SecureStop
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build types.hal (Status)
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/Status.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::types.Status
-
-$(GEN): $(LOCAL_PATH)/types.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmFactory.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmFactory.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmFactory.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmFactory
-
-$(GEN): $(LOCAL_PATH)/IDrmFactory.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmPlugin.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmPlugin.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmPlugin.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmPlugin
-
-$(GEN): $(LOCAL_PATH)/IDrmPlugin.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-#
-# Build IDrmPluginListener.hal
-#
-GEN := $(intermediates)/android/hardware/drm/drm/V1_0/IDrmPluginListener.java
-$(GEN): $(HIDL)
-$(GEN): PRIVATE_HIDL := $(HIDL)
-$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/IDrmPluginListener.hal
-$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal
-$(GEN): $(LOCAL_PATH)/types.hal
-$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
-$(GEN): PRIVATE_CUSTOM_TOOL = \
- $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
- -Ljava \
- -randroid.hardware:hardware/interfaces \
- -randroid.hidl:system/libhidl/transport \
- android.hardware.drm.drm@1.0::IDrmPluginListener
-
-$(GEN): $(LOCAL_PATH)/IDrmPluginListener.hal
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/drm/drm/1.0/default/Android.mk b/drm/drm/1.0/default/Android.mk
index 952957c..52e67e1 100644
--- a/drm/drm/1.0/default/Android.mk
+++ b/drm/drm/1.0/default/Android.mk
@@ -36,4 +36,8 @@
frameworks/native/include \
frameworks/av/include
+# TODO: The legacy DRM plugins only support 32-bit. They need
+# to be migrated to 64-bit (b/18948909)
+LOCAL_32_BIT_ONLY := true
+
include $(BUILD_SHARED_LIBRARY)
diff --git a/drm/drm/1.0/default/DrmFactory.cpp b/drm/drm/1.0/default/DrmFactory.cpp
index f2d4a5a..98a8416 100644
--- a/drm/drm/1.0/default/DrmFactory.cpp
+++ b/drm/drm/1.0/default/DrmFactory.cpp
@@ -27,7 +27,8 @@
namespace implementation {
DrmFactory::DrmFactory() :
- loader("/vendor/lib/mediadrm", "createDrmFactory") {}
+ loader("/vendor/lib/mediadrm", "createDrmFactory") {
+ }
// Methods from ::android::hardware::drm::drm::V1_0::IDrmFactory follow.
Return<bool> DrmFactory::isCryptoSchemeSupported (
diff --git a/drm/drm/1.0/default/DrmPlugin.cpp b/drm/drm/1.0/default/DrmPlugin.cpp
index 5c8f426..0239502 100644
--- a/drm/drm/1.0/default/DrmPlugin.cpp
+++ b/drm/drm/1.0/default/DrmPlugin.cpp
@@ -30,7 +30,6 @@
// Methods from ::android::hardware::drm::drm::V1_0::IDrmPlugin follow.
Return<void> DrmPlugin::openSession(openSession_cb _hidl_cb) {
-
Vector<uint8_t> legacySessionId;
status_t status = mLegacyPlugin->openSession(legacySessionId);
_hidl_cb(toStatus(status), toHidlVec(legacySessionId));
diff --git a/gnss/1.0/Android.bp b/gnss/1.0/Android.bp
index f16192d..4d7e26e 100644
--- a/gnss/1.0/Android.bp
+++ b/gnss/1.0/Android.bp
@@ -108,13 +108,13 @@
"android/hardware/gnss/1.0/BsGnss.h",
"android/hardware/gnss/1.0/IGnssBatching.h",
"android/hardware/gnss/1.0/IHwGnssBatching.h",
- "android/hardware/gnss/1.0/BnGnssBatching.h",
- "android/hardware/gnss/1.0/BpGnssBatching.h",
+ "android/hardware/gnss/1.0/BnHwGnssBatching.h",
+ "android/hardware/gnss/1.0/BpHwGnssBatching.h",
"android/hardware/gnss/1.0/BsGnssBatching.h",
"android/hardware/gnss/1.0/IGnssBatchingCallback.h",
"android/hardware/gnss/1.0/IHwGnssBatchingCallback.h",
- "android/hardware/gnss/1.0/BnGnssBatchingCallback.h",
- "android/hardware/gnss/1.0/BpGnssBatchingCallback.h",
+ "android/hardware/gnss/1.0/BnHwGnssBatchingCallback.h",
+ "android/hardware/gnss/1.0/BpHwGnssBatchingCallback.h",
"android/hardware/gnss/1.0/BsGnssBatchingCallback.h",
"android/hardware/gnss/1.0/IGnssCallback.h",
"android/hardware/gnss/1.0/IHwGnssCallback.h",
diff --git a/gnss/1.0/Android.mk b/gnss/1.0/Android.mk
index d72280f..130c14e 100644
--- a/gnss/1.0/Android.mk
+++ b/gnss/1.0/Android.mk
@@ -55,6 +55,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (GnssLocationFlags)
+#
+GEN := $(intermediates)/android/hardware/gnss/V1_0/GnssLocationFlags.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.gnss@1.0::types.GnssLocationFlags
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (GnssMax)
#
GEN := $(intermediates)/android/hardware/gnss/V1_0/GnssMax.java
@@ -558,6 +577,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (GnssLocationFlags)
+#
+GEN := $(intermediates)/android/hardware/gnss/V1_0/GnssLocationFlags.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.gnss@1.0::types.GnssLocationFlags
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (GnssMax)
#
GEN := $(intermediates)/android/hardware/gnss/V1_0/GnssMax.java
diff --git a/graphics/Android.mk b/graphics/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/graphics/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/graphics/allocator/2.0/Android.bp b/graphics/allocator/2.0/Android.bp
index c145bc2..48db3e9 100644
--- a/graphics/allocator/2.0/Android.bp
+++ b/graphics/allocator/2.0/Android.bp
@@ -220,4 +220,3 @@
"android.hardware.graphics.allocator@2.0",
],
}
-
diff --git a/graphics/common/1.0/Android.bp b/graphics/common/1.0/Android.bp
index 721c632..b67afd1 100644
--- a/graphics/common/1.0/Android.bp
+++ b/graphics/common/1.0/Android.bp
@@ -44,55 +44,3 @@
"libutils",
],
}
-
-genrule {
- name: "android.hardware.graphics.common.vts.driver@1.0_genc++",
- tools: ["hidl-gen", "vtsc"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
- srcs: [
- "types.hal",
- ],
- out: [
- "android/hardware/graphics/common/1.0/types.vts.cpp",
- ],
-}
-
-genrule {
- name: "android.hardware.graphics.common.vts.driver@1.0_genc++_headers",
- tools: ["hidl-gen", "vtsc"],
- cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.common@1.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/graphics/common/1.0/ $(genDir)/android/hardware/graphics/common/1.0/",
- srcs: [
- "types.hal",
- ],
- out: [
- "android/hardware/graphics/common/1.0/types.vts.h",
- ],
-}
-
-cc_library_shared {
- name: "android.hardware.graphics.common.vts.driver@1.0",
- generated_sources: ["android.hardware.graphics.common.vts.driver@1.0_genc++"],
- generated_headers: ["android.hardware.graphics.common.vts.driver@1.0_genc++_headers"],
- export_generated_headers: ["android.hardware.graphics.common.vts.driver@1.0_genc++_headers"],
- shared_libs: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "liblog",
- "libutils",
- "libcutils",
- "libvts_common",
- "libvts_datatype",
- "libvts_measurement",
- "libvts_multidevice_proto",
- "libcamera_metadata",
- "libprotobuf-cpp-full",
- "android.hardware.graphics.common@1.0",
- ],
- export_shared_lib_headers: [
- "libhidlbase",
- "libhidltransport",
- "libhwbinder",
- "libutils",
- ],
-}
\ No newline at end of file
diff --git a/health/Android.mk b/health/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/health/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/ir/1.0/default/ConsumerIr.cpp b/ir/1.0/default/ConsumerIr.cpp
index b96c695..69a25cf 100644
--- a/ir/1.0/default/ConsumerIr.cpp
+++ b/ir/1.0/default/ConsumerIr.cpp
@@ -63,13 +63,13 @@
}
-IConsumerIr* HIDL_FETCH_IConsumerIr(const char *name) {
+IConsumerIr* HIDL_FETCH_IConsumerIr(const char * /*name*/) {
consumerir_device_t *dev;
const hw_module_t *hw_module = NULL;
- int ret = hw_get_module(name, &hw_module);
+ int ret = hw_get_module(CONSUMERIR_HARDWARE_MODULE_ID, &hw_module);
if (ret != 0) {
- ALOGE("hw_get_module %s failed: %d", name, ret);
+ ALOGE("hw_get_module %s failed: %d", CONSUMERIR_HARDWARE_MODULE_ID, ret);
return nullptr;
}
ret = hw_module->methods->open(hw_module, CONSUMERIR_TRANSMITTER, (hw_device_t **) &dev);
diff --git a/ir/1.0/default/service.cpp b/ir/1.0/default/service.cpp
index 237b2c9..10f6b7d 100644
--- a/ir/1.0/default/service.cpp
+++ b/ir/1.0/default/service.cpp
@@ -23,5 +23,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<IConsumerIr>("consumerir");
+ return defaultPassthroughServiceImplementation<IConsumerIr>();
}
diff --git a/light/Android.mk b/light/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/light/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/memtrack/Android.mk b/memtrack/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/memtrack/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/nfc/1.0/default/Nfc.cpp b/nfc/1.0/default/Nfc.cpp
index 9d05fc2..3bd5e41 100644
--- a/nfc/1.0/default/Nfc.cpp
+++ b/nfc/1.0/default/Nfc.cpp
@@ -65,7 +65,7 @@
}
}
else
- ALOGE ("hw_get_module failed: %d", ret);
+ ALOGE ("hw_get_module %s failed: %d", NFC_NCI_HARDWARE_MODULE_ID, ret);
if (ret == 0) {
return new Nfc(nfc_device);
diff --git a/nfc/1.0/default/service.cpp b/nfc/1.0/default/service.cpp
index 32f9c28..731acd5 100644
--- a/nfc/1.0/default/service.cpp
+++ b/nfc/1.0/default/service.cpp
@@ -9,5 +9,5 @@
using android::hardware::defaultPassthroughServiceImplementation;
int main() {
- return defaultPassthroughServiceImplementation<INfc>("nfc_nci");
+ return defaultPassthroughServiceImplementation<INfc>();
}
diff --git a/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp b/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
index f5ed4d7..521f17f 100644
--- a/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
+++ b/nfc/1.0/vts/functional/nfc_hidl_hal_test.cpp
@@ -37,8 +37,6 @@
using ::android::hardware::hidl_vec;
using ::android::sp;
-#define NFC_NCI_SERVICE_NAME "nfc_nci"
-
/* NCI Commands */
#define CORE_RESET_CMD \
{ 0x20, 0x00, 0x01, 0x00 }
@@ -61,7 +59,7 @@
class NfcHidlTest : public ::testing::Test {
public:
virtual void SetUp() override {
- nfc_ = INfc::getService(NFC_NCI_SERVICE_NAME, passthrough);
+ nfc_ = INfc::getService(passthrough);
ASSERT_NE(nfc_, nullptr);
nfc_cb_ = new NfcClientCallback(*this);
diff --git a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
index f2f17f4..cb40931 100644
--- a/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
+++ b/nfc/1.0/vts/functional/vts/testcases/hal/nfc/hidl/host/NfcHidlBasicTest.py
@@ -54,7 +54,6 @@
target_version=1.0,
target_package="android.hardware.nfc",
target_component_name="INfc",
- hw_binder_service_name="nfc_nci",
bits=64 if self.dut.is64Bit else 32)
def tearDownClass(self):
diff --git a/nfc/Android.mk b/nfc/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/nfc/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/power/Android.mk b/power/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/power/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/radio/Android.mk b/radio/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/radio/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/sensors/1.0/ISensors.hal b/sensors/1.0/ISensors.hal
index c56da29..5c8301a 100644
--- a/sensors/1.0/ISensors.hal
+++ b/sensors/1.0/ISensors.hal
@@ -61,7 +61,9 @@
* If there is no sensor event when this function is being called, block
* until there are sensor events available.
*
- * @param maxCount max number of samples can be returned.
+ * @param maxCount max number of samples can be returned, must be > 0.
+ * Actual number of events returned in data must be <= maxCount
+ * and > 0.
* @return result OK on success or BAD_VALUE if maxCount <= 0.
* @return data vector of Event contains sensor events.
* @return dynamicSensorsAdded vector of SensorInfo contains dynamic sensor
diff --git a/sensors/1.0/default/Sensors.cpp b/sensors/1.0/default/Sensors.cpp
index 8903397..41eb945 100644
--- a/sensors/1.0/default/Sensors.cpp
+++ b/sensors/1.0/default/Sensors.cpp
@@ -42,10 +42,12 @@
switch (err) {
case OK:
return Result::OK;
- case BAD_VALUE:
- return Result::BAD_VALUE;
case PERMISSION_DENIED:
return Result::PERMISSION_DENIED;
+ case NO_MEMORY:
+ return Result::NO_MEMORY;
+ case BAD_VALUE:
+ return Result::BAD_VALUE;
default:
return Result::INVALID_OPERATION;
}
@@ -151,12 +153,13 @@
return Void();
}
- std::unique_ptr<sensors_event_t[]> data(new sensors_event_t[maxCount]);
+ int bufferSize = maxCount <= kPollMaxBufferSize ? maxCount : kPollMaxBufferSize;
+
+ std::unique_ptr<sensors_event_t[]> data(new sensors_event_t[bufferSize]);
int err = mSensorDevice->poll(
reinterpret_cast<sensors_poll_device_t *>(mSensorDevice),
- data.get(),
- maxCount);
+ data.get(), bufferSize);
if (err < 0) {
_hidl_cb(ResultFromStatus(err), out, dynamicSensorsAdded);
@@ -226,27 +229,68 @@
Return<void> Sensors::registerDirectChannel(
const SharedMemInfo& mem, registerDirectChannel_cb _hidl_cb) {
- //TODO(b/30985702): finish implementation
- (void) mem;
- _hidl_cb(Result::INVALID_OPERATION, -1);
+ if (mSensorDevice->register_direct_channel == nullptr
+ || mSensorDevice->config_direct_report == nullptr) {
+ // HAL does not support
+ _hidl_cb(Result::INVALID_OPERATION, -1);
+ return Void();
+ }
+
+ sensors_direct_mem_t m;
+ if (!convertFromSharedMemInfo(mem, &m)) {
+ _hidl_cb(Result::BAD_VALUE, -1);
+ return Void();
+ }
+
+ int err = mSensorDevice->register_direct_channel(mSensorDevice, &m, -1);
+
+ if (err < 0) {
+ _hidl_cb(ResultFromStatus(err), -1);
+ } else {
+ int32_t channelHandle = static_cast<int32_t>(err);
+ _hidl_cb(Result::OK, channelHandle);
+ }
return Void();
}
Return<Result> Sensors::unregisterDirectChannel(int32_t channelHandle) {
- //TODO(b/30985702): finish implementation
- (void) channelHandle;
- return Result::INVALID_OPERATION;
+ if (mSensorDevice->register_direct_channel == nullptr
+ || mSensorDevice->config_direct_report == nullptr) {
+ // HAL does not support
+ return Result::INVALID_OPERATION;
+ }
+
+ mSensorDevice->register_direct_channel(mSensorDevice, nullptr, channelHandle);
+
+ return Result::OK;
}
Return<void> Sensors::configDirectReport(
int32_t sensorHandle, int32_t channelHandle, RateLevel rate,
configDirectReport_cb _hidl_cb) {
- //TODO(b/30985702): finish implementation
- (void) sensorHandle;
- (void) channelHandle;
- (void) rate;
+ if (mSensorDevice->register_direct_channel == nullptr
+ || mSensorDevice->config_direct_report == nullptr) {
+ // HAL does not support
+ _hidl_cb(Result::INVALID_OPERATION, -1);
+ return Void();
+ }
- _hidl_cb(Result::INVALID_OPERATION, -1);
+ sensors_direct_cfg_t cfg = {
+ .rate_level = convertFromRateLevel(rate)
+ };
+ if (cfg.rate_level < 0) {
+ _hidl_cb(Result::BAD_VALUE, -1);
+ return Void();
+ }
+
+ int err = mSensorDevice->config_direct_report(mSensorDevice,
+ sensorHandle, channelHandle, &cfg);
+
+ if (rate == RateLevel::STOP) {
+ _hidl_cb(ResultFromStatus(err), -1);
+ } else {
+ _hidl_cb(err > 0 ? Result::OK : ResultFromStatus(err), err);
+ }
return Void();
}
diff --git a/sensors/1.0/default/Sensors.h b/sensors/1.0/default/Sensors.h
index e8bd98d..09729d3 100644
--- a/sensors/1.0/default/Sensors.h
+++ b/sensors/1.0/default/Sensors.h
@@ -27,6 +27,7 @@
namespace V1_0 {
namespace implementation {
+
struct Sensors : public ::android::hardware::sensors::V1_0::ISensors {
Sensors();
@@ -60,6 +61,7 @@
configDirectReport_cb _hidl_cb) override;
private:
+ static constexpr int32_t kPollMaxBufferSize = 128;
status_t mInitCheck;
sensors_module_t *mSensorModule;
sensors_poll_device_1_t *mSensorDevice;
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index 6735e96..acff6ca 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -340,6 +340,50 @@
}
}
+bool convertFromSharedMemInfo(const SharedMemInfo& memIn, sensors_direct_mem_t *memOut) {
+ if (memOut == nullptr) {
+ return false;
+ }
+
+ switch(memIn.type) {
+ case SharedMemType::ASHMEM:
+ memOut->type = SENSOR_DIRECT_MEM_TYPE_ASHMEM;
+ break;
+ case SharedMemType::GRALLOC:
+ memOut->type = SENSOR_DIRECT_MEM_TYPE_GRALLOC;
+ break;
+ default:
+ return false;
+ }
+
+ switch(memIn.format) {
+ case SharedMemFormat::SENSORS_EVENT:
+ memOut->format = SENSOR_DIRECT_FMT_SENSORS_EVENT;
+ break;
+ default:
+ return false;
+ }
+
+ memOut->size = memIn.size;
+ memOut->handle = memIn.memoryHandle;
+ return true;
+}
+
+int convertFromRateLevel(RateLevel rate) {
+ switch(rate) {
+ case RateLevel::STOP:
+ return SENSOR_DIRECT_RATE_STOP;
+ case RateLevel::NORMAL:
+ return SENSOR_DIRECT_RATE_NORMAL;
+ case RateLevel::FAST:
+ return SENSOR_DIRECT_RATE_FAST;
+ case RateLevel::VERY_FAST:
+ return SENSOR_DIRECT_RATE_VERY_FAST;
+ default:
+ return -1;
+ }
+}
+
} // namespace implementation
} // namespace V1_0
} // namespace sensors
diff --git a/sensors/1.0/default/include/sensors/convert.h b/sensors/1.0/default/include/sensors/convert.h
index d289a81..c3a0125 100644
--- a/sensors/1.0/default/include/sensors/convert.h
+++ b/sensors/1.0/default/include/sensors/convert.h
@@ -33,6 +33,9 @@
void convertFromSensorEvent(const sensors_event_t &src, Event *dst);
void convertToSensorEvent(const Event &src, sensors_event_t *dst);
+bool convertFromSharedMemInfo(const SharedMemInfo& memIn, sensors_direct_mem_t *memOut);
+int convertFromRateLevel(RateLevel rate);
+
} // namespace implementation
} // namespace V1_0
} // namespace sensors
diff --git a/sensors/1.0/types.hal b/sensors/1.0/types.hal
index c8c8dfc..c0d8c5d 100644
--- a/sensors/1.0/types.hal
+++ b/sensors/1.0/types.hal
@@ -596,6 +596,7 @@
/**
* DYNAMIC_SENSOR_META
* trigger-mode: special
+ * wake-up sensor: yes
*
* A sensor event of this type is received when a dynamic sensor is added to
* or removed from the system. At most one sensor of this type can be
@@ -1224,23 +1225,32 @@
@export(name="direct_format_t", value_prefix="SENSOR_DIRECT_FMT_")
enum SharedMemFormat : int32_t {
SENSORS_EVENT = 1, // shared memory is formated as an array of data
- // elements, each sized 104 bytes. Details of fields:
- //
- // offset type name
- //-----------------------------------
- // 0x0000 int32_t size (always 104)
- // 0x0004 int32_t sensor report token
- // 0x0008 int32_t type (see SensorType)
- // 0x000C int32_t atomic counter
- // 0x0010 int64_t timestamp (see Event)
- // 0x0014 float[16]/ data
- // int64_t[8]
- // 0x0058 int32_t[4] reserved
- //
+ // elements. See SensorsEventFormatOffset for details.
// Upon return of channel registration call, the
// shared memory space must be formated to all 0 by HAL.
};
+enum SensorsEventFormatOffset : uint16_t {
+ // offset type name
+ //-----------------------------------
+ // 0x0000 int32_t size (always 104)
+ // 0x0004 int32_t sensor report token
+ // 0x0008 int32_t type (see SensorType)
+ // 0x000C uint32_t atomic counter
+ // 0x0010 int64_t timestamp (see Event)
+ // 0x0018 float[16]/ data
+ // int64_t[8]
+ // 0x0058 int32_t[4] reserved (set to zero)
+ SIZE_FIELD = 0x0,
+ REPORT_TOKEN = 0x4,
+ SENSOR_TYPE = 0x8,
+ ATOMIC_COUNTER = 0xC,
+ TIMESTAMP = 0x10,
+ DATA = 0x18,
+ RESERVED = 0x58,
+ TOTAL_LENGTH = 0x68
+};
+
/**
* Shared memory information for a direct channel
*/
diff --git a/sensors/1.0/vts/functional/Android.bp b/sensors/1.0/vts/functional/Android.bp
index 675484a..9ca6230 100644
--- a/sensors/1.0/vts/functional/Android.bp
+++ b/sensors/1.0/vts/functional/Android.bp
@@ -19,10 +19,11 @@
gtest: true,
srcs: ["sensors_hidl_hal_test.cpp"],
shared_libs: [
- "liblog",
- "libhidlbase",
- "libutils",
"android.hardware.sensors@1.0",
+ "libcutils",
+ "libhidlbase",
+ "liblog",
+ "libutils",
],
static_libs: ["libgtest"],
cflags: [
diff --git a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp b/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
index 2edc5c3..c7600f3 100644
--- a/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
+++ b/sensors/1.0/vts/functional/sensors_hidl_hal_test.cpp
@@ -19,16 +19,20 @@
#include <android/hardware/sensors/1.0/ISensors.h>
#include <android/hardware/sensors/1.0/types.h>
#include <android/log.h>
+#include <cutils/ashmem.h>
#include <gtest/gtest.h>
#include <hardware/sensors.h> // for sensor type strings
#include <algorithm>
#include <cinttypes>
#include <cmath>
+#include <memory>
#include <mutex>
#include <thread>
+#include <unordered_set>
#include <vector>
+#include <sys/mman.h>
#include <unistd.h>
using ::android::hardware::Return;
@@ -148,6 +152,164 @@
ALOGD("polling thread end");
}
+class SensorsTestSharedMemory {
+ public:
+ static SensorsTestSharedMemory* create(SharedMemType type, size_t size);
+ SharedMemInfo getSharedMemInfo() const;
+ char * getBuffer() const;
+ std::vector<Event> parseEvents(int64_t lastCounter = -1, size_t offset = 0) const;
+ virtual ~SensorsTestSharedMemory();
+ private:
+ SensorsTestSharedMemory(SharedMemType type, size_t size);
+
+ SharedMemType mType;
+ native_handle_t* mNativeHandle;
+ size_t mSize;
+ char* mBuffer;
+
+ DISALLOW_COPY_AND_ASSIGN(SensorsTestSharedMemory);
+};
+
+SharedMemInfo SensorsTestSharedMemory::getSharedMemInfo() const {
+ SharedMemInfo mem = {
+ .type = mType,
+ .format = SharedMemFormat::SENSORS_EVENT,
+ .size = static_cast<uint32_t>(mSize),
+ .memoryHandle = mNativeHandle
+ };
+ return mem;
+}
+
+char * SensorsTestSharedMemory::getBuffer() const {
+ return mBuffer;
+}
+
+std::vector<Event> SensorsTestSharedMemory::parseEvents(int64_t lastCounter, size_t offset) const {
+
+ constexpr size_t kEventSize = static_cast<size_t>(SensorsEventFormatOffset::TOTAL_LENGTH);
+ constexpr size_t kOffsetSize = static_cast<size_t>(SensorsEventFormatOffset::SIZE_FIELD);
+ constexpr size_t kOffsetToken = static_cast<size_t>(SensorsEventFormatOffset::REPORT_TOKEN);
+ constexpr size_t kOffsetType = static_cast<size_t>(SensorsEventFormatOffset::SENSOR_TYPE);
+ constexpr size_t kOffsetAtomicCounter =
+ static_cast<size_t>(SensorsEventFormatOffset::ATOMIC_COUNTER);
+ constexpr size_t kOffsetTimestamp = static_cast<size_t>(SensorsEventFormatOffset::TIMESTAMP);
+ constexpr size_t kOffsetData = static_cast<size_t>(SensorsEventFormatOffset::DATA);
+
+ std::vector<Event> events;
+ std::vector<float> data(16);
+
+ while (offset + kEventSize <= mSize) {
+ int64_t atomicCounter = *reinterpret_cast<uint32_t *>(mBuffer + offset + kOffsetAtomicCounter);
+ if (atomicCounter <= lastCounter) {
+ break;
+ }
+
+ int32_t size = *reinterpret_cast<int32_t *>(mBuffer + offset + kOffsetSize);
+ if (size != kEventSize) {
+ // unknown error, events parsed may be wrong, remove all
+ events.clear();
+ break;
+ }
+
+ int32_t token = *reinterpret_cast<int32_t *>(mBuffer + offset + kOffsetToken);
+ int32_t type = *reinterpret_cast<int32_t *>(mBuffer + offset + kOffsetType);
+ int64_t timestamp = *reinterpret_cast<int64_t *>(mBuffer + offset + kOffsetTimestamp);
+
+ ALOGV("offset = %zu, cnt %" PRId32 ", token %" PRId32 ", type %" PRId32 ", timestamp %" PRId64,
+ offset, atomicCounter, token, type, timestamp);
+
+ Event event = {
+ .timestamp = timestamp,
+ .sensorHandle = token,
+ .sensorType = static_cast<SensorType>(type),
+ };
+ event.u.data = android::hardware::hidl_array<float, 16>
+ (reinterpret_cast<float*>(mBuffer + offset + kOffsetData));
+
+ events.push_back(event);
+
+ lastCounter = atomicCounter;
+ offset += kEventSize;
+ }
+
+ return events;
+}
+
+SensorsTestSharedMemory::SensorsTestSharedMemory(SharedMemType type, size_t size)
+ : mType(type), mSize(0), mBuffer(nullptr) {
+ native_handle_t *handle = nullptr;
+ char *buffer = nullptr;
+ switch(type) {
+ case SharedMemType::ASHMEM: {
+ int fd;
+ handle = ::native_handle_create(1 /*nFds*/, 0/*nInts*/);
+ if (handle != nullptr) {
+ handle->data[0] = fd = ::ashmem_create_region("SensorsTestSharedMemory", size);
+ if (handle->data[0] > 0) {
+ // memory is pinned by default
+ buffer = static_cast<char *>
+ (::mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0));
+ if (buffer != reinterpret_cast<char*>(MAP_FAILED)) {
+ break;
+ }
+ ::native_handle_close(handle);
+ }
+ ::native_handle_delete(handle);
+ handle = nullptr;
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ if (buffer != nullptr) {
+ mNativeHandle = handle;
+ mSize = size;
+ mBuffer = buffer;
+ }
+}
+
+SensorsTestSharedMemory::~SensorsTestSharedMemory() {
+ switch(mType) {
+ case SharedMemType::ASHMEM: {
+ if (mSize != 0) {
+ ::munmap(mBuffer, mSize);
+ mBuffer = nullptr;
+
+ ::native_handle_close(mNativeHandle);
+ ::native_handle_delete(mNativeHandle);
+
+ mNativeHandle = nullptr;
+ mSize = 0;
+ }
+ break;
+ }
+ default: {
+ if (mNativeHandle != nullptr || mSize != 0 || mBuffer != nullptr) {
+ ALOGE("SensorsTestSharedMemory %p not properly destructed: "
+ "type %d, native handle %p, size %zu, buffer %p",
+ this, static_cast<int>(mType), mNativeHandle, mSize, mBuffer);
+ }
+ break;
+ }
+ }
+}
+
+SensorsTestSharedMemory* SensorsTestSharedMemory::create(SharedMemType type, size_t size) {
+ constexpr size_t kMaxSize = 128*1024*1024; // sensor test should not need more than 128M
+ if (size == 0 || size >= kMaxSize) {
+ return nullptr;
+ }
+
+ auto m = new SensorsTestSharedMemory(type, size);
+ if (m->mSize != size || m->mBuffer == nullptr) {
+ delete m;
+ m = nullptr;
+ }
+ return m;
+}
+
// The main test class for SENSORS HIDL HAL.
class SensorsHidlTest : public ::testing::Test {
public:
@@ -155,52 +317,66 @@
}
virtual void TearDown() override {
+ // stop all sensors
+ for (auto s : mSensorHandles) {
+ S()->activate(s, false);
+ }
+ mSensorHandles.clear();
+
+ // stop all direct report and channels
+ for (auto c : mDirectChannelHandles) {
+ // disable all reports
+ S()->configDirectReport(-1, c, RateLevel::STOP, [] (auto, auto){});
+ S()->unregisterDirectChannel(c);
+ }
+ mDirectChannelHandles.clear();
}
protected:
+ SensorInfo defaultSensorByType(SensorType type);
+ std::vector<Event> collectEvents(useconds_t timeLimitUs, size_t nEventLimit,
+ bool clearBeforeStart = true, bool changeCollection = true);
+
+ // implementation wrapper
+ Return<void> getSensorsList(ISensors::getSensorsList_cb _hidl_cb) {
+ return S()->getSensorsList(_hidl_cb);
+ }
+
+ Return<Result> activate(
+ int32_t sensorHandle, bool enabled);
+
+ Return<Result> batch(
+ int32_t sensorHandle,
+ int64_t samplingPeriodNs,
+ int64_t maxReportLatencyNs) {
+ return S()->batch(sensorHandle, samplingPeriodNs, maxReportLatencyNs);
+ }
+
+ Return<Result> flush(int32_t sensorHandle) {
+ return S()->flush(sensorHandle);
+ }
+
+ Return<Result> injectSensorData(const Event& event) {
+ return S()->injectSensorData(event);
+ }
+
+ Return<void> registerDirectChannel(
+ const SharedMemInfo& mem, ISensors::registerDirectChannel_cb _hidl_cb);
+
+ Return<Result> unregisterDirectChannel(int32_t channelHandle) {
+ return S()->unregisterDirectChannel(channelHandle);
+ }
+
+ Return<void> configDirectReport(
+ int32_t sensorHandle, int32_t channelHandle, RateLevel rate,
+ ISensors::configDirectReport_cb _hidl_cb) {
+ return S()->configDirectReport(sensorHandle, channelHandle, rate, _hidl_cb);
+ }
+
inline sp<ISensors>& S() {
return SensorsHidlEnvironment::Instance()->sensors;
}
- std::vector<Event> collectEvents(useconds_t timeLimitUs, size_t nEventLimit,
- bool clearBeforeStart = true,
- bool changeCollection = true) {
- std::vector<Event> events;
- constexpr useconds_t SLEEP_GRANULARITY = 100*1000; //gradularity 100 ms
-
- ALOGI("collect max of %zu events for %d us, clearBeforeStart %d",
- nEventLimit, timeLimitUs, clearBeforeStart);
-
- if (changeCollection) {
- SensorsHidlEnvironment::Instance()->setCollection(true);
- }
- if (clearBeforeStart) {
- SensorsHidlEnvironment::Instance()->catEvents(nullptr);
- }
-
- while (timeLimitUs > 0) {
- useconds_t duration = std::min(SLEEP_GRANULARITY, timeLimitUs);
- usleep(duration);
- timeLimitUs -= duration;
-
- SensorsHidlEnvironment::Instance()->catEvents(&events);
- if (events.size() >= nEventLimit) {
- break;
- }
- ALOGV("time to go = %d, events to go = %d",
- (int)timeLimitUs, (int)(nEventLimit - events.size()));
- }
-
- if (changeCollection) {
- SensorsHidlEnvironment::Instance()->setCollection(false);
- }
- return events;
- }
-
- static bool typeMatchStringType(SensorType type, const hidl_string& stringType);
- static bool typeMatchReportMode(SensorType type, SensorFlagBits reportMode);
- static bool delayMatchReportMode(int32_t minDelay, int32_t maxDelay, SensorFlagBits reportMode);
-
inline static SensorFlagBits extractReportMode(uint64_t flag) {
return (SensorFlagBits) (flag
& ((uint64_t) SensorFlagBits::CONTINUOUS_MODE
@@ -219,10 +395,77 @@
return (int32_t) type > 0;
}
+ static bool typeMatchStringType(SensorType type, const hidl_string& stringType);
+ static bool typeMatchReportMode(SensorType type, SensorFlagBits reportMode);
+ static bool delayMatchReportMode(int32_t minDelay, int32_t maxDelay, SensorFlagBits reportMode);
static SensorFlagBits expectedReportModeForType(SensorType type);
- SensorInfo defaultSensorByType(SensorType type);
+
+ // all sensors and direct channnels used
+ std::unordered_set<int32_t> mSensorHandles;
+ std::unordered_set<int32_t> mDirectChannelHandles;
};
+
+Return<Result> SensorsHidlTest::activate(int32_t sensorHandle, bool enabled) {
+ // If activating a sensor, add the handle in a set so that when test fails it can be turned off.
+ // The handle is not removed when it is deactivating on purpose so that it is not necessary to
+ // check the return value of deactivation. Deactivating a sensor more than once does not have
+ // negative effect.
+ if (enabled) {
+ mSensorHandles.insert(sensorHandle);
+ }
+ return S()->activate(sensorHandle, enabled);
+}
+
+Return<void> SensorsHidlTest::registerDirectChannel(
+ const SharedMemInfo& mem, ISensors::registerDirectChannel_cb cb) {
+ // If registeration of a channel succeeds, add the handle of channel to a set so that it can be
+ // unregistered when test fails. Unregister a channel does not remove the handle on purpose.
+ // Unregistering a channel more than once should not have negative effect.
+ S()->registerDirectChannel(mem,
+ [&] (auto result, auto channelHandle) {
+ if (result == Result::OK) {
+ mDirectChannelHandles.insert(channelHandle);
+ }
+ cb(result, channelHandle);
+ });
+ return Void();
+}
+
+std::vector<Event> SensorsHidlTest::collectEvents(useconds_t timeLimitUs, size_t nEventLimit,
+ bool clearBeforeStart, bool changeCollection) {
+ std::vector<Event> events;
+ constexpr useconds_t SLEEP_GRANULARITY = 100*1000; //gradularity 100 ms
+
+ ALOGI("collect max of %zu events for %d us, clearBeforeStart %d",
+ nEventLimit, timeLimitUs, clearBeforeStart);
+
+ if (changeCollection) {
+ SensorsHidlEnvironment::Instance()->setCollection(true);
+ }
+ if (clearBeforeStart) {
+ SensorsHidlEnvironment::Instance()->catEvents(nullptr);
+ }
+
+ while (timeLimitUs > 0) {
+ useconds_t duration = std::min(SLEEP_GRANULARITY, timeLimitUs);
+ usleep(duration);
+ timeLimitUs -= duration;
+
+ SensorsHidlEnvironment::Instance()->catEvents(&events);
+ if (events.size() >= nEventLimit) {
+ break;
+ }
+ ALOGV("time to go = %d, events to go = %d",
+ (int)timeLimitUs, (int)(nEventLimit - events.size()));
+ }
+
+ if (changeCollection) {
+ SensorsHidlEnvironment::Instance()->setCollection(false);
+ }
+ return events;
+}
+
bool SensorsHidlTest::typeMatchStringType(SensorType type, const hidl_string& stringType) {
if (type >= SensorType::DEVICE_PRIVATE_BASE) {
@@ -303,6 +546,7 @@
break;
case SensorFlagBits::SPECIAL_REPORTING_MODE:
res = (minDelay == 0) && (maxDelay == 0);
+ break;
default:
res = false;
}
@@ -439,10 +683,10 @@
int32_t handle = sensor.sensorHandle;
- S()->batch(handle, samplingPeriodInNs, batchingPeriodInNs);
- S()->activate(handle, 1);
+ ASSERT_EQ(batch(handle, samplingPeriodInNs, batchingPeriodInNs), Result::OK);
+ ASSERT_EQ(activate(handle, 1), Result::OK);
events = collectEvents(minTimeUs, minNEvent, true /*clearBeforeStart*/);
- S()->activate(handle, 0);
+ ASSERT_EQ(activate(handle, 0), Result::OK);
ALOGI("Collected %zu samples", events.size());
@@ -475,7 +719,6 @@
// Test if sensor hal can do gyroscope streaming properly
TEST_F(SensorsHidlTest, NormalGyroscopeStreamingOperation) {
-
std::vector<Event> events;
constexpr int64_t samplingPeriodInNs = 10ull*1000*1000; // 10ms
@@ -493,10 +736,10 @@
int32_t handle = sensor.sensorHandle;
- S()->batch(handle, samplingPeriodInNs, batchingPeriodInNs);
- S()->activate(handle, 1);
+ ASSERT_EQ(batch(handle, samplingPeriodInNs, batchingPeriodInNs), Result::OK);
+ ASSERT_EQ(activate(handle, 1), Result::OK);
events = collectEvents(minTimeUs, minNEvent, true /*clearBeforeStart*/);
- S()->activate(handle, 0);
+ ASSERT_EQ(activate(handle, 0), Result::OK);
ALOGI("Collected %zu samples", events.size());
@@ -529,7 +772,6 @@
// Test if sensor hal can do accelerometer sampling rate switch properly when sensor is active
TEST_F(SensorsHidlTest, AccelerometerSamplingPeriodHotSwitchOperation) {
-
std::vector<Event> events1, events2;
constexpr int64_t batchingPeriodInNs = 0; // no batching
@@ -553,18 +795,18 @@
return;
}
- S()->batch(handle, minSamplingPeriodInNs, batchingPeriodInNs);
- S()->activate(handle, 1);
+ ASSERT_EQ(batch(handle, minSamplingPeriodInNs, batchingPeriodInNs), Result::OK);
+ ASSERT_EQ(activate(handle, 1), Result::OK);
usleep(500000); // sleep 0.5 sec to wait for change rate to happen
events1 = collectEvents(sensor.minDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
- S()->batch(handle, maxSamplingPeriodInNs, batchingPeriodInNs);
+ ASSERT_EQ(batch(handle, maxSamplingPeriodInNs, batchingPeriodInNs), Result::OK);
usleep(500000); // sleep 0.5 sec to wait for change rate to happen
events2 = collectEvents(sensor.maxDelay * minNEvent, minNEvent, true /*clearBeforeStart*/);
- S()->activate(handle, 0);
+ ASSERT_EQ(activate(handle, 0), Result::OK);
ALOGI("Collected %zu fast samples and %zu slow samples", events1.size(), events2.size());
@@ -616,7 +858,6 @@
// Test if sensor hal can do normal accelerometer batching properly
TEST_F(SensorsHidlTest, AccelerometerBatchingOperation) {
-
std::vector<Event> events;
constexpr int64_t oneSecondInNs = 1ull * 1000 * 1000 * 1000;
@@ -649,18 +890,17 @@
int64_t allowedBatchDeliverTimeNs =
std::max(oneSecondInNs, batchingPeriodInNs / 10);
- S()->batch(handle, minSamplingPeriodInNs, INT64_MAX);
- S()->activate(handle, 1);
+ ASSERT_EQ(batch(handle, minSamplingPeriodInNs, INT64_MAX), Result::OK);
+ ASSERT_EQ(activate(handle, 1), Result::OK);
usleep(500000); // sleep 0.5 sec to wait for initialization
- S()->flush(handle);
+ ASSERT_EQ(flush(handle), Result::OK);
// wait for 80% of the reserved batching period
// there should not be any significant amount of events
// since collection is not enabled all events will go down the drain
usleep(batchingPeriodInNs / 1000 * 8 / 10);
-
SensorsHidlEnvironment::Instance()->setCollection(true);
// 0.8 + 0.3 times the batching period
// plus some time for the event to deliver
@@ -668,13 +908,13 @@
batchingPeriodInNs / 1000 * 3 / 10,
minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
- S()->flush(handle);
+ ASSERT_EQ(flush(handle), Result::OK);
events = collectEvents(allowedBatchDeliverTimeNs / 1000,
minFifoCount, true /*clearBeforeStart*/, false /*change collection*/);
SensorsHidlEnvironment::Instance()->setCollection(false);
- S()->activate(handle, 0);
+ ASSERT_EQ(activate(handle, 0), Result::OK);
size_t nEvent = 0;
for (auto & e : events) {
@@ -687,6 +927,79 @@
ASSERT_GT(nEvent, (size_t)(batchingPeriodInNs / minSamplingPeriodInNs * 9 / 10));
}
+// Test sensor event direct report with ashmem for gyro sensor
+TEST_F(SensorsHidlTest, GyroscopeAshmemDirectReport) {
+
+ constexpr SensorType type = SensorType::GYROSCOPE;
+ constexpr size_t kEventSize = 104;
+ constexpr size_t kNEvent = 500;
+ constexpr size_t kMemSize = kEventSize * kNEvent;
+
+ SensorInfo sensor = defaultSensorByType(type);
+
+ if (!(sensor.flags | SensorFlagBits::MASK_DIRECT_REPORT)
+ || !(sensor.flags | SensorFlagBits::DIRECT_CHANNEL_ASHMEM)) {
+ // does not declare support
+ return;
+ }
+
+ std::unique_ptr<SensorsTestSharedMemory>
+ mem(SensorsTestSharedMemory::create(SharedMemType::ASHMEM, kMemSize));
+ ASSERT_NE(mem, nullptr);
+
+ char* buffer = mem->getBuffer();
+ // fill memory with data
+ for (size_t i = 0; i < kMemSize; ++i) {
+ buffer[i] = '\xcc';
+ }
+
+ int32_t channelHandle;
+ registerDirectChannel(mem->getSharedMemInfo(),
+ [&channelHandle] (auto result, auto channelHandle_) {
+ ASSERT_EQ(result, Result::OK);
+ channelHandle = channelHandle_;
+ });
+
+ // check memory is zeroed
+ for (size_t i = 0; i < kMemSize; ++i) {
+ ASSERT_EQ(buffer[i], '\0');
+ }
+
+ int32_t eventToken;
+ configDirectReport(sensor.sensorHandle, channelHandle, RateLevel::NORMAL,
+ [&eventToken] (auto result, auto token) {
+ ASSERT_EQ(result, Result::OK);
+ eventToken = token;
+ });
+
+ usleep(1500000); // sleep 1 sec for data, plus 0.5 sec for initialization
+ auto events = mem->parseEvents();
+
+ // allowed to be 55% of nominal freq (50Hz)
+ ASSERT_GT(events.size(), 50 / 2);
+ ASSERT_LT(events.size(), static_cast<size_t>(110*1.5));
+
+ int64_t lastTimestamp = 0;
+ for (auto &e : events) {
+ ASSERT_EQ(e.sensorType, type);
+ ASSERT_EQ(e.sensorHandle, eventToken);
+ ASSERT_GT(e.timestamp, lastTimestamp);
+
+ Vec3 gyro = e.u.vec3;
+ double gyroNorm = std::sqrt(gyro.x * gyro.x + gyro.y * gyro.y + gyro.z * gyro.z);
+ // assert not drifting
+ ASSERT_TRUE(gyroNorm < 0.1); // < ~5 degree/sa
+
+ lastTimestamp = e.timestamp;
+ }
+
+ // stop sensor and unregister channel
+ configDirectReport(sensor.sensorHandle, channelHandle, RateLevel::STOP,
+ [&eventToken] (auto result, auto) {
+ ASSERT_EQ(result, Result::OK);
+ });
+ ASSERT_EQ(unregisterDirectChannel(channelHandle), Result::OK);
+}
int main(int argc, char **argv) {
::testing::AddGlobalTestEnvironment(SensorsHidlEnvironment::Instance());
@@ -695,4 +1008,4 @@
ALOGI("Test result = %d", status);
return status;
}
-
+// vim: set ts=2 sw=2
diff --git a/sensors/1.0/vts/types.vts b/sensors/1.0/vts/types.vts
index 2980507..1b48916 100644
--- a/sensors/1.0/vts/types.vts
+++ b/sensors/1.0/vts/types.vts
@@ -374,10 +374,7 @@
struct_value: {
name: "flags"
type: TYPE_MASK
- enum_value: {
- type: TYPE_ENUM
- predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
- }
+ predefined_type: "::android::hardware::sensors::V1_0::SensorFlagBits"
}
}
@@ -615,6 +612,26 @@
scalar_value: {
uint32_t: 131077
}
+ enumerator: "AINFO_LOCAL_GEOMAGNETIC_FIELD"
+ scalar_value: {
+ uint32_t: 196608
+ }
+ enumerator: "AINFO_LOCAL_GRAVITY"
+ scalar_value: {
+ uint32_t: 196609
+ }
+ enumerator: "AINFO_DOCK_STATE"
+ scalar_value: {
+ uint32_t: 196610
+ }
+ enumerator: "AINFO_HIGH_PERFORMANCE_MODE"
+ scalar_value: {
+ uint32_t: 196611
+ }
+ enumerator: "AINFO_MAGNETIC_FIELD_CALIBRATION"
+ scalar_value: {
+ uint32_t: 196612
+ }
enumerator: "AINFO_CUSTOM_START"
scalar_value: {
uint32_t: 268435456
@@ -817,6 +834,47 @@
}
attribute: {
+ name: "::android::hardware::sensors::V1_0::SensorsEventFormatOffset"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "SIZE_FIELD"
+ scalar_value: {
+ uint16_t: 0
+ }
+ enumerator: "REPORT_TOKEN"
+ scalar_value: {
+ uint16_t: 4
+ }
+ enumerator: "SENSOR_TYPE"
+ scalar_value: {
+ uint16_t: 8
+ }
+ enumerator: "ATOMIC_COUNTER"
+ scalar_value: {
+ uint16_t: 12
+ }
+ enumerator: "TIMESTAMP"
+ scalar_value: {
+ uint16_t: 16
+ }
+ enumerator: "DATA"
+ scalar_value: {
+ uint16_t: 24
+ }
+ enumerator: "RESERVED"
+ scalar_value: {
+ uint16_t: 88
+ }
+ enumerator: "TOTAL_LENGTH"
+ scalar_value: {
+ uint16_t: 104
+ }
+ }
+}
+
+attribute: {
name: "::android::hardware::sensors::V1_0::SharedMemInfo"
type: TYPE_STRUCT
struct_value: {
diff --git a/sensors/Android.mk b/sensors/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/sensors/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/soundtrigger/2.0/Android.bp b/soundtrigger/2.0/Android.bp
index 91e7ad1..5b50f39 100644
--- a/soundtrigger/2.0/Android.bp
+++ b/soundtrigger/2.0/Android.bp
@@ -64,3 +64,159 @@
"android.hidl.base@1.0",
],
}
+
+genrule {
+ name: "android.hardware.soundtrigger.vts.driver@2.0_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mDRIVER -tSOURCE -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "types.hal",
+ "ISoundTriggerHw.hal",
+ "ISoundTriggerHwCallback.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/types.vts.cpp",
+ "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
+ "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.soundtrigger.vts.driver@2.0_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mDRIVER -tHEADER -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "types.hal",
+ "ISoundTriggerHw.hal",
+ "ISoundTriggerHwCallback.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/types.vts.h",
+ "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
+ "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.soundtrigger.vts.driver@2.0",
+ generated_sources: ["android.hardware.soundtrigger.vts.driver@2.0_genc++"],
+ generated_headers: ["android.hardware.soundtrigger.vts.driver@2.0_genc++_headers"],
+ export_generated_headers: ["android.hardware.soundtrigger.vts.driver@2.0_genc++_headers"],
+ shared_libs: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "liblog",
+ "libutils",
+ "libcutils",
+ "libvts_common",
+ "libvts_datatype",
+ "libvts_measurement",
+ "libvts_multidevice_proto",
+ "libcamera_metadata",
+ "libprotobuf-cpp-full",
+ "android.hardware.audio.common@2.0",
+ "android.hidl.base@1.0",
+ "android.hardware.soundtrigger@2.0",
+ ],
+ export_shared_lib_headers: [
+ "libhidlbase",
+ "libhidltransport",
+ "libhwbinder",
+ "libutils",
+ "android.hardware.audio.common@2.0",
+ "android.hidl.base@1.0",
+ ],
+}
+
+genrule {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "ISoundTriggerHw.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.cpp",
+ "android/hardware/soundtrigger/2.0/types.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "ISoundTriggerHw.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/SoundTriggerHw.vts.h",
+ "android/hardware/soundtrigger/2.0/types.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler",
+ generated_sources: ["android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler_genc++"],
+ generated_headers: ["android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler_genc++_headers"],
+ export_generated_headers: ["android.hardware.soundtrigger@2.0-ISoundTriggerHw-vts.profiler_genc++_headers"],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libvts_profiling",
+ "libvts_multidevice_proto",
+ "libprotobuf-cpp-full",
+ "android.hardware.audio.common@2.0",
+ "android.hidl.base@1.0",
+ "android.hardware.soundtrigger@2.0",
+ ],
+}
+
+genrule {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler_genc++",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tSOURCE -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "ISoundTriggerHwCallback.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.cpp",
+ "android/hardware/soundtrigger/2.0/types.vts.cpp",
+ ],
+}
+
+genrule {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler_genc++_headers",
+ tools: ["hidl-gen", "vtsc"],
+ cmd: "$(location hidl-gen) -o $(genDir) -Lvts -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.soundtrigger@2.0 && $(location vtsc) -mPROFILER -tHEADER -b$(genDir) android/hardware/soundtrigger/2.0/ $(genDir)/android/hardware/soundtrigger/2.0/",
+ srcs: [
+ "ISoundTriggerHwCallback.hal",
+ "types.hal",
+ ],
+ out: [
+ "android/hardware/soundtrigger/2.0/SoundTriggerHwCallback.vts.h",
+ "android/hardware/soundtrigger/2.0/types.vts.h",
+ ],
+}
+
+cc_library_shared {
+ name: "android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler",
+ generated_sources: ["android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler_genc++"],
+ generated_headers: ["android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler_genc++_headers"],
+ export_generated_headers: ["android.hardware.soundtrigger@2.0-ISoundTriggerHwCallback-vts.profiler_genc++_headers"],
+ shared_libs: [
+ "libbase",
+ "libhidlbase",
+ "libhidltransport",
+ "libvts_profiling",
+ "libvts_multidevice_proto",
+ "libprotobuf-cpp-full",
+ "android.hardware.audio.common@2.0",
+ "android.hidl.base@1.0",
+ "android.hardware.soundtrigger@2.0",
+ ],
+}
diff --git a/audio/Android.mk b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/Android.mk
similarity index 75%
copy from audio/Android.mk
copy to soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/Android.mk
index f9e3276..fc0f9c4 100644
--- a/audio/Android.mk
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/Android.mk
@@ -16,4 +16,8 @@
LOCAL_PATH := $(call my-dir)
-include $(call all-subdir-makefiles)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := HalSoundTriggerHidlTargetBasicProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/soundtrigger/hidl/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/AndroidTest.xml b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..e95a406
--- /dev/null
+++ b/soundtrigger/2.0/vts/functional/vts/testcases/hal/soundtrigger/hidl/target_profiling/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS sound trigger HIDL HAL's basic target-side, profiling test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="HalSoundTriggerHidlTargetBasicTest" />
+ <option name="binary-test-sources" value="
+ _32bit::DATA/nativetest/soundtrigger_hidl_hal_test/soundtrigger_hidl_hal_test,
+ _64bit::DATA/nativetest64/soundtrigger_hidl_hal_test/soundtrigger_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="1m" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
diff --git a/soundtrigger/Android.mk b/soundtrigger/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/soundtrigger/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/thermal/1.0/IThermal.hal b/thermal/1.0/IThermal.hal
index 076b697..e5f70cb 100644
--- a/thermal/1.0/IThermal.hal
+++ b/thermal/1.0/IThermal.hal
@@ -75,19 +75,4 @@
getCoolingDevices()
generates (ThermalStatus status, vec<CoolingDevice> devices);
- /* Retrieves an undefined temperature value.
- *
- * @return status Status of the operation. If status code is FAILURE,
- * the status.debugMessage must be populated with the human-readable
- * error message.
- * @return undefinedTemperature returns an undefined temperature value if
- * status code is SUCCESS. Undefined temperature value is an
- * unreachable constant device temperature value for HAL.
- *
- */
- @callflow(next={"*"})
- @entry
- @exit
- getUndefinedTemperature()
- generates (ThermalStatus status, float undefinedTemperature);
};
diff --git a/thermal/1.0/default/Thermal.cpp b/thermal/1.0/default/Thermal.cpp
index 5bc313d..2dd0090 100644
--- a/thermal/1.0/default/Thermal.cpp
+++ b/thermal/1.0/default/Thermal.cpp
@@ -17,6 +17,7 @@
#define LOG_TAG "android.hardware.thermal@1.0-impl"
#include <errno.h>
+#include <math.h>
#include <vector>
@@ -33,6 +34,14 @@
namespace V1_0 {
namespace implementation {
+namespace {
+
+float finalizeTemperature(float temperature) {
+ return temperature == UNKNOWN_TEMPERATURE ? NAN : temperature;
+}
+
+}
+
Thermal::Thermal(thermal_module_t* module) : mModule(module) {}
// Methods from ::android::hardware::thermal::V1_0::IThermal follow.
@@ -76,10 +85,11 @@
;
}
temperatures[i].name = list[i].name;
- temperatures[i].currentValue = list[i].current_value;
- temperatures[i].throttlingThreshold = list[i].throttling_threshold;
- temperatures[i].shutdownThreshold = list[i].shutdown_threshold;
- temperatures[i].vrThrottlingThreshold = list[i].vr_throttling_threshold;
+ temperatures[i].currentValue = finalizeTemperature(list[i].current_value);
+ temperatures[i].throttlingThreshold = finalizeTemperature(list[i].throttling_threshold);
+ temperatures[i].shutdownThreshold = finalizeTemperature(list[i].shutdown_threshold);
+ temperatures[i].vrThrottlingThreshold =
+ finalizeTemperature(list[i].vr_throttling_threshold);
}
}
}
@@ -169,13 +179,6 @@
return Void();
}
-Return<void> Thermal::getUndefinedTemperature(getUndefinedTemperature_cb _hidl_cb) {
- ThermalStatus status;
- status.code = ThermalStatusCode::SUCCESS;
- _hidl_cb(status, UNKNOWN_TEMPERATURE);
- return Void();
-}
-
IThermal* HIDL_FETCH_IThermal(const char* /* name */) {
thermal_module_t* module;
status_t err = hw_get_module(THERMAL_HARDWARE_MODULE_ID,
diff --git a/thermal/1.0/default/Thermal.h b/thermal/1.0/default/Thermal.h
index eec0ff5..2e06289 100644
--- a/thermal/1.0/default/Thermal.h
+++ b/thermal/1.0/default/Thermal.h
@@ -45,7 +45,6 @@
Return<void> getTemperatures(getTemperatures_cb _hidl_cb) override;
Return<void> getCpuUsages(getCpuUsages_cb _hidl_cb) override;
Return<void> getCoolingDevices(getCoolingDevices_cb _hidl_cb) override;
- Return<void> getUndefinedTemperature(getUndefinedTemperature_cb _hidl_cb) override;
private:
thermal_module_t* mModule;
};
diff --git a/thermal/1.0/types.hal b/thermal/1.0/types.hal
index 30cfdd9..eb5d7c7 100644
--- a/thermal/1.0/types.hal
+++ b/thermal/1.0/types.hal
@@ -45,28 +45,27 @@
string name;
/**
- * Current temperature in Celsius. If not available set by HAL to
- * undefined temperature value.
+ * Current temperature in Celsius. If not available set by HAL to NAN.
* Current temperature can be in any units if type=UNKNOWN.
*/
float currentValue;
/**
* Throttling temperature constant for this temperature.
- * If not available, set by HAL to undefined temperature value.
+ * If not available, set by HAL to NAN.
*/
float throttlingThreshold;
/**
* Shutdown temperature constant for this temperature.
- * If not available, set by HAL to undefined temperature value.
+ * If not available, set by HAL to NAN.
*/
float shutdownThreshold;
/**
* Threshold temperature above which the VR mode clockrate minimums cannot
* be maintained for this device.
- * If not available, set by HAL to undefined temperature value.
+ * If not available, set by HAL to NAN.
*/
float vrThrottlingThreshold;
diff --git a/thermal/1.0/vts/Thermal.vts b/thermal/1.0/vts/Thermal.vts
index d8cc670..e76d943 100644
--- a/thermal/1.0/vts/Thermal.vts
+++ b/thermal/1.0/vts/Thermal.vts
@@ -79,25 +79,4 @@
}
}
- api: {
- name: "getUndefinedTemperature"
- return_type_hidl: {
- type: TYPE_STRUCT
- predefined_type: "::android::hardware::thermal::V1_0::ThermalStatus"
- }
- return_type_hidl: {
- type: TYPE_SCALAR
- scalar_type: "float_t"
- }
- callflow: {
- next: "*"
- }
- callflow: {
- entry: true
- }
- callflow: {
- exit: true
- }
- }
-
}
diff --git a/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp b/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp
index 6eb6269..d922169 100644
--- a/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp
+++ b/thermal/1.0/vts/functional/thermal_hidl_hal_test.cpp
@@ -54,17 +54,6 @@
ASSERT_NE(thermal_, nullptr);
baseSize_ = 0;
names_.clear();
-
- {
- float undefined_temperature;
- thermal_->getUndefinedTemperature(
- [&undefined_temperature](ThermalStatus status, float temperature) {
- EXPECT_EQ(ThermalStatusCode::SUCCESS, status.code);
- EXPECT_LT(MAX_DEVICE_TEMPERATURE, std::abs(undefined_temperature));
- undefined_temperature = temperature;
- });
- undefined_temperature_ = undefined_temperature;
- }
}
virtual void TearDown() override {}
@@ -136,20 +125,18 @@
// .currentValue of known type is in Celsius and must be reasonable.
EXPECT_TRUE(temperature.type == TemperatureType::UNKNOWN ||
std::abs(temperature.currentValue) < MAX_DEVICE_TEMPERATURE ||
- temperature.currentValue == undefined_temperature_);
+ isnan(temperature.currentValue));
// .name must not be empty.
EXPECT_LT(0u, temperature.name.size());
// .currentValue must not exceed .shutdwonThreshold if defined.
EXPECT_TRUE(temperature.currentValue < temperature.shutdownThreshold ||
- temperature.currentValue == undefined_temperature_ ||
- temperature.shutdownThreshold == undefined_temperature_);
+ isnan(temperature.currentValue) || isnan(temperature.shutdownThreshold));
// .throttlingThreshold must not exceed .shutdownThreshold if defined.
EXPECT_TRUE(temperature.throttlingThreshold < temperature.shutdownThreshold ||
- temperature.throttlingThreshold == undefined_temperature_ ||
- temperature.shutdownThreshold == undefined_temperature_);
+ isnan(temperature.throttlingThreshold) || isnan(temperature.shutdownThreshold));
}
// Check validity of CPU usage returned by Thermal HAL.
@@ -172,7 +159,6 @@
size_t baseSize_;
std::vector<hidl_string> names_;
- float undefined_temperature_;
};
// Sanity test for Thermal::getTemperatures().
diff --git a/thermal/Android.mk b/thermal/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/thermal/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/tv/Android.mk b/tv/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/tv/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/vehicle/Android.mk b/vehicle/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/vehicle/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/vibrator/Android.mk b/vibrator/Android.mk
deleted file mode 100644
index f9e3276..0000000
--- a/vibrator/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-subdir-makefiles)
diff --git a/audio/Android.mk b/vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/Android.mk
similarity index 77%
copy from audio/Android.mk
copy to vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/Android.mk
index f9e3276..6f60af3 100644
--- a/audio/Android.mk
+++ b/vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/Android.mk
@@ -16,4 +16,8 @@
LOCAL_PATH := $(call my-dir)
-include $(call all-subdir-makefiles)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := VrHidlTargetProfilingTest
+VTS_CONFIG_SRC_DIR := testcases/hal/vr/hidl/target_profiling
+include test/vts/tools/build/Android.host_config.mk
diff --git a/vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/AndroidTest.xml b/vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/AndroidTest.xml
new file mode 100644
index 0000000..3bc711a
--- /dev/null
+++ b/vr/1.0/vts/functional/vts/testcases/hal/vr/hidl/target_profiling/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Config for VTS VR HIDL HAL's target-side, profiling test cases">
+ <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
+ <option name="push-group" value="HidlHalTest.push" />
+ </target_preparer>
+ <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+ <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
+ <option name="test-module-name" value="VrHidlTargetTest" />
+ <option name="binary-test-sources" value="
+ _32bit::DATA/nativetest/vr_hidl_hal_test/vr_hidl_hal_test,
+ _64bit::DATA/nativetest64/vr_hidl_hal_test/vr_hidl_hal_test,
+ "/>
+ <option name="binary-test-type" value="gtest" />
+ <option name="test-timeout" value="1m" />
+ <option name="enable-profiling" value="true" />
+ </test>
+</configuration>
+
diff --git a/wifi/1.0/IWifiChip.hal b/wifi/1.0/IWifiChip.hal
index d790404..b0598a4 100644
--- a/wifi/1.0/IWifiChip.hal
+++ b/wifi/1.0/IWifiChip.hal
@@ -205,7 +205,8 @@
* |WifiStatusCode.ERROR_UNKNOWN|
* @return capabilities Bitset of |ChipCapabilityMask| values.
*/
- getCapabilities() generates (WifiStatus status, uint32_t capabilities);
+ getCapabilities()
+ generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities);
/**
* Get the set of operation modes that the chip supports.
diff --git a/wifi/1.0/IWifiStaIface.hal b/wifi/1.0/IWifiStaIface.hal
index 7dad8af..6a738a9 100644
--- a/wifi/1.0/IWifiStaIface.hal
+++ b/wifi/1.0/IWifiStaIface.hal
@@ -120,7 +120,9 @@
* |WifiStatusCode.ERROR_UNKNOWN|
* @return capabilities Bitset of |StaIfaceCapabilityMask| values.
*/
- getCapabilities() generates (WifiStatus status, uint32_t capabilities);
+ getCapabilities()
+ generates (WifiStatus status,
+ bitfield<StaIfaceCapabilityMask> capabilities);
/**
* Used to query additional information about the chip's APF capabilities.
diff --git a/wifi/1.0/types.hal b/wifi/1.0/types.hal
index 1e86be4..edf306d 100644
--- a/wifi/1.0/types.hal
+++ b/wifi/1.0/types.hal
@@ -254,7 +254,7 @@
* Bands that can be specified in Background scan requests.
*/
enum StaBackgroundScanBand : uint32_t {
- BAND_UNSPECIFIED,
+ BAND_UNSPECIFIED = 0,
/**
* 2.4 GHz.
*/
@@ -325,10 +325,10 @@
*/
uint32_t periodInMs;
/**
- * Bitset of |BackgroundScanBucketEventReportSchemeMask| values controlling
+ * Bitset of |StaBackgroundScanBucketEventReportSchemeMask| values controlling
* when events for this bucket must be reported.
*/
- uint32_t eventReportScheme;
+ bitfield<StaBackgroundScanBucketEventReportSchemeMask> eventReportScheme;
/**
* For exponential back off. If |exponentialMaxPeriodInMs| is non zero or
* different than period, then this bucket is an exponential backoff bucket
@@ -503,7 +503,7 @@
/**
* Bitset containing |ScanDataFlagMask| values.
*/
- uint32_t flags;
+ bitfield<StaScanDataFlagMask> flags;
/**
* Bitset where each bit indicates if the bucket with that index was
* scanned.
@@ -843,6 +843,23 @@
};
/**
+ * Cipher suite flags - to be used as a bitmask.
+ */
+enum NanCipherSuiteType : uint32_t {
+ SHARED_KEY_128_MASK = 1 << 0,
+ SHARED_KEY_256_MASK = 1 << 1
+};
+
+/**
+ * Ranging in the context of discovery sessions indication controls - to be used as a bitmask.
+ */
+enum NanRangingIndication : uint32_t {
+ CONTINUOUS_INDICATION_MASK = 1 << 0,
+ INGRESS_MET_MASK = 1 << 1,
+ EGRESS_MET_MASK = 1 << 2
+};
+
+/**
* Configurations of NAN discovery sessions: common to publish and subscribe discovery.
*/
struct NanDiscoveryCommonConfig {
@@ -921,7 +938,7 @@
* Cipher types supported in data-paths constructed in the context of this discovery session. The
* |NanCipherSuiteType| bit fields are used to set this value.
*/
- uint32_t supportedCipherTypes;
+ bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
* Optional PMK for data-paths constructed in the context of this discovery session. A PMK could
* also be provided during the actual construction of the data-path (which allows unique PMKs for
@@ -949,7 +966,7 @@
* The type of ranging indication feedback to be provided by discovery session matches. Use
* bit-fields from |NanRangingIndication|.
*/
- uint32_t configRangingIndications;
+ bitfield<NanRangingIndication> configRangingIndications;
/**
* The ingress and egress distance in cm. If ranging is eanbled (|rangingEnabled| is true) then
* \configRangingIndications\ is used to determine whether ingress and/or egress (or neither)
@@ -960,23 +977,6 @@
};
/**
- * Cipher suite flags - to be used as a bitmask.
- */
-enum NanCipherSuiteType : uint32_t {
- SHARED_KEY_128_MASK = 1 << 0,
- SHARED_KEY_256_MASK = 1 << 1
-};
-
-/**
- * Ranging in the context of discovery sessions indication controls - to be used as a bitmask.
- */
-enum NanRangingIndication : uint32_t {
- CONTINUOUS_INDICATION_MASK = 1 << 0,
- INGRESS_MET_MASK = 1 << 1,
- EGRESS_MET_MASK = 1 << 2
-};
-
-/**
* Publish request: specifies a publish discovery operation.
*/
struct NanPublishRequest {
@@ -1111,7 +1111,7 @@
* Cipher types supported in data-paths constructed in the context of this discovery session. The
* |NanCipherSuiteType| bit fields are used to set this value.
*/
- uint32_t supportedCipherTypes;
+ bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
* PMK of the data-path being requested (if |securityRequired| is true).
* Max length: 32
@@ -1150,7 +1150,7 @@
* Cipher types supported in data-paths constructed in the context of this discovery session. The
* |NanCipherSuiteType| bit fields are used to set this value.
*/
- uint32_t supportedCipherTypes;
+ bitfield<NanCipherSuiteType> supportedCipherTypes;
/**
* PMK of the data-path being requested (if |securityRequired| is true).
* Max length: 32
@@ -1243,7 +1243,7 @@
/**
* The set of supported Cipher suites. The |NanCipherSuiteType| bit fields are used.
*/
- uint32_t supportedCipherSuites;
+ bitfield<NanCipherSuiteType> supportedCipherSuites;
};
/**
@@ -1294,7 +1294,7 @@
* Cipher types supported by the peer for data-paths constructed in the context of this discovery
* session. The |NanCipherSuiteType| bit fields are used to set this value.
*/
- uint32_t peerSupportedCipherTypes;
+ bitfield<NanCipherSuiteType> peerSupportedCipherTypes;
/**
* Indicates whether or not the peer requires security enabled in any data-path (NDP) constructed
* in the context of this discovery session.
@@ -1327,7 +1327,7 @@
* The ranging event(s) which triggered the ranging. Uses bit-fields from |NanRangingIndication|.
* E.g. can indicate that continuous ranging is required, or else that an ingress event occurred.
*/
- uint32_t rangingIndicationType;
+ bitfield<NanRangingIndication> rangingIndicationType;
};
/**
@@ -1421,7 +1421,7 @@
* Frames on which this vendor specific attribute was received.
* Mask |NanVsaRxFrameMask| defined above.
*/
- uint8_t vsaReceivedOnFrames;
+ bitfield<NanVsaRxFrameMask> vsaReceivedOnFrames;
/**
* Organizationally Unique Identifier (OUI) of the vendor-specific attribute.
*/
@@ -1811,12 +1811,12 @@
* Bit mask indicates what preamble is supported by initiator.
* Combination of |RttPreamble| values.
*/
- uint8_t preambleSupport;
+ bitfield<RttPreamble> preambleSupport;
/**
* Bit mask indicates what BW is supported by initiator.
* Combination of |RttBw| values.
*/
- uint8_t bwSupport;
+ bitfield<RttBw> bwSupport;
/**
* Draft 11mc spec version supported by chip.
* For instance, version 4.0 must be 40 and version 4.3 must be 43 etc.
diff --git a/wifi/1.0/vts/Wifi.vts b/wifi/1.0/vts/Wifi.vts
new file mode 100644
index 0000000..608e012
--- /dev/null
+++ b/wifi/1.0/vts/Wifi.vts
@@ -0,0 +1,110 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifi"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiChip"
+import: "android.hardware.wifi@1.0::IWifiEventCallback"
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "registerEventCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IWifiEventCallback"
+ is_callback: true
+ }
+ callflow: {
+ entry: true
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "isStarted"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "start"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ callflow: {
+ entry: true
+ }
+ callflow: {
+ next: "registerEventCallback"
+ next: "start"
+ next: "stop"
+ next: "getChip"
+ }
+ }
+
+ api: {
+ name: "stop"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ callflow: {
+ exit: true
+ }
+ callflow: {
+ next: "registerEventCallback"
+ next: "start"
+ next: "stop"
+ }
+ }
+
+ api: {
+ name: "getChipIds"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+ api: {
+ name: "getChip"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiChip"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ callflow: {
+ next: "*"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiApIface.vts b/wifi/1.0/vts/WifiApIface.vts
new file mode 100644
index 0000000..c4f3640
--- /dev/null
+++ b/wifi/1.0/vts/WifiApIface.vts
@@ -0,0 +1,33 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiApIface"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiIface"
+
+interface: {
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiChip.vts b/wifi/1.0/vts/WifiChip.vts
new file mode 100644
index 0000000..4b278c1
--- /dev/null
+++ b/wifi/1.0/vts/WifiChip.vts
@@ -0,0 +1,545 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiChip"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiApIface"
+import: "android.hardware.wifi@1.0::IWifiChipEventCallback"
+import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::IWifiNanIface"
+import: "android.hardware.wifi@1.0::IWifiP2pIface"
+import: "android.hardware.wifi@1.0::IWifiRttController"
+import: "android.hardware.wifi@1.0::IWifiStaIface"
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombinationLimit"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "types"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+ struct_value: {
+ name: "maxIfaces"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombination"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "limits"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombinationLimit"
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiChip::ChipMode"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "id"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "availableCombinations"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipIfaceCombination"
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiChip::ChipDebugInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "driverDescription"
+ type: TYPE_STRING
+ }
+ struct_value: {
+ name: "firmwareDescription"
+ type: TYPE_STRING
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiChip::ChipCapabilityMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "DEBUG_MEMORY_FIRMWARE_DUMP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "DEBUG_MEMORY_DRIVER_DUMP"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "DEBUG_RING_BUFFER_CONNECT_EVENT"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "DEBUG_RING_BUFFER_POWER_EVENT"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "DEBUG_RING_BUFFER_WAKELOCK_EVENT"
+ scalar_value: {
+ uint32_t: 16
+ }
+ enumerator: "DEBUG_RING_BUFFER_VENDOR_DATA"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "DEBUG_HOST_WAKE_REASON_STATS"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "DEBUG_ERROR_ALERTS"
+ scalar_value: {
+ uint32_t: 128
+ }
+ }
+ }
+
+ api: {
+ name: "getId"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "registerEventCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IWifiChipEventCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "getCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipCapabilityMask"
+ }
+ }
+
+ api: {
+ name: "getAvailableModes"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipMode"
+ }
+ }
+ }
+
+ api: {
+ name: "configureChip"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getMode"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "requestChipDebugInfo"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiChip::ChipDebugInfo"
+ }
+ }
+
+ api: {
+ name: "requestDriverDebugDump"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "requestFirmwareDebugDump"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "createApIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiApIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "getApIfaceNames"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRING
+ }
+ }
+ }
+
+ api: {
+ name: "getApIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiApIface"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "removeApIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "createNanIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiNanIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "getNanIfaceNames"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRING
+ }
+ }
+ }
+
+ api: {
+ name: "getNanIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiNanIface"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "removeNanIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "createP2pIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiP2pIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "getP2pIfaceNames"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRING
+ }
+ }
+ }
+
+ api: {
+ name: "getP2pIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiP2pIface"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "removeP2pIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "createStaIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiStaIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "getStaIfaceNames"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRING
+ }
+ }
+ }
+
+ api: {
+ name: "getStaIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiStaIface"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "removeStaIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "createRttController"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiRttController"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "getDebugRingBuffersStatus"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
+ }
+ }
+ }
+
+ api: {
+ name: "startLoggingToDebugRingBuffer"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferVerboseLevel"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "forceDumpToDebugRingBuffer"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getDebugHostWakeReasonStats"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonStats"
+ }
+ }
+
+ api: {
+ name: "enableDebugErrorAlerts"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiChipEventCallback.vts b/wifi/1.0/vts/WifiChipEventCallback.vts
new file mode 100644
index 0000000..c755162
--- /dev/null
+++ b/wifi/1.0/vts/WifiChipEventCallback.vts
@@ -0,0 +1,78 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiChipEventCallback"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "onChipReconfigured"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onChipReconfigureFailure"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ }
+
+ api: {
+ name: "onIfaceAdded"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onIfaceRemoved"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onDebugRingBufferDataAvailable"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onDebugErrorAlert"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiEventCallback.vts b/wifi/1.0/vts/WifiEventCallback.vts
new file mode 100644
index 0000000..a0cf667
--- /dev/null
+++ b/wifi/1.0/vts/WifiEventCallback.vts
@@ -0,0 +1,26 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiEventCallback"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "onStart"
+ }
+
+ api: {
+ name: "onStop"
+ }
+
+ api: {
+ name: "onFailure"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiIface.vts b/wifi/1.0/vts/WifiIface.vts
new file mode 100644
index 0000000..1434a3e
--- /dev/null
+++ b/wifi/1.0/vts/WifiIface.vts
@@ -0,0 +1,33 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiIface"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiNanIface.vts b/wifi/1.0/vts/WifiNanIface.vts
new file mode 100644
index 0000000..663b526
--- /dev/null
+++ b/wifi/1.0/vts/WifiNanIface.vts
@@ -0,0 +1,278 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiNanIface"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::IWifiNanIfaceEventCallback"
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "registerEventCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IWifiNanIfaceEventCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "getCapabilitiesRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "enableRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanEnableRequest"
+ }
+ }
+
+ api: {
+ name: "configRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanConfigRequest"
+ }
+ }
+
+ api: {
+ name: "disableRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "startPublishRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanPublishRequest"
+ }
+ }
+
+ api: {
+ name: "stopPublishRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "startSubscribeRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanSubscribeRequest"
+ }
+ }
+
+ api: {
+ name: "stopSubscribeRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "transmitFollowupRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanTransmitFollowupRequest"
+ }
+ }
+
+ api: {
+ name: "createDataInterfaceRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "deleteDataInterfaceRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "initiateDataPathRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanInitiateDataPathRequest"
+ }
+ }
+
+ api: {
+ name: "respondToDataPathIndicationRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanRespondToDataPathIndicationRequest"
+ }
+ }
+
+ api: {
+ name: "terminateDataPathRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "beaconSdfPayloadRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiNanIfaceEventCallback.vts b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
new file mode 100644
index 0000000..30ca88a
--- /dev/null
+++ b/wifi/1.0/vts/WifiNanIfaceEventCallback.vts
@@ -0,0 +1,318 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiNanIfaceEventCallback"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "notifyCapabilitiesResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanCapabilities"
+ }
+ }
+
+ api: {
+ name: "notifyEnableResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyConfigResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyDisableResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyStartPublishResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "notifyStopPublishResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyStartSubscribeResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ }
+
+ api: {
+ name: "notifyStopSubscribeResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyTransmitFollowupResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyCreateDataInterfaceResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyDeleteDataInterfaceResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyInitiateDataPathResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyRespondToDataPathIndicationResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "notifyTerminateDataPathResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "notifyBeaconSdfPayloadResponse"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "eventClusterEvent"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanClusterEventInd"
+ }
+ }
+
+ api: {
+ name: "eventDisabled"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "eventPublishTerminated"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "eventSubscribeTerminated"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "eventMatch"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanMatchInd"
+ }
+ }
+
+ api: {
+ name: "eventMatchExpired"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "eventFollowupReceived"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanFollowupReceivedInd"
+ }
+ }
+
+ api: {
+ name: "eventTransmitFollowup"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+ }
+
+ api: {
+ name: "eventDataPathRequest"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
+ }
+ }
+
+ api: {
+ name: "eventDataPathConfirm"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanDataPathConfirmInd"
+ }
+ }
+
+ api: {
+ name: "eventDataPathTerminated"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "eventBeaconSdfPayload"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiP2pIface.vts b/wifi/1.0/vts/WifiP2pIface.vts
new file mode 100644
index 0000000..b40c81e
--- /dev/null
+++ b/wifi/1.0/vts/WifiP2pIface.vts
@@ -0,0 +1,33 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiP2pIface"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiIface"
+
+interface: {
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiRttController.vts b/wifi/1.0/vts/WifiRttController.vts
new file mode 100644
index 0000000..0fd3626
--- /dev/null
+++ b/wifi/1.0/vts/WifiRttController.vts
@@ -0,0 +1,172 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiRttController"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::IWifiRttControllerEventCallback"
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "getBoundIface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "IWifiIface"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "registerEventCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IWifiRttControllerEventCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "rangeRequest"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttConfig"
+ }
+ }
+ }
+
+ api: {
+ name: "rangeCancel"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+ }
+
+ api: {
+ name: "getCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttCapabilities"
+ }
+ }
+
+ api: {
+ name: "setLci"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttLciInformation"
+ }
+ }
+
+ api: {
+ name: "setLcr"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttLcrInformation"
+ }
+ }
+
+ api: {
+ name: "getResponderInfo"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttResponder"
+ }
+ }
+
+ api: {
+ name: "enableResponder"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttResponder"
+ }
+ }
+
+ api: {
+ name: "disableResponder"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiRttControllerEventCallback.vts b/wifi/1.0/vts/WifiRttControllerEventCallback.vts
new file mode 100644
index 0000000..028fd03
--- /dev/null
+++ b/wifi/1.0/vts/WifiRttControllerEventCallback.vts
@@ -0,0 +1,25 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiRttControllerEventCallback"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "onResults"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::RttResult"
+ }
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiStaIface.vts b/wifi/1.0/vts/WifiStaIface.vts
new file mode 100644
index 0000000..0cff792
--- /dev/null
+++ b/wifi/1.0/vts/WifiStaIface.vts
@@ -0,0 +1,432 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiStaIface"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::IWifiIface"
+import: "android.hardware.wifi@1.0::IWifiStaIfaceEventCallback"
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::V1_0::IWifiStaIface::StaIfaceCapabilityMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "APF"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "BACKGROUND_SCAN"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "LINK_LAYER_STATS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "RSSI_MONITOR"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "CONTROL_ROAMING"
+ scalar_value: {
+ uint32_t: 16
+ }
+ enumerator: "PROBE_IE_WHITELIST"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "SCAN_RAND"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "STA_5G"
+ scalar_value: {
+ uint32_t: 128
+ }
+ enumerator: "HOTSPOT"
+ scalar_value: {
+ uint32_t: 256
+ }
+ enumerator: "PNO"
+ scalar_value: {
+ uint32_t: 512
+ }
+ enumerator: "TDLS"
+ scalar_value: {
+ uint32_t: 1024
+ }
+ enumerator: "TDLS_OFFCHANNEL"
+ scalar_value: {
+ uint32_t: 2048
+ }
+ enumerator: "ND_OFFLOAD"
+ scalar_value: {
+ uint32_t: 4096
+ }
+ enumerator: "KEEP_ALIVE"
+ scalar_value: {
+ uint32_t: 8192
+ }
+ enumerator: "DEBUG_PACKET_FATE"
+ scalar_value: {
+ uint32_t: 16384
+ }
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "registerEventCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "IWifiStaIfaceEventCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "getCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::IWifiStaIface::StaIfaceCapabilityMask"
+ }
+ }
+
+ api: {
+ name: "getApfPacketFilterCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaApfPacketFilterCapabilities"
+ }
+ }
+
+ api: {
+ name: "installApfPacketFilter"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getBackgroundScanCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanCapabilities"
+ }
+ }
+
+ api: {
+ name: "getValidFrequenciesForBackgroundScan"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
+ }
+ }
+
+ api: {
+ name: "startBackgroundScan"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanParameters"
+ }
+ }
+
+ api: {
+ name: "stopBackgroundScan"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "enableLinkLayerStatsCollection"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "disableLinkLayerStatsCollection"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ }
+
+ api: {
+ name: "getLinkLayerStats"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerStats"
+ }
+ }
+
+ api: {
+ name: "startRssiMonitoring"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ }
+
+ api: {
+ name: "stopRssiMonitoring"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getRoamingCapabilities"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaRoamingCapabilities"
+ }
+ }
+
+ api: {
+ name: "configureRoaming"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaRoamingConfig"
+ }
+ }
+
+ api: {
+ name: "setRoamingState"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::StaRoamingState"
+ }
+ }
+
+ api: {
+ name: "enableNdOffload"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "startSendingKeepAlivePackets"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "stopSendingKeepAlivePackets"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "startDebugPacketFateMonitoring"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ }
+
+ api: {
+ name: "stopDebugPacketFateMonitoring"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ }
+
+ api: {
+ name: "getDebugTxPacketFates"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFateReport"
+ }
+ }
+ }
+
+ api: {
+ name: "getDebugRxPacketFates"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFateReport"
+ }
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/WifiStaIfaceEventCallback.vts b/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
new file mode 100644
index 0000000..b04ad26
--- /dev/null
+++ b/wifi/1.0/vts/WifiStaIfaceEventCallback.vts
@@ -0,0 +1,65 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "IWifiStaIfaceEventCallback"
+
+package: "android.hardware.wifi"
+
+import: "android.hardware.wifi@1.0::types"
+
+interface: {
+ api: {
+ name: "onBackgroundScanFailure"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onBackgroundFullScanResult"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaScanResult"
+ }
+ }
+
+ api: {
+ name: "onBackgroundScanResults"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaScanData"
+ }
+ }
+ }
+
+ api: {
+ name: "onRssiThresholdBreached"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ }
+
+}
diff --git a/wifi/1.0/vts/types.vts b/wifi/1.0/vts/types.vts
new file mode 100644
index 0000000..fd60d4e
--- /dev/null
+++ b/wifi/1.0/vts/types.vts
@@ -0,0 +1,2846 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.wifi"
+
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiStatusCode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "ERROR_WIFI_CHIP_INVALID"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "ERROR_WIFI_IFACE_INVALID"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "ERROR_WIFI_RTT_CONTROLLER_INVALID"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "ERROR_NOT_SUPPORTED"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "ERROR_NOT_AVAILABLE"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "ERROR_NOT_STARTED"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "ERROR_INVALID_ARGS"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "ERROR_BUSY"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "ERROR_UNKNOWN"
+ scalar_value: {
+ uint32_t: 9
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiStatus"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "code"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiStatusCode"
+ }
+ struct_value: {
+ name: "description"
+ type: TYPE_STRING
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::IfaceType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "STA"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "AP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "P2P"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "NAN"
+ scalar_value: {
+ uint32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WIDTH_20"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "WIDTH_40"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "WIDTH_80"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "WIDTH_160"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "WIDTH_80P80"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "WIDTH_5"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "WIDTH_10"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "WIDTH_INVALID"
+ scalar_value: {
+ uint32_t: 4294967295
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiChannelInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "width"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
+ }
+ struct_value: {
+ name: "centerFreq"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "centerFreq0"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "centerFreq1"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiInformationElement"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "id"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "data"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiRatePreamble"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "OFDM"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "CCK"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "HT"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "VHT"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "RESERVED"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiRateNss"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NSS_1x1"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "NSS_2x2"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "NSS_3x3"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "NSS_4x4"
+ scalar_value: {
+ uint32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiRateInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "preamble"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiRatePreamble"
+ }
+ struct_value: {
+ name: "nss"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiRateNss"
+ }
+ struct_value: {
+ name: "bw"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiChannelWidthInMhz"
+ }
+ struct_value: {
+ name: "rateMcsIdx"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "bitRateInKbps"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaApfPacketFilterCapabilities"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "version"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxLength"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaBackgroundScanCapabilities"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "maxCacheSize"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxBuckets"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxApCachePerScan"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxReportingThreshold"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "BAND_UNSPECIFIED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "BAND_24GHZ"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "BAND_5GHZ"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "BAND_5GHZ_DFS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "BAND_5GHZ_WITH_DFS"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "BAND_24GHZ_5GHZ"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "BAND_24GHZ_5GHZ_WITH_DFS"
+ scalar_value: {
+ uint32_t: 7
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketEventReportSchemeMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "EACH_SCAN"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FULL_RESULTS"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "NO_BATCH"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketParameters"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "band"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBand"
+ }
+ struct_value: {
+ name: "frequencies"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ struct_value: {
+ name: "periodInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "eventReportScheme"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketEventReportSchemeMask"
+ }
+ struct_value: {
+ name: "exponentialMaxPeriodInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "exponentialBase"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "exponentialStepCount"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaBackgroundScanParameters"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "basePeriodInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxApPerScan"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "reportThresholdPercent"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "reportThresholdNumScans"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "buckets"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaBackgroundScanBucketParameters"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rxMpdu"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "txMpdu"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "lostMpdu"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "retries"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaLinkLayerIfaceStats"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "beaconRx"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "avgRssiMgmt"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "wmeBePktStats"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
+ }
+ struct_value: {
+ name: "wmeBkPktStats"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
+ }
+ struct_value: {
+ name: "wmeViPktStats"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
+ }
+ struct_value: {
+ name: "wmeVoPktStats"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfacePacketStats"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaLinkLayerRadioStats"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "onTimeInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "txTimeInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "txTimeInMsPerLevel"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ struct_value: {
+ name: "rxTimeInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "onTimeInMsForScan"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaLinkLayerStats"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "iface"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerIfaceStats"
+ }
+ struct_value: {
+ name: "radio"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaLinkLayerRadioStats"
+ }
+ struct_value: {
+ name: "timeStampInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaScanResult"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "timeStampInUs"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "ssid"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "bssid"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "rssi"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "frequency"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "beaconPeriodInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "capability"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "informationElements"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaScanDataFlagMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "int32_t"
+
+ enumerator: "INTERRUPTED"
+ scalar_value: {
+ int32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaScanData"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "flags"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::StaScanDataFlagMask"
+ }
+ struct_value: {
+ name: "bucketsScanned"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "results"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::StaScanResult"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaRoamingCapabilities"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "maxBlacklistSize"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxWhitelistSize"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaRoamingConfig"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "bssidBlacklist"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+ struct_value: {
+ name: "ssidWhitelist"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 32
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::StaRoamingState"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "ENABLED"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "DISABLED"
+ scalar_value: {
+ uint8_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanStatusType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "INTERNAL_FAILURE"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "PROTOCOL_FAILURE"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "INVALID_SESSION_ID"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "NO_RESOURCES_AVAILABLE"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "INVALID_ARGS"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "INVALID_PEER_ID"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "INVALID_NDP_ID"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "NAN_NOT_ALLOWED"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "NO_OTA_ACK"
+ scalar_value: {
+ uint32_t: 9
+ }
+ enumerator: "ALREADY_ENABLED"
+ scalar_value: {
+ uint32_t: 10
+ }
+ enumerator: "FOLLOWUP_TX_QUEUE_FULL"
+ scalar_value: {
+ uint32_t: 11
+ }
+ enumerator: "UNSUPPORTED_CONCURRENCY_NAN_DISABLED"
+ scalar_value: {
+ uint32_t: 12
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanBandIndex"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NAN_BAND_24GHZ"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "NAN_BAND_5GHZ"
+ scalar_value: {
+ uint32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "status"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanStatusType"
+ }
+ struct_value: {
+ name: "description"
+ type: TYPE_STRING
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanMatchAlg"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "MATCH_ONCE"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "MATCH_CONTINUOUS"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "MATCH_NEVER"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanPublishType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "UNSOLICITED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "SOLICITED"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "UNSOLICITED_SOLICITED"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanTxType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "BROADCAST"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "UNICAST"
+ scalar_value: {
+ uint32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanSubscribeType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "PASSIVE"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "ACTIVE"
+ scalar_value: {
+ uint32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanSrfType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "BLOOM_FILTER"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "PARTIAL_MAC_ADDR"
+ scalar_value: {
+ uint32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanDataPathChannelCfg"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "CHANNEL_NOT_REQUESTED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "REQUEST_CHANNEL_SETUP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FORCE_CHANNEL_SETUP"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rssiClose"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "rssiMiddle"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "rssiProximity"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "dwellTimeMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "scanPeriodSec"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "validDiscoveryWindowIntervalVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "discoveryWindowIntervalVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanDebugConfig"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "validClusterIdVals"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "clusterIdLowVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "clusterIdHighVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "validIntfAddrVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "intfAddrVal"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "validOuiVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "ouiVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "validRandomFactorForceVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "randomFactorForceVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "validHopCountForceVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "hopCountForceVal"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "validDiscoveryChannelVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "discoveryChannelMhzVal"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ struct_value: {
+ name: "validUseBeaconsInBandVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "useBeaconsInBandVal"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+ struct_value: {
+ name: "validUseSdfInBandVal"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "useSdfInBandVal"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanConfigRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "masterPref"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "disableDiscoveryAddressChangeIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "disableStartedClusterIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "disableJoinedClusterIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "includeServiceIdsInBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "numberOfServiceIdsInBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "rssiWindowSize"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "macAddressRandomizationIntervalSec"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "acceptRangingRequests"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "bandSpecificConfig"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanBandSpecificConfig"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanEnableRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "operateInBand"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+ struct_value: {
+ name: "hopCountMax"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "configParams"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanConfigRequest"
+ }
+ struct_value: {
+ name: "debugConfigs"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanDebugConfig"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SHARED_KEY_128_MASK"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "SHARED_KEY_256_MASK"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanRangingIndication"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "CONTINUOUS_INDICATION_MASK"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "INGRESS_MET_MASK"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "EGRESS_MET_MASK"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "sessionId"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "ttlSec"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "discoveryWindowPeriod"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "discoveryCount"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "serviceName"
+ type: TYPE_STRING
+ }
+ struct_value: {
+ name: "discoveryMatchIndicator"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanMatchAlg"
+ }
+ struct_value: {
+ name: "serviceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "rxMatchFilter"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "txMatchFilter"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "useRssiThreshold"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "disableDiscoveryTerminationIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "disableMatchExpirationIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "disableFollowupReceivedIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "supportedCipherTypes"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ }
+ struct_value: {
+ name: "pmk"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "securityEnabledInNdp"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "rangingRequired"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "rangingIntervalMsec"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "configRangingIndications"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
+ }
+ struct_value: {
+ name: "distanceIngressCm"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "distanceEgressCm"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanPublishRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "baseConfigs"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
+ }
+ struct_value: {
+ name: "publishType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanPublishType"
+ }
+ struct_value: {
+ name: "txType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanTxType"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanSubscribeRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "baseConfigs"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::NanDiscoveryCommonConfig"
+ }
+ struct_value: {
+ name: "subscribeType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanSubscribeType"
+ }
+ struct_value: {
+ name: "srfType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanSrfType"
+ }
+ struct_value: {
+ name: "srfRespondIfInAddressSet"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "shouldUseSrf"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "isSsiRequiredForMatch"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "intfAddr"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanTransmitFollowupRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "discoverySessionId"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "peerId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "isHighPriority"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "shouldUseDiscoveryWindow"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "message"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "disableFollowupResultIndication"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanInitiateDataPathRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "peerId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "peerDiscMacAddr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "channelRequestType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanDataPathChannelCfg"
+ }
+ struct_value: {
+ name: "channel"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "ifaceName"
+ type: TYPE_STRING
+ }
+ struct_value: {
+ name: "securityRequired"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "appInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "supportedCipherTypes"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ }
+ struct_value: {
+ name: "pmk"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanRespondToDataPathIndicationRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "acceptRequest"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "ndpInstanceId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "ifaceName"
+ type: TYPE_STRING
+ }
+ struct_value: {
+ name: "securityRequired"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "appInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "supportedCipherTypes"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ }
+ struct_value: {
+ name: "pmk"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadRequest"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "transmitInNext16dws"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "transmitInDiscoveryBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "transmitInSyncBeacon"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "transmitInServiceDiscoveryFrame"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "vendorOui"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "vsa"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanCapabilities"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "maxConcurrentClusters"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxPublishes"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxSubscribes"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxServiceNameLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxMatchFilterLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxTotalMatchFilterLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxServiceSpecificInfoLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxVsaDataLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxNdiInterfaces"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxNdpSessions"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxAppInfoLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxQueuedTransmitFollowupMsgs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "maxSubscribeInterfaceAddresses"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "supportedCipherSuites"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanMatchInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "discoverySessionId"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "peerId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "serviceSpecificInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "matchFilter"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "matchOccuredInBeaconFlag"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "outOfResourceFlag"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "rssiValue"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "peerSupportedCipherTypes"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanCipherSuiteType"
+ }
+ struct_value: {
+ name: "peerRequiresSecurityEnabledInNdp"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "peerRequiresRanging"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "rangingMeasurementInCm"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "rangingIndicationType"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanRangingIndication"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanFollowupReceivedInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "discoverySessionId"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "peerId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "receivedInFaw"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "message"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanClusterEventType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "DISCOVERY_MAC_ADDRESS_CHANGED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "STARTED_CLUSTER"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "JOINED_CLUSTER"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanClusterEventInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "eventType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::NanClusterEventType"
+ }
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "DISCOVERY_BEACON_MASK"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "SYNC_BEACON_MASK"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "SERVICE_DISCOVERY_MASK"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanBeaconSdfPayloadInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "isVsaReceived"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "vsaReceivedOnFrames"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::NanVsaRxFrameMask"
+ }
+ struct_value: {
+ name: "vsaVendorOui"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "vsa"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "isBeaconSdfPayloadReceived"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "beaconSdfPayloadData"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanDataPathRequestInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "discoverySessionId"
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ struct_value: {
+ name: "peerDiscMacAddr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "ndpInstanceId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "securityRequired"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "appInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::NanDataPathConfirmInd"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "ndpInstanceId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "dataPathSetupSuccess"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "peerNdiMacAddr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "appInfo"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "status"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiNanStatus"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttStatus"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "FAILURE"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FAIL_NO_RSP"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "FAIL_REJECTED"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "FAIL_NOT_SCHEDULED_YET"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "FAIL_TM_TIMEOUT"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "FAIL_AP_ON_DIFF_CHANNEL"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "FAIL_NO_CAPABILITY"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "ABORTED"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "FAIL_INVALID_TS"
+ scalar_value: {
+ uint32_t: 9
+ }
+ enumerator: "FAIL_PROTOCOL"
+ scalar_value: {
+ uint32_t: 10
+ }
+ enumerator: "FAIL_SCHEDULE"
+ scalar_value: {
+ uint32_t: 11
+ }
+ enumerator: "FAIL_BUSY_TRY_LATER"
+ scalar_value: {
+ uint32_t: 12
+ }
+ enumerator: "INVALID_REQ"
+ scalar_value: {
+ uint32_t: 13
+ }
+ enumerator: "NO_WIFI"
+ scalar_value: {
+ uint32_t: 14
+ }
+ enumerator: "FAIL_FTM_PARAM_OVERRIDE"
+ scalar_value: {
+ uint32_t: 15
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttPeerType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "AP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "STA"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "P2P_GO"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "P2P_CLIENT"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "NAN"
+ scalar_value: {
+ uint32_t: 5
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttBw"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "BW_5MHZ"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "BW_10MHZ"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "BW_20MHZ"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "BW_40MHZ"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "BW_80MHZ"
+ scalar_value: {
+ uint32_t: 16
+ }
+ enumerator: "BW_160MHZ"
+ scalar_value: {
+ uint32_t: 32
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttPreamble"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "LEGACY"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "HT"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "VHT"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "ONE_SIDED"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "TWO_SIDED"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttConfig"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "type"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttType"
+ }
+ struct_value: {
+ name: "peer"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttPeerType"
+ }
+ struct_value: {
+ name: "channel"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
+ }
+ struct_value: {
+ name: "burstPeriod"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "numBurst"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "numFramesPerBurst"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "numRetriesPerRttFrame"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "numRetriesPerFtmr"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "mustRequestLci"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "mustRequestLcr"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "burstDuration"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "preamble"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
+ }
+ struct_value: {
+ name: "bw"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttBw"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttResult"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "addr"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "burstNum"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "measurementNumber"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "successNumber"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "numberPerBurstPeer"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "status"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttStatus"
+ }
+ struct_value: {
+ name: "retryAfterDuration"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "type"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttType"
+ }
+ struct_value: {
+ name: "rssi"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "rssiSpread"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "txRate"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiRateInfo"
+ }
+ struct_value: {
+ name: "rxRate"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiRateInfo"
+ }
+ struct_value: {
+ name: "rtt"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "rttSd"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "rttSpread"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "distanceInMm"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "distanceSdInMm"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "distanceSpreadInMm"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "timeStampInUs"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "burstDurationInMs"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "negotiatedBurstNum"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "lci"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
+ }
+ struct_value: {
+ name: "lcr"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiInformationElement"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttCapabilities"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rttOneSidedSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "rttFtmSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "lciSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "lcrSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "responderSupported"
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ struct_value: {
+ name: "preambleSupport"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
+ }
+ struct_value: {
+ name: "bwSupport"
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::V1_0::RttBw"
+ }
+ struct_value: {
+ name: "mcVersion"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttMotionPattern"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NOT_EXPECTED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "EXPECTED"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "UNKNOWN"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttLciInformation"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "latitude"
+ type: TYPE_SCALAR
+ scalar_type: "int64_t"
+ }
+ struct_value: {
+ name: "longitude"
+ type: TYPE_SCALAR
+ scalar_type: "int64_t"
+ }
+ struct_value: {
+ name: "altitude"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "latitudeUnc"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "longitudeUnc"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "altitudeUnc"
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ struct_value: {
+ name: "motionPattern"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttMotionPattern"
+ }
+ struct_value: {
+ name: "floor"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "heightAboveFloor"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+ struct_value: {
+ name: "heightUnc"
+ type: TYPE_SCALAR
+ scalar_type: "int32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttLcrInformation"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "countryCode"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 2
+ type: TYPE_SCALAR
+ scalar_type: "int8_t"
+ }
+ }
+ struct_value: {
+ name: "civicInfo"
+ type: TYPE_STRING
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::RttResponder"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "channel"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiChannelInfo"
+ }
+ struct_value: {
+ name: "preamble"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::RttPreamble"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferFlags"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "HAS_BINARY_ENTRIES"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "HAS_ASCII_ENTRIES"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "HAS_PER_PACKET_ENTRIES"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferStatus"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "ringName"
+ type: TYPE_STRING
+ }
+ struct_value: {
+ name: "flags"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "ringId"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "sizeInBytes"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "freeSizeInBytes"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "verboseLevel"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugRingBufferVerboseLevel"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NONE"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "DEFAULT"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "VERBOSE"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "EXCESSIVE"
+ scalar_value: {
+ uint32_t: 3
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFate"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "ACKED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "SENT"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FW_QUEUED"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "FW_DROP_INVALID"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "FW_DROP_NOBUFS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "FW_DROP_OTHER"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "DRV_QUEUED"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "DRV_DROP_INVALID"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "DRV_DROP_NOBUFS"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "DRV_DROP_OTHER"
+ scalar_value: {
+ uint32_t: 9
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFate"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "FW_QUEUED"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FW_DROP_FILTER"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "FW_DROP_INVALID"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "FW_DROP_NOBUFS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "FW_DROP_OTHER"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "DRV_QUEUED"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "DRV_DROP_FILTER"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "DRV_DROP_INVALID"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "DRV_DROP_NOBUFS"
+ scalar_value: {
+ uint32_t: 9
+ }
+ enumerator: "DRV_DROP_OTHER"
+ scalar_value: {
+ uint32_t: 10
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "UNKNOWN"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "ETHERNET_II"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "MGMT_80211"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "frameType"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameType"
+ }
+ struct_value: {
+ name: "frameLen"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "driverTimestampUsec"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "firmwareTimestampUsec"
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ struct_value: {
+ name: "frameContent"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFateReport"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "fate"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugTxPacketFate"
+ }
+ struct_value: {
+ name: "frameInfo"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFateReport"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "fate"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugRxPacketFate"
+ }
+ struct_value: {
+ name: "frameInfo"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugPacketFateFrameInfo"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxPacketDetails"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rxUnicastCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "rxMulticastCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "rxBroadcastCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxMulticastPacketDetails"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "ipv4RxMulticastAddrCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "ipv6RxMulticastAddrCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "otherRxMulticastAddrCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxIcmpPacketDetails"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "icmpPkt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "icmp6Pkt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "icmp6Ra"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "icmp6Na"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "icmp6Ns"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonStats"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "totalCmdEventWakeCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "cmdEventWakeCntPerType"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ struct_value: {
+ name: "totalDriverFwLocalWakeCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "driverFwLocalWakeCntPerType"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ struct_value: {
+ name: "totalRxPacketWakeCnt"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "rxPktWakeDetails"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxPacketDetails"
+ }
+ struct_value: {
+ name: "rxMulticastPkWakeDetails"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxMulticastPacketDetails"
+ }
+ struct_value: {
+ name: "rxIcmpPkWakeDetails"
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::V1_0::WifiDebugHostWakeReasonRxIcmpPacketDetails"
+ }
+}
+
diff --git a/wifi/supplicant/1.0/Android.mk b/wifi/supplicant/1.0/Android.mk
index 02a62b6..ad49b0a 100644
--- a/wifi/supplicant/1.0/Android.mk
+++ b/wifi/supplicant/1.0/Android.mk
@@ -36,6 +36,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (P2pGroupCapabilityMask)
+#
+GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/P2pGroupCapabilityMask.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi.supplicant@1.0::types.P2pGroupCapabilityMask
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (SupplicantStatus)
#
GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/SupplicantStatus.java
@@ -74,6 +93,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (WpsConfigMethods)
+#
+GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/WpsConfigMethods.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi.supplicant@1.0::types.WpsConfigMethods
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build ISupplicant.hal
#
GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/ISupplicant.java
@@ -377,6 +415,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (P2pGroupCapabilityMask)
+#
+GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/P2pGroupCapabilityMask.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi.supplicant@1.0::types.P2pGroupCapabilityMask
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build types.hal (SupplicantStatus)
#
GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/SupplicantStatus.java
@@ -415,6 +472,25 @@
LOCAL_GENERATED_SOURCES += $(GEN)
#
+# Build types.hal (WpsConfigMethods)
+#
+GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/WpsConfigMethods.java
+$(GEN): $(HIDL)
+$(GEN): PRIVATE_HIDL := $(HIDL)
+$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
+$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
+$(GEN): PRIVATE_CUSTOM_TOOL = \
+ $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
+ -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.wifi.supplicant@1.0::types.WpsConfigMethods
+
+$(GEN): $(LOCAL_PATH)/types.hal
+ $(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(GEN)
+
+#
# Build ISupplicant.hal
#
GEN := $(intermediates)/android/hardware/wifi/supplicant/V1_0/ISupplicant.java
diff --git a/wifi/supplicant/1.0/ISupplicantCallback.hal b/wifi/supplicant/1.0/ISupplicantCallback.hal
index a5a0da5..3674cfb 100644
--- a/wifi/supplicant/1.0/ISupplicantCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantCallback.hal
@@ -37,4 +37,9 @@
* @param ifName Name of the network interface, e.g., wlan0
*/
oneway onInterfaceRemoved(string ifName);
+
+ /**
+ * Used to indicate that the supplicant daemon is terminating.
+ */
+ oneway onTerminating();
};
diff --git a/wifi/supplicant/1.0/ISupplicantIface.hal b/wifi/supplicant/1.0/ISupplicantIface.hal
index 600df30..c0058a0 100644
--- a/wifi/supplicant/1.0/ISupplicantIface.hal
+++ b/wifi/supplicant/1.0/ISupplicantIface.hal
@@ -24,6 +24,17 @@
*/
interface ISupplicantIface {
/**
+ * Size limits for some of the params used in this interface.
+ */
+ enum ParamSizeLimits : uint32_t {
+ WPS_DEVICE_NAME_MAX_LEN = 32,
+ WPS_MANUFACTURER_MAX_LEN = 64,
+ WPS_MODEL_NAME_MAX_LEN = 32,
+ WPS_MODEL_NUMBER_MAX_LEN = 32,
+ WPS_SERIAL_NUMBER_MAX_LEN = 32
+ };
+
+ /**
* Retrieves the name of the network interface.
*
* @return status Status of the operation.
@@ -105,9 +116,92 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|
* @return networkIds List of all network Id's controlled by the supplicant.
*/
listNetworks()
generates (SupplicantStatus status, vec<SupplicantNetworkId> networkIds);
+
+ /**
+ * Set the device name for WPS operations.
+ * User-friendly description of device (up to |WPS_DEVICE_NAME_MAX_LEN|
+ * octets encoded in UTF-8).
+ *
+ * @parm name Name to be set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsDeviceName(string name) generates (SupplicantStatus status);
+
+ /**
+ * Set the manufacturer for WPS operations.
+ * The manufacturer of the device (up to |WPS_MANUFACTURER_MAX_LEN| ASCII
+ * characters).
+ *
+ * @parm manufacturer Manufacture to be set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsManufacturer(string manufacturer) generates (SupplicantStatus status);
+
+ /**
+ * Set the model name for WPS operations.
+ * Model of the device (up to |WPS_MODEL_NAME_MAX_LEN| ASCII characters).
+ *
+ * @parm modelName Model name to be set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsModelName(string modelName) generates (SupplicantStatus status);
+
+ /**
+ * Set the model number for WPS operations.
+ * Additional device description (up to |WPS_MODEL_NUMBER_MAX_LEN| ASCII
+ * characters).
+ *
+ * @parm modelNumber Model number to be set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsModelNumber(string modelNumber) generates (SupplicantStatus status);
+
+ /**
+ * Set the serial number for WPS operations.
+ * Serial number of the device (up to |WPS_SERIAL_NUMBER_MAX_LEN| characters)
+ *
+ * @parm serialNumber Serial number to be set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsSerialNumber(string serialNumber) generates (SupplicantStatus status);
+
+ /**
+ * Set the list of supported config methods for WPS operations.
+ *
+ * @param configMethods Mask of WPS configuration methods supported by the
+ * device.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ */
+ setWpsConfigMethods(bitfield<WpsConfigMethods> configMethods)
+ generates (SupplicantStatus status);
};
diff --git a/wifi/supplicant/1.0/ISupplicantP2pIface.hal b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
index ddf05cc..45e90f3 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pIface.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pIface.hal
@@ -40,16 +40,6 @@
KEYPAD
};
- enum GroupCapabilityMask : uint32_t {
- GROUP_OWNER = 1 << 0,
- PERSISTENT_GROUP = 1 << 1,
- GROUP_LIMIT = 1 << 2,
- INTRA_BSS_DIST = 1 << 3,
- CROSS_CONN = 1 << 4,
- PERSISTENT_RECONN = 1 << 5,
- GROUP_FORMATION = 1 << 6
- };
-
/**
* Use to specify a range of frequencies.
* For example: 2412-2432,2462,5000-6000, etc.
@@ -420,10 +410,11 @@
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_IFACE_INVALID|
- * @return capabilityMask Combination of |GroupCapabilityMask| values.
+ * @return capabilityMask Combination of |P2pGroupCapabilityMask| values.
*/
getGroupCapability(MacAddress peerAddress)
- generates (SupplicantStatus status, uint32_t capabilities);
+ generates (SupplicantStatus status,
+ bitfield<P2pGroupCapabilityMask> capabilities);
/**
* This command can be used to add a bonjour service.
@@ -533,7 +524,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setMiracastMode(MiracastMode mode)
generates (SupplicantStatus status);
@@ -548,7 +540,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startWpsPbc(string groupIfName, Bssid bssid)
generates (SupplicantStatus status);
@@ -561,7 +554,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startWpsPinKeypad(string groupIfName, string pin)
generates (SupplicantStatus status);
@@ -574,7 +568,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
* @return generatedPin 8 digit pin generated.
*/
startWpsPinDisplay(string groupIfName, Bssid bssid)
@@ -587,7 +582,34 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+
*/
cancelWps(string groupIfName) generates (SupplicantStatus status);
+
+ /**
+ * Enable/Disable Wifi Display.
+ *
+ * @param enable true to enable, false to disable.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ enableWfd(bool enable) generates (SupplicantStatus status);
+
+ /**
+ * Set Wifi Display device info.
+ *
+ * @param info WFD device info as described in section 5.1.2 of WFD technical
+ * specification v1.0.0.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ setWfdDeviceInfo(uint8_t[8] info) generates (SupplicantStatus status);
};
diff --git a/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
index 9ac8b36..ad4290b 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pIfaceCallback.hal
@@ -26,6 +26,50 @@
*/
interface ISupplicantP2pIfaceCallback {
/**
+ * WPS Device Password ID
+ */
+ enum WpsDevPasswordId : uint16_t {
+ DEFAULT = 0x0000,
+ USER_SPECIFIED = 0x0001,
+ MACHINE_SPECIFIED = 0x0002,
+ REKEY = 0x0003,
+ PUSHBUTTON = 0x0004,
+ REGISTRAR_SPECIFIED = 0x0005,
+ NFC_CONNECTION_HANDOVER = 0x0007,
+ P2PS_DEFAULT = 0x0008
+ };
+
+ /**
+ * Status codes for P2P operations.
+ */
+ enum P2pStatusCode : uint32_t {
+ SUCCESS = 0,
+ FAIL_INFO_CURRENTLY_UNAVAILABLE = 1,
+ FAIL_INCOMPATIBLE_PARAMS = 2,
+ FAIL_LIMIT_REACHED = 3,
+ FAIL_INVALID_PARAMS = 4,
+ FAIL_UNABLE_TO_ACCOMMODATE = 5,
+ FAIL_PREV_PROTOCOL_ERROR = 6,
+ FAIL_NO_COMMON_CHANNELS = 7,
+ FAIL_UNKNOWN_GROUP = 8,
+ FAIL_BOTH_GO_INTENT_15 = 9,
+ FAIL_INCOMPATIBLE_PROV_METHOD = 10,
+ FAIL_REJECTED_BY_USER = 11,
+ SUCCESS_DEFERRED = 12,
+ };
+
+ /**
+ * Status codes for P2P discovery.
+ */
+ enum P2pProvDiscStatusCode : uint8_t {
+ SUCCESS = 0,
+ TIMEOUT = 1,
+ REJECTED = 2,
+ TIMEOUT_JOIN = 3,
+ INFO_UNAVAILABLE = 4
+ };
+
+ /**
* Used to indicate that a new network has been added.
*
* @param id Network ID allocated to the corresponding network.
@@ -38,4 +82,192 @@
* @param id Network ID allocated to the corresponding network.
*/
oneway onNetworkRemoved(SupplicantNetworkId id);
+
+ /**
+ * Used to indicate that a P2P device has been found.
+ *
+ * @param srcAddress MAC address of the device found. This must either
+ * be the P2P device address or the P2P interface address.
+ * @param p2pDeviceAddress P2P device address.
+ * @param primaryDeviceType Type of device. Refer to section B.1 of Wifi P2P
+ * Technical specification v1.2.
+ * @param deviceName Name of the device.
+ * @param configMethods Mask of WPS configuration methods supported by the
+ * device.
+ * @param deviceCapabilities Refer to section 4.1.4 of Wifi P2P Technical
+ * specification v1.2.
+ * @param groupCapabilites Refer to section 4.1.4 of Wifi P2P Technical
+ * specification v1.2.
+ * @param wfdDeviceInfo WFD device info as described in section 5.1.2 of WFD
+ * technical specification v1.0.0.
+ */
+ oneway onDeviceFound(
+ MacAddress srcAddress, MacAddress p2pDeviceAddress,
+ uint8_t[8] primaryDeviceType, string deviceName,
+ bitfield<WpsConfigMethods> configMethods, uint8_t deviceCapabilities,
+ bitfield<P2pGroupCapabilityMask> groupCapabilities, uint8_t[8] wfdDeviceInfo);
+
+ /**
+ * Used to indicate that a P2P device has been lost.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onDeviceLost(MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate the termination of P2P find operation.
+ */
+ oneway onFindStopped();
+
+ /**
+ * Used to indicate the reception of a P2P Group Owner negotiation request.
+ *
+ * @param srcAddress MAC address of the device that initiated the GO
+ * negotiation request.
+ * @param passwordId Type of password.
+ */
+ oneway onGoNegotiationRequest(
+ MacAddress srcAddress, WpsDevPasswordId passwordId);
+
+ /**
+ * Used to indicate the completion of a P2P Group Owner negotiation request.
+ *
+ * @param status Status of the GO negotiation.
+ */
+ oneway onGoNegotiationCompleted(P2pStatusCode status);
+
+ /**
+ * Used to indicate a successful formation of a P2P group.
+ */
+ oneway onGroupFormationSuccess();
+
+ /**
+ * Used to indicate a failure to form a P2P group.
+ *
+ * @param failureReason Failure reason string for debug purposes.
+ */
+ oneway onGroupFormationFailure(string failureReason);
+
+ /**
+ * Used to indicate the start of a P2P group.
+ *
+ * @param groupIfName Interface name of the group. (For ex: p2p-p2p0-1)
+ * @param isGo Whether this device is owner of the group.
+ * @param ssid SSID of the group.
+ * @param frequency Frequency on which this group is created.
+ * @param psk PSK used to secure the group.
+ * @param passphrase PSK passphrase used to secure the group.
+ * @param goDeviceAddress MAC Address of the owner of this group.
+ * @param isPersistent Whether this group is persisted or not.
+ */
+ oneway onGroupStarted(
+ string groupIfname, bool isGo, Ssid ssid, uint32_t frequency,
+ uint8_t[32] psk, string passphrase, MacAddress goDeviceAddress,
+ bool isPersistent);
+
+ /**
+ * Used to indicate the removal of a P2P group.
+ *
+ * @param groupIfName Interface name of the group. (For ex: p2p-p2p0-1)
+ * @param isGo Whether this device is owner of the group.
+ */
+ oneway onGroupRemoved(string groupIfname, bool isGo);
+
+ /**
+ * Used to indicate the reception of a P2P invitation.
+ *
+ * @param srcAddress MAC address of the device that sent the invitation.
+ * @param goDeviceAddress MAC Address of the owner of this group.
+ * @param Bssid Bssid of the group.
+ * @param persistentNetworkId Persistent network Id of the group.
+ * @param operatingFrequency Frequency on which the invitation was received.
+ */
+ oneway onInvitationReceived(
+ MacAddress srcAddress, MacAddress goDeviceAddress, Bssid bssid,
+ SupplicantNetworkId persistentNetworkId, uint32_t operatingFrequency);
+
+ /**
+ * Used to indicate the result of the P2P invitation request.
+ *
+ * @param Bssid Bssid of the group.
+ * @param status Status of the invitation.
+ */
+ oneway onInvitationResult(Bssid bssid, P2pStatusCode status);
+
+ /**
+ * Used to indicate a push-button request generated during provision discovery.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onProvisionDiscoveryPbcRequest(MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate a push-button response generated during provision discovery.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onProvisionDiscoveryPbcResponse(MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate the pin generated during provision discovery.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ * @param generatedPin 8 digit pin generated.
+ */
+ oneway onProvisionDiscoveryShowPin(
+ MacAddress p2pDeviceAddress, string generatedPin);
+
+ /**
+ * Used to indicate that a pin needs to be entered during provision discovery.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onProvisionDiscoveryEnterPin(MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate a provision discovery failure.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onProvisionDiscoveryFailure(MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate the completion of a P2P provision discovery request.
+ *
+ * @param p2pDeviceAddress P2P device address.
+ * @param isRequest Whether we received or sent the provision discovery.
+ * @param status Status of the provision discovery.
+ * @param configMethods Mask of WPS configuration methods supported.
+ * @param generatedPin 8 digit pin generated.
+ */
+ oneway onProvisionDiscoveryCompleted(
+ MacAddress p2pDeviceAddress, bool isRequest, P2pProvDiscStatusCode status,
+ bitfield<WpsConfigMethods> configMethods, string generatedPin);
+
+ /**
+ * Used to indicate the reception of a P2P service discovery response.
+ *
+ * @param srcAddress MAC address of the device that sent the service discovery.
+ * @param updateIndicator Service update indicator. Refer to section 3.1.3 of
+ * Wifi P2P Technical specification v1.2.
+ * @parm tlvs Refer to section 3.1.3.1 of Wifi P2P Technical specification v1.2.
+ */
+ oneway onServiceDiscoveryResponse(
+ MacAddress srcAddress, uint16_t updateIndicator, vec<uint8_t> tlvs);
+
+ /**
+ * Used to indicate when a STA device is connected to this device.
+ *
+ * @param srcAddress MAC address of the device that was authorized.
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onStaAuthorized(MacAddress srcAddress, MacAddress p2pDeviceAddress);
+
+ /**
+ * Used to indicate when a STA device is disconnected from this device.
+ *
+ * @param srcAddress MAC address of the device that was deauthorized.
+ * @param p2pDeviceAddress P2P device address.
+ */
+ oneway onStaDeauthorized(MacAddress srcAddress, MacAddress p2pDeviceAddress);
};
diff --git a/wifi/supplicant/1.0/ISupplicantP2pNetwork.hal b/wifi/supplicant/1.0/ISupplicantP2pNetwork.hal
index 34727c4..d32b47e 100644
--- a/wifi/supplicant/1.0/ISupplicantP2pNetwork.hal
+++ b/wifi/supplicant/1.0/ISupplicantP2pNetwork.hal
@@ -42,4 +42,62 @@
*/
registerCallback(ISupplicantP2pNetworkCallback callback)
generates (SupplicantStatus status);
+
+ /**
+ * Getters for the various network params.
+ */
+ /**
+ * Get SSID for this network.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return ssid value set.
+ */
+ getSsid() generates (SupplicantStatus status, Ssid ssid);
+
+ /**
+ * Get the BSSID set for this network.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return bssid value set.
+ */
+ getBssid() generates (SupplicantStatus status, Bssid bssid);
+
+ /**
+ * Check if the network is currently active one.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return isCurrent true if current, false otherwise.
+ */
+ isCurrent() generates (SupplicantStatus status, bool isCurrent);
+
+ /**
+ * Check if the network is marked persistent.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return isPersistent true if persistent, false otherwise.
+ */
+ isPersistent() generates (SupplicantStatus status, bool isPersistent);
+
+ /**
+ * Check if the device is the group owner of the network.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return isGo true if group owner, false otherwise.
+ */
+ isGo() generates (SupplicantStatus status, bool isGo);
};
diff --git a/wifi/supplicant/1.0/ISupplicantStaIface.hal b/wifi/supplicant/1.0/ISupplicantStaIface.hal
index 0f0d41b..c9d9ee6 100644
--- a/wifi/supplicant/1.0/ISupplicantStaIface.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaIface.hal
@@ -219,7 +219,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
* @return macAddr MAC address of the device.
*/
getMacAddress()
@@ -231,7 +232,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startRxFilter() generates (SupplicantStatus status);
@@ -241,7 +243,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
stopRxFilter() generates (SupplicantStatus status);
@@ -252,7 +255,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
addRxFilter(RxFilterType type)
generates (SupplicantStatus status);
@@ -264,7 +268,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
removeRxFilter(RxFilterType type)
generates (SupplicantStatus status);
@@ -276,7 +281,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setBtCoexistenceMode(BtCoexistenceMode mode)
generates (SupplicantStatus status);
@@ -291,7 +297,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setBtCoexistenceScanModeEnabled(bool enable)
generates (SupplicantStatus status);
@@ -303,7 +310,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setSuspendModeEnabled(bool enable)
generates (SupplicantStatus status);
@@ -315,7 +323,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
setCountryCode(int8_t[2] code)
generates (SupplicantStatus status);
@@ -328,7 +337,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startWpsRegistrar(Bssid bssid, string pin)
generates (SupplicantStatus status);
@@ -342,7 +352,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startWpsPbc(Bssid bssid) generates (SupplicantStatus status);
@@ -353,7 +364,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
startWpsPinKeypad(string pin) generates (SupplicantStatus status);
@@ -364,7 +376,8 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
* @return generatedPin 8 digit pin generated.
*/
startWpsPinDisplay(Bssid bssid)
@@ -376,7 +389,20 @@
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
- * |SupplicantStatusCode.FAILURE_UNKNOWN|
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
cancelWps() generates (SupplicantStatus status);
+
+ /**
+ * Use external processing for SIM/USIM operations
+ *
+ * @param useExternalSim true to use external, false otherwise.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+ */
+ setExternalSim(bool useExternalSim) generates (SupplicantStatus status);
};
diff --git a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
index 55ff9a8..4b201d4 100644
--- a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
@@ -257,8 +257,15 @@
string url);
/**
- * Used to indicate a disconnect from the currently connected
- * network on this iface,.
+ * Used to indicate the connection to a new network on this iface.
+ *
+ * @param bssid BSSID of the AP to which we connected.
+ */
+ oneway onConnected(Bssid bssid);
+
+ /**
+ * Used to indicate the disconnection from the currently connected
+ * network on this iface.
*
* @param bssid BSSID of the AP from which we disconnected.
* @param locallyGenerated If the disconnect was triggered by
@@ -270,6 +277,13 @@
Bssid bssid, bool locallyGenerated, uint32_t reasonCode);
/**
+ * Used to indicate the completion of association to an AP.
+ *
+ * @param bssid BSSID of the corresponding AP.
+ */
+ oneway onAssociationCompleted(Bssid bssid);
+
+ /**
* Used to indicate an association rejection recieved from the AP
* to which the connection is being attempted.
*
@@ -281,6 +295,18 @@
oneway onAssociationRejected(Bssid bssid, uint32_t statusCode);
/**
+ * Used to indicate the timeout of authentication to an AP.
+ *
+ * @param bssid BSSID of the corresponding AP.
+ */
+ oneway onAuthenticationTimeout(Bssid bssid);
+
+ /**
+ * Used to indicate an EAP authentication failure.
+ */
+ oneway onEapFailure();
+
+ /**
* Used to indicate the success of a WPS connection attempt.
*/
oneway onWpsEventSuccess();
diff --git a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
index 479ba94..b347c1d 100644
--- a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal
@@ -51,7 +51,10 @@
WPA_EAP = 1 << 0,
WPA_PSK = 1 << 1,
NONE = 1 << 2,
- IEEE8021X = 1 << 3
+ IEEE8021X = 1 << 3,
+ FT_EAP = 1 << 5,
+ FT_PSK = 1 << 6,
+ OSEN = 1 << 15
};
/** Possble mask of values for Proto param. */
@@ -74,7 +77,8 @@
WEP40 = 1 << 1,
WEP104 = 1 << 2,
TKIP = 1 << 3,
- CCMP = 1 << 4
+ CCMP = 1 << 4,
+ GTK_NOT_USED = 1 << 14
};
/** Possble mask of values for PairwiseCipher param. */
@@ -193,7 +197,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setKeyMgmt(uint32_t keyMgmtMask) generates (SupplicantStatus status);
+ setKeyMgmt(bitfield<KeyMgmtMask> keyMgmtMask) generates (SupplicantStatus status);
/**
* Set proto mask for the network.
@@ -207,7 +211,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setProto(uint32_t protoMask) generates (SupplicantStatus status);
+ setProto(bitfield<ProtoMask> protoMask) generates (SupplicantStatus status);
/**
* Set auth alg mask for the network.
@@ -221,7 +225,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setAuthAlg(uint32_t authAlgMask) generates (SupplicantStatus status);
+ setAuthAlg(bitfield<AuthAlgMask> authAlgMask) generates (SupplicantStatus status);
/**
* Set group cipher mask for the network.
@@ -235,7 +239,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setGroupCipher(uint32_t groupCipherMask)
+ setGroupCipher(bitfield<GroupCipherMask> groupCipherMask)
generates (SupplicantStatus status);
/**
@@ -250,7 +254,7 @@
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
*/
- setPairwiseCipher(uint32_t pairwiseCipherMask)
+ setPairwiseCipher(bitfield<PairwiseCipherMask> pairwiseCipherMask)
generates (SupplicantStatus status);
/**
@@ -504,6 +508,19 @@
*/
setEapDomainSuffixMatch(string match)
generates (SupplicantStatus status);
+ /**
+ * Get ID string set for this network.
+ * Network identifier string for external scripts.
+ *
+ * @return idStr ID string value to set.
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ */
+ setIdStr(string idStr) generates (SupplicantStatus status);
/**
* Getters for the various network params.
@@ -551,7 +568,7 @@
* @return keyMgmtMask Combination of |KeyMgmtMask| values.
*/
getKeyMgmt()
- generates (SupplicantStatus status, uint32_t keyMgmtMask);
+ generates (SupplicantStatus status, bitfield<KeyMgmtMask> keyMgmtMask);
/**
* Get the proto mask set for the network.
@@ -562,7 +579,7 @@
* |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
* @return protoMask Combination of |ProtoMask| values.
*/
- getProto() generates (SupplicantStatus status, uint32_t protoMask);
+ getProto() generates (SupplicantStatus status, bitfield<ProtoMask> protoMask);
/**
* Get the auth alg mask set for the network.
@@ -574,7 +591,7 @@
* @return authAlgMask Combination of |AuthAlgMask| values.
*/
getAuthAlg()
- generates (SupplicantStatus status, uint32_t authAlgMask);
+ generates (SupplicantStatus status, bitfield<AuthAlgMask> authAlgMask);
/**
* Get the group cipher mask set for the network.
@@ -586,7 +603,8 @@
* @return groupCipherMask Combination of |GroupCipherMask| values.
*/
getGroupCipher()
- generates (SupplicantStatus status, uint32_t groupCipherMask);
+ generates (SupplicantStatus status,
+ bitfield<GroupCipherMask> groupCipherMask);
/**
* Get the pairwise cipher mask set for the network.
@@ -598,7 +616,8 @@
* @return pairwiseCipherMask Combination of |PairwiseCipherMask| values.
*/
getPairwiseCipher()
- generates (SupplicantStatus status, uint32_t pairwiseCipherMask);
+ generates (SupplicantStatus status,
+ bitfield<PairwiseCipherMask> pairwiseCipherMask);
/**
* Get passphrase for WPA_PSK network.
@@ -827,6 +846,20 @@
generates (SupplicantStatus status, string match);
/**
+ * Get ID string set for this network.
+ * Network identifier string for external scripts.
+ *
+ * @return status Status of the operation.
+ * Possible status codes:
+ * |SupplicantStatusCode.SUCCESS|,
+ * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
+ * |SupplicantStatusCode.FAILURE_UNKNOWN|,
+ * |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
+ * @return idStr ID string set.
+ */
+ getIdStr() generates (SupplicantStatus status, string idStr);
+
+ /**
* Enable the network for connection purposes.
*
* This must trigger a connection to the network if:
diff --git a/wifi/supplicant/1.0/types.hal b/wifi/supplicant/1.0/types.hal
index 16a8d15..10cf483 100644
--- a/wifi/supplicant/1.0/types.hal
+++ b/wifi/supplicant/1.0/types.hal
@@ -73,3 +73,38 @@
STA,
P2P
};
+
+/**
+ * P2P group capability.
+ */
+enum P2pGroupCapabilityMask : uint32_t {
+ GROUP_OWNER = 1 << 0,
+ PERSISTENT_GROUP = 1 << 1,
+ GROUP_LIMIT = 1 << 2,
+ INTRA_BSS_DIST = 1 << 3,
+ CROSS_CONN = 1 << 4,
+ PERSISTENT_RECONN = 1 << 5,
+ GROUP_FORMATION = 1 << 6
+};
+
+/**
+ * WPS config methods.
+ * Refer to section 3 of IBSS with Wi-Fi Protected Setup
+ * Technical Specification Version 1.0.0.
+ */
+enum WpsConfigMethods : uint16_t {
+ USBA = 0x0001,
+ ETHERNET = 0x0002,
+ LABEL = 0x0004,
+ DISPLAY = 0x0008,
+ EXT_NFC_TOKEN = 0x0010,
+ INT_NFC_TOKEN = 0x0020,
+ NFC_INTERFACE = 0x0040,
+ PUSHBUTTON = 0x0080,
+ KEYPAD = 0x0100,
+ VIRT_PUSHBUTTON = 0x0280,
+ PHY_PUSHBUTTON = 0x0480,
+ P2PS = 0x1000,
+ VIRT_DISPLAY = 0x2008,
+ PHY_DISPLAY = 0x4008
+};
diff --git a/wifi/supplicant/1.0/vts/Supplicant.vts b/wifi/supplicant/1.0/vts/Supplicant.vts
new file mode 100644
index 0000000..69fe209
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/Supplicant.vts
@@ -0,0 +1,160 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicant"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantCallback"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "EXCESSIVE"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "MSGDUMP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "DEBUG"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "INFO"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "WARNING"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "ERROR"
+ scalar_value: {
+ uint32_t: 5
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "type"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ struct_value: {
+ name: "name"
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getInterface"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantIface"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
+ }
+ }
+
+ api: {
+ name: "listInterfaces"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::IfaceInfo"
+ }
+ }
+ }
+
+ api: {
+ name: "registerCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "ISupplicantCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "setDebugParams"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "getDebugLevel"
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicant::DebugLevel"
+ }
+ }
+
+ api: {
+ name: "isDebugShowTimestampEnabled"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "isDebugShowKeysEnabled"
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setConcurrencyPriority"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantCallback.vts b/wifi/supplicant/1.0/vts/SupplicantCallback.vts
new file mode 100644
index 0000000..e439bd6
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantCallback.vts
@@ -0,0 +1,27 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantCallback"
+
+package: "android.hardware.wifi.supplicant"
+
+
+interface: {
+ api: {
+ name: "onInterfaceCreated"
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onInterfaceRemoved"
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onTerminating"
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantIface.vts b/wifi/supplicant/1.0/vts/SupplicantIface.vts
new file mode 100644
index 0000000..41c77f8
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantIface.vts
@@ -0,0 +1,187 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantIface"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WPS_DEVICE_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MANUFACTURER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "WPS_MODEL_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "addNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "removeNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "listNetworks"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setWpsDeviceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsManufacturer"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsSerialNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsConfigMethods"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
new file mode 100644
index 0000000..edcabce
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantNetwork.vts
@@ -0,0 +1,45 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantNetwork"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ api: {
+ name: "getId"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getInterfaceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
new file mode 100644
index 0000000..afa9a8c
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pIface.vts
@@ -0,0 +1,813 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantP2pIface"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pIfaceCallback"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WPS_DEVICE_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MANUFACTURER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "WPS_MODEL_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "PBC"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "DISPLAY"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "KEYPAD"
+ scalar_value: {
+ uint32_t: 2
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::FreqRange"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "min"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ struct_value: {
+ name: "max"
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::MiracastMode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "DISABLED"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "SOURCE"
+ scalar_value: {
+ uint8_t: 1
+ }
+ enumerator: "SINK"
+ scalar_value: {
+ uint8_t: 2
+ }
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "addNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "removeNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "listNetworks"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setWpsDeviceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsManufacturer"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsSerialNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsConfigMethods"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ }
+ }
+
+ api: {
+ name: "registerCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "ISupplicantP2pIfaceCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "getDeviceAddress"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setSsidPostfix"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setGroupIdle"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "setPowerSave"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "find"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "stopFind"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "flush"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "connect"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "cancelConnect"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "provisionDiscovery"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::WpsProvisionMethod"
+ }
+ }
+
+ api: {
+ name: "addGroup"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "removeGroup"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "reject"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "invite"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "reinvoke"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "configureExtListen"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "setListenChannel"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "setDisallowedFrequencies"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::FreqRange"
+ }
+ }
+ }
+
+ api: {
+ name: "getSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getGroupCapability"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "addBonjourService"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "removeBonjourService"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "addUpnpService"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "removeUpnpService"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "flushServices"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "requestServiceDiscovery"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "cancelServiceDiscovery"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint64_t"
+ }
+ }
+
+ api: {
+ name: "setMiracastMode"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface::MiracastMode"
+ }
+ }
+
+ api: {
+ name: "startWpsPbc"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "startWpsPinKeypad"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "startWpsPinDisplay"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "cancelWps"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "enableWfd"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setWfdDeviceInfo"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 8
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
new file mode 100644
index 0000000..09fd779
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pIfaceCallback.vts
@@ -0,0 +1,520 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantP2pIfaceCallback"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::WpsDevPasswordId"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "DEFAULT"
+ scalar_value: {
+ uint16_t: 0
+ }
+ enumerator: "USER_SPECIFIED"
+ scalar_value: {
+ uint16_t: 1
+ }
+ enumerator: "MACHINE_SPECIFIED"
+ scalar_value: {
+ uint16_t: 2
+ }
+ enumerator: "REKEY"
+ scalar_value: {
+ uint16_t: 3
+ }
+ enumerator: "PUSHBUTTON"
+ scalar_value: {
+ uint16_t: 4
+ }
+ enumerator: "REGISTRAR_SPECIFIED"
+ scalar_value: {
+ uint16_t: 5
+ }
+ enumerator: "NFC_CONNECTION_HANDOVER"
+ scalar_value: {
+ uint16_t: 7
+ }
+ enumerator: "P2PS_DEFAULT"
+ scalar_value: {
+ uint16_t: 8
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "FAIL_INFO_CURRENTLY_UNAVAILABLE"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FAIL_INCOMPATIBLE_PARAMS"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "FAIL_LIMIT_REACHED"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "FAIL_INVALID_PARAMS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "FAIL_UNABLE_TO_ACCOMMODATE"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "FAIL_PREV_PROTOCOL_ERROR"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "FAIL_NO_COMMON_CHANNELS"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "FAIL_UNKNOWN_GROUP"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "FAIL_BOTH_GO_INTENT_15"
+ scalar_value: {
+ uint32_t: 9
+ }
+ enumerator: "FAIL_INCOMPATIBLE_PROV_METHOD"
+ scalar_value: {
+ uint32_t: 10
+ }
+ enumerator: "FAIL_REJECTED_BY_USER"
+ scalar_value: {
+ uint32_t: 11
+ }
+ enumerator: "SUCCESS_DEFERRED"
+ scalar_value: {
+ uint32_t: 12
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pProvDiscStatusCode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "TIMEOUT"
+ scalar_value: {
+ uint8_t: 1
+ }
+ enumerator: "REJECTED"
+ scalar_value: {
+ uint8_t: 2
+ }
+ enumerator: "TIMEOUT_JOIN"
+ scalar_value: {
+ uint8_t: 3
+ }
+ enumerator: "INFO_UNAVAILABLE"
+ scalar_value: {
+ uint8_t: 4
+ }
+ }
+ }
+
+ api: {
+ name: "onNetworkAdded"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onNetworkRemoved"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onDeviceFound"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 8
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 8
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onDeviceLost"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onFindStopped"
+ }
+
+ api: {
+ name: "onGoNegotiationRequest"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::WpsDevPasswordId"
+ }
+ }
+
+ api: {
+ name: "onGoNegotiationCompleted"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
+ }
+ }
+
+ api: {
+ name: "onGroupFormationSuccess"
+ }
+
+ api: {
+ name: "onGroupFormationFailure"
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onGroupStarted"
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 32
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "onGroupRemoved"
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "onInvitationReceived"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onInvitationResult"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pStatusCode"
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryPbcRequest"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryPbcResponse"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryShowPin"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryEnterPin"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryFailure"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onProvisionDiscoveryCompleted"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIfaceCallback::P2pProvDiscStatusCode"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onServiceDiscoveryResponse"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint16_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onStaAuthorized"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onStaDeauthorized"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
new file mode 100644
index 0000000..fddcca3
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pNetwork.vts
@@ -0,0 +1,127 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantP2pNetwork"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantP2pNetworkCallback"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ api: {
+ name: "getId"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getInterfaceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "registerCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "ISupplicantP2pNetworkCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "getSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getBssid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "isCurrent"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "isPersistent"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "isGo"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
new file mode 100644
index 0000000..0e9ccde
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantP2pNetworkCallback.vts
@@ -0,0 +1,9 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantP2pNetworkCallback"
+
+package: "android.hardware.wifi.supplicant"
+
+
+interface: {
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIface.vts b/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
new file mode 100644
index 0000000..ceadb6c
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantStaIface.vts
@@ -0,0 +1,623 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantStaIface"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantIface"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaIfaceCallback"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantIface::ParamSizeLimits"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WPS_DEVICE_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MANUFACTURER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "WPS_MODEL_NAME_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_MODEL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "WPS_SERIAL_NUMBER_MAX_LEN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::AnqpInfoId"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "VENUE_NAME"
+ scalar_value: {
+ uint16_t: 258
+ }
+ enumerator: "ROAMING_CONSORTIUM"
+ scalar_value: {
+ uint16_t: 261
+ }
+ enumerator: "IP_ADDR_TYPE_AVAILABILITY"
+ scalar_value: {
+ uint16_t: 262
+ }
+ enumerator: "NAI_REALM"
+ scalar_value: {
+ uint16_t: 263
+ }
+ enumerator: "ANQP_3GPP_CELLULAR_NETWORK"
+ scalar_value: {
+ uint16_t: 264
+ }
+ enumerator: "DOMAIN_NAME"
+ scalar_value: {
+ uint16_t: 268
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::Hs20AnqpSubtypes"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "OPERATOR_FRIENDLY_NAME"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "WAN_METRICS"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "CONNECTION_CAPABILITY"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "OSU_PROVIDERS_LIST"
+ scalar_value: {
+ uint32_t: 8
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "V4_MULTICAST"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "V6_MULTICAST"
+ scalar_value: {
+ uint8_t: 1
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::BtCoexistenceMode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "ENABLED"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "DISABLED"
+ scalar_value: {
+ uint8_t: 1
+ }
+ enumerator: "SENSE"
+ scalar_value: {
+ uint8_t: 2
+ }
+ }
+ }
+
+ api: {
+ name: "getName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "addNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ }
+
+ api: {
+ name: "removeNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getNetwork"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_HIDL_INTERFACE
+ predefined_type: "ISupplicantNetwork"
+ is_callback: false
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "listNetworks"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setWpsDeviceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsManufacturer"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsModelNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsSerialNumber"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWpsConfigMethods"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ }
+ }
+
+ api: {
+ name: "registerCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "ISupplicantStaIfaceCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "reassociate"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "reconnect"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "disconnect"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "setPowerSave"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "initiateTdlsDiscover"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "initiateTdlsSetup"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "initiateTdlsTeardown"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "initiateAnqpQuery"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::AnqpInfoId"
+ }
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::Hs20AnqpSubtypes"
+ }
+ }
+ }
+
+ api: {
+ name: "initiateHs20IconQuery"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getMacAddress"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "startRxFilter"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "stopRxFilter"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "addRxFilter"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
+ }
+ }
+
+ api: {
+ name: "removeRxFilter"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::RxFilterType"
+ }
+ }
+
+ api: {
+ name: "setBtCoexistenceMode"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface::BtCoexistenceMode"
+ }
+ }
+
+ api: {
+ name: "setBtCoexistenceScanModeEnabled"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setSuspendModeEnabled"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setCountryCode"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 2
+ type: TYPE_SCALAR
+ scalar_type: "int8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "startWpsRegistrar"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "startWpsPbc"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "startWpsPinKeypad"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "startWpsPinDisplay"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "cancelWps"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "setExternalSim"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
new file mode 100644
index 0000000..88b1c3b
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantStaIfaceCallback.vts
@@ -0,0 +1,499 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantStaIfaceCallback"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::State"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "DISCONNECTED"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "IFACE_DISABLED"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "INACTIVE"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "SCANNING"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "AUTHENTICATING"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "ASSOCIATING"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "ASSOCIATED"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "FOURWAY_HANDSHAKE"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "GROUP_HANDSHAKE"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "COMPLETED"
+ scalar_value: {
+ uint32_t: 9
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::OsuMethod"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint8_t"
+
+ enumerator: "OMA_DM"
+ scalar_value: {
+ uint8_t: 0
+ }
+ enumerator: "SOAP_XML_SPP"
+ scalar_value: {
+ uint8_t: 1
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::AnqpData"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "venueName"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "roamingConsortium"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "ipAddrTypeAvailability"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "naiRealm"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "anqp3gppCellularNetwork"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "domainName"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::Hs20AnqpData"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "operatorFriendlyName"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "wanMetrics"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "connectionCapability"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "osuProvidersList"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsConfigError"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "NO_ERROR"
+ scalar_value: {
+ uint16_t: 0
+ }
+ enumerator: "OOB_IFACE_READ_ERROR"
+ scalar_value: {
+ uint16_t: 1
+ }
+ enumerator: "DECRYPTION_CRC_FAILURE"
+ scalar_value: {
+ uint16_t: 2
+ }
+ enumerator: "CHAN_24_NOT_SUPPORTED"
+ scalar_value: {
+ uint16_t: 3
+ }
+ enumerator: "CHAN_50_NOT_SUPPORTED"
+ scalar_value: {
+ uint16_t: 4
+ }
+ enumerator: "SIGNAL_TOO_WEAK"
+ scalar_value: {
+ uint16_t: 5
+ }
+ enumerator: "NETWORK_AUTH_FAILURE"
+ scalar_value: {
+ uint16_t: 6
+ }
+ enumerator: "NETWORK_ASSOC_FAILURE"
+ scalar_value: {
+ uint16_t: 7
+ }
+ enumerator: "NO_DHCP_RESPONSE"
+ scalar_value: {
+ uint16_t: 8
+ }
+ enumerator: "FAILED_DHCP_CONFIG"
+ scalar_value: {
+ uint16_t: 9
+ }
+ enumerator: "IP_ADDR_CONFLICT"
+ scalar_value: {
+ uint16_t: 10
+ }
+ enumerator: "NO_CONN_TO_REGISTRAR"
+ scalar_value: {
+ uint16_t: 11
+ }
+ enumerator: "MULTIPLE_PBC_DETECTED"
+ scalar_value: {
+ uint16_t: 12
+ }
+ enumerator: "ROGUE_SUSPECTED"
+ scalar_value: {
+ uint16_t: 13
+ }
+ enumerator: "DEVICE_BUSY"
+ scalar_value: {
+ uint16_t: 14
+ }
+ enumerator: "SETUP_LOCKED"
+ scalar_value: {
+ uint16_t: 15
+ }
+ enumerator: "MSG_TIMEOUT"
+ scalar_value: {
+ uint16_t: 16
+ }
+ enumerator: "REG_SESS_TIMEOUT"
+ scalar_value: {
+ uint16_t: 17
+ }
+ enumerator: "DEV_PASSWORD_AUTH_FAILURE"
+ scalar_value: {
+ uint16_t: 18
+ }
+ enumerator: "CHAN_60G_NOT_SUPPORTED"
+ scalar_value: {
+ uint16_t: 19
+ }
+ enumerator: "PUBLIC_KEY_HASH_MISMATCH"
+ scalar_value: {
+ uint16_t: 20
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsErrorIndication"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "NO_ERROR"
+ scalar_value: {
+ uint16_t: 0
+ }
+ enumerator: "SECURITY_TKIP_ONLY_PROHIBITED"
+ scalar_value: {
+ uint16_t: 1
+ }
+ enumerator: "SECURITY_WEP_PROHIBITED"
+ scalar_value: {
+ uint16_t: 2
+ }
+ enumerator: "AUTH_FAILURE"
+ scalar_value: {
+ uint16_t: 3
+ }
+ }
+ }
+
+ api: {
+ name: "onNetworkAdded"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onNetworkRemoved"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onStateChanged"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::State"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onAnqpQueryDone"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::AnqpData"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::Hs20AnqpData"
+ }
+ }
+
+ api: {
+ name: "onHs20IconQueryDone"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onHs20SubscriptionRemediation"
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::OsuMethod"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onHs20DeauthImminentNotice"
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "onConnected"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onDisconnected"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onAssociationCompleted"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onAssociationRejected"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "onAuthenticationTimeout"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onEapFailure"
+ }
+
+ api: {
+ name: "onWpsEventSuccess"
+ }
+
+ api: {
+ name: "onWpsEventFail"
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsConfigError"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIfaceCallback::WpsErrorIndication"
+ }
+ }
+
+ api: {
+ name: "onWpsEventPbcOverlap"
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
new file mode 100644
index 0000000..f493b3e
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantStaNetwork.vts
@@ -0,0 +1,1087 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantStaNetwork"
+
+package: "android.hardware.wifi.supplicant"
+
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantNetwork"
+import: "android.hardware.wifi.supplicant@1.0::ISupplicantStaNetworkCallback"
+import: "android.hardware.wifi.supplicant@1.0::types"
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ParamSizeLimits"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SSID_MAX_LEN_IN_BYTES"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "PSK_PASSPHRASE_MIN_LEN_IN_BYTES"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "PSK_PASSPHRASE_MAX_LEN_IN_BYTES"
+ scalar_value: {
+ uint32_t: 63
+ }
+ enumerator: "WEP_KEYS_MAX_NUM"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "WEP40_KEY_LEN_IN_BYTES"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "WEP104_KEY_LEN_IN_BYTES"
+ scalar_value: {
+ uint32_t: 13
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WPA_EAP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "WPA_PSK"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "NONE"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "IEEE8021X"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "FT_EAP"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "FT_PSK"
+ scalar_value: {
+ uint32_t: 64
+ }
+ enumerator: "OSEN"
+ scalar_value: {
+ uint32_t: 32768
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WPA"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "RSN"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "OSEN"
+ scalar_value: {
+ uint32_t: 8
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "OPEN"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "SHARED"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "LEAP"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "WEP40"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "WEP104"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "TKIP"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "CCMP"
+ scalar_value: {
+ uint32_t: 16
+ }
+ enumerator: "GTK_NOT_USED"
+ scalar_value: {
+ uint32_t: 16384
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NONE"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "TKIP"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "CCMP"
+ scalar_value: {
+ uint32_t: 16
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "PEAP"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "TLS"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "TTLS"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "PWD"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "SIM"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "AKA"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "AKA_PRIME"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "WFA_UNAUTH_TLS"
+ scalar_value: {
+ uint32_t: 7
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "NONE"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "PAP"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "MSPAP"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "MSPAPV2"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "GTC"
+ scalar_value: {
+ uint32_t: 4
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "kc"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 8
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "sres"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 4
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "res"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "ik"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 16
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "ck"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 16
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getId"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getInterfaceName"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getType"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ }
+ }
+
+ api: {
+ name: "registerCallback"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_HIDL_CALLBACK
+ predefined_type: "ISupplicantStaNetworkCallback"
+ is_callback: true
+ }
+ }
+
+ api: {
+ name: "setSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setBssid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setScanSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setKeyMgmt"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
+ }
+ }
+
+ api: {
+ name: "setProto"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
+ }
+ }
+
+ api: {
+ name: "setAuthAlg"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
+ }
+ }
+
+ api: {
+ name: "setGroupCipher"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
+ }
+ }
+
+ api: {
+ name: "setPairwiseCipher"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
+ }
+ }
+
+ api: {
+ name: "setPskPassphrase"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setWepKey"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setWepTxKeyIdx"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "setRequirePmf"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setEapMethod"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
+ }
+ }
+
+ api: {
+ name: "setEapPhase2Method"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
+ }
+ }
+
+ api: {
+ name: "setEapIdentity"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setEapAnonymousIdentity"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setEapPassword"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "setEapCACert"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapCAPath"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapClientCert"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapPrivateKey"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapSubjectMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapAltSubjectMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapEngine"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "setEapEngineID"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setEapDomainSuffixMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "setIdStr"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getBssid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 6
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getScanSsid"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "getKeyMgmt"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::KeyMgmtMask"
+ }
+ }
+
+ api: {
+ name: "getProto"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::ProtoMask"
+ }
+ }
+
+ api: {
+ name: "getAuthAlg"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::AuthAlgMask"
+ }
+ }
+
+ api: {
+ name: "getGroupCipher"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::GroupCipherMask"
+ }
+ }
+
+ api: {
+ name: "getPairwiseCipher"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_MASK
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::PairwiseCipherMask"
+ }
+ }
+
+ api: {
+ name: "getPskPassphrase"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getWepKey"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getWepTxKeyIdx"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "uint32_t"
+ }
+ }
+
+ api: {
+ name: "getRequirePmf"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "getEapMethod"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapMethod"
+ }
+ }
+
+ api: {
+ name: "getEapPhase2Method"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::EapPhase2Method"
+ }
+ }
+
+ api: {
+ name: "getEapIdentity"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getEapAnonymousIdentity"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getEapPassword"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "getEapCACert"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapCAPath"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapClientCert"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapPrivateKey"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapSubjectMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapAltSubjectMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapEngine"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "getEapEngineID"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getEapDomainSuffixMatch"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "getIdStr"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ return_type_hidl: {
+ type: TYPE_STRING
+ }
+ }
+
+ api: {
+ name: "enable"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_SCALAR
+ scalar_type: "bool_t"
+ }
+ }
+
+ api: {
+ name: "disable"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "select"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ }
+
+ api: {
+ name: "sendNetworkEapSimGsmAuthResponse"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimGsmAuthParams"
+ }
+ }
+
+ api: {
+ name: "sendNetworkEapSimUmtsAuthResponse"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork::NetworkResponseEapSimUmtsAuthParams"
+ }
+ }
+
+ api: {
+ name: "sendNetworkEapIdentityResponse"
+ return_type_hidl: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ }
+ arg: {
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts b/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
new file mode 100644
index 0000000..3fe2da7
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/SupplicantStaNetworkCallback.vts
@@ -0,0 +1,69 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "ISupplicantStaNetworkCallback"
+
+package: "android.hardware.wifi.supplicant"
+
+
+interface: {
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimGsmAuthParams"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rands"
+ type: TYPE_VECTOR
+ vector_value: {
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 16
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+ }
+
+ attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimUmtsAuthParams"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "rand"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 16
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ struct_value: {
+ name: "autn"
+ type: TYPE_ARRAY
+ vector_value: {
+ vector_size: 16
+ type: TYPE_SCALAR
+ scalar_type: "uint8_t"
+ }
+ }
+ }
+
+ api: {
+ name: "onNetworkEapSimGsmAuthRequest"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimGsmAuthParams"
+ }
+ }
+
+ api: {
+ name: "onNetworkEapSimUmtsAuthRequest"
+ arg: {
+ type: TYPE_STRUCT
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetworkCallback::NetworkRequestEapSimUmtsAuthParams"
+ }
+ }
+
+ api: {
+ name: "onNetworkEapIdentityRequest"
+ }
+
+}
diff --git a/wifi/supplicant/1.0/vts/functional/Android.mk b/wifi/supplicant/1.0/vts/functional/Android.mk
new file mode 100644
index 0000000..8fa649f
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/Android.mk
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := supplicant_hidl_test
+LOCAL_CPPFLAGS := -Wall -Werror -Wextra
+LOCAL_SRC_FILES := \
+ main.cpp \
+ supplicant_hidl_test.cpp \
+ supplicant_hidl_test_utils.cpp \
+ supplicant_p2p_iface_hidl_test.cpp \
+ supplicant_sta_iface_hidl_test.cpp \
+ supplicant_sta_network_hidl_test.cpp
+LOCAL_SHARED_LIBRARIES := \
+ android.hardware.wifi.supplicant@1.0 \
+ libbase \
+ libcutils \
+ libhidlbase \
+ libhidltransport \
+ libhwbinder \
+ liblog \
+ libutils \
+ libwifi-hal \
+ libwifi-system
+LOCAL_STATIC_LIBRARIES := \
+ libgmock \
+ libgtest
+include $(BUILD_NATIVE_TEST)
+
diff --git a/wifi/supplicant/1.0/vts/functional/main.cpp b/wifi/supplicant/1.0/vts/functional/main.cpp
new file mode 100644
index 0000000..81a2947
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/main.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+
+#include <gtest/gtest.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+class SupplicantHidlEnvironment : public ::testing::Environment {
+ public:
+ virtual void SetUp() override {
+ stopWifiFramework();
+ stopSupplicant();
+ }
+ virtual void TearDown() override {
+ startWifiFramework();
+ // Framework will start wpa_supplicant.
+ }
+};
+
+int main(int argc, char** argv) {
+ ::testing::AddGlobalTestEnvironment(new SupplicantHidlEnvironment);
+ ::testing::InitGoogleTest(&argc, argv);
+ int status = RUN_ALL_TESTS();
+ LOG(INFO) << "Test result = " << status;
+ return status;
+}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp
new file mode 100644
index 0000000..9922447
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+
+#include <gtest/gtest.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+/*
+ * Create:
+ * Ensures that an instance of the ISupplicant proxy object is
+ * successfully created.
+ */
+TEST(SupplicantHidlTestNoFixture, Create) {
+ startSupplicantAndWaitForHidlService();
+ EXPECT_NE(nullptr, getSupplicant().get());
+ stopSupplicant();
+}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
new file mode 100644
index 0000000..3877b97
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.cpp
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+#include <gtest/gtest.h>
+
+#include <hidl/HidlTransportSupport.h>
+#include <android/hidl/manager/1.0/IServiceManager.h>
+#include <android/hidl/manager/1.0/IServiceNotification.h>
+
+#include <wifi_hal/driver_tool.h>
+#include <wifi_system/interface_tool.h>
+#include <wifi_system/supplicant_manager.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+using ::android::sp;
+using ::android::hardware::configureRpcThreadpool;
+using ::android::hardware::joinRpcThreadpool;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicant;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicantIface;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicantNetwork;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork;
+using ::android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface;
+using ::android::hardware::wifi::supplicant::V1_0::IfaceType;
+using ::android::hardware::wifi::supplicant::V1_0::SupplicantStatus;
+using ::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode;
+using ::android::hidl::manager::V1_0::IServiceNotification;
+using ::android::wifi_hal::DriverTool;
+using ::android::wifi_system::InterfaceTool;
+using ::android::wifi_system::SupplicantManager;
+
+namespace {
+const char kSupplicantServiceName[] = "wpa_supplicant";
+
+// Helper function to initialize the driver and firmware to STA mode.
+void initilializeDriverAndFirmware() {
+ DriverTool driver_tool;
+ InterfaceTool iface_tool;
+ EXPECT_TRUE(driver_tool.LoadDriver());
+ EXPECT_TRUE(driver_tool.ChangeFirmwareMode(DriverTool::kFirmwareModeSta));
+ EXPECT_TRUE(iface_tool.SetWifiUpState(true));
+}
+
+// Helper function to find any iface of the desired type exposed.
+bool findIfaceOfType(sp<ISupplicant> supplicant, IfaceType desired_type,
+ ISupplicant::IfaceInfo* out_info) {
+ bool operation_failed = false;
+ std::vector<ISupplicant::IfaceInfo> iface_infos;
+ supplicant->listInterfaces([&](const SupplicantStatus& status,
+ hidl_vec<ISupplicant::IfaceInfo> infos) {
+ if (status.code != SupplicantStatusCode::SUCCESS) {
+ operation_failed = true;
+ return;
+ }
+ iface_infos = infos;
+ });
+ if (operation_failed) {
+ return false;
+ }
+ for (const auto& info : iface_infos) {
+ if (info.type == desired_type) {
+ *out_info = info;
+ return true;
+ }
+ }
+ return false;
+}
+} // namespace
+
+// Utility class to wait for wpa_supplicant's HIDL service registration.
+class ServiceNotificationListener : public IServiceNotification {
+ public:
+ Return<void> onRegistration(const hidl_string& fully_qualified_name,
+ const hidl_string& instance_name,
+ bool pre_existing) override {
+ if (pre_existing) {
+ return Void();
+ }
+ std::unique_lock<std::mutex> lock(mutex_);
+ registered_.push_back(std::string(fully_qualified_name.c_str()) + "/" +
+ instance_name.c_str());
+ lock.unlock();
+ condition_.notify_one();
+ return Void();
+ }
+
+ bool registerForHidlServiceNotifications(const std::string& instance_name) {
+ if (!ISupplicant::registerForNotifications(instance_name, this)) {
+ return false;
+ }
+ configureRpcThreadpool(2, false);
+ return true;
+ }
+
+ bool waitForHidlService(uint32_t timeout_in_millis,
+ const std::string& instance_name) {
+ std::unique_lock<std::mutex> lock(mutex_);
+ condition_.wait_for(lock, std::chrono::milliseconds(timeout_in_millis),
+ [&]() { return registered_.size() >= 1; });
+ if (registered_.size() != 1) {
+ return false;
+ }
+ std::string exptected_registered =
+ std::string(ISupplicant::descriptor) + "/" + instance_name;
+ if (registered_[0] != exptected_registered) {
+ LOG(ERROR) << "Expected: " << exptected_registered
+ << ", Got: " << registered_[0];
+ return false;
+ }
+ return true;
+ }
+
+ private:
+ std::vector<std::string> registered_{};
+ std::mutex mutex_;
+ std::condition_variable condition_;
+};
+
+void stopWifiFramework() {
+ ASSERT_EQ(std::system("svc wifi disable"), 0);
+ // TODO: Use some other mechanism to wait for the framework to
+ // finish disabling.
+ sleep(5);
+}
+
+void startWifiFramework() {
+ ASSERT_EQ(std::system("svc wifi enable"), 0);
+ // These tests don't care whether the framework
+ // finished enabling or not.
+}
+
+void stopSupplicant() {
+ DriverTool driver_tool;
+ SupplicantManager supplicant_manager;
+
+ ASSERT_TRUE(supplicant_manager.StopSupplicant());
+ ASSERT_TRUE(driver_tool.UnloadDriver());
+ ASSERT_FALSE(supplicant_manager.IsSupplicantRunning());
+}
+
+void startSupplicantAndWaitForHidlService() {
+ initilializeDriverAndFirmware();
+
+ android::sp<ServiceNotificationListener> notification_listener =
+ new ServiceNotificationListener();
+ ASSERT_TRUE(notification_listener->registerForHidlServiceNotifications(
+ kSupplicantServiceName));
+
+ SupplicantManager supplicant_manager;
+ ASSERT_TRUE(supplicant_manager.StartSupplicant());
+ ASSERT_TRUE(supplicant_manager.IsSupplicantRunning());
+
+ ASSERT_TRUE(
+ notification_listener->waitForHidlService(200, kSupplicantServiceName));
+}
+
+sp<ISupplicant> getSupplicant() {
+ return ISupplicant::getService(kSupplicantServiceName);
+}
+
+sp<ISupplicantStaIface> getSupplicantStaIface() {
+ sp<ISupplicant> supplicant = getSupplicant();
+ if (!supplicant.get()) {
+ return nullptr;
+ }
+ ISupplicant::IfaceInfo info;
+ if (!findIfaceOfType(supplicant, IfaceType::STA, &info)) {
+ return nullptr;
+ }
+ bool operation_failed = false;
+ sp<ISupplicantStaIface> sta_iface;
+ supplicant->getInterface(info, [&](const SupplicantStatus& status,
+ const sp<ISupplicantIface>& iface) {
+ if (status.code != SupplicantStatusCode::SUCCESS) {
+ operation_failed = true;
+ return;
+ }
+ sta_iface = ISupplicantStaIface::castFrom(iface);
+ });
+ if (operation_failed) {
+ return nullptr;
+ }
+ return sta_iface;
+}
+
+sp<ISupplicantStaNetwork> createSupplicantStaNetwork() {
+ sp<ISupplicantStaIface> sta_iface = getSupplicantStaIface();
+ if (!sta_iface.get()) {
+ return nullptr;
+ }
+ bool operation_failed = false;
+ sp<ISupplicantStaNetwork> sta_network;
+ sta_iface->addNetwork([&](const SupplicantStatus& status,
+ const sp<ISupplicantNetwork>& network) {
+ if (status.code != SupplicantStatusCode::SUCCESS) {
+ operation_failed = true;
+ return;
+ }
+ sta_network = ISupplicantStaNetwork::castFrom(network);
+ });
+ if (operation_failed) {
+ return nullptr;
+ }
+ return sta_network;
+}
+
+sp<ISupplicantP2pIface> getSupplicantP2pIface() {
+ sp<ISupplicant> supplicant = getSupplicant();
+ if (!supplicant.get()) {
+ return nullptr;
+ }
+ ISupplicant::IfaceInfo info;
+ if (!findIfaceOfType(supplicant, IfaceType::P2P, &info)) {
+ return nullptr;
+ }
+ bool operation_failed = false;
+ sp<ISupplicantP2pIface> p2p_iface;
+ supplicant->getInterface(info, [&](const SupplicantStatus& status,
+ const sp<ISupplicantIface>& iface) {
+ if (status.code != SupplicantStatusCode::SUCCESS) {
+ operation_failed = true;
+ return;
+ }
+ p2p_iface = ISupplicantP2pIface::castFrom(iface);
+ });
+ if (operation_failed) {
+ return nullptr;
+ }
+ return p2p_iface;
+}
+
+bool turnOnExcessiveLogging() {
+ sp<ISupplicant> supplicant = getSupplicant();
+ if (!supplicant.get()) {
+ return false;
+ }
+ bool operation_failed = false;
+ supplicant->setDebugParams(
+ ISupplicant::DebugLevel::EXCESSIVE,
+ true, // show timestamps
+ true, // show keys
+ [&](const SupplicantStatus& status) {
+ if (status.code != SupplicantStatusCode::SUCCESS) {
+ operation_failed = true;
+ }
+ });
+ return !operation_failed;
+}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h
new file mode 100644
index 0000000..38143e4
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_hidl_test_utils.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SUPPLICANT_HIDL_TEST_UTILS_H
+#define SUPPLICANT_HIDL_TEST_UTILS_H
+
+#include <android/hardware/wifi/supplicant/1.0/ISupplicant.h>
+#include <android/hardware/wifi/supplicant/1.0/ISupplicantP2pIface.h>
+#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaIface.h>
+#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaNetwork.h>
+
+// Used to stop the android wifi framework before every test.
+void stopWifiFramework();
+void startWifiFramework();
+void stopSupplicant();
+// Used to configure the chip, driver and start wpa_supplicant before every
+// test.
+void startSupplicantAndWaitForHidlService();
+
+// Helper functions to obtain references to the various HIDL interface objects.
+// Note: We only have a single instance of each of these objects currently.
+// These helper functions should be modified to return vectors if we support
+// multiple instances.
+android::sp<android::hardware::wifi::supplicant::V1_0::ISupplicant>
+getSupplicant();
+android::sp<android::hardware::wifi::supplicant::V1_0::ISupplicantStaIface>
+getSupplicantStaIface();
+android::sp<android::hardware::wifi::supplicant::V1_0::ISupplicantStaNetwork>
+createSupplicantStaNetwork();
+android::sp<android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface>
+getSupplicantP2pIface();
+
+bool turnOnExcessiveLogging();
+
+#endif /* SUPPLICANT_HIDL_TEST_UTILS_H */
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp
new file mode 100644
index 0000000..968d4c9
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_p2p_iface_hidl_test.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+
+#include <gtest/gtest.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+/*
+ * Create:
+ * Ensures that an instance of the ISupplicantP2pIface proxy object is
+ * successfully created.
+ */
+TEST(SupplicantP2pIfaceHidlTestNoFixture, Create) {
+ startSupplicantAndWaitForHidlService();
+ EXPECT_NE(nullptr, getSupplicantP2pIface().get());
+ stopSupplicant();
+}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp
new file mode 100644
index 0000000..45cc6bc
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_sta_iface_hidl_test.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+
+#include <gtest/gtest.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+/*
+ * Create:
+ * Ensures that an instance of the ISupplicantStaIface proxy object is
+ * successfully created.
+ */
+TEST(SupplicantStaIfaceHidlTestNoFixture, Create) {
+ startSupplicantAndWaitForHidlService();
+ EXPECT_NE(nullptr, getSupplicantStaIface().get());
+ stopSupplicant();
+}
diff --git a/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp b/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp
new file mode 100644
index 0000000..8c42a22
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/functional/supplicant_sta_network_hidl_test.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/logging.h>
+
+#include <gtest/gtest.h>
+
+#include "supplicant_hidl_test_utils.h"
+
+/*
+ * Create:
+ * Ensures that an instance of the ISupplicantStaNetwork proxy object is
+ * successfully created.
+ */
+TEST(SupplicantStaNetworkHidlTestNoFixture, Create) {
+ startSupplicantAndWaitForHidlService();
+ EXPECT_NE(nullptr, createSupplicantStaNetwork().get());
+ stopSupplicant();
+}
diff --git a/wifi/supplicant/1.0/vts/types.vts b/wifi/supplicant/1.0/vts/types.vts
new file mode 100644
index 0000000..b8b29b3
--- /dev/null
+++ b/wifi/supplicant/1.0/vts/types.vts
@@ -0,0 +1,189 @@
+component_class: HAL_HIDL
+component_type_version: 1.0
+component_name: "types"
+
+package: "android.hardware.wifi.supplicant"
+
+
+attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "SUCCESS"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "FAILURE_UNKNOWN"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "FAILURE_ARGS_INVALID"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "FAILURE_IFACE_INVALID"
+ scalar_value: {
+ uint32_t: 3
+ }
+ enumerator: "FAILURE_IFACE_UNKNOWN"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "FAILURE_IFACE_EXISTS"
+ scalar_value: {
+ uint32_t: 5
+ }
+ enumerator: "FAILURE_IFACE_DISABLED"
+ scalar_value: {
+ uint32_t: 6
+ }
+ enumerator: "FAILURE_IFACE_NOT_DISCONNECTED"
+ scalar_value: {
+ uint32_t: 7
+ }
+ enumerator: "FAILURE_NETWORK_INVALID"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "FAILURE_NETWORK_UNKNOWN"
+ scalar_value: {
+ uint32_t: 9
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatus"
+ type: TYPE_STRUCT
+ struct_value: {
+ name: "code"
+ type: TYPE_ENUM
+ predefined_type: "::android::hardware::wifi::supplicant::V1_0::SupplicantStatusCode"
+ }
+ struct_value: {
+ name: "debugMessage"
+ type: TYPE_STRING
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::IfaceType"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "STA"
+ scalar_value: {
+ uint32_t: 0
+ }
+ enumerator: "P2P"
+ scalar_value: {
+ uint32_t: 1
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::P2pGroupCapabilityMask"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint32_t"
+
+ enumerator: "GROUP_OWNER"
+ scalar_value: {
+ uint32_t: 1
+ }
+ enumerator: "PERSISTENT_GROUP"
+ scalar_value: {
+ uint32_t: 2
+ }
+ enumerator: "GROUP_LIMIT"
+ scalar_value: {
+ uint32_t: 4
+ }
+ enumerator: "INTRA_BSS_DIST"
+ scalar_value: {
+ uint32_t: 8
+ }
+ enumerator: "CROSS_CONN"
+ scalar_value: {
+ uint32_t: 16
+ }
+ enumerator: "PERSISTENT_RECONN"
+ scalar_value: {
+ uint32_t: 32
+ }
+ enumerator: "GROUP_FORMATION"
+ scalar_value: {
+ uint32_t: 64
+ }
+ }
+}
+
+attribute: {
+ name: "::android::hardware::wifi::supplicant::V1_0::WpsConfigMethods"
+ type: TYPE_ENUM
+ enum_value: {
+ scalar_type: "uint16_t"
+
+ enumerator: "USBA"
+ scalar_value: {
+ uint16_t: 1
+ }
+ enumerator: "ETHERNET"
+ scalar_value: {
+ uint16_t: 2
+ }
+ enumerator: "LABEL"
+ scalar_value: {
+ uint16_t: 4
+ }
+ enumerator: "DISPLAY"
+ scalar_value: {
+ uint16_t: 8
+ }
+ enumerator: "EXT_NFC_TOKEN"
+ scalar_value: {
+ uint16_t: 16
+ }
+ enumerator: "INT_NFC_TOKEN"
+ scalar_value: {
+ uint16_t: 32
+ }
+ enumerator: "NFC_INTERFACE"
+ scalar_value: {
+ uint16_t: 64
+ }
+ enumerator: "PUSHBUTTON"
+ scalar_value: {
+ uint16_t: 128
+ }
+ enumerator: "KEYPAD"
+ scalar_value: {
+ uint16_t: 256
+ }
+ enumerator: "VIRT_PUSHBUTTON"
+ scalar_value: {
+ uint16_t: 640
+ }
+ enumerator: "PHY_PUSHBUTTON"
+ scalar_value: {
+ uint16_t: 1152
+ }
+ enumerator: "P2PS"
+ scalar_value: {
+ uint16_t: 4096
+ }
+ enumerator: "VIRT_DISPLAY"
+ scalar_value: {
+ uint16_t: 8200
+ }
+ enumerator: "PHY_DISPLAY"
+ scalar_value: {
+ uint16_t: 16392
+ }
+ }
+}
+