wifi: Upgrade hostapd HIDL to 1.3
1. Upgrade hostapd HIDL to 1.3
2. Add new callback register in 1.3
Test: Manuel Test. Hotspot works normally.
Test: atest VtsHalWifiHostapdV1_0TargetTest
Test: atest VtsHalWifiHostapdV1_1TargetTest
Test: atest VtsHalWifiHostapdV1_2TargetTest
Bug: 151189102
Change-Id: I66b8a73539386d282688a4e051120abf7621a049
diff --git a/hostapd/Android.mk b/hostapd/Android.mk
index f2b15d3..58b0d16 100644
--- a/hostapd/Android.mk
+++ b/hostapd/Android.mk
@@ -1153,6 +1153,7 @@
LOCAL_SHARED_LIBRARIES += android.hardware.wifi.hostapd@1.0
LOCAL_SHARED_LIBRARIES += android.hardware.wifi.hostapd@1.1
LOCAL_SHARED_LIBRARIES += android.hardware.wifi.hostapd@1.2
+LOCAL_SHARED_LIBRARIES += android.hardware.wifi.hostapd@1.3
LOCAL_SHARED_LIBRARIES += libbase libhidlbase libutils
LOCAL_STATIC_LIBRARIES += libhostapd_hidl
endif
@@ -1195,7 +1196,7 @@
LOCAL_CPPFLAGS := $(L_CPPFLAGS)
LOCAL_CFLAGS := $(L_CFLAGS)
LOCAL_C_INCLUDES := $(INCLUDES)
-HIDL_INTERFACE_VERSION = 1.2
+HIDL_INTERFACE_VERSION = 1.3
LOCAL_SRC_FILES := \
hidl/$(HIDL_INTERFACE_VERSION)/hidl.cpp \
hidl/$(HIDL_INTERFACE_VERSION)/hostapd.cpp
@@ -1203,6 +1204,7 @@
android.hardware.wifi.hostapd@1.0 \
android.hardware.wifi.hostapd@1.1 \
android.hardware.wifi.hostapd@1.2 \
+ android.hardware.wifi.hostapd@1.3 \
libbase \
libhidlbase \
libutils \
diff --git a/hostapd/android.hardware.wifi.hostapd.xml b/hostapd/android.hardware.wifi.hostapd.xml
index 4dc1701..c688d3e 100644
--- a/hostapd/android.hardware.wifi.hostapd.xml
+++ b/hostapd/android.hardware.wifi.hostapd.xml
@@ -2,7 +2,7 @@
<hal format="hidl">
<name>android.hardware.wifi.hostapd</name>
<transport>hwbinder</transport>
- <version>1.2</version>
+ <version>1.3</version>
<interface>
<name>IHostapd</name>
<instance>default</instance>
diff --git a/hostapd/hidl/1.2/hidl.cpp b/hostapd/hidl/1.3/hidl.cpp
similarity index 93%
rename from hostapd/hidl/1.2/hidl.cpp
rename to hostapd/hidl/1.3/hidl.cpp
index 4bde312..68e4d86 100644
--- a/hostapd/hidl/1.2/hidl.cpp
+++ b/hostapd/hidl/1.3/hidl.cpp
@@ -22,8 +22,8 @@
using android::hardware::configureRpcThreadpool;
using android::hardware::IPCThreadState;
-using android::hardware::wifi::hostapd::V1_2::IHostapd;
-using android::hardware::wifi::hostapd::V1_2::implementation::Hostapd;
+using android::hardware::wifi::hostapd::V1_3::IHostapd;
+using android::hardware::wifi::hostapd::V1_3::implementation::Hostapd;
// This file is a bridge between the hostapd code written in 'C' and the HIDL
// interface in C++. So, using "C" style static globals here!
diff --git a/hostapd/hidl/1.2/hidl.h b/hostapd/hidl/1.3/hidl.h
similarity index 100%
rename from hostapd/hidl/1.2/hidl.h
rename to hostapd/hidl/1.3/hidl.h
diff --git a/hostapd/hidl/1.2/hidl_return_util.h b/hostapd/hidl/1.3/hidl_return_util.h
similarity index 96%
rename from hostapd/hidl/1.2/hidl_return_util.h
rename to hostapd/hidl/1.3/hidl_return_util.h
index 81742f8..6d50348 100644
--- a/hostapd/hidl/1.2/hidl_return_util.h
+++ b/hostapd/hidl/1.3/hidl_return_util.h
@@ -16,7 +16,7 @@
namespace hardware {
namespace wifi {
namespace hostapd {
-namespace V1_2 {
+namespace V1_3 {
namespace implementation {
namespace hidl_return_util {
@@ -35,7 +35,7 @@
}
} // namespace hidl_return_util
} // namespace implementation
-} // namespace V1_2
+} // namespace V1_3
} // namespace hostapd
} // namespace wifi
} // namespace hardware
diff --git a/hostapd/hidl/1.2/hostapd.cpp b/hostapd/hidl/1.3/hostapd.cpp
similarity index 94%
rename from hostapd/hidl/1.2/hostapd.cpp
rename to hostapd/hidl/1.3/hostapd.cpp
index 537353a..7d8f842 100644
--- a/hostapd/hidl/1.2/hostapd.cpp
+++ b/hostapd/hidl/1.3/hostapd.cpp
@@ -442,7 +442,7 @@
namespace hardware {
namespace wifi {
namespace hostapd {
-namespace V1_2 {
+namespace V1_3 {
namespace implementation {
using hidl_return_util::call;
using namespace android::hardware::wifi::hostapd::V1_0;
@@ -498,6 +498,13 @@
this, &Hostapd::registerCallbackInternal, _hidl_cb, callback);
}
+Return<void> Hostapd::registerCallback_1_3(
+ const sp<V1_3::IHostapdCallback>& callback, registerCallback_1_3_cb _hidl_cb)
+{
+ return call(
+ this, &Hostapd::registerCallbackInternal_1_3, _hidl_cb, callback);
+}
+
Return<void> Hostapd::forceClientDisconnect(
const hidl_string& iface_name, const hidl_array<uint8_t, 6>& client_address,
V1_2::Ieee80211ReasonCode reason_code, forceClientDisconnect_cb _hidl_cb)
@@ -508,7 +515,7 @@
}
Return<void> Hostapd::setDebugParams(
- DebugLevel level, setDebugParams_cb _hidl_cb)
+ V1_2::DebugLevel level, setDebugParams_cb _hidl_cb)
{
return call(
this, &Hostapd::setDebugParamsInternal, _hidl_cb, level);
@@ -528,25 +535,25 @@
return {V1_0::HostapdStatusCode::FAILURE_UNKNOWN, ""};
}
-HostapdStatus Hostapd::addAccessPointInternal_1_2(
+V1_2::HostapdStatus Hostapd::addAccessPointInternal_1_2(
const IfaceParams& iface_params, const NetworkParams& nw_params)
{
if (hostapd_get_iface(interfaces_, iface_params.V1_1.V1_0.ifaceName.c_str())) {
wpa_printf(
MSG_ERROR, "Interface %s already present",
iface_params.V1_1.V1_0.ifaceName.c_str());
- return {HostapdStatusCode::FAILURE_IFACE_EXISTS, ""};
+ return {V1_2::HostapdStatusCode::FAILURE_IFACE_EXISTS, ""};
}
const auto conf_params = CreateHostapdConfig(iface_params, nw_params);
if (conf_params.empty()) {
wpa_printf(MSG_ERROR, "Failed to create config params");
- return {HostapdStatusCode::FAILURE_ARGS_INVALID, ""};
+ return {V1_2::HostapdStatusCode::FAILURE_ARGS_INVALID, ""};
}
const auto conf_file_path =
WriteHostapdConfig(iface_params.V1_1.V1_0.ifaceName, conf_params);
if (conf_file_path.empty()) {
wpa_printf(MSG_ERROR, "Failed to write config file");
- return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
+ return {V1_2::HostapdStatusCode::FAILURE_UNKNOWN, ""};
}
std::string add_iface_param_str = StringPrintf(
"%s config=%s", iface_params.V1_1.V1_0.ifaceName.c_str(),
@@ -557,7 +564,7 @@
wpa_printf(
MSG_ERROR, "Adding interface %s failed",
add_iface_param_str.c_str());
- return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
+ return {V1_2::HostapdStatusCode::FAILURE_UNKNOWN, ""};
}
struct hostapd_data* iface_hapd =
hostapd_get_iface(interfaces_, iface_params.V1_1.V1_0.ifaceName.c_str());
@@ -583,9 +590,9 @@
wpa_printf(
MSG_ERROR, "Enabling interface %s failed",
iface_params.V1_1.V1_0.ifaceName.c_str());
- return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
+ return {V1_2::HostapdStatusCode::FAILURE_UNKNOWN, ""};
}
- return {HostapdStatusCode::SUCCESS, ""};
+ return {V1_2::HostapdStatusCode::SUCCESS, ""};
}
V1_0::HostapdStatus Hostapd::removeAccessPointInternal(const std::string& iface_name)
@@ -605,8 +612,14 @@
V1_0::HostapdStatus Hostapd::registerCallbackInternal(
const sp<V1_1::IHostapdCallback>& callback)
{
+ return {V1_0::HostapdStatusCode::FAILURE_UNKNOWN, ""};
+}
+
+V1_2::HostapdStatus Hostapd::registerCallbackInternal_1_3(
+ const sp<V1_3::IHostapdCallback>& callback)
+{
callbacks_.push_back(callback);
- return {V1_0::HostapdStatusCode::SUCCESS, ""};
+ return {V1_2::HostapdStatusCode::SUCCESS, ""};
}
V1_2::HostapdStatus Hostapd::forceClientDisconnectInternal(const std::string& iface_name,
@@ -631,14 +644,14 @@
return {V1_2::HostapdStatusCode::FAILURE_CLIENT_UNKNOWN, ""};
}
-V1_2::HostapdStatus Hostapd::setDebugParamsInternal(DebugLevel level)
+V1_2::HostapdStatus Hostapd::setDebugParamsInternal(V1_2::DebugLevel level)
{
wpa_debug_level = static_cast<uint32_t>(level);
return {V1_2::HostapdStatusCode::SUCCESS, ""};
}
} // namespace implementation
-} // namespace V1_2
+} // namespace V1_3
} // namespace hostapd
} // namespace wifi
} // namespace hardware
diff --git a/hostapd/hidl/1.2/hostapd.h b/hostapd/hidl/1.3/hostapd.h
similarity index 83%
rename from hostapd/hidl/1.2/hostapd.h
rename to hostapd/hidl/1.3/hostapd.h
index ca6c32e..630bc7d 100644
--- a/hostapd/hidl/1.2/hostapd.h
+++ b/hostapd/hidl/1.3/hostapd.h
@@ -14,8 +14,8 @@
#include <android-base/macros.h>
-#include <android/hardware/wifi/hostapd/1.2/IHostapd.h>
-#include <android/hardware/wifi/hostapd/1.1/IHostapdCallback.h>
+#include <android/hardware/wifi/hostapd/1.3/IHostapd.h>
+#include <android/hardware/wifi/hostapd/1.3/IHostapdCallback.h>
extern "C"
{
@@ -30,7 +30,7 @@
namespace hardware {
namespace wifi {
namespace hostapd {
-namespace V1_2 {
+namespace V1_3 {
namespace implementation {
using namespace android::hardware::wifi::hostapd::V1_0;
@@ -39,7 +39,7 @@
* object is used core for global control operations on
* hostapd.
*/
-class Hostapd : public V1_2::IHostapd
+class Hostapd : public V1_3::IHostapd
{
public:
Hostapd(hapd_interfaces* interfaces);
@@ -62,12 +62,15 @@
Return<void> registerCallback(
const sp<V1_1::IHostapdCallback>& callback,
registerCallback_cb _hidl_cb) override;
+ Return<void> registerCallback_1_3(
+ const sp<V1_3::IHostapdCallback>& callback,
+ registerCallback_1_3_cb _hidl_cb) override;
Return<void>forceClientDisconnect(
const hidl_string& iface_name,
const hidl_array<uint8_t, 6>& client_address,
V1_2::Ieee80211ReasonCode reason_code, forceClientDisconnect_cb _hidl_cb) override;
Return<void> setDebugParams(
- DebugLevel level, setDebugParams_cb _hidl_cb) override;
+ V1_2::DebugLevel level, setDebugParams_cb _hidl_cb) override;
private:
// Corresponding worker functions for the HIDL methods.
V1_0::HostapdStatus addAccessPointInternal(
@@ -82,19 +85,21 @@
V1_0::HostapdStatus removeAccessPointInternal(const std::string& iface_name);
V1_0::HostapdStatus registerCallbackInternal(
const sp<V1_1::IHostapdCallback>& callback);
+ V1_2::HostapdStatus registerCallbackInternal_1_3(
+ const sp<V1_3::IHostapdCallback>& callback);
V1_2::HostapdStatus forceClientDisconnectInternal(
const std::string& iface_name,
const std::array<uint8_t, 6>& client_address,
V1_2::Ieee80211ReasonCode reason_code);
- V1_2::HostapdStatus setDebugParamsInternal(DebugLevel level);
+ V1_2::HostapdStatus setDebugParamsInternal(V1_2::DebugLevel level);
// Raw pointer to the global structure maintained by the core.
struct hapd_interfaces* interfaces_;
// Callbacks registered.
- std::vector<sp<V1_1::IHostapdCallback>> callbacks_;
+ std::vector<sp<V1_3::IHostapdCallback>> callbacks_;
DISALLOW_COPY_AND_ASSIGN(Hostapd);
};
} // namespace implementation
-} // namespace V1_2
+} // namespace V1_3
} // namespace hostapd
} // namespace wifi
} // namespace hardware
diff --git a/hostapd/hostapd.android.rc b/hostapd/hostapd.android.rc
index 512ca0d..7cc45bd 100644
--- a/hostapd/hostapd.android.rc
+++ b/hostapd/hostapd.android.rc
@@ -15,6 +15,7 @@
interface android.hardware.wifi.hostapd@1.0::IHostapd default
interface android.hardware.wifi.hostapd@1.1::IHostapd default
interface android.hardware.wifi.hostapd@1.2::IHostapd default
+ interface android.hardware.wifi.hostapd@1.3::IHostapd default
class main
capabilities NET_ADMIN NET_RAW
user wifi