// copyright 2016 the android open source project
//
// licensed under the apache license, version 2.0 (the "license");
// you may not use this file except in compliance with the license.
// you may obtain a copy of the license at
//
// http://www.apache.org/licenses/license-2.0
//
// unless required by applicable law or agreed to in writing, software
// distributed under the license is distributed on an "as is" basis,
// without warranties or conditions of any kind, either express or implied.
// see the license for the specific language governing permissions and
// limitations under the license.
//
// Type to represent audio devices in a brillo system.
#ifndef BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_DEVICE_INFO_H_
#define BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_DEVICE_INFO_H_
#include <sys/cdefs.h>
__BEGIN_DECLS
struct BAudioDeviceInfo;
typedef struct BAudioDeviceInfo BAudioDeviceInfo;
// A device type associated with an unknown or uninitialized device.
static const int TYPE_UNKNOWN = 0;
// A device type describing the speaker system (i.e. a mono speaker or stereo
// speakers) built in a device.
static const int TYPE_BUILTIN_SPEAKER = 1;
// A device type describing a headset, which is the combination of a headphones
// and microphone. This type represents just the transducer in the headset.
static const int TYPE_WIRED_HEADSET = 2;
// A device type describing a headset, which is the combination of a headphones
// and microphone. This type represents the microphone in the headset.
static const int TYPE_WIRED_HEADSET_MIC = 3;
// A device type describing a pair of wired headphones.
static const int TYPE_WIRED_HEADPHONES = 4;
// A device type describing the microphone(s) built in a device.
static const int TYPE_BUILTIN_MIC = 5;
// Create a BAudioDeviceInfo based on a type described above.
//
// Arg:
// device: An int representing an audio type as defined above.
//
// Returns a pointer to a BAudioDeviceInfo object.
BAudioDeviceInfo* BAudioDeviceInfo_new(int device);
// Get the type of the device.
//
// Arg:
// device: A pointer to a BAudioDeviceInfo object to be freed.
//
// Returns an int representing the type of the device.
int BAudioDeviceInfo_getType(BAudioDeviceInfo* device);
// Free a BAudioDeviceInfo.
//
// Arg:
// device: A pointer to a BAudioDeviceInfo object to be freed.
void BAudioDeviceInfo_delete(BAudioDeviceInfo* device);
__END_DECLS
#endif // BRILLO_AUDIO_AUDIOSERVICE_BRILLO_AUDIO_DEVICE_INFO_H_