wifi: Restructure wifi legacy HAL implementation
Restructured the existing code to create a new class called
|WifiLegacyHal|. This class will be used as a wrapper to invoke
all the legacy HAL functions and handle the "C" style callbacks.
Bug: 31936700
Test: mmma -j32 hardware/interfaces/wifi/1.0/default
Change-Id: I63e8543f49886f8446101320a97d1e96e30d1035
diff --git a/wifi/1.0/default/wifi_chip.cpp b/wifi/1.0/default/wifi_chip.cpp
index 42118b7..91cf514 100644
--- a/wifi/1.0/default/wifi_chip.cpp
+++ b/wifi/1.0/default/wifi_chip.cpp
@@ -26,18 +26,17 @@
namespace V1_0 {
namespace implementation {
-WifiChip::WifiChip(WifiHalState* hal_state,
- wifi_interface_handle interface_handle)
- : hal_state_(hal_state), interface_handle_(interface_handle) {}
+WifiChip::WifiChip(std::weak_ptr<WifiLegacyHal> legacy_hal)
+ : legacy_hal_(legacy_hal) {}
-void WifiChip::Invalidate() {
- hal_state_ = nullptr;
+void WifiChip::invalidate() {
+ legacy_hal_.reset();
callbacks_.clear();
}
Return<void> WifiChip::registerEventCallback(
const sp<IWifiChipEventCallback>& callback) {
- if (!hal_state_)
+ if (!legacy_hal_.lock())
return Void();
// TODO(b/31632518): remove the callback when the client is destroyed
callbacks_.insert(callback);
@@ -45,7 +44,7 @@
}
Return<void> WifiChip::getAvailableModes(getAvailableModes_cb cb) {
- if (!hal_state_) {
+ if (!legacy_hal_.lock()) {
cb(hidl_vec<ChipMode>());
return Void();
} else {
@@ -55,54 +54,23 @@
}
Return<void> WifiChip::configureChip(uint32_t /*mode_id*/) {
- if (!hal_state_)
+ if (!legacy_hal_.lock())
return Void();
// TODO add implementation
return Void();
}
Return<uint32_t> WifiChip::getMode() {
- if (!hal_state_)
+ if (!legacy_hal_.lock())
return 0;
// TODO add implementation
return 0;
}
Return<void> WifiChip::requestChipDebugInfo() {
- if (!hal_state_)
+ if (!legacy_hal_.lock())
return Void();
-
- IWifiChipEventCallback::ChipDebugInfo result;
- result.driverDescription = "<unknown>";
- result.firmwareDescription = "<unknown>";
- char buffer[256];
-
- // get driver version
- bzero(buffer, sizeof(buffer));
- wifi_error ret = hal_state_->func_table_.wifi_get_driver_version(
- interface_handle_, buffer, sizeof(buffer));
- if (ret == WIFI_SUCCESS) {
- result.driverDescription = buffer;
- } else {
- LOG(WARNING) << "Failed to get driver version: "
- << LegacyErrorToString(ret);
- }
-
- // get firmware version
- bzero(buffer, sizeof(buffer));
- ret = hal_state_->func_table_.wifi_get_firmware_version(
- interface_handle_, buffer, sizeof(buffer));
- if (ret == WIFI_SUCCESS) {
- result.firmwareDescription = buffer;
- } else {
- LOG(WARNING) << "Failed to get firmware version: "
- << LegacyErrorToString(ret);
- }
-
- // send callback
- for (auto& callback : callbacks_) {
- callback->onChipDebugInfoAvailable(result);
- }
+ // TODO add implementation
return Void();
}