1c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean/* 2c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * Copyright (C) 2014 The Android Open Source Project 3c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * 4c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * Licensed under the Apache License, Version 2.0 (the "License"); 5c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * you may not use this file except in compliance with the License. 6c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * You may obtain a copy of the License at 7c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * 8c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * http://www.apache.org/licenses/LICENSE-2.0 9c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * 10c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * Unless required by applicable law or agreed to in writing, software 11c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * distributed under the License is distributed on an "AS IS" BASIS, 12c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * See the License for the specific language governing permissions and 14c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean * limitations under the License. 15c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean */ 16c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 17c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean#ifndef ANDROID_HARDWARE_LIBHARDWARE_MODULES_USBAUDIO_ALSA_DEVICE_PROXY_H 18c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean#define ANDROID_HARDWARE_LIBHARDWARE_MODULES_USBAUDIO_ALSA_DEVICE_PROXY_H 19c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 20c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean#include <tinyalsa/asoundlib.h> 21c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 22c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean#include "alsa_device_profile.h" 23c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 24c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeantypedef struct { 25c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean alsa_device_profile* profile; 26c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 27c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean struct pcm_config alsa_config; 28c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 29c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean struct pcm * pcm; 30c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean} alsa_device_proxy; 31c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 32c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanvoid proxy_prepare(alsa_device_proxy * proxy, alsa_device_profile * profile, 33c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean struct pcm_config * config); 34c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 35c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanunsigned proxy_get_sample_rate(const alsa_device_proxy * proxy); 36c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanenum pcm_format proxy_get_format(const alsa_device_proxy * proxy); 37c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanunsigned proxy_get_channel_count(const alsa_device_proxy * proxy); 38c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 39c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanunsigned int proxy_get_period_size(const alsa_device_proxy * proxy); 40c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 41c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanunsigned proxy_get_latency(const alsa_device_proxy * proxy); 42c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 43c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanint proxy_open(alsa_device_proxy * proxy); 44c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanvoid proxy_close(alsa_device_proxy * proxy); 45c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 46c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanint proxy_write(const alsa_device_proxy * proxy, const void *data, unsigned int count); 47c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLeanint proxy_read(const alsa_device_proxy * proxy, void *data, unsigned int count); 48c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean 49c88e6ae584a5f7ea65ab6df89e381c2c7bf8e84ePaul McLean#endif /* ANDROID_HARDWARE_LIBHARDWARE_MODULES_USBAUDIO_ALSA_DEVICE_PROXY_H */ 50