Commit graph

307 commits

Author SHA1 Message Date
Steven Moreland
a8a9cc6606 audio hal: explicitly import headers
Test: works with BOARD_VNDK_VERSION := current
Bug: 33241851
Change-Id: I34983a5527a16e8e9f5a6a87edac0b741aeb67d6
2017-04-17 15:56:52 -07:00
Mikhail Naganov
3acaa668c1 soundtrigger: Use "default" instance name for HAL service
"default" implies using "primary" legacy device module.
This doesn't change anything for binderized mode, because
the server was only registering itself as "sound_trigger.primary",
so it was the only possibility anyways.

Usage of "stub" (debugging) module is still possible
if audioflinger and corresponding services are built with
USE_LEGACY_LOCAL_AUDIO_HAL=true (added makefile check to ensure
that).

Test: "Ok Google" from screen off state on sailfish
Bug: 36570720
Change-Id: I88f1ebd4c1efd0f91e37458746c336a4beef33ae
2017-04-14 15:52:11 +00:00
Andreas Huber
6fa374ad30 Changed the naming scheme for Treble java libraries (both static and dynamic)
android.hardware.foo@1.0-java => android.hardware.foo-V1.0-java

Bug: 37207894
Test: make
Change-Id: I177f4cfd42f635aaf096107af8309d1a82ed41c0
Merged-In: I8b91881dfaf507c0d852d56ebbb53ff0987e5a34
2017-04-13 15:23:46 -07:00
Steven Moreland
3b36a83a2e Update makefiles (2/2).
Test: pass
Change-Id: Ic7e6289c7b69785491708ce0acbb657f4c704229
2017-04-11 09:58:03 -07:00
Kevin Rocard
40343061d5 Audio HAL: Destroy EventFlag on failed prepareTo{write,read}
If prepareToWrite or prepareToRead fails after EventFlag is created, it
is not destroyed. This lead to strange random crashes (double free it seems).

Use the RAII pattern to manage the EventFlag life cycle.

Test: Run test on target
Bug: 36311550

Change-Id: I53a04a62b7d12fdcc94afd8ced3e547aa6edff50
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-04-07 14:35:47 -07:00
Kevin Rocard
b6498cbdf6 Audio HAL: Check for buffer size overflow
The audio buffer size is not provided by the client, it is computed from
the sample size and the number of sample.

No check was done as if the multiplication of these two numbers would
produce an overflow. This leaded to erroneous memory access crashing the
media server.

Test: Run on target
Bug: 36311550

Change-Id: I3436800ab6ac1b5e6a6aa4d03d6b96910eb54652
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-04-07 13:10:01 -07:00
Kevin Rocard
67d550888a Audio HAL: Detect buffer memory allocation failure
If the requested buffer was too big, memory allocation would fail,
resulting if a audio hal crash (uncatch exception thrown by new).

Properly hadle the failure by retuning INVALID_PARAMETERS in such case.

Bug: 36311550
Test: Run test on target

Change-Id: Ib4170eb6a9f88f9352d0912083b43d600771bb8e
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-04-07 13:10:01 -07:00
Kevin Rocard
fba442a60d Audio HAL: Detect openDevice failure
The result status was not checked.

Test: Run test on target
Bug: 36311550

Change-Id: I197b52d0b5a1276d3e3beba105bb91639f89e060
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-04-07 13:10:01 -07:00
Kevin Rocard
6f22680db6 Audio HAL VTS: Fix documentation
Some test did not have any documentation

Test: compile & run
Bug: 36311550

Change-Id: I37c40f6f17993a275e5c40b9a835ac04acf4f8e6
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-04-07 13:10:01 -07:00
Mikhail Naganov
936279e1ff audiohal: Fix UAF of HAL devices in Stream objects
Stream objects used to hold a pointer to underlying HAL device
object which they didn't own. Since destruction of server side
objects is asynchronous, it was possible that a Device object
gets destroyed before Stream objects, making all the HAL device
object pointer to become stale.

Fixed by adding a strong reference to Device objects into Stream
objects.

Bug: 36702804
Change-Id: I3da3611afbb91d6fd6410ac5b8af2a2eebfa6dac
Test: ran Loopback app and HAL VTS tests
(cherry picked from commit 96d3573cda)
2017-03-30 15:52:30 +00:00
Andreas Huber
40d3a9bd8c Convert all comments into "doxygen-ready" comments.
Bug: 36453077
Test: mma
Change-Id: I0b1f77dfae5d2258969e33d85ecf45401ffbdfaa
2017-03-29 08:53:58 -07:00
Steven Moreland
561b602a99 Update makefiles for hwtypes.h
Test: pass
Change-Id: I8e17eb8fec5d2f04c526476a866c8dd54ccb556c
2017-03-28 15:18:20 +00:00
TreeHugger Robot
d4762a75b4 Merge "audiohal: Remove stale TODOs" 2017-03-23 00:57:16 +00:00
Mikhail Naganov
b0dd076c60 audiohal: Remove stale TODOs
Bug: 34109709
Change-Id: I9b30ffa2ed06be8cf31cdbfbcc0f4cb0dac7be54
Test: make
2017-03-22 10:36:14 -07:00
Kevin Rocard
e9a8fb7371 Audio HAL VTS: test leftover calls
Test: run on target

Bug: 34170075
Change-Id: I9529d3b8db7388332dde3ea7d5940d58e010e449
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-21 12:01:12 -07:00
Kevin Rocard
624800c073 Audio HAL VTS: Add test for IStreamOut
Some test are only negative.

Test: run test on board

Bug: 34170075
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-16 16:00:08 -07:00
Kevin Rocard
24db65c0ec Audio HAL VTS: Avoid copying Return in helper
Return are movable only, thus the fact that assertResult took a copy of
the value meant that the callee had to provide an rvalue.

This was not needed as the Result was not modified. Change it to a const
reference.

Test: run test on board

Bug: 34170075
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-16 16:00:02 -07:00
Kevin Rocard
c9963526d9 Audio HAL VTS: Add tests for IStreamIn
For now most tests are negative.

Test: run test on board

Bug: 34170075
Change-Id: Id207ae310e0fa5a3ab4db49122249594cd2c2703
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
8878b4ba1f Audio HAL VTS: Add at least negative tests for IStream
Add negative test for the remaining methods of IStream
and positive one for most.

Test: run test on board

Bug: 34170075
Change-Id: Ib18c6d2e4d0a14ee4517f31319ddecf5e23ac8de
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
b903124b36 Audio HAL VTS: Test IStream::debugDump
Test: run it on target
Bug: 34170075
Change-Id: I4af190806f79e0c03b59e1cd60b6f58a08b05322
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
a7df7fc097 Audio HAL VTS: Split big test for better traceability
As some part of this big test were failing, it was difficult to actually
track on the dashboard what was wrong.

Split it in small independent equivalent tests.

Test: mm & run on target

Bug: 34170075
Change-Id: I03686e55ec112f0f0c0ef2683c5dc1ae79ff8d5e
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
de8cbffd47 Audio hal VTS: pretty print AudioDevice and ChannelMask
This eases the debuging of failing tests.
Also print hex value of the enums as well of their literal values.

Test: run the test on target
Bug: 34170075
Change-Id: Iea1d7d2269e0e5b413240aaa905daae755846e74
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
20e7af6159 Audio Hal VTS: Refactor ASSERT_RESULT helper
ASSERT_INVALID_ARGUMENTS was a macro that asserted that a given Result
or Return contained INVALID_ARGUMENT. The problem was that a result can
have lots of other values like INVALID_STATE or NOT_SUPPORTED.
Additionally not all test expect only one possible result.

Introduce two overload of ASSERT_RESULT()
The first one takes an expected Result value and compare it to the
obtained one.
The second take a list and expect the obtained one to be in this list.

Test: run the test on target
Bug: 34170075
Change-Id: I798729f27f723c98292610bfb43dbdb2724ec2ca
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-14 09:49:15 -07:00
Kevin Rocard
9c36914983 Audio hal VTS: generate names for parametrized tests
The gtest dashboard only shows test names, not their parameters.
This mean that parametrized tests are names 0,1,2...
Thus when one test fails, the dashboard info is not very useful.

This patch appends the audio config to the test name.

Test: run the test on target
Bug: 34170075
Change-Id: I77090a3a17e4a3e97ecb72a8a89ad2d88626d96f
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-13 09:18:22 -07:00
Kevin Rocard
92ce35df94 Audio hal VTS: factorize master volume test
Master volume was the first pair of getter/setter tested
and did not use the generic test*Accessor function.

Test: run the corresponding vts test
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: I77080a3a17e4a3e97ecb72a8a89ad2d88626d96f
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-13 09:18:19 -07:00
Kevin Rocard
ee771e9cfa Fix potentiel deadlock in audio VTS
The IDevice::debugDump method dumps debug info in a file descriptor.
Such file descriptor was previously the writing end of a pipe.

As the test is not multithreaded, if the dump was bigger than the pipe
buffer, a deadlock would occur.

With this patch, the test uses a file instead of a pipe. Thus write
will never block infinitely.

Test: run the corresponding vts test
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: I928cae712a1cb4411f907b3a9583014ba6486abc
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-13 09:18:16 -07:00
Yuexi Ma
161b564b35 audio: use vts target test base class
Test: make vts succeed
Change-Id: I8008392e016e0604f8aa9a292f1ec6c6e7c3b384
2017-03-10 21:53:53 +00:00
Kevin Rocard
3c405a7acf Add VTS for the audio primary device
Its base class was tested but not the primary
device getters and setters.

Test: run the corresponding vts test
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: Ic451761c7b8b29fd302a62aba83be6ce7be35f64
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-09 18:23:42 -08:00
Kevin Rocard
fd067c3f54 Fix segfault in Primary audio hal hidl wrapper getDevice
Test: run the corresponding vts test
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: I0652f1bf748de99a8a2594630daf5ea2acec8934
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-09 18:23:41 -08:00
Kevin Rocard
d1e98aef14 Do not skip failing Audio vts tests
Previously failing tests were commented because I thought
our implementation had to pass all tests.

As a mater of facts, it is not the case and tests are allowed to fail.
Bugs will be raised for those failure.
This is much better way to track the fixes that FIXMEs.

Test: run the corresponding vts test
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: I928cae712a1cb4411f907b3a9583014ba6487abd
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-09 18:23:29 -08:00
Steven Moreland
48c52249e4 hidl_default to all targets.
find hardware/interfaces -type f -not -path "*/.git/*" \
-exec sed -i -e '/cc_[A-Za-z_]\+/ { N; s/$/\n    defaults:
\["hidl_defaults"\],/ }' {} \;
./hardware/interfaces/update-makefiles.sh

Test: pass
Bug: 35840847
Change-Id: If10c464d2f000b85c8d698fe11a4f3fc4cfad282
2017-03-08 19:31:53 -08:00
Eric Laurent
d0fbfd8e7e Merge "audio: fix IStream.createMmapBuffer()" 2017-03-08 16:42:33 +00:00
Keun Soo Yim
89dc24e624 Merge "Add VTS tests for the primary audio hal" 2017-03-07 17:29:41 +00:00
Eric Laurent
a6f40c84ae audio: fix IStream.createMmapBuffer()
Do not close the native fd for shared memory passed by
the legacy HAL as it is owned by tinyalsa implementation.

Test: test MMAP NO IRQ playback and capture streams
Bug: 31458351
Change-Id: Ie0c2a38574e5ac5c13fdb8a5c81fd02cf7d0e47a
2017-03-06 15:09:48 -08:00
Kevin Rocard
f0357884b5 Add VTS tests for the primary audio hal
Test: run the vts test on target
Test: vts-tradefed r vts-hal-hidl -m VtsHalAudioV2_0Target

Bug: 34170075
Change-Id: I4bd6cb0aa5b7cc628537cd7c024542c4db8b592d
Signed-off-by: Kevin Rocard <krocard@google.com>
2017-03-03 14:33:40 -08:00
Mikhail Naganov
476930c978 Revert "audiohal: Add diagnostic message to check the number of bytes written"
Diagnostic logging can be removed now as we have figured out that the problem isn't with the legacy hal.

This reverts commit 8d391c8eed.

Change-Id: I70a3454c05a0f49f3a3bed06e5a11616ed90ddf3
2017-03-03 19:01:44 +00:00
Mikhail Naganov
8d391c8eed audiohal: Add diagnostic message to check the number of bytes written
Temporary change for investigating b/35813113. Need to test
the hypothesis that sometimes either legacy HAL, or the wrapper
reports more bytes written than being asked for.

Bug: 35813113
Change-Id: I6596403e0ddcdcc8b061d1977e329f67670f30db
Test: make
2017-02-28 09:12:19 -08:00
Tomasz Wasilczyk
213170b663 Create Broadcast radio HAL 1.1; implement DigitalStatus enum.
Test: VTS
Change-Id: I338c467c4e373cae547f331ba876afa040238376
2017-02-27 13:13:26 -08:00
Steven Moreland
7e73d5b908 Remove viral dependency on libhwbinder. (2/2)
find hardware/interfaces -name Android.mk -exec sed -i -e '/libhwbinder
\\/d' {} \;
find hardware/interfaces -name Android.bp -exec sed -i -e
'/"libhwbinder"/d' {} \;
./hardware/interfaces/update-makefiles.sh

Note, automotive has some actual dependencies on libhwbinder, filed
b/35758626 for this.

Test: everything links
Test: (sanity) booted marlin on internal master with these changes
Bug: 35710429
Change-Id: I6d0726c8130d00684b978efbdd48e3ae396f12e5
2017-02-24 12:18:01 -08:00
Chris Phoenix
f609010707 BroadcastRadio HAL 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: builds

Bug: 33844934
Change-Id: I49622132d25c15597f46c19330a9d0b8dbffa704
2017-02-22 18:31:55 -08:00
TreeHugger Robot
63a3bd158a Merge "audio_effect HAL uses "default" service name" 2017-02-22 03:28:06 +00:00
Chris Phoenix
549ca2bbe8 audio_effect HAL 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: builds; VTS HalAudioEffectHidlTargetBasicTest passes

Bug: 33844934
Change-Id: I7796982c4cad976aeeabf7708ec0104505332cad
2017-02-21 17:09:58 -08:00
Yifan Hong
55f7247d63 AudioDevices HAL 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: builds

Bug: 33844934
Change-Id: I7ccbf802fcded790b4be325f36a34a3af6b42052
2017-02-21 16:19:52 -08:00
Steven Moreland
a0da1a1c3d Move hidl shims to the vendor partition. (2/2)
We need google shims on the vendor partition because they are providing
an implementation of a vendor defined interface. They were written by
google just as a courtesy/to make the transition easier. They're
basically a set for vendors to assemble their hal implementations
from.

Bug: 34135607
Test: marlin persist.hal.binderization on/off
Change-Id: I2e2af5af39264cf290259755bb9b2eb9827a21f5
2017-02-13 15:03:41 -08:00
TreeHugger Robot
86fa244c12 Merge "Update makefiles to use filgroup syntax." 2017-02-10 23:25:52 +00:00
TreeHugger Robot
b2e8954c7c Merge "audio: Remove timeout from waits on event flags in HAL driver threads" 2017-02-10 23:24:54 +00:00
Tri Vo
85120c9490 Update makefiles to use filgroup syntax.
Test: mmma hardware/interfaces
Change-Id: I9f4457c78b7820c242d46359f0debe05d1b3e482
2017-02-10 12:45:19 -08:00
Mikhail Naganov
1de5e2b326 Merge "audio: Check status of registerPassthroughServiceImplementation" 2017-02-10 20:28:06 +00:00
Mikhail Naganov
e867456982 audio: Remove timeout from waits on event flags in HAL driver threads
This fixes a power regression caused by periodic wakeups of
the driver threads even when the device is idle.

The timeout is really not needed, it used to be there to ensure that
the thread exits its loop, but then an explicit wake-up call before
closing the thread had been added for this purpose.

Bug: 34682579
Test: Follow repro steps from the bug, compare power consumption
      to the legacy version of the audio HAL.

Change-Id: I0bfc2079a449894c5d0bd6ef19b53ca425795a9e
2017-02-10 08:37:19 -08:00
Mikhail Naganov
57108a0dc9 Merge "audiohal: Pass thread identifiers to the client for priority adjustment" 2017-02-10 16:19:42 +00:00
Andreas Huber
d38f147c35 Updated makefiles
Java intermediates are now created in the common rather than the device-
specific generated sources subdirectory.

Bug: 33842609
Test: make
Change-Id: I16af4cd19bf0b24baa0ad9ebfdb86b4d959c8672
2017-02-09 17:20:45 -08:00
Mikhail Naganov
3c25646562 audio: Check status of registerPassthroughServiceImplementation
Make sure the server aborts if it can't register the main audio
service and the effects service.

Soundtrigger and FM radio are optional, thus their failure to
register is only logged.

Bug: 34634573
Change-Id: If96e3238fe4d986e91581cc1ea0d9b36c24a8b9c
Test: restart audio service
2017-02-08 16:56:33 -08:00
Tri Vo
ce608bec74 Migrate driver/profiler to test/vts-testcase/hal.
Bug: 34893894
Test: mmma hardware/interfaces

Change-Id: Ic72716577a5f93700c5056986aff55a76b170b5d
2017-02-07 19:13:28 -08:00
Mikhail Naganov
a1db22a3e5 audiohal: Pass thread identifiers to the client for priority adjustment
HALs are prohibited from using framework binder, and there is
no equivalent scheduling policy service in hwbinder. Thus, in order
to match priorities of FastCapture / Mixer threads with their
counterparts in the HAL, it is needed to request the priority boost
from audioflinger on behalf of the HAL.

Bug: 34131400
Change-Id: I7c8db9d520b4cf272d2896ad875752b109b57ab7
Test: check priority match between audioflinger's and hal's threads
2017-02-07 10:49:18 -08:00
Mikhail Naganov
9bb90a55d6 Merge "audiohal: Make closing of effects and streams fast" 2017-02-06 16:34:42 +00:00
Mikhail Naganov
a7426f7147 Merge "audiohal: Make sure audio data transfer related commands go via FMQ" 2017-02-06 16:33:55 +00:00
Zhuoyao Zhang
60a3eee183 Merge "Update Andriod.bp for hals." 2017-02-03 23:46:49 +00:00
Mikhail Naganov
a468fa84d1 audiohal: Make sure audio data transfer related commands go via FMQ
When outputting audio, the framework issues several HAL calls
from the same thread that writes into data FMQ. These calls
also need to be served on the same thread that writes audio data
to HAL. The same thing happens when audio input is commenced.

Add a command FMQ for passing different commands to the HAL thread.
This way, depending on the calling thread, the same call may go
either via hwbinder or via the command queue.

This dramatically reduces jitter in RTT measurements (although
doesn't improve the latency).

Bug: 30222631
Test: scripted RTT app
Change-Id: I04c826e2479d8210fd9c99756241156cda3143b6
2017-02-03 10:25:32 -08:00
Zhuoyao Zhang
e9b43bbe2d Update Andriod.bp for hals.
* Add driver/profiler build rule for all hals.

Test: mma
Change-Id: I98325f7af14fec7dd1bb64b1668de8c7c20ace92
2017-02-03 10:03:01 -08:00
Mikhail Naganov
b0abafbf0a audiohal: Make closing of effects and streams fast
There were two problems:

1. Joining of reader / writer / process threads (the threads that
   interact with HAL) was taking up to 1 second because the thread
   was usually waiting for an event flag to be toggled, or a 1s
   timeout.

2. Calling IStream.close or IEffect.close shouldn't tax the caller.
   Changed the code so a call to close only signals the thread that
   it's time to exit, and then the thread is only joined in the
   effect or stream destructor.

Bug: 34800063
Bug: 34499806
Test: see repro steps in the bugs
Change-Id: Ife20524a1eba4ec9a78152e89862526e8cd5c960
2017-02-02 17:00:42 -08:00
Mikhail Naganov
d63e79022a Audio HAL default implementation: reduce logspam
Legacy BT A2DP implementation of Audio HAL may be returning EAGAIN
from get_presentation_position, this is normal and shouldn't be
logged. Otherwise we create logspam as this HAL function is called
often.

Bug: 30222631
Change-Id: I9394dbc1d53c1f4136c2d538fccd519964ff1697
Test: play music via BT A2DP
2017-01-30 17:05:01 -08:00
Martijn Coenen
e5b2271717 Merge "hidl_memory no longer owns passed-in handles." 2017-01-25 13:52:33 +00:00
TreeHugger Robot
6b058752c5 Merge "Use MQDescriptor typedefs for cleanup" 2017-01-23 15:56:44 +00:00
Hridya Valsaraju
790db1074c Use MQDescriptor typedefs for cleanup
Test: mm
Bug: 33815422

Change-Id: I41ca833231622a5a72970014cfcac400b512e44a
2017-01-23 15:56:24 +00:00
Martijn Coenen
45d4d3025d hidl_memory no longer owns passed-in handles.
So clean them up when done.

Bug: 33812533
Test: mma
Change-Id: Ic2fdfa703547a210b9915288d5a77dc8e329a1c6
2017-01-23 13:00:19 +01:00
Eric Laurent
f247b8df08 audio: add support for stub HAL in HIDL mode
Fixed broken functionality for some devices relying on
a stub HAL module to be present (e.g Fugu).

Bug: 34360879
Test: make and check stub HAL is loaded in HIDL passthrough mode

Change-Id: Ibad050d63827c4e49604273efd76ac8074bb00d2
2017-01-18 17:08:57 -08:00
Mikhail Naganov
3881d9362f Merge "audiohal: Fix incompatibility with legacy hal for writes" 2017-01-12 20:55:00 +00:00
Mikhail Naganov
ee901e3fd8 audiohal: Fix incompatibility with legacy hal for writes
The combo call to stream_out->write + get_presentation_position
wasn't delivering the results of these calls entirely
correctly. Since the 'WriteResult' struct was lacking the field
for returning the status of the call to
'get_presentation_position', the client could erroneously update
the presentation position to bogus values if the call to the
legacy HAL had failed.

Updated IStreamOut.WriteStatus to include the missing field,
and updated the code to fill it out.

Also fixed logspam resulting from calling a stubbed
stream_in->get_capture_position.

Bug: 30222631
Test: Loopback RTT, media CTS
Change-Id: I38ac3b01beb095e176b54608e11e71ae5d5eafb6
2017-01-12 09:39:56 -08:00
Yifan Hong
a18049ad13 Bp/nFoo -> Bp/nHwFoo.
Test: mma
Bug: 33554989
Change-Id: I4b3f852d20fdfc49f2da671dd3c12d618ffb4140
2017-01-11 13:14:59 -08:00
Mikhail Naganov
b29438ef70 audiohal: Re-implement stream read and write using FMQ
Result: no hwbinder calls due read / write session.

Added IStream.close method for explicitly freeing up of resources
consumed by the stream before automatic server objects reaping
gets to it.

Test: make, perform Loopback RTT, check traces
Bug: 30222631
Change-Id: I678559f6ef30026685df787cd2ba7c2ee449ed27
2017-01-05 09:04:14 -08:00
Martijn Coenen
028223775b Remove obsolete references to IPCThreadState/ProcessState.
Threadpool can now be configured/joined if needed with
configureRpcThreadpool() / joinRpcThreadpool().

Bug: 31226656
Test: mma
Change-Id: I0d7d9924cc8c8851cc2b61ebdae906204909890e
2016-12-30 14:00:31 +01:00
Eric Laurent
f6b8df28cf Merge changes I64f56526,I65c5c7ba
* changes:
  audio treble HAL: implement methods and structures for stream in MMAP mode
  audio: add methods and structures for streamin MMAP mode
2016-12-21 16:30:31 +00:00
Eric Laurent
7deb7dad39 audio treble HAL: implement methods and structures for stream in MMAP mode
Bug: 33398120
Test: make marlin-eng with ENABLE_TREBLE true
Change-Id: I64f56526c7c775b03191439188545171b565ef31
2016-12-20 16:18:34 -08:00
Eric Laurent
ed9fa0ed01 audio: add methods and structures for streamin MMAP mode
Bug: 33398120
Test: make marlin-eng with ENABLE_TREBLE true
Change-Id: I65c5c7ba0a94ba47dca78ace38ef3ae75ea7e3bf
2016-12-20 12:43:18 -08:00
Mikhail Naganov
685f0e36a1 Fix offload tracks playback
Translation between audio_offload_info_t and AudioOffloadInfo
was missing a field. This was causing compressed tracks to play
using 'deep_buffer' mode instead of 'offload'.

Changing output stream async callback methods to 'oneway',
since they don't require anything from the callee.

Change-Id: I27fe7fb715e421f102db21a10d34e1dc3134cf01
Test: play MP3 file with Play Music, check audioflinger dump
2016-12-16 17:18:08 -08:00
Yifan Hong
f35ee3b192 Revert "Revert "Update makefiles for Java package path.""
This reverts commit a8789f27cb.

Change-Id: I69980b580a556188ba868bb096ae1590b01759f5
2016-12-13 22:20:16 +00:00
Yifan Hong
a8789f27cb Revert "Update makefiles for Java package path."
This reverts commit ab0792ccdc.

Change-Id: I47fc272d9fa8875e3d7ccb10cb748c738fbf8135
2016-12-13 22:18:34 +00:00
Yifan Hong
ab0792ccdc Update makefiles for Java package path.
use V1_0 instead of 1.0.

Bug: 33554192

Test: hidl_test_java
Change-Id: Ic2d95265df10914a60a5bb743d75e839948838c3
2016-12-13 11:32:56 -08:00
TreeHugger Robot
9f8a790d82 Merge "Update for colliding names in arguments and results." 2016-12-10 03:28:05 +00:00
Yifan Hong
acb010882d Update for colliding names in arguments and results.
Test: compiles

Bug: 33277700
Change-Id: I0c1a62fdea3617a06120f548105f778e011cb576
2016-12-09 14:26:58 -08:00
Mikhail Naganov
0771ac17b9 Make audiohal service 'oneshot' to avoid double restart on crash
audioserver receives a change that makes it to crash once it
detects that audiohal server has crashed (because audioflinger
can't gracefully restore the state of the audio system).

As audioserver.rc file prescribes restaring the audiohal on
audioserver restart, there is no need to rely on the init process
to restart the audiohal. Moreover, asking the init process to do
that causes a double restart of the audiohal service if it crashes.

Test: kill audio-hal process, watch dmesg and logcat
Change-Id: Iac4cc79cdc1a3debd2b9cfcdf42f11451d7ce24c
2016-12-09 18:53:22 +00:00
Mikhail Naganov
13f43f4afe audiohal: Do not log if EINVAL is received from get_presentation_position
This happens often, and it's normal. Avoid logging it down as this
causes logspam.

Bug: 33353073
Change-Id: Ia3b1b8af61bdf83e9bcde0e5bed0285af037df45
Test: cause the system to play some sounds (e.g. UI clicks), watch logcat
2016-12-07 17:08:04 -08:00
Yifan Hong
501839495f Update makefiles for hidlizing IBase.
A new dependency android.hidl.base@1.0 is added for
all projects.

Test: mma

Change-Id: Ia70d0eb0d74de06475a339698386d383d491a43a
2016-12-03 01:01:14 -08:00
Yifan Hong
7bdce32513 Merge "Update to use the correct logging library." 2016-12-02 18:42:01 +00:00
Yifan Hong
f9d303435d Update to use the correct logging library.
Test: mma compiles
Change-Id: Idb33dea5faaf1a5e54719c2a5a683d2d47e9b8e8
2016-12-01 17:47:02 -08:00
Mikhail Naganov
a9a58c150d Merge "Audio HAL: fixes for issues discovered after client conversion" 2016-12-02 00:06:16 +00:00
Mikhail Naganov
6e81e9bb3c Audio HAL: fixes for issues discovered after client conversion
Several issues addressed:

  -- added IDevice.supportsAudioPatches to query whether
     create/removeAudioPatch is actually supported by HAL;

  -- IStreamOutCallback proxy needs to be owned by IStreamOut
     implementation. In order for the client to reset the reference,
     added method IStreamOut.clearCallback;

  -- IDevice.open{Input|Output}Stream need to return a "suggested" audio
     config from HAL;

  -- code for converting between system/audio.h and HIDL
     data structures has been moved to
     android.hardware.audio.common@2.0-util library for reuse;

  -- added a workaround for the issue with QC effects HAL trying to write
     into the input parameters buffer, which is r/o by Binder design.

Bug: 30222631
Change-Id: I64af24d79c12d6ac3b0f87d085a821913e29237b
Test: tried using with WIP HIDL client on N5X
2016-12-01 13:48:58 -08:00
TreeHugger Robot
32094ca29f Merge changes I0b1a0979,I4aa89a39
* changes:
  Added AOSP license headers.
  Remove HIDL_GENERATED from things written by hand.
2016-11-30 18:15:48 +00:00
Steven Moreland
d6e4f03acf Remove HIDL_GENERATED from things written by hand.
find . -name "*.h" -exec sed -i 's/HIDL_GENERATED_\(.*\)_H_/\U\1_H/g' {}
+

They now match what would be generated by -Lc++-impl. This prevents
confusion over whether or not the files are autogenerated.

Change-Id: I4aa89a39907024aa9525df71ff3715979f431357
Similar commit: https://android-review.googlesource.com/#/c/305996/
Test: pass
2016-11-29 15:05:31 -08:00
Steven Moreland
d26dc50abb Always specify underlying enum type.
Bug: 33197891
Test: compiles
Change-Id: I3d4822ea9a665708302d3bd1460425fddf1dcda9
2016-11-29 14:22:10 -08:00
Steven Moreland
bbff14d4bb Merge "Update makefiles for logging." 2016-11-22 17:25:36 +00:00
Martijn Coenen
70b9a15df0 Use newly introduced hidl_handle.
Bug: 32089785
Test: builds
Change-Id: I27c7d3945e1fe390661bf322987011a00fe9b3fe
2016-11-22 09:03:11 +01:00
Steven Moreland
f8d68ec855 Update makefiles for logging.
Bug: 32943424
Test: pass
Change-Id: Ic88ce6adf04e0e36db53e4cc06ac2ec5a90c011c
2016-11-21 16:28:54 -08:00
Eric Laurent
a174588f8d Revert "Revert "Initial implementation of broadcast radio HAL.""
This reverts commit 2c2df013b2.
2016-11-21 10:41:22 -08:00
Eric Laurent
d82c3be1a5 Merge "Revert "Initial implementation of broadcast radio HAL."" 2016-11-19 04:27:42 +00:00
Eric Laurent
2c2df013b2 Revert "Initial implementation of broadcast radio HAL."
This reverts commit a33b3419a3.

Change-Id: I8e1c0f3891f02febe148e837b48b80e645a24ce2
2016-11-19 04:11:15 +00:00
TreeHugger Robot
4433847341 Merge "Initial implementation of broadcast radio HAL." 2016-11-19 02:26:07 +00:00
Eric Laurent
a33b3419a3 Initial implementation of broadcast radio HAL.
Test: make
Test: manual test with RadioTest app.

Bug: 31973526
Change-Id: I66199b95999aa92718bb325f8a4ec84a38e2dd69
2016-11-18 16:26:01 -08:00
Yifan Hong
6b920e43d3 Split libhidl into base and transport.
Bug: 32756130

Test: mma
Change-Id: Id21cf23abe2910f26bb7895511862443b93dc112
2016-11-18 00:00:54 -08:00
Mikhail Naganov
1054829502 Implement audio devices and streams HAL delegating to legacy HAL
Changes made to the .hal definition:

  - introduce Effect ID returned by the IEffectsFactory that
    needs to be passed to IStream.{add|remove}Effect; otherwise
    it's impossible to retrieve the underlying HAL effect handle;

  - change "bus address" in DeviceAddress to "string" type;

  - fix signature of some methods w.r.t. returning Result;

  - remove unused "struct AudioPatch".

Bug: 30222631
Test: make
Change-Id: Icb51729ef57bb2a5b0b78609735e7481bc04f95c
2016-11-15 08:52:39 -08:00
Yifan Hong
c2f2779d9d Update Android.bp to reexport dependent packages.
Test: mma
Change-Id: Iaca7300c366c2c9e860a29e6a111248d315cc5b4
2016-11-09 10:28:38 -08:00
Colin Cross
b785f5b82e Support genrules with multiple tools
To allow genrules with more than one tool, rename the tool property to
tools and make it an array, replace $tool with $(location <label>),
and use $() for other variables for consistency.

Bug: 31948427
Test: compare build.ninja
Change-Id: I3d714f70a2af0dc60faeee10e09b6ed166601f1d
2016-11-04 22:49:15 -07:00
Colin Cross
0dc44bd1d4 Remove unecessary include that no longer exists
I11496e4c3dd6d0d43f635886b46609cb8e430efc removed
hidl/IServiceManager.h, remove it from service.cpp.

Test: m -j android.hardware.audio@2.0-service
Change-Id: I9e45345b345acb1cc15343c889361c2775933cc3
2016-11-02 23:28:29 -07:00
Steven Moreland
fcd74ebcdc Running update makefiles.
https://android-review.googlesource.com/#/c/298160/

Test: pass
Change-Id: I14fcde2d3aacc8f8cd9221f2d69e2feae9ae1226
2016-11-02 10:24:33 -07:00
Steven Moreland
69727778a7 Stop all these merge conflicts.
Test: mma -j64
Change-Id: I319198af32adf1fef180c5c2c22ba4b360fa7609
2016-10-26 12:04:37 +02:00
Eric Laurent
27ef4d872d audio: add audio HAL service and sound trigger HAL implementation
Audio HAL service is common to audio, audio effect, sound trigger and
bradcast radio HALs.

Bug: 32022304
Change-Id: I3952b9c6de3a6b34e757942120320cf8ae036ed5
2016-10-19 16:11:32 -07:00
Mikhail Naganov
96b30be9d0 Define audio HAL
Created after hardware/audio.h with the following changes:

 - names changed to satisfy HAL style guide;

 - defined getter / setter methods for properties, and interfaces
   for devices where needed;

 - stream out callback changed to be used over RPC;

 - 'dump' method is already defined by BBinder, so in HAL
   interfaces it is replaced by 'debugDump'.

Note that audio data is currently transferred using byte buffer,
which is not effective due to memory copy and HwBinder transaction
involved. The transfer method will be changed to FastMessageQueue.

Bug: 30222631
Test: make

Change-Id: Ibb3bd940a91820e81d1a2b53b38d63b9e3de148a
2016-10-12 17:01:32 -07:00