14765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev/* acoustics_default.cpp 24765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** 34765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** Copyright 2009 Wind River Systems 44765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** 54765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** Licensed under the Apache License, Version 2.0 (the "License"); 64765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** you may not use this file except in compliance with the License. 74765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** You may obtain a copy of the License at 84765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** 94765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** http://www.apache.org/licenses/LICENSE-2.0 104765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** 114765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** Unless required by applicable law or agreed to in writing, software 124765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** distributed under the License is distributed on an "AS IS" BASIS, 134765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** See the License for the specific language governing permissions and 154765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev ** limitations under the License. 164765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev */ 174765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 184765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev#define LOG_TAG "AcousticsModule" 194765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev#include <utils/Log.h> 204765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 214765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev#include "AudioHardwareALSA.h" 224765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 234765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevnamespace android 244765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 254765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 264765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic int s_device_open(const hw_module_t*, const char*, hw_device_t**); 274765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic int s_device_close(hw_device_t*); 284765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 294765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_use_handle(acoustic_device_t *, alsa_handle_t *); 304765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_cleanup(acoustic_device_t *); 314765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_set_params(acoustic_device_t *, 324765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev AudioSystem::audio_in_acoustics, void *params); 334765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 344765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic hw_module_methods_t s_module_methods = { 354765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev open : s_device_open 364765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev}; 374765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 384113f34dfbaa8d82a5e1ef0265e916317161984dIliyan Malchevextern "C" hw_module_t HAL_MODULE_INFO_SYM = { 394765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev tag : HARDWARE_MODULE_TAG, 404765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev version_major : 1, 414765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev version_minor : 0, 424765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev id : ACOUSTICS_HARDWARE_MODULE_ID, 434765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev name : "ALSA acoustics module", 444765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev author : "Wind River", 454765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev methods : &s_module_methods, 464765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dso : 0, 474765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev reserved : { 0, }, 484765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev}; 494765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 504765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic int s_device_open(const hw_module_t* module, const char* name, 514765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev hw_device_t** device) 524765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 534765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev acoustic_device_t *dev; 544765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev = (acoustic_device_t *) malloc(sizeof(*dev)); 554765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev if (!dev) return -ENOMEM; 564765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 574765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev memset(dev, 0, sizeof(*dev)); 584765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 594765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev /* initialize the procs */ 604765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->common.tag = HARDWARE_DEVICE_TAG; 614765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->common.version = 0; 624765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->common.module = (hw_module_t *) module; 634765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->common.close = s_device_close; 644765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 654765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev // Required methods... 664765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->use_handle = s_use_handle; 674765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->cleanup = s_cleanup; 684765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev dev->set_params = s_set_params; 694765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 704765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev // read, write, and recover are optional methods... 714765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 724765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev *device = &dev->common; 734765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev return 0; 744765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 754765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 764765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic int s_device_close(hw_device_t* device) 774765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 784765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev free(device); 794765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev return 0; 804765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 814765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 824765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_use_handle(acoustic_device_t *dev, alsa_handle_t *h) 834765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 844765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev return NO_ERROR; 854765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 864765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 874765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_cleanup(acoustic_device_t *dev) 884765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 899746c4758b161e26eec92b1ef1ff1bf0ba0bd268Ajay Dudani ALOGD("Acoustics close stub called."); 904765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev return NO_ERROR; 914765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 924765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev 934765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchevstatic status_t s_set_params(acoustic_device_t *dev, 944765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev AudioSystem::audio_in_acoustics acoustics, void *params) 954765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev{ 969746c4758b161e26eec92b1ef1ff1bf0ba0bd268Ajay Dudani ALOGD("Acoustics set_params stub called with %d.", (int)acoustics); 974765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev return NO_ERROR; 984765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 994765c439491ddda3de658e62cc4a64d10e726b34Iliyan Malchev} 100