1 /*
2 * Copyright (C) 2015 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 #define LOG_TAG "VehicleNetworkAudioHelper-C"
18
19 #include <VehicleNetwork.h>
20 #include <vehicle-internal.h>
21 #include <utils/SystemClock.h>
22 #include "VehicleNetworkAudioHelper.h"
23 #include "vehicle-network-audio-helper-for-c.h"
24
25 extern "C" {
26
vehicle_network_audio_helper_create(nsecs_t timeout)27 vehicle_network_audio_helper_t* vehicle_network_audio_helper_create(nsecs_t timeout) {
28 android::status_t r;
29 android::VehicleNetworkAudioHelper* helperObj = new android::VehicleNetworkAudioHelper(timeout);
30 if (helperObj == NULL) {
31 return NULL;
32 }
33 vehicle_network_audio_helper_t *helper = new vehicle_network_audio_helper_t();
34 if (helper == NULL) {
35 goto error;
36 }
37 r = helperObj->init();
38 if (r != android::NO_ERROR) {
39 goto error;
40 }
41 helper->obj = helperObj;
42 return helper;
43
44 error:
45 delete helperObj;
46 delete helper;
47 return NULL;
48 }
49
vehicle_network_audio_helper_create_with_default_timeout()50 vehicle_network_audio_helper_t* vehicle_network_audio_helper_create_with_default_timeout() {
51 return vehicle_network_audio_helper_create(FOCUS_WAIT_DEFAULT_TIMEOUT_NS);
52 }
53
vehicle_network_audio_helper_destroy(vehicle_network_audio_helper_t * helper)54 void vehicle_network_audio_helper_destroy(vehicle_network_audio_helper_t* helper) {
55 android::VehicleNetworkAudioHelper* helperObj =
56 (android::VehicleNetworkAudioHelper*) helper->obj;
57 helperObj->release();
58 delete helperObj;
59 delete helper;
60 }
61
vehicle_network_audio_helper_notify_stream_started(vehicle_network_audio_helper_t * helper,int32_t stream)62 void vehicle_network_audio_helper_notify_stream_started(vehicle_network_audio_helper_t* helper,
63 int32_t stream) {
64 android::VehicleNetworkAudioHelper* helperObj =
65 (android::VehicleNetworkAudioHelper*) helper->obj;
66 helperObj->notifyStreamStarted(stream);
67 }
68
vehicle_network_audio_helper_notify_stream_stopped(vehicle_network_audio_helper_t * helper,int32_t stream)69 void vehicle_network_audio_helper_notify_stream_stopped(vehicle_network_audio_helper_t* helper,
70 int32_t stream) {
71 android::VehicleNetworkAudioHelper* helperObj =
72 (android::VehicleNetworkAudioHelper*) helper->obj;
73 helperObj->notifyStreamStopped(stream);
74 }
75
vehicle_network_audio_helper_get_stream_focus_state(vehicle_network_audio_helper_t * helper,int32_t stream)76 int vehicle_network_audio_helper_get_stream_focus_state(
77 vehicle_network_audio_helper_t* helper, int32_t stream) {
78 android::VehicleNetworkAudioHelper* helperObj =
79 (android::VehicleNetworkAudioHelper*) helper->obj;
80 return helperObj->getStreamFocusState(stream);
81 }
82
vehicle_network_audio_helper_wait_for_stream_focus(vehicle_network_audio_helper_t * helper,int32_t stream,nsecs_t waitTimeNs)83 int vehicle_network_audio_helper_wait_for_stream_focus(vehicle_network_audio_helper_t* helper,
84 int32_t stream, nsecs_t waitTimeNs) {
85 android::VehicleNetworkAudioHelper* helperObj =
86 (android::VehicleNetworkAudioHelper*) helper->obj;
87 if (helperObj->waitForStreamFocus(stream, waitTimeNs)) {
88 return 1;
89 }
90 return 0;
91 }
92
93 }
94