blob: a39b1822172cf65c5dc9ed09be1b9c09da9a2786 [file] [log] [blame]
/*------------------------------------------------------------
(C) Copyright [2006-2008] Marvell International Ltd.
All Rights Reserved
------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------
INTEL CONFIDENTIAL
Copyright 2006 Intel Corporation All Rights Reserved.
The source code contained or described herein and all documents related to the source code ("Material") are owned
by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or
its suppliers and licensors. The Material contains trade secrets and proprietary and confidential information of
Intel or its suppliers and licensors. The Material is protected by worldwide copyright and trade secret laws and
treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted,
transmitted, distributed, or disclosed in any way without Intel's prior express written permission.
No license under any patent, copyright, trade secret or other intellectual property right is granted to or
conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement,
estoppel or otherwise. Any license under such intellectual property rights must be express and approved by
Intel in writing.
-------------------------------------------------------------------------------------------------------------------*/
/**********************************************************************
*
* Filename: AuC.h
*
* Programmers: Tal Rotbart
*
* Description: Declarations of Common AuC services and variables
*
* --------------------------------------------------------------------
* Revision History
*
* Date Who Version Description
* --------------------------------------------------------------------
*
**********************************************************************/
#ifndef AUC_H
#define AUC_H
#if 0
#define MAX_VOLUME_VALUE (0x31)
#define MUTE_ON (0x0)
#define MUTE_OFF (0x1)
#endif
//ICAT EXPORTED ENUM
typedef enum {
NON_INITIALIZED // 0
, VOICE_IDLE // 1
, WAIT_FOR_CSDI_START // 2
, WAIT_FOR_CSDI_START_AND_PCM_STREAM // 3
, WBCDMA_VOICE // 4
, WBCDMA_VOICE_AND_PCM_STREAM // 5
, VOICE_HAND_OVER // 6
, VOICE_HAND_OVER_AND_PCM_STREAM // 7
, WAIT_FOR_CSDI_STOP // 8
, WAIT_FOR_CSDI_STOP_AND_PCM_STREAM // 9
, GSM_VOICE // 10
, GSM_VOICE_AND_PCM_STREAM // 11
, PCM_STREAM_ONLY // 12
, VOCODER_STREAM // 13
, VOCODER_STREAM_AND_PCM_STREAM // 14
#ifdef SS_VT
//New state for VT(H.223 in CP side)
, VT_H223_VOICE
#endif
} Audio_Ctrl_State;
typedef enum {
TRI_STATE = 0,
ACTIVE
}TriStateMode;
// Opcodes:
enum AudioCtrlCmd {
START_VOICE_PATH = 0x0040
, END_VOICE_PATH = 0x0041
, VOICE_HANDOVER = 0x0042
, VOICE_RX_PACKET = 0x0043
, AUDIOTOOL_CONTROL = 0x0044
, CODEC_IF_CHANGE = 0x0045
, VOICE_TEST_CONTROL = 0x0046
, PCM_STREAM_CONTROL = 0x0047
, VOICE_ACTIVATE_PATH = 0x0048
, SELF_INVOCATION = 0x0049
, CONFIG_CODEC_DB = 0x004c
, AUDIO_DEVICE_CONTROL = 0x004d
, AUDIO_PLL_CONTROL = 0x004E
, AUDIO_MISCELLANEOUS_FUNC = 0x004F
#ifdef OPT_IPC
, AUDIO_IPC_CONTROL = 0x0050
, INIT_IPC_CONTROL = 0x0051
#endif
, COMPANDER_CONTROL_CMD = 0x0052
, VAD_DUMP_CMD = 0x0053
, COMPANDER_MODE_CMD = 0x0054
//,POCVOICE_RX_PCM = 0x0055 // Opcode : 0x55 CP send Rx PCM to MSA
, KWS_CONTROL = 0x0055 //
, VOICE_RXB_PCM = 0x005b
, VOCODER_CONTROL = 0x0060
, VOICE_CONTROL = 0x0061
, VOLUME_CONTROL = 0x0062
, MUTE_CONTROL = 0x0063
, NS_CONTROL = 0x0064
, EC_CONTROL = 0x0065
, EQ_CONTROL = 0x0066
, AVC_CONTROL = 0x0067
, DTMF_CONTROL = 0x0068
, AUX_MODE_CONTROL = 0x0069
, EC_TEST_CMD = 0x006a
, NS_TEST_CMD = 0x006b
, DMA_INT_IND = 0x006b
, AVC_TEST_CMD = 0x006c
, DITHER_GEN_CONTROL = 0x006d
, CTM_CONTROL = 0x006e
, EC_FIR_UPDATE_CMD = 0x006f //obsolete
/*
* Jackie, 2011-0107
* For the MSA detection of far-end DTMF.
* We need to set control parameters into MSA
*/
, DTMFDETECTION_CONTROL = 0x0070
#if defined (SAMSUNG_NXP)
, SPEECH_PLUGIN_TX_OUTPUT_CMD = 0x0071
, SPEECH_PLUGIN_CONTROL = 0x0072
, SPEECH_PLUGIN_MODULE_CONTROL = 0x0073
#endif
, FILTERS_CONTROL = 0x0074 // Opcode : 0x74 for HPF&LPF
#if defined (MSA_MISC_PARAMETERS)
, AUDIO_MISC_CONTROL = 0x0075 // Opcode : 0x75 for MISC ITEM new feature
#endif
////Samsung DiamondVoice
#if defined (SAMSUNG_TOTORO_DIAMONDVOICE)
, DIAMONDVOICE_OUTPCMDATA = 0x0076 // DSP send tx/rx PCM to CP audio, which will be sent to DiamondVoice to process.
#endif
, AUDIO_FM_MODE = 0x0076
, AUDIO_DUALMIC_CONTROL = 0x0077 // Opcode : 0x77 set dual mic parameters
, AUDIO_ECALL_CONTROL = 0x0078 // Opcode : 0x78 set ECALL parameters
, AUDIO_GSSP_CONTROL = 0x0079 // Opcode : 0x79 turn on/off GSSP clock
, AUDIO_SSPA_CONTROL = 0x0079 // Opcode : 0x79 turn on/off GSSP clock
, AUDIO_GSSP_READ = 0x007a // Opcode : 0x7a read GSSP count
, AUDIO_TX_PCM = 0x007b // Opcode : 0x7b CP send Tx PCM into MSA
, HEADPHONE_TYPE_CHECK_WAIT_ACK = 0x007c
, AUDIO_CODECSET = 0x007d // Opcode : 0x7d CP send codec setting into MSA
, AUDIO_CODECGET = 0x007e // Opcode : 0x7e CP request codec setting from MSA
, AUDIO_VIBRATION_CONTROL = 0x007F
};
enum AudioCtrlMsg {
VOICE_TX_PACKET = 0x0040
, VOICE_DRIFT_REPORT = 0x0041
, END_VOICE_ACK = 0x0042
, PCM_STREAM_RECORD = 0x0043
, GET_PCM_FRAME = 0x0044
, VOICE_DECODER_ACK = 0x0045
, VOICE_START_ACK = 0x0046
, VOICE_PCM_ACK = 0x0047
, VOICE_DEBUG_RX_PACKET = 0x0048
, VOICE_DEBUG_PCM = 0x004A
, VOICE_CTM_NEGO_REPORT = 0x004B
//MSA will report detected DTMF code(in ASCII code)
, VOICE_GET_DTMF = 0x004C
#if defined (SAMSUNG_NXP)
, VOICE_RESERVED = 0x004D
#endif
, VOICE_MISC_REPORT = 0x004E
, VOICE_CODEC_REPORT = 0x004F
#ifdef OPT_IPC
, AUDIO_IPC_REPORT = 0x0050
#endif
#if defined (MSA_MISC_PARAMETERS)
, AUDIO_MISC_REPORT = 0x52 // AUDIO_MISC_REPORT OpCode : 0x52
#endif
////Samsung DiamondVoice
//#if defined (SAMSUNG_TOTORO_DIAMONDVOICE)
// ,DIAMONDVOICE_INPCMDATA = 0x0053 // DSP send tx/rx PCM to CP audio, which will be sent to DiamondVoice to process.
//#endif
, VAD_DUMP_MSG = 0x0053
, COMPANDER_REPORT_MSG = 0x0054
, WISE_VOICE_MSG = 0x0055
, KWS_DETECT_MSG = 0x0056
, ECALL_REPORT_MSG = 0x0077
, AUDIO_GSSP_COUNT = 0x007a // Opcode : 0x7a got GSSP count
, AUDIO_RX_PCM = 0x007b // Opcode : 0x7b MSA send Rx PCM into CP
, HEADPHONE_EVENT_MSG = 0x007c //
};
#if 0
typedef enum {
ECALL_DATA_SET = 0,
ECALL_DATA_GET = 1,
ECALL_VOICE_SET = 2,
ECALL_VOICE_GET = 3,
ECALL_TEST_CONTROL = 4,
ECALL_TEST_DATA_CONTROL = 5,
ECALL_CONNECTED = 6
}EcallIpcCmdSubOpEnum;
typedef enum {
ECALL_DATA_INDICATION = 0,
ECALL_DATA_GET_MSG = 1,
ECALL_VOICE_INDICATION = 2,
ECALL_VOICE_GET_MSG = 3,
ECALL_TEST_DATA_ACK = 4,
ECALL_TEST_TX_BUFFER_END = 5,
ECALL_TEST_RX_CTRL = 6,
ECALL_DEBUG = 7
}EcallIpcMsgSubOpEnum;
//ICAT EXPORTED ENUM
typedef enum {
ECALL_CMD_EIM_ABORT_TERMINATED = 0,
ECALL_CMD_EIM_ARM_ACTIVATE = 1,
ECALL_CMD_UPDATE_MSD = 2,
ECALL_CMD_URC_CONTROL = 3,
ECALL_CMD_FEATURE_CONTROL = 4,
ECALL_CMD_TIMERS_UPDATE = 5,
ECALL_CMD_MSD_UPDATE_CONFIG = 6,
ECALL_CMD_RESERVED_3 = 7,
ECALL_CMD_NUM_OPCODES
} EcallUecallDataCmdIdEnum;
#endif
enum VolumeSide {
TX_VOLUME
, RX_VOLUME
, SIDETONE_VOLUME
};
enum MuteSide {
TX_MUTE,
RX_MUTE
};
enum VoiceHandOver {
VOICE_RESUME,
VOICE_SUSPEND
};
#if 0
typedef enum {
AMRInitFunc,
EnableHwPathCodecFunc,
DisableHwPathCodecFunc,
EnableHwPathBTFunc,
DisableHwPathBTFunc
}CalledFunctionT;
void AudioTriStateControl(CalledFunctionT CalledFunction);
/*
Frame Type AMRcodec Total Class A Class B Class C
0 4,75 95 42 53 0
1 5,15 103 49 54 0
2 5,90 118 55 63 0
3 6,70 134 58 76 0
4 7,40 148 61 87 0
5 7,95 159 75 84 0
6 10,2 204 65 99 40
7 12,2 244 81 103 60 */
#define CLASS_A_OCTETS_4_75 6
#define CLASS_B_OCTETS_4_75 7
#define CLASS_C_OCTETS_4_75 0
#define CLASS_A_OCTETS_5_15 7
#define CLASS_B_OCTETS_5_15 7
#define CLASS_C_OCTETS_5_15 0
#define CLASS_A_OCTETS_5_90 7
#define CLASS_B_OCTETS_5_90 8
#define CLASS_C_OCTETS_5_90 0
#define CLASS_A_OCTETS_6_70 8
#define CLASS_B_OCTETS_6_70 10
#define CLASS_C_OCTETS_6_70 0
#define CLASS_A_OCTETS_7_40 8
#define CLASS_B_OCTETS_7_40 11
#define CLASS_C_OCTETS_7_40 0
#define CLASS_A_OCTETS_7_95 10
#define CLASS_B_OCTETS_7_95 11
#define CLASS_C_OCTETS_7_95 0
#define CLASS_A_OCTETS_10_2 9
#define CLASS_B_OCTETS_10_2 13
#define CLASS_C_OCTETS_10_2 5
#define CLASS_A_OCTETS_12_2 11
#define CLASS_B_OCTETS_12_2 13
#define CLASS_C_OCTETS_12_2 8
#define MAX_CLASS_A_OCTETS 11
#define MAX_CLASS_B_OCTETS 13
#define MAX_CLASS_C_OCTETS 8
#endif
#endif // AUC_H