OSDN Git Service

Eclair ALSA version including new ALSA module mechanism.
[android-x86/hardware-alsa_sound.git] / acoustics_default.cpp
1 /* acoustics_default.cpp
2  **
3  ** Copyright 2009 Wind River Systems
4  **
5  ** Licensed under the Apache License, Version 2.0 (the "License");
6  ** you may not use this file except in compliance with the License.
7  ** You may obtain a copy of the License at
8  **
9  **     http://www.apache.org/licenses/LICENSE-2.0
10  **
11  ** Unless required by applicable law or agreed to in writing, software
12  ** distributed under the License is distributed on an "AS IS" BASIS,
13  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  ** See the License for the specific language governing permissions and
15  ** limitations under the License.
16  */
17
18 #define LOG_TAG "AcousticsModule"
19 #include <utils/Log.h>
20
21 #include "AudioHardwareALSA.h"
22
23 namespace android
24 {
25
26 static int s_device_open(const hw_module_t*, const char*, hw_device_t**);
27 static int s_device_close(hw_device_t*);
28
29 static status_t s_use_handle(acoustic_device_t *, alsa_handle_t *);
30 static status_t s_cleanup(acoustic_device_t *);
31 static status_t s_set_params(acoustic_device_t *,
32         AudioSystem::audio_in_acoustics, void *params);
33
34 static hw_module_methods_t s_module_methods = {
35     open            : s_device_open
36 };
37
38 extern "C" const hw_module_t HAL_MODULE_INFO_SYM = {
39     tag             : HARDWARE_MODULE_TAG,
40     version_major   : 1,
41     version_minor   : 0,
42     id              : ACOUSTICS_HARDWARE_MODULE_ID,
43     name            : "ALSA acoustics module",
44     author          : "Wind River",
45     methods         : &s_module_methods,
46     dso             : 0,
47     reserved        : { 0, },
48 };
49
50 static int s_device_open(const hw_module_t* module, const char* name,
51         hw_device_t** device)
52 {
53     acoustic_device_t *dev;
54     dev = (acoustic_device_t *) malloc(sizeof(*dev));
55     if (!dev) return -ENOMEM;
56
57     memset(dev, 0, sizeof(*dev));
58
59     /* initialize the procs */
60     dev->common.tag = HARDWARE_DEVICE_TAG;
61     dev->common.version = 0;
62     dev->common.module = (hw_module_t *) module;
63     dev->common.close = s_device_close;
64
65     // Required methods...
66     dev->use_handle = s_use_handle;
67     dev->cleanup = s_cleanup;
68     dev->set_params = s_set_params;
69
70     // read, write, and recover are optional methods...
71
72     *device = &dev->common;
73     return 0;
74 }
75
76 static int s_device_close(hw_device_t* device)
77 {
78     free(device);
79     return 0;
80 }
81
82 static status_t s_use_handle(acoustic_device_t *dev, alsa_handle_t *h)
83 {
84     return NO_ERROR;
85 }
86
87 static status_t s_cleanup(acoustic_device_t *dev)
88 {
89     LOGD("Acoustics close stub called.");
90     return NO_ERROR;
91 }
92
93 static status_t s_set_params(acoustic_device_t *dev,
94         AudioSystem::audio_in_acoustics acoustics, void *params)
95 {
96     LOGD("Acoustics set_params stub called with %d.", (int)acoustics);
97     return NO_ERROR;
98 }
99 }