IDeviceVolume.c revision 61ac0ade16f84d877dfd8d0e984eb203d4a2901d
161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten/* 261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Copyright (C) 2010 The Android Open Source Project 361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * 461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * you may not use this file except in compliance with the License. 661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * You may obtain a copy of the License at 761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * 861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * 1061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Unless required by applicable law or agreed to in writing, software 1161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 1261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * See the License for the specific language governing permissions and 1461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * limitations under the License. 1561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten */ 1661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 1761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten/* DeviceVolume implementation */ 1861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 1961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten#include "sles_allinclusive.h" 2061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 2161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IDeviceVolume_GetVolumeScale(SLDeviceVolumeItf self, 2261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten SLuint32 deviceID, SLint32 *pMinValue, SLint32 *pMaxValue, 2361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten SLboolean *pIsMillibelScale) 2461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{ 2561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten if (NULL != pMinValue) 2661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *pMinValue = 0; 2761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten if (NULL != pMaxValue) 2861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *pMaxValue = 10; 2961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten if (NULL != pIsMillibelScale) 3061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *pIsMillibelScale = SL_BOOLEAN_FALSE; 3161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_SUCCESS; 3261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten} 3361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 3461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IDeviceVolume_SetVolume(SLDeviceVolumeItf self, 3561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten SLuint32 deviceID, SLint32 volume) 3661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{ 3761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten switch (deviceID) { 3861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten case SL_DEFAULTDEVICEID_AUDIOINPUT: 3961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten case SL_DEFAULTDEVICEID_AUDIOOUTPUT: 4061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten break; 4161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten default: 4261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_PARAMETER_INVALID; 4361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten } 4461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume *this = 4561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten (IDeviceVolume *) self; 4661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten interface_lock_poke(this); 4761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten this->mVolume[~deviceID] = volume; 4861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten interface_unlock_poke(this); 4961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_SUCCESS; 5061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten} 5161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 5261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IDeviceVolume_GetVolume(SLDeviceVolumeItf self, 5361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten SLuint32 deviceID, SLint32 *pVolume) 5461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{ 5561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten if (NULL == pVolume) 5661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_PARAMETER_INVALID; 5761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten switch (deviceID) { 5861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten case SL_DEFAULTDEVICEID_AUDIOINPUT: 5961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten case SL_DEFAULTDEVICEID_AUDIOOUTPUT: 6061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten break; 6161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten default: 6261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_PARAMETER_INVALID; 6361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten } 6461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume *this = 6561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten (IDeviceVolume *) self; 6661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten interface_lock_peek(this); 6761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten SLint32 volume = this->mVolume[~deviceID]; 6861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten interface_unlock_peek(this); 6961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *pVolume = volume; 7061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten return SL_RESULT_SUCCESS; 7161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten} 7261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 7361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic const struct SLDeviceVolumeItf_ IDeviceVolume_Itf = { 7461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume_GetVolumeScale, 7561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume_SetVolume, 7661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume_GetVolume 7761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}; 7861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten 7961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenvoid IDeviceVolume_init(void *self) 8061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{ 8161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten IDeviceVolume *this = (IDeviceVolume *) self; 8261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten this->mItf = &IDeviceVolume_Itf; 8361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten this->mVolume[0] = 10; 8461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten this->mVolume[1] = 10; 8561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten} 86