AudioHardware: Dispatch setParameters to input and output
[tinyalsa-audio.git] / AudioHardware.h
1 /*
2  * Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr>
3  * 
4  * This is based on TinyHardware:
5  * Copyright 2011 Wolfson Microelectronics plc
6  *
7  * This is based on Nexus S AudioHardware implementation:
8  * Copyright 2010, The Android Open-Source Project
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  *     http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  */
22
23 #ifndef TINYALSA_AUDIO_HARDWARE_H
24 #define TINYALSA_AUDIO_HARDWARE_H
25
26 #include <hardware_legacy/AudioHardwareBase.h>
27 #include "AudioStreamOut.h"
28 #include "AudioStreamIn.h"
29 #include "AudioRILInterface.h"
30
31 namespace android {
32
33 class TinyALSAAudioStreamOut;
34
35 class AudioHardware : public AudioHardwareBase
36 {
37 public:
38         AudioHardware();
39         virtual ~AudioHardware();
40         virtual status_t initCheck();
41
42         virtual status_t setVoiceVolume(float volume);
43         virtual status_t getVoiceVolume(float *volume);
44         virtual status_t setMasterVolume(float volume);
45
46         virtual status_t setMode(int mode);
47         virtual status_t getMode(int *mode);
48
49         virtual status_t setMicMute(bool state);
50         virtual status_t getMicMute(bool *state);
51
52         virtual status_t setParameters(const String8& keyValuePairs);
53         virtual String8 getParameters(const String8& keys);
54
55         virtual size_t getInputBufferSize(
56                 uint32_t sampleRate, int format, int channelCount);
57
58         virtual AudioStreamOut* openOutputStream(
59                 uint32_t devices, int *format=0, uint32_t *channels=0,
60                 uint32_t *sampleRate=0, status_t *status=0);
61
62         virtual AudioStreamIn* openInputStream(
63                 uint32_t devices, int *format, uint32_t *channels,
64                 uint32_t *sampleRate, status_t *status,
65                 AudioSystem::audio_in_acoustics acoustics);
66
67         virtual void closeOutputStream(AudioStreamOut* out);
68         virtual void closeInputStream(AudioStreamIn* in);
69
70         TinyALSAAudioStreamOut *mOutput;
71         TinyALSAAudioStreamIn *mInput;
72         TinyALSAAudioRILInterface *mRILInterface;
73
74 protected:
75         virtual status_t dump(int fd, const Vector<String16>& args);
76
77 private:
78         Mutex mLock;
79         bool mInit;
80         unsigned int mOutDevices;
81         unsigned int mInDevices;
82         int mMode;
83         float mVoiceVolume;
84         bool mMicMute;
85 };
86
87 }; // namespace android
88
89 #endif