Home | History | Annotate | Download | only in src
      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 
     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 
     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 
     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 
     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 
     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 
     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 
     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