Commit graph

344 commits

Author SHA1 Message Date
Nick Desaulniers
69871db874 Merge changes I8a7ff4b0,Id121ecd4,I23375d73 am: 944e640e16
am: d770f4c628

Change-Id: Ie2a0a0dad8d32f7eb2a07784bd0f60bf666b61a1
2019-11-06 09:58:31 -08:00
Nick Desaulniers
8cb3c9b326 [hardware][interfaces][sensors] fix -Wreorder-init-list
C++20 will require members in a designated initializer to be in order
unlike C99.

Bug: 139945549
Test: mm
Merged-In: I78d64ea2b7df3f2bd3b8503aa553a0523b20d711
Change-Id: I8a7ff4b025ac693398b79ad5f16687afe3a4c5a9
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
2019-11-05 14:58:13 -08:00
Nick Desaulniers
890faa2ac5 [hardware][interfaces][sensors] fix -Wreorder-init-list again
C++20 will require members in a designated initializer to be in order
unlike C99.

This snuck in because I haven't upgraded the platform toolchain yet.

Bug: 139945549
Test: mm
Change-Id: Id121ecd46b7e53f5dd7b4a32daae0594d851d0e5
Merged-in: Ica2844a213467e41d9b6a8955f1750692da8b444
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
2019-11-05 14:55:47 -08:00
Stan Rokita
ac564f2899 Merge "Bound pending write events queue to avoid OOM" am: 6cbd36f357
am: 797b06e220

Change-Id: Ie8121004cc113714e4a9ad6085a551f832fc847a
2019-11-05 01:35:34 -08:00
Stan Rokita
5098f0a9ca Bound pending write events queue to avoid OOM
Bound the pending write events queue to a large amount of events in
total (100,000) so that we do not have out of memory crashes when the
sensors framework locks up. Events are 80B of memory each. So this
change caps are pending writes event queue to 8MB of memory.

Bug: 143302327
Test: atest android.hardware.sensors@2.0-halproxy-unit-tests &&
vts-tradefed run commandAndExit vts --skip-all-system-status-check
--primary-abi-only --skip-preconditions --module VtsHalSensorsV2_0Target

Change-Id: I5d0a7f382e3f61fbbe2c74b5c9cf13560432b84c
2019-11-04 14:33:06 -08:00
Stan Rokita
4950a9dc21 Merge "Add Sensors Multihal support for Hal 2.0" am: 2f27f7137e
am: 2d399b5af0

Change-Id: Iad679b84b91e62c03d8466a98fdff11163317578
2019-10-31 09:09:04 -07:00
Treehugger Robot
2f27f7137e Merge "Add Sensors Multihal support for Hal 2.0" 2019-10-31 15:32:44 +00:00
Stan Rokita
2e37ec4475 Add Sensors Multihal support for Hal 2.0
The multihal framework is a HAL interface for the sensors framework that
allows multiple vendors to package their HAL implementation into a
subHAL dynamic library that will be loaded and used to pass on method
calls to the appropriate subHAL. The HalProxy object, that will act as
the main proxy sensors wrapper for the multiHAL handles writing sensor
events to the event FMQ and wakelock acquisition and releasing via a
callback object it passes to the subHALs.

In order to turn your HAL 2.0 executable into a subHAL to be used by the
multiHAL, implement the Return<Result> initialize(sp<HalProxyCallback>&
callback) method of the ISensorsSubHal derived class. Implement the
ISensorsSubHal* sensorsHalGetSubHal(uint32_t* version)method and have it
return a pointer to your subHAL object. Build this into a dynamic
library and list its filename under /vendor/etc/sensors/hals.conf.

Squashed commits:

07b442e96 (refs/published/mh2_2) MH2 | Write processedEvents instead of
original events.
b38f2e251 Merge "MH2 | Check that subhal index is in range"
d38f99474 Merge "MH2 | Implement debug method of HalProxy"
bf46132fe (refs/published/mh2_4, mh2_4) MH2 | Implement debug method of
HalProxy
1de5bb334 MH2 | Fix wakelock name
e07215347 (refs/published/mh2_3, mh2_3) MH2 | Check that subhal index is
in range
336c1c71e MH2 | Add restart logic in HalProxy::initialize method.
731d7125b MH2 | Change rc file to more appropriate settings
f09465d11 MH2 | Add makeFMQ helpers to HalProxy_test
75cc7bf2f MH2 | Implement wakelock processing thread
e93fdf9a4 MH2 | Implement dynamic sensors callbacks on HalProxy
82b84148c Remove libhwbinder/libhidltransport deps
d45e49b4b Merge "MH2 | Implement pending writes thread"
597142692 MH2 | Implement pending writes thread
db23aa825 MH2 | Implement direct channel and direct report methods
83e4370ae MH2 | Implement injectSensorData method of HalProxy
d0cd57d4c MH2 | Implement ScopeWakelock ctor and dtor
537c0274b MH2 | Add rough proxy callback postEvents method
f97a3f357 Multihal 2.0 - Small tweaks to sensorHandle handling
7a7235461 MultiHal 2.0 - setOperationMode and init direct channel flags
dc7a8e789 MultiHal 2.0 - Get sensors list from subhals
4b4c7b744 MultiHal 2.0 - activate, batch, flush methods of HalProxy
1638531df MultiHal 2.0 - proxying api calls helper methods
aacbf9485 Set up shell to use for unit tests
2879067dd Multihal 2.0 - Implement SubHal discovery
c34e6683b Add a sub-HAL implementation for testing multi-HAL
a689f8a65 Add skeleton for multihal 2.0

Bug: 136511617
Test: atest android.hardware.sensors@2.0-halproxy-unit-tests &&
vts-tradefed run commandAndExit vts --skip-all-system-status-check
--primary-abi-only --skip-preconditions --module VtsHalSensorsV2_0Target

Change-Id: Ibe92d40c92b70848526b0e941bbcffbaf81ffaf2
2019-10-29 11:08:38 -07:00
Brian Duddie
f4a503a101 Add sensors 1.0 default HAL to uhid group
am: 82299438b5

Change-Id: I4b9fbba3e85873763211b1bb36a2bf5d80fb39a1
2019-10-08 12:54:21 -07:00
Brian Duddie
82299438b5 Add sensors 1.0 default HAL to uhid group
Ensures it can access /dev/uinput in Android Q, sepolicy permitting.

Bug: 142105193
Test: confirm hall sensor works again on marlin
Change-Id: I585c32d4da4bdc0917068e4d81adeca43d257e56
2019-10-07 15:53:27 -07:00
Xin Li
15be13ea71 Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master
Bug: 135460123
Change-Id: Ia07db5c8afeed7fe22a2b18d867a38390f910a81
Merged-In: Ibbd540dbb5baee46360d3fe9469212cfd8f550ba
2019-09-08 13:06:54 -07:00
Steven Moreland
6684ee8c36 Merge "Remove libhwbinder/libhidltransport deps" am: 6b62c58a9a
am: 8c22c3862f

Change-Id: Iaedfceb49f81387f7deaad434613b7c9f1c502a0
2019-09-06 14:28:04 -07:00
Steven Moreland
b3a4d3832e Remove libhwbinder/libhidltransport deps
Since these were combined into libhidlbase.

Bug: 135686713
Test: build only (libhwbinder/libhidltransport are empty)
Change-Id: I075670b64eebbbbd6a6ae0e84ad51bf1c6f5ba36
2019-09-06 01:07:02 +00:00
Brian Duddie
bab0c7efe3 Merge changes from topic "c2f2_sensors_vts" into qt-r1-dev
am: 8813be6341

Change-Id: Ie652236cdbd4734dc723fac8c27ca876161f623d
2019-08-02 19:40:55 -07:00
Anthony Stange
86063dc8da Change expected return type in direct report VTS
am: 4bdd8fc774

Change-Id: I7b313096992aa15f34a408fbed67b02e74060d5f
2019-08-02 19:40:49 -07:00
Brian Duddie
1eee061c84 Add support for new gralloc HAL versions
am: df6e2b70ae

Change-Id: Iea28b01046e9094a28d538119e5acdf845385f6f
2019-08-02 19:40:42 -07:00
Vishal Agarwal
7af073c790 Merge "VTS Sensor HAL 2.0: Fix Batch for One Shot sensors" into qt-r1-dev
am: effdb89c97

Change-Id: Ie3fa0c0a3a02e58d88ecc6971ca8bb744c005103
2019-08-02 19:40:33 -07:00
TreeHugger Robot
8813be6341 Merge changes from topic "c2f2_sensors_vts" into qt-r1-dev
* changes:
  Fix handling of reportToken when stopping
  Change expected return type in direct report VTS
  Add support for new gralloc HAL versions
2019-08-03 02:32:32 +00:00
TreeHugger Robot
effdb89c97 Merge "VTS Sensor HAL 2.0: Fix Batch for One Shot sensors" into qt-r1-dev 2019-08-03 02:32:32 +00:00
Andrew Lehmer
2e3eceded7 Fix assumptions in SensorsHidlTest.NoStaleEvents
am: d8b212ec3e

Change-Id: I039f346605006576c7854de75d4d57b0aac08324
2019-08-02 17:33:35 -07:00
Brian Duddie
63d4f57976 Fix handling of reportToken when stopping
VTS should ignore the reportToken returned by configDirectReport when it
passes in RateLevel::STOP.

Bug: 138758242
Test: run direct channel tests on device using 2.0 HAL
Change-Id: I07e789157e051ceab488a61e856f17d50f435072
2019-08-02 15:16:45 -07:00
Anthony Stange
4bdd8fc774 Change expected return type in direct report VTS
If a sensor doesn't support a particular memory type for direct
reporting, then registerChannel will return an invalid channel handle.
When this handle is used in configureDirectReport, it will return
BAD_VALUE and when used in unregisterDirectReport, it will return OK.
Currently, the VTS tests assert it will return INVALID_OPERATION, but
that will only happen if the entire HAL doesn't support direct
reporting instead of a single sensor not supporting a certain memory
type.

Bug: 138758242
Test: Run VTS and verify DirectChannel* tests now pass
Change-Id: Ifba4262b68ec0c4ca6921dad40a03e0a52088d28
2019-08-02 15:08:30 -07:00
Vishal Agarwal
66d8297210 VTS Sensor HAL 2.0: Fix Batch for One Shot sensors
One Shot sensors have minDelay set to -1. Force the minDelay to be 0 in
the VTS test to avoid errors from invalid parameter

Bug: 138758242
Test: Run Batch test manually VtsHalSensorsV2_0TargetTest --gtest_filter=SensorsHidlTest.Batch
Change-Id: Ib2287f6f11502c10d346f5e7216c5f31d585edf9
2019-08-02 14:03:41 -07:00
Andrew Lehmer
d8b212ec3e Fix assumptions in SensorsHidlTest.NoStaleEvents
This test was making a couple of false assumptions which were causing it
to fail. The fixes are related to the following assertions:
  1. One-shot sensors do not report an initial event.
  2. Special sensors may not report an initial event.
  2. Some on-change sensors may not report an initial event.
The test now only checks for a stale event if the sensor reports an
initial event consistently.

Bug: 138758242
Test: ran on C2 DVT; only fails due to an improperly configured sensor
Change-Id: I83f0cb2f6e878244f3d94ae77f64bb8ed2f78e0b
2019-08-02 14:01:57 -07:00
Brian Duddie
df6e2b70ae Add support for new gralloc HAL versions
As VTS connects to the IMapper and IAllocator HALs directly, it needs to
handle the case where the device only supports the newer HAL versions,
which includes IMapper 2.1 & 3.0 and IAllocator 3.0.

Since sensors VTS uses the same functionality from the different HAL
versions, condense the code into a common interface with HAL
version-specific template instantiation. Also remove the unused code
that came along with copying from the gralloc VTS reference source.

Bug: 138758242
Test: run gralloc-related sensors VTS on Pixel 2+
Change-Id: I1646d8f92546623594af8541bc8ac02955370694
2019-08-02 12:07:39 -07:00
Anthony Stange
1cc1242cbe Merge "Fix wait_for timestamps in Sensors VTS" into qt-r1-dev
am: 29c8337d89

Change-Id: I781d960f513045bdf46e8ee6e2f613e8e0f5aa8a
2019-07-29 15:45:41 -07:00
Anthony Stange
4a80e231ed Fix wait_for timestamps in Sensors VTS
Previously, NoStaleEvents was treating any timestamps it dealt with as
if they were in microseconds, but sensors.minDelay is in microseconds
and Event timestamps are in nanoseconds. This uses std::chrono helpers
to ensure the correct time is used when deciding how long to sleep
during the test so that if waitForEvents never passes, the test doesn't
time out.

Bug: 136736906
Test: Run VTS and verify VtsHalSensorsV2_0Target doesn't finish as an
    incomplete module.

Change-Id: Ibba59dbf9312f97d7275e5aa8cd36547ab09e328
2019-07-29 14:40:20 -04:00
Anthony Stange
ce98cb7938 Verify mPollThread is joinable before detaching am: 65945cfb15
am: f75cf1cf4d

Change-Id: I8282d67898fffa2efff979250b10dde842511daa
2019-07-15 18:12:24 -07:00
Anthony Stange
f75cf1cf4d Verify mPollThread is joinable before detaching
am: 65945cfb15

Change-Id: Iee183865223aa993241c19924245177b3462d4da
2019-07-15 17:50:18 -07:00
Anthony Stange
65945cfb15 Verify mPollThread is joinable before detaching
If HidlSetUp() bails before startPollingThread() is called (which can
happen if the HAL isn't implemented on the given device), mPollThread
will initialize with the default constructor resulting in joinable()
returning false which means calling detach() throws an exception.

Checking joinable() before detaching allows the test suite to be skipped
successfully.

Fixes: 136736906
Test: Run vts-tradefed on VtsHalSensorsV1_0Target and verify that it is
    skipped successfully on a device that doesn't support HAL 1.0

Change-Id: Ie685ae2dc314edb8df2f3cc7112141a2f5e46008
2019-07-15 19:17:25 +00:00
Felix
bf481c99ed Merge "Add interface info to .rc files" am: 98d0f4d52c am: 37298a7616
am: 3531ec0183

Change-Id: I9a48f01064e6b64fdbd3dcae3623163a27998703
2019-07-08 12:42:48 -07:00
Felix
3531ec0183 Merge "Add interface info to .rc files" am: 98d0f4d52c
am: 37298a7616

Change-Id: Ib279bd04cbdf030104d077b9a2a836a348322476
2019-07-08 12:31:38 -07:00
Felix
37298a7616 Merge "Add interface info to .rc files"
am: 98d0f4d52c

Change-Id: Ie6cfbacd523c4b09f77bee3369ec8e88b3fa0419
2019-07-08 12:22:23 -07:00
Anthony Stange
80a247e090 Merge "Deactivate sensors after flush events are received" into qt-dev
am: 8913d1df2c

Change-Id: Ie32a5d1c5f1308060af6ae8c3b7d4c25ebdc9301
2019-07-02 15:14:45 -07:00
Anthony Stange
2ff09083af Merge "Deactivate sensors after flush events are received" into qt-dev am: 8913d1df2c
am: 9ca9db61f8

Change-Id: I4e3f088897dd557e92191bccb5b46288ecf40806
2019-07-02 15:14:18 -07:00
Anthony Stange
9ca9db61f8 Merge "Deactivate sensors after flush events are received" into qt-dev
am: 8913d1df2c

Change-Id: I74b279c6e4b26429c3868fac3e9ca9e0327af202
2019-07-02 14:44:12 -07:00
TreeHugger Robot
8913d1df2c Merge "Deactivate sensors after flush events are received" into qt-dev 2019-07-02 16:28:53 +00:00
Anthony Stange
4d90400985 Deactivate sensors after flush events are received
The VTS flush test case was previously deactivating sensors before
waiting for flush events to be received causing any pending flush events
to be discarded per the HAL contract.

Bug: 136472044
Test: Run test and ensure it passes
Change-Id: I23b94e650c6dbbc33640768bee356a49565ba753
2019-07-01 21:29:01 +00:00
Felix
551b8d15ce Add interface info to .rc files
Signed-off-by: Felix <google@ix5.org>
Change-Id: I6d70bbdb66c3dce280bf6908c3750316a6f6cf70
2019-06-25 20:00:07 +02:00
Brian Duddie
b828e7bc48 Avoid NPD when re-initializing HAL fails
am: bd109b9374

Change-Id: Ibe5e262b89dc2f9645ee44bc084265164cd57827
2019-06-20 18:05:25 -07:00
Brian Duddie
62a0c5bae9 Fix NPD in GrallocWrapper
am: ccbcaaee45

Change-Id: Id9cc57ee5f9bfbabb64285671a23b6b9dbfc7b69
2019-06-20 18:05:22 -07:00
Brian Duddie
06ef2015ee Fix log tag for sensors VTS tests
am: 56d64faff7

Change-Id: I5e2c3e8aca8133fde1d26c0615b9245d54a76f43
2019-06-20 18:05:18 -07:00
Brian Duddie
bd109b9374 Avoid NPD when re-initializing HAL fails
If the sensors HAL crashes or errors out during a test where we manually
re-run the environment setup function (e.g.
CleanupConnectionsOnInitialize), the pointer to the interface will
become null. Avoid dereferencing it by checking for nullness in the
per-test setup function and after each manual setup call. Also add a
death recipient to help identify instances where the HAL crashes during
a test.

Bug: 135638664
Test: run VTS on device where HAL crashes during above mentioned test
Change-Id: Iff7aa159c6b859272cfd18e7efb3ca431ea214fc
2019-06-20 13:36:43 -07:00
Brian Duddie
ccbcaaee45 Fix NPD in GrallocWrapper
Avoid dereferencing null if mapper service is not available.

Bug: 135638664
Test: run VtsHalSensorsV2_0TargetTest
Change-Id: I3cf2a9f152d8f1737cb5a94356e252d54156c716
2019-06-20 13:36:43 -07:00
Brian Duddie
56d64faff7 Fix log tag for sensors VTS tests
Define log tag at build level to ensure all libraries have a tag
defined.

Bug: 135638664
Test: run VtsHalSensorsV2_0TargetTest
Change-Id: I593055b59238e9fa8dead00a3dafa84c00e90ec4
2019-06-20 13:36:43 -07:00
Brian Duddie
6834c2da4f Merge "Notify HAL when events are read" into qt-dev am: be19a50010
am: 2f0cedfad1

Change-Id: I5970e4b104e7d227ec50afe1207d5f392bebba65
2019-06-19 16:05:29 -07:00
Brian Duddie
45668158f5 Merge "Notify HAL when events are read" into qt-dev
am: be19a50010

Change-Id: I1339c37d0a28fd056afbc3f2ce1634bfbb60a955
2019-06-19 15:44:11 -07:00
Brian Duddie
441842e38e Notify HAL when events are read
As defined in the HAL specification, the client of the HAL (framework or
VTS) needs to set the EVENTS_READ flag when it fetches samples out of
the FMQ, to support blocking write mode.

Bug: 135442877
Test: run VTS on a device supporting HAL 2.0
Change-Id: Ic7755e869b999b638086275e4e579a84600be314
2019-06-19 02:14:51 +00:00
Brian Duddie
ffe139e47c Merge "Add guidance for avoiding race in Sensors HAL 2.0" into qt-dev
am: 5c654f3fc6

Change-Id: I4720ca0dd2ec1c30b234fdf61aa6a3430ddd7a3e
2019-06-18 17:23:24 -07:00
Brian Duddie
a69036fbfe Add guidance for avoiding race in Sensors HAL 2.0
Bug: 135216821
Test: n/a, comment change only
Change-Id: Iad491c5e221c86a2724d4074ac645b8ee6e9af6f
2019-06-15 00:49:05 +00:00