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
23namespace android
24{
25
26static int s_device_open(const hw_module_t*, const char*, hw_device_t**);
27static int s_device_close(hw_device_t*);
28
29static status_t s_use_handle(acoustic_device_t *, alsa_handle_t *);
30static status_t s_cleanup(acoustic_device_t *);
31static status_t s_set_params(acoustic_device_t *,
32        AudioSystem::audio_in_acoustics, void *params);
33
34static hw_module_methods_t s_module_methods = {
35    open            : s_device_open
36};
37
38extern "C" 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
50static 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
76static int s_device_close(hw_device_t* device)
77{
78    free(device);
79    return 0;
80}
81
82static status_t s_use_handle(acoustic_device_t *dev, alsa_handle_t *h)
83{
84    return NO_ERROR;
85}
86
87static status_t s_cleanup(acoustic_device_t *dev)
88{
89    ALOGD("Acoustics close stub called.");
90    return NO_ERROR;
91}
92
93static status_t s_set_params(acoustic_device_t *dev,
94        AudioSystem::audio_in_acoustics acoustics, void *params)
95{
96    ALOGD("Acoustics set_params stub called with %d.", (int)acoustics);
97    return NO_ERROR;
98}
99}
100