blob: 2b2fe6d459aec0314596ac58d7d03c9b7225dc44 [file] [log] [blame]
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -07001/*
2 * Copyright (C) 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <binding/AAudioBinderAdapter.h>
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070018#include <utility/AAudioUtilities.h>
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070019
20namespace aaudio {
21
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070022using android::binder::Status;
23
24AAudioBinderAdapter::AAudioBinderAdapter(IAAudioService* delegate)
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070025 : mDelegate(delegate) {}
26
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070027void AAudioBinderAdapter::registerClient(const android::sp<IAAudioClient>& client) {
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070028 mDelegate->registerClient(client);
29}
30
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070031aaudio_handle_t AAudioBinderAdapter::openStream(const AAudioStreamRequest& request,
32 AAudioStreamConfiguration& config) {
33 aaudio_handle_t result;
34 StreamParameters params;
35 Status status = mDelegate->openStream(request.parcelable(),
36 &params,
37 &result);
38 if (!status.isOk()) {
39 result = AAudioConvert_androidToAAudioResult(status.transactionError());
40 }
41 config = params;
42 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070043}
44
45aaudio_result_t AAudioBinderAdapter::closeStream(aaudio_handle_t streamHandle) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070046 aaudio_result_t result;
47 Status status = mDelegate->closeStream(streamHandle, &result);
48 if (!status.isOk()) {
49 result = AAudioConvert_androidToAAudioResult(status.transactionError());
50 }
51 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070052}
53
54aaudio_result_t AAudioBinderAdapter::getStreamDescription(aaudio_handle_t streamHandle,
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070055 AudioEndpointParcelable& endpointOut) {
56 aaudio_result_t result;
57 Endpoint endpoint;
58 Status status = mDelegate->getStreamDescription(streamHandle,
59 &endpoint,
60 &result);
61 if (!status.isOk()) {
62 result = AAudioConvert_androidToAAudioResult(status.transactionError());
63 }
64 endpointOut = std::move(endpoint);
65 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070066}
67
68aaudio_result_t AAudioBinderAdapter::startStream(aaudio_handle_t streamHandle) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070069 aaudio_result_t result;
70 Status status = mDelegate->startStream(streamHandle, &result);
71 if (!status.isOk()) {
72 result = AAudioConvert_androidToAAudioResult(status.transactionError());
73 }
74 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070075}
76
77aaudio_result_t AAudioBinderAdapter::pauseStream(aaudio_handle_t streamHandle) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070078 aaudio_result_t result;
79 Status status = mDelegate->pauseStream(streamHandle, &result);
80 if (!status.isOk()) {
81 result = AAudioConvert_androidToAAudioResult(status.transactionError());
82 }
83 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070084}
85
86aaudio_result_t AAudioBinderAdapter::stopStream(aaudio_handle_t streamHandle) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070087 aaudio_result_t result;
88 Status status = mDelegate->stopStream(streamHandle, &result);
89 if (!status.isOk()) {
90 result = AAudioConvert_androidToAAudioResult(status.transactionError());
91 }
92 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -070093}
94
95aaudio_result_t AAudioBinderAdapter::flushStream(aaudio_handle_t streamHandle) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -070096 aaudio_result_t result;
97 Status status = mDelegate->flushStream(streamHandle, &result);
98 if (!status.isOk()) {
99 result = AAudioConvert_androidToAAudioResult(status.transactionError());
100 }
101 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -0700102}
103
104aaudio_result_t AAudioBinderAdapter::registerAudioThread(aaudio_handle_t streamHandle,
105 pid_t clientThreadId,
106 int64_t periodNanoseconds) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -0700107 aaudio_result_t result;
108 Status status = mDelegate->registerAudioThread(streamHandle, clientThreadId, periodNanoseconds, &result);
109 if (!status.isOk()) {
110 result = AAudioConvert_androidToAAudioResult(status.transactionError());
111 }
112 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -0700113}
114
115aaudio_result_t AAudioBinderAdapter::unregisterAudioThread(aaudio_handle_t streamHandle,
116 pid_t clientThreadId) {
Ytai Ben-Tsvic5f45872020-08-18 10:39:44 -0700117 aaudio_result_t result;
118 Status status = mDelegate->unregisterAudioThread(streamHandle, clientThreadId, &result);
119 if (!status.isOk()) {
120 result = AAudioConvert_androidToAAudioResult(status.transactionError());
121 }
122 return result;
Ytai Ben-Tsvi734e3502020-08-24 14:57:36 -0700123}
124
125} // namespace aaudio