| /*********************************************************************** | |
| * Copyright (C) 2008, ZTE Corporation. | |
| * | |
| * File Name: audio_api.h | |
| * File Mark: | |
| * Description: Provide audio module function prototype declaration and type declaration. | |
| * For no multimedia processor platform. | |
| * Others: | |
| * Version: v0.5 | |
| * Author: DangMaochang | |
| * Date: 2008-06-30 | |
| * | |
| * History 1: | |
| * Date: | |
| * Version: | |
| * Author: | |
| * Modification: | |
| * History 2: | |
| **********************************************************************/ | |
| #ifndef _AUDIO_API_H | |
| #define _AUDIO_API_H | |
| #include "drvs_io.h" | |
| #include "drvs_io_voice.h" | |
| /************************************************************************** | |
| * Include files * | |
| **************************************************************************/ | |
| /************************************************************************** | |
| * Macro * | |
| **************************************************************************/ | |
| #define ZDRV_DEV_AUDIO "audio" /*The device name of audio driver.*/ | |
| /************************************************************************** | |
| * Types * | |
| **************************************************************************/ | |
| /*Information from driver to upper application.*/ | |
| typedef enum { | |
| AUDIO_INFO_FILE_INVALID = 0, | |
| AUDIO_INFO_PLAY_END , | |
| AUDIO_INFO_PLAY_ERR , | |
| AUDIO_INFO_REC_END , | |
| AUDIO_INFO_REC_ERR , | |
| MAX_AUDIO_INFO | |
| } T_ZDrvAudio_Info; | |
| /* Audio input channel volum level selection. */ | |
| typedef enum{ | |
| AUDIO_INPUT_VOL_LEVEL_0 = 0, | |
| AUDIO_INPUT_VOL_LEVEL_1, | |
| AUDIO_INPUT_VOL_LEVEL_2, | |
| AUDIO_INPUT_VOL_LEVEL_3, | |
| AUDIO_INPUT_VOL_LEVEL_4, | |
| AUDIO_INPUT_VOL_LEVEL_5, | |
| AUDIO_INPUT_VOL_LEVEL_6, | |
| AUDIO_INPUT_VOL_LEVEL_7, | |
| AUDIO_INPUT_VOL_LEVEL_8, | |
| AUDIO_INPUT_VOL_LEVEL_9, | |
| AUDIO_INPUT_VOL_LEVEL_10, | |
| AUDIO_INPUT_VOL_LEVEL_11, | |
| MAX_AUDIO_INPUT_VOL_LEVEL | |
| } T_ZDrvAudio_InputVolLevel; | |
| /* Audio output channel volum level selection. */ | |
| typedef enum{ | |
| AUDIO_OUTPUT_VOL_LEVEL_0 = 0, | |
| AUDIO_OUTPUT_VOL_LEVEL_1, | |
| AUDIO_OUTPUT_VOL_LEVEL_2, | |
| AUDIO_OUTPUT_VOL_LEVEL_3, | |
| AUDIO_OUTPUT_VOL_LEVEL_4, | |
| AUDIO_OUTPUT_VOL_LEVEL_5, | |
| AUDIO_OUTPUT_VOL_LEVEL_6, | |
| AUDIO_OUTPUT_VOL_LEVEL_7, | |
| AUDIO_OUTPUT_VOL_LEVEL_8, | |
| AUDIO_OUTPUT_VOL_LEVEL_9, | |
| AUDIO_OUTPUT_VOL_LEVEL_10, | |
| AUDIO_OUTPUT_VOL_LEVEL_11, | |
| MAX_AUDIO_OUTPUT_VOL_LEVEL | |
| } T_ZDrvAudio_OutputVolLevel; | |
| /* brief Select the audio data sampling rate for the Stereo DAC. | |
| * note: This enumeration defines all of the possible sampling rates currently | |
| * supported by the Stereo DAC. One of these sampling rates must be selected | |
| * and it must match that of the audio stream or else signal distortion will | |
| * occur. | |
| */ | |
| typedef enum | |
| { | |
| AUDIO_RATE_8_KHZ, /* Use 8 kHz sampling rate. */ | |
| AUDIO_RATE_11_025_KHZ, /* Use 11.025 kHz sampling rate. */ | |
| AUDIO_RATE_12_KHZ, /* Use 12 kHz sampling rate. */ | |
| AUDIO_RATE_16_KHZ, /* Use 16 kHz sampling rate. */ | |
| AUDIO_RATE_22_050_KHZ, /* Use 22.050 kHz sampling rate. */ | |
| AUDIO_RATE_24_KHZ, /* Use 24 kHz sampling rate. */ | |
| AUDIO_RATE_32_KHZ, /* Use 32 kHz sampling rate. */ | |
| AUDIO_RATE_44_1_KHZ, /* Use 44.1 kHz sampling rate. */ | |
| AUDIO_RATE_48_KHZ, /* Use 48 kHz sampling rate. */ | |
| AUDIO_RATE_64_KHZ, /* Use 64 kHz sampling rate */ | |
| AUDIO_RATE_96_KHZ, /* Use 96 kHz sampling rate. */ | |
| MAX_AUDIO_RATE | |
| } T_ZDrvAudio_SampleRate; | |
| /* Audio stereoDAC balance left level selection. */ | |
| typedef enum{ | |
| AUDIO_STEREO_BALANCE_LEVEL_0 = 0, | |
| AUDIO_STEREO_BALANCE_LEVEL_1, | |
| AUDIO_STEREO_BALANCE_LEVEL_2, | |
| AUDIO_STEREO_BALANCE_LEVEL_3, | |
| AUDIO_STEREO_BALANCE_LEVEL_4, | |
| AUDIO_STEREO_BALANCE_LEVEL_5, | |
| AUDIO_STEREO_BALANCE_LEVEL_6, | |
| AUDIO_STEREO_BALANCE_LEVEL_7, | |
| MAX_AUDIO_STEREO_BALANCE_LEVEL | |
| } T_ZDrvAudio_BalanceLevel; | |
| /* Audio stereoDAC BANLANCE */ | |
| typedef struct | |
| { | |
| T_ZDrvAudio_BalanceLevel balanceLeft; /* left */ | |
| T_ZDrvAudio_BalanceLevel balanceright; /* right */ | |
| } T_ZDrvAudio_Banlance; | |
| /* Audio 3DEFFECT */ | |
| typedef struct | |
| { | |
| UINT16 setbass; /*set bass effect*/ | |
| UINT16 setsurr; /*set surround effect*/ | |
| }T_ZDrvAudio_3DEFFECT; | |
| /* Audio eq mode */ | |
| typedef enum | |
| { | |
| AUDIO_EQMODE_NORMAL=0, | |
| AUDIO_EQMODE_CLASSIC, | |
| AUDIO_EQMODE_POP, | |
| AUDIO_EQMODE_JAZZ, | |
| AUDIO_EQMODE_ROCK, | |
| MAX_AUDIO_EQMODE | |
| }T_ZDrvAUDIO_EQMODE; | |
| /* Audio play info */ | |
| typedef struct | |
| { | |
| UINT32 DataLenth; /*Total play datalenth(byte).*/ | |
| } T_ZDrvAudio_PlayInfo; | |
| /* Audio buffer info */ | |
| typedef struct | |
| { | |
| VOID *buf; /* Audio buffer pointer */ | |
| UINT32 buffersize; /* Audio buffer size */ | |
| }T_ZDrvAudio_BufInfo; | |
| #if 0 | |
| typedef enum | |
| { | |
| AUDIO_MONO_CHANNEL, | |
| AUDIO_DUAL_CHANNEL | |
| }T_ZDrvAudio_Channel; | |
| #endif | |
| /* Audio buffer size */ | |
| typedef struct | |
| { | |
| T_ZDrvAudio_Channel channel; | |
| UINT32 buffersize; | |
| }T_ZDrvAudio_PlayParam; | |
| /************************************************************************** | |
| * Global Variable * | |
| **************************************************************************/ | |
| /************************************************************************** | |
| * Function Prototypes * | |
| **************************************************************************/ | |
| typedef void (*T_ZDrvAudio_CallbackFunc) (T_ZDrvAudio_Info); | |
| /************************************************************************** | |
| * Function: zDrv_Open | |
| * Description: This function is used to open device according to device name. | |
| * Parameters: | |
| * Input: | |
| pathname:device name, ZDRV_DEV_AUDIO in audio | |
| * flags: no use | |
| * Output: None | |
| * Returns: | |
| * device file descriptor if successed. [1, ZDRV_MAX_DEV_FILE_NUM), please refer to dal_api.h | |
| * DRV_ERR_NO_THIS_DEVICE: this device hasn't been installed yet | |
| * DRV_ERR_FD_OVERFLOW: no free fd entry | |
| * DRV_ERR_NOT_SUPPORTED: this device don't support open operation. | |
| * DRV_ERR_OPEN_TIMES: has been opened already. | |
| * others: others error code. for detailed information, please refer to the header file of hal layer | |
| * Others: None | |
| **************************************************************************/ | |
| /*SINT32 zDrv_Open (const CHAR *pathname, SINT32 flags)*/ | |
| /************************************************************************** | |
| * Function: zDrv_Close | |
| * Description: This function is used to close a device according to device file descriptor. | |
| * Parameters: | |
| * Input: | |
| * fd :device file descriptor | |
| * Output:None | |
| * Returns: | |
| * DRV_SUCCESS: successed. | |
| * DRV_ERR_NOT_OPENED: has not been opend yet. | |
| * DRV_ERR_FD_TABLE: device driver table has been invalid. | |
| * DRV_ERR_NOT_SUPPORTED: this device don't support close operation. | |
| * others: others error code. for detailed information, please refer to the header file of hal layer | |
| * Others: None | |
| **************************************************************************/ | |
| /*SINT32 zDrv_Close(UINT32 fd)*/ | |
| /************************************************************************** | |
| * Function: zDrv_Write | |
| * Description: This function is used to write data to a device according to the device file descriptor. | |
| * Parameters: | |
| * (IN) | |
| * fd: device file descriptor | |
| * buf_len: buffer length | |
| * buf: pointer to the data to be written | |
| * (OUT) | |
| * None | |
| * Returns: | |
| * the write byte number of read data if successed | |
| * DRV_ERR_INVALID_PARAM: the input parameters are invalid | |
| * DRV_ERR_DEV_CLOSED: has not been opend yet. | |
| * DRV_ERR_NOT_SUPPORTED: this device don't support read operation. | |
| * others: for detailed information, please refer to the header file of hal layer | |
| * Others: | |
| * None. | |
| **************************************************************************/ | |
| /* SINT32 zDrv_Write(UINT32 fd, VOID *buf, UINT32 buf_len) */ | |
| /************************************************************************** | |
| * Function: zDrv_Ioctl | |
| * Description: This function is used to control audio device. | |
| * Parameters: | |
| * Input: | |
| * private:device private data | |
| * cmd:command code | |
| * param:command parameters | |
| * Output:None | |
| * Returns: | |
| * T_ZDrv_ErrCode | |
| * others: if errcode<-100 ,please refer to the hal layer errcode file | |
| * Others: cmd-arg | |
| 1 CMD:IOCTL_AUDIO_RECORD_START: | |
| arg: T_ZDrvRcd_InfoParam* | |
| return: | |
| 2 CMD:IOCTL_AUDIO_RECORD_STOP: | |
| arg: void | |
| return: | |
| 3 CMD:IOCTL_AUDIO_SET_RECORD_PATH: | |
| arg: T_HalAudio_Block* | |
| return: | |
| 4 CMD:IOCTL_AUDIO_SET_RECORD_VOL: | |
| arg: T_HalAudio_Block* | |
| return: | |
| 5 CMD:IOCTL_AUDIO_RECORD_GETDATA: | |
| arg: T_ZDrvAudio_BufInfo* | |
| return: | |
| 6 CMD:IOCTL_AUDIO_RCD_FREE_BUFF: | |
| arg: VOID | |
| return: | |
| 7 CMD:IOCTL_AUDIO_SET_SAMPLE: | |
| arg: T_ZDrvAudio_SampleRate* | |
| return: | |
| 8 CMD:IOCTL_AUDIO_SET_BANLANCE: | |
| arg: T_ZDrvAudio_Banlance* | |
| return: | |
| 9 CMD:IOCTL_AUDIO_SET_OUTPUT_PATH: | |
| arg: T_ZDrv_AudioOutputPath* | |
| return: | |
| 10 CMD:IOCTL_AUDIO_SET_OUTPUT_VOL: | |
| arg: T_ZDrvAudio_OutputVolLevel* | |
| return: | |
| 11 CMD:IOCTL_AUDIO_SET_EQMODE: | |
| arg: T_ZDrvAUDIO_EQMODE* | |
| return: | |
| 12 CMD:IOCTL_AUDIO_ENABLE_3DEFFECT: | |
| arg: T_ZDrvAudio_3DEFFECT* | |
| return: | |
| 13 CMD:IOCTL_AUDIO_SET_MUTE: | |
| arg: BOOL* | |
| return: | |
| 14 CMD:IOCTL_AUDIO_PLAY_START: | |
| arg: VOID*; | |
| return: | |
| 15 CMD:IOCTL_AUDIO_PLAY_STOP: | |
| arg: VOID*; | |
| return: | |
| 16 CMD:IOCTL_AUDIO_PLAY_PAUSE: | |
| arg: VOID*; | |
| return: | |
| 17 CMD:IOCTL_AUDIO_PLAY_RESUME: | |
| arg: VOID*; | |
| return: | |
| 18 CMD:IOCTL_AUDIO_GET_PLAY_INFO: | |
| arg: T_ZDrvAudio_PlayInfo* | |
| return: | |
| 19 CMD:IOCTL_AUDIO_GET_BUFFER: | |
| arg: T_ZDrvAudio_BufInfo* | |
| return: | |
| 20. CMD :IOCTL_AUDIO_SET_RECORD_SAMPLE: | |
| arg: T_ZDrvAudio_SampleRate* | |
| return: | |
| 21 CMD:MAX_IOCTL_AUDIO | |
| ERROR CMD INPUT | |
| **************************************************************************/ | |
| /* SINT32 zDrv_Ioctl(UINT32 fd, UINT32 cmd, VOID* arg); */ | |
| /************************************************************************** | |
| * Function: zDrv_Read | |
| * Description: This function is used to read data from a device according to device file descriptor. | |
| * Parameters: | |
| * Input: | |
| * fd:device file descriptor | |
| * buf: user buffer pointer | |
| * buf_len:buffer length | |
| * Output: | |
| * buf:pointer to the read data buffer | |
| * Returns: | |
| * DRV_SUCCESS:success to read data | |
| * DRV_ERR_NOT_OPENED:device is not openned before | |
| * DRV_ERROR:fail to read data | |
| * DRV_ERR_INVALID_PARAM: invalid paraments. | |
| * Others: None | |
| **************************************************************************/ | |
| /*SINT32 zDrv_Read(UINT32 fd, VOID *buf, UINT32 buf_len)*/ | |
| #endif /* _AUDIO_API_H */ |