History log of /frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
7e91548e461e52af8e78ba2e968395caf29b55bf 02-Aug-2017 Roshan Pius <rpius@google.com> RELAND: HalDeviceManager: Get IWifi proxy immediately

Try to get IWifi proxy as a part of HalDeviceManager.initialize()
directly instead of waiting for the IServiceMAnager callback.

When HalDeviceManager.initialize() is invoked:
a) If the wifi service is up at that point, we will get the proxy immediately
and IServiceManager callback will be ignored.
b) If the wifi service is not up at that point, we will get the proxy as a part
of the IServiceManager callback.

Bug: 64226605
Test: Unit tests
Test: Regression test request.
Change-Id: I3d6b89edb3f446bb39984d1ebb3caeb53011bec9
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
36afabb6c8b769d2266800f2f362bf7ab70fef9b 21-Jul-2017 Roshan Pius <rpius@google.com> HalDeviceManager: Lock the service manager callback

We should hold the lock when we set mWifi to a non-null value and
should only unlock once we finish all the processing needed (which
includes a IWifi.stop() invocation). This should prevent any other
threads to proceed while this callback is being handled in the hwbinder
thread.

Bug: 62511857
Test: Device boots up and connects to wifi networks.
Test: Will send for regression tests.
Change-Id: I393455f4aea618d110c158cb2c4b3350e2ab5376
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
ba89009ba7554d5073c0b93c04f167c3a11667fa 07-Jul-2017 Roshan Pius <rpius@google.com> WifiVendorHal: Add support for new SAR related HAL API's

Adding support in WifiVendorHal to invoke the 2 new HAL API's added in
IWifiChip in the 1.1 package. The framework needs to be backward
compatible with 1.0 HAL service as well, so these new wrapper methods
return failure if the device is running the 1.0 HAL.
Also, added the plumbing for the new feature bit for this feature:
WifiManager.WIFI_FEATURE_TX_POWER_LIMIT.

TODO: Integrate this with WifiStateMachine in a separate CL which
listens to voice call progress intents.

Bug: 62437848
Test: Unit tests
Change-Id: I9d2b5ba297a5b757933db773eb1b9f067ad80e15
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
81828c08033d37ae90167d7dcde3f3335c4c038c 01-Jun-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "[HDM] Fix access to HDM before Wi-Fi is started"
4fe311c774d6880c2eb9aa38ece9f9a5a60f7bd7 01-Jun-2017 Etan Cohen <etancohen@google.com> [HDM] Fix access to HDM before Wi-Fi is started

A couple of synchronization issues:
1. Wifi vendor queries features even before Wi-Fi is started. HDM
cannot be accessed without it - caused invalid chip ID messages.
2. Added synchronization and log printouts to additional public HDM
methods.

Bug: 62238717
Test: observed issue resolved based on logs
Change-Id: I771b6f040127814bab5a71f8ee9ebf2d7771ae7b
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
84fc22eaa83774f25fcd3667655b1ff46677d0b8 01-Jun-2017 Etan Cohen <etancohen@google.com> [HDM] Use correct key for caching interfaces - name

Interface cache used the interface itself as a key. However, the
interface object is not constant - it will be created on every query.
Instead use the interface name which is constant.

Bug: 62230725
Test: unit tests, run aware & p2p concurrently
Change-Id: I50f1eaf6c64308742981e4e2bc368a8e219c679c
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
3ac5a2c4fbd7a8f66aa219b7e0e4d5c91b3efdf5 31-May-2017 Etan Cohen <etancohen@google.com> [HDM] Store callback to prevent GC

Callback objects need to be stored in non-local variable to prevent
them from being GC'd. The generated HAL code keeps a reference to them
but if they are GC'd by the framework then a callback to a null object
is made.

Bug: 62219781
Test: builds/runs with DBG on
Change-Id: Ibe42e7db915569b3d98ce1468d7d92712ed867e1
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
c780fa17703f9bb34f370e9b9161721f20c3f733 25-May-2017 Roshan Pius <rpius@google.com> HalDeviceManager: Reduce severity of error log in isSupported()

When WSM class is initialized by WifiServiceImpl, we first try to
cleanup state by invoke WifiNative.teardown(). This in turn invokes
HalDeviceManager.isSupported() even before HalDeviceManager.initialize()
is invoked. So, don't raise wtf's for this error to prevent unnecessary
wtf spamming on every device boot up.

Bug: 62089978
Test: Verified that only an error log is seen now on bootup.
Change-Id: I809c706717e25c784ffe7364d4351fa44ea2707d
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
8131b04dc799cb0c75240c7b9eb0517ba1f00be8 13-May-2017 Roshan Pius <rpius@google.com> WifiNative: Add VINTF check for vendor HAL

Currently, we're ignoring HAL start failures to support devices like
gce, hikey which did not have any vendor HAL support previously.

To solve that problem:
1. Remove the Vendor HAL daemon (HIDL shim) from such device's
device.mk.
Handled by other CL's in the topic.
2. Add the Wifi HAL's to the VINTF (manifest.xml) on all devices which
has the Vendor HAL daemon running. (Unfortunately, there is no automatic
translation from the module missing in device.mk to manifest.xml
currently).
Handled by other CL's in the topic.
3. Use the HalDeviceManager to query the VINTF to figure out if the
Vendor HAL is present on the device or not.
4a. If the Vendor HAL is not supported, ignore start/stop calls.
4b. If the Vendor HAL is present, report failure if start/stop fails.

Also, fixed a few invalid mock expectations set.

Bug: 36886769
Test: Device boots up and connects to wifi on 2017 devices.
Test: Unit tests.
Change-Id: Ia3d90c8fafe2f8c156c843f5f47b94deaabe5a56
(cherry picked from commit 30f34829e0e7e49dc09c897c72dd0ded7d9805eb)
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
3895a16e00aa5899e90c014566e4fe33a63e3619 29-Apr-2017 Ningyuan Wang <nywang@google.com> Add retry logic for wifi Hal starting failure

This add the retry logic for starting the wifi HAL because
wifi HAL might still be in the process of stopping.

Bug: 37681479
Test: compile, unittests
Test: manual test toggling the hotspot mode quickly

Change-Id: If87d8a0ebdcdf8a0aca233808b9d84393d21f738
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
3b2c0d62fe9fcfe5cc3a7e2a3eece6161b9bb33a 03-Mar-2017 Roshan Pius <rpius@google.com> HalDeviceManager: Store death recipient object

These might get garbage collected otherwise.

Bug: 35950529
Test: Unit tests
Test: Killed the hal and ensured that we detected it.
Change-Id: I498fa745042fd2f8e0be736f68398ddd1ba2a8de
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
006eb17e06a7843e3da3bf939833b94e58a5a034 25-Feb-2017 Yifan Hong <elsk@google.com> IServiceManager/ITokenManager uses "default" service name

The getService() and registerAsService() methods of interface objects
now have default parameters of "default" for the service name. HALs
will not have to use any service name unless they want to register
more than one service.

Test: boots
Test: hidl_test

Bug: 33844934
Change-Id: I80d35dcd87ebc42c8d60682f03a69111898a4268
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
e450fe1a611e4dcf05046a6aa0df0bc8300cba61 14-Feb-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] getSupportedIfaceTypes() mod to never return null

Change the semantics of HalDeviceManager.getSupportedIfaceTypes so
that it never returns null. It now always returns a Set<IfaceType> -
possibly an empty set.

Cleaner than clients trying to figure out error conditions.

Bug: 35101185
Test: unit tests (including new one for error)
Change-Id: Icdff4192b3b7dc5901110e243a0a021a1593c01b
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
307acde0b29838b817a4fd3659a46c22be0ea314 10-Feb-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] API to return available interfaces

Return the set of interfaces supported by the device (all
chips) or a particular chip.

Bug: 35101185
Test: (new) unit tests
Change-Id: I02c7efd0ec1c11aa2301fe7192d202ce40053f24
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
c9a6c7b295e35415a61e3de6bf75f846a4aca048 02-Feb-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] Fix validation bug due to object comparison

Proxy objects from HAL are created on every query - thus it
isn't possible to compare IWifiIface objects obtained from the service
even if they represent identical server-side objects.

Device manager was using object references - removed. Need to stick
to non-changing representations, e.g. type/name.

Bug: 34474043
Test: unit-tests still passing + boot
Change-Id: I56c9ac88767f272ddd14fa2ef2a4b3796fdeb348
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
a5dc1667f752dc2446e6de12279614a4fd9e2fe2 30-Jan-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] Stop Wi-Fi if (re)started

When getting notification that Wi-Fi service is started
we don't know if this is a re-start of the service or
potentially of the framework itself. If the framework is
restarted then it is possible that the state of the service
and framework are out-of-sync.

Therefore, on every service restart make sure to reset it by
stopping Wi-Fi.

Bug: 34474043
Test: unit tests
Change-Id: I5968598756cae3c1181659ef153b36cada7c2c16
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
448a7b6b7b16cf39ed25729ceaf61edb30368567 27-Jan-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] Available for request API + STA/STA request bug

Updated available for request API:
- Simple register/unregister API
- Will be called immediately on registration (if valid)
- Will be registered until unregistered
- Only a single copy is kept (duplicates detected)

Fixed issue whereby the requested interface wasn't counted toward
the total of required interfaces. So with only one STA allowed, a
second STA would have been allowed.

Bug: 34474043
Test: unit tests pass (with new unit tests added)
Change-Id: Ic19731b66a609b828cda07f8065ef27ead077b2d
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
9ea74bec262597c7e8e804be5a3f97de8e544830 26-Jan-2017 Etan Cohen <etancohen@google.com> [HAL Device Manager] Use non-default service name

The IServiceManager requires 'manager' as service name.

Bug: 34474043
Test: builds/boots (failed boot before)
Change-Id: I6ad5fdeda090949274629045bde6fce5eadc505b
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
3145bb4d3359647cccd9b4aba1734066f36bb2e6 26-Jan-2017 Etan Cohen <etancohen@google.com> [Wi-Fi HAL Device Manager] Status callback semantics change

Change behavior of status callback/API:
- Listener provides a status change only (onStatusChange)
- Triggered when Wi-Fi is started or stopped
- Triggered when Wi-Fi HAL service dies or restarts
- API for
- isStarted(): indicates if Wi-Fi is started or stopped
- isReady(): indicates if Wi-Fi HAL service is alive

Bug: 34474043
Test: unit tests
Change-Id: I8babb00ea8a2c8c485d1661255644434f0787d8e
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
5e9a23e2472ac7ba67924b8a8f79dff9f6e5e186 25-Jan-2017 Etan Cohen <etancohen@google.com> [Wi-Fi HAL Device Manager] Comments/nits

Update naming and comments per original CL reviews.

Bug: 34474043
Test: unit tests passing
Change-Id: Ie32df5e2910d1b6c6efeecf7a2134653521ced51
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
d887e5c6bf4abf2f098ea6f087e717e29c551548 23-Jan-2017 Etan Cohen <etancohen@google.com> Wi-Fi HAL Device Manager: implement available for request logic

Added code which dispatches the 'available for request'
listeners.

Bug: 34474043
Bug: 34633162
Test: (new) unit tests pass
Change-Id: I77074a3dc59fafff0688c921ca8ca4156ca68d1f
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
a78e7cf8de28fd836f7a111e39e7d7e7005bf942 23-Jan-2017 Etan Cohen <etancohen@google.com> Wi-Fi HAL device manager: implement coordination logic

The coordination logic for the HAL device management: uses
chip information and hard-coded interface priority to determine
interface creation decisions:

- Changes mode
- Destroys interfaces (dispatches listeners)
- Creates new interface

Unit tests based on the current default chip configuration.

TODO: dispatch interface available for request listeners.

Bug: 34474043
Test: (new) unit tests pass
Change-Id: I5d2e865baac7e9948aad6d8f607757b8db485952
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
64ce9f185eb6097c1c358c44710be6e1ca7c7055 21-Jan-2017 Etan Cohen <etancohen@google.com> Wi-Fi HAL device manager: add interface API

Added interface management API and infrastructure.
The create API does not function.

Bug: 34474043
Test: builds - no unit tests
Change-Id: I71983d7d6c4ca941689112f0112d692e06574b3a
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
dd4dcab629d1045b08f58f699a4a09ecc8cd23e3 20-Jan-2017 Etan Cohen <etancohen@google.com> Wi-Fi HAL device manager: baseline for init/start/stop

Wi-Fi HAL device manager. All Wi-Fi services should use this
manager to start/stop and monitor status of Wi-Fi.

Baseline: will be extended to coordinate interface.

Bug: 34474043
Test: unit tests
Change-Id: I3846cb57f301bcd91534f1b5943d996f4c84ed63
/frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java