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 /****************************************************************************************/ 45 LVREV_ReturnStatus_en LVREV_SetControlParameters(LVREV_Handle_t hInstance, 46 LVREV_ControlParams_st *pNewParams) 47 { 48 49 LVREV_Instance_st *pLVREV_Private = (LVREV_Instance_st *)hInstance; 50 51 52 /* 53 * Check for error conditions 54 */ 55 if((hInstance == LVM_NULL) || (pNewParams == LVM_NULL)) 56 { 57 return LVREV_NULLADDRESS; 58 } 59 60 /* 61 * Check all new control parameters are in range 62 */ 63 if( ((pNewParams->OperatingMode != LVM_MODE_OFF) && (pNewParams->OperatingMode != LVM_MODE_ON)) || 64 ((pNewParams->SampleRate != LVM_FS_8000) && (pNewParams->SampleRate != LVM_FS_11025) && (pNewParams->SampleRate != LVM_FS_12000) && 65 (pNewParams->SampleRate != LVM_FS_16000) && (pNewParams->SampleRate != LVM_FS_22050) && (pNewParams->SampleRate != LVM_FS_24000) && 66 (pNewParams->SampleRate != LVM_FS_32000) && (pNewParams->SampleRate != LVM_FS_44100) && (pNewParams->SampleRate != LVM_FS_48000)) || 67 ((pNewParams->SourceFormat != LVM_STEREO) && (pNewParams->SourceFormat != LVM_MONOINSTEREO) && (pNewParams->SourceFormat != LVM_MONO)) ) 68 { 69 return (LVREV_OUTOFRANGE); 70 } 71 72 73 if (pNewParams->Level > LVREV_MAX_LEVEL) 74 { 75 return LVREV_OUTOFRANGE; 76 } 77 78 if ((pNewParams->LPF < LVREV_MIN_LPF_CORNER) || (pNewParams->LPF > LVREV_MAX_LPF_CORNER)) 79 { 80 return LVREV_OUTOFRANGE; 81 } 82 83 if ((pNewParams->HPF < LVREV_MIN_HPF_CORNER) || (pNewParams->HPF > LVREV_MAX_HPF_CORNER)) 84 { 85 return LVREV_OUTOFRANGE; 86 } 87 88 if (pNewParams->T60 > LVREV_MAX_T60) 89 { 90 return LVREV_OUTOFRANGE; 91 } 92 93 if (pNewParams->Density > LVREV_MAX_DENSITY) 94 { 95 return LVREV_OUTOFRANGE; 96 } 97 98 if (pNewParams->Damping > LVREV_MAX_DAMPING) 99 { 100 return LVREV_OUTOFRANGE; 101 } 102 103 if (pNewParams->RoomSize > LVREV_MAX_ROOMSIZE) 104 { 105 return LVREV_OUTOFRANGE; 106 } 107 108 109 110 /* 111 * Copy the new parameters and set the flag to indicate they are available 112 */ 113 pLVREV_Private->NewParams = *pNewParams; 114 pLVREV_Private->bControlPending = LVM_TRUE; 115 116 return LVREV_SUCCESS; 117 } 118 119 /* End of file */ 120