1 /* 2 * Copyright (C) 2004-2010 NXP Software 3 * Copyright (C) 2010 The Android Open Source Project 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 /****************************************************************************************/ 19 /* */ 20 /* Includes */ 21 /* */ 22 /****************************************************************************************/ 23 #include "LVREV_Private.h" 24 25 /****************************************************************************************/ 26 /* */ 27 /* FUNCTION: LVREV_SetControlParameters */ 28 /* */ 29 /* DESCRIPTION: */ 30 /* Sets or changes the LVREV module parameters. */ 31 /* */ 32 /* PARAMETERS: */ 33 /* hInstance Instance handle */ 34 /* pNewParams Pointer to a parameter structure */ 35 /* */ 36 /* RETURNS: */ 37 /* LVM_Success Succeeded */ 38 /* LVREV_NULLADDRESS When hInstance or pNewParams is NULL */ 39 /* LVREV_OUTOFRANGE When any of the new parameters is out of range */ 40 /* */ 41 /* NOTES: */ 42 /* 1. This function may be interrupted by the LVREV_Process function */ 43 /* */ 44 /****************************************************************************************/ LVREV_SetControlParameters(LVREV_Handle_t hInstance,LVREV_ControlParams_st * pNewParams)45LVREV_ReturnStatus_en LVREV_SetControlParameters(LVREV_Handle_t hInstance, 46 LVREV_ControlParams_st* pNewParams) { 47 LVREV_Instance_st* pLVREV_Private = (LVREV_Instance_st*)hInstance; 48 49 /* 50 * Check for error conditions 51 */ 52 if ((hInstance == LVM_NULL) || (pNewParams == LVM_NULL)) { 53 return LVREV_NULLADDRESS; 54 } 55 56 /* 57 * Check all new control parameters are in range 58 */ 59 if (((pNewParams->OperatingMode != LVM_MODE_OFF) && 60 (pNewParams->OperatingMode != LVM_MODE_ON)) || 61 ((pNewParams->SampleRate != LVM_FS_8000) && (pNewParams->SampleRate != LVM_FS_11025) && 62 (pNewParams->SampleRate != LVM_FS_12000) && (pNewParams->SampleRate != LVM_FS_16000) && 63 (pNewParams->SampleRate != LVM_FS_22050) && (pNewParams->SampleRate != LVM_FS_24000) && 64 (pNewParams->SampleRate != LVM_FS_32000) && (pNewParams->SampleRate != LVM_FS_44100) && 65 (pNewParams->SampleRate != LVM_FS_48000) && (pNewParams->SampleRate != LVM_FS_88200) && 66 (pNewParams->SampleRate != LVM_FS_96000) && (pNewParams->SampleRate != LVM_FS_176400) && 67 (pNewParams->SampleRate != LVM_FS_192000)) || 68 ((pNewParams->SourceFormat != LVM_STEREO) && 69 (pNewParams->SourceFormat != LVM_MONOINSTEREO) && (pNewParams->SourceFormat != LVM_MONO) && 70 (pNewParams->SourceFormat != LVM_MULTICHANNEL))) { 71 return (LVREV_OUTOFRANGE); 72 } 73 74 if (pNewParams->Level > LVREV_MAX_LEVEL) { 75 return LVREV_OUTOFRANGE; 76 } 77 78 if ((pNewParams->LPF < LVREV_MIN_LPF_CORNER) || (pNewParams->LPF > LVREV_MAX_LPF_CORNER)) { 79 return LVREV_OUTOFRANGE; 80 } 81 82 if ((pNewParams->HPF < LVREV_MIN_HPF_CORNER) || (pNewParams->HPF > LVREV_MAX_HPF_CORNER)) { 83 return LVREV_OUTOFRANGE; 84 } 85 86 if (pNewParams->T60 > LVREV_MAX_T60) { 87 return LVREV_OUTOFRANGE; 88 } 89 90 if (pNewParams->Density > LVREV_MAX_DENSITY) { 91 return LVREV_OUTOFRANGE; 92 } 93 94 if (pNewParams->Damping > LVREV_MAX_DAMPING) { 95 return LVREV_OUTOFRANGE; 96 } 97 98 if (pNewParams->RoomSize > LVREV_MAX_ROOMSIZE) { 99 return LVREV_OUTOFRANGE; 100 } 101 102 /* 103 * Copy the new parameters and set the flag to indicate they are available 104 */ 105 pLVREV_Private->NewParams = *pNewParams; 106 pLVREV_Private->bControlPending = LVM_TRUE; 107 108 return LVREV_SUCCESS; 109 } 110 111 /* End of file */ 112