| /** |
| * Copyright (C) Infineon Technologies Denmark A/S. All rights reserved. |
| * |
| * This document contains proprietary information belonging to Infineon |
| * Technologies Denmark A/S. Passing on and copying of this document, use |
| * and communication of its contents is not permitted without prior written |
| * authorisation. |
| * |
| * Description: |
| * Interface header file for the audio driver |
| * |
| * Revision Information: |
| * File name: \dwddrvif\inc\aud_drv.h |
| * Version: \main\34 |
| * Date: 2007-10-03 09:23:08 |
| * Responsible: soerenek |
| * Comment: |
| * added HW available for I2S1 |
| */ |
| |
| #if !defined (_AUD_INTERFACES) |
| #define _AUD_INTERFACES |
| |
| #if !defined (_WIN32) /* QQQQ Problem with including bastypes.h in the test suite - fix this later */ |
| #include "bastypes.h" |
| //#include "scttypes.h" /* QQQQ For including SDL_Pid - scttypes.h ought to be included in the file that includes aud_drv.h */ |
| #include "base_api.h" |
| #endif /* QQQQ */ |
| |
| /*changed by wangjun for NV change.[20090214]*/ |
| #include "aud_nv.h" //#include "eep.h" |
| |
| /* Temporarily inserted to protect the old I2S interface until it is no longer used */ |
| #define aud_old_I2S_interface |
| |
| /****************************************************************************** |
| * |
| * Feature defines |
| * |
| ******************************************************************************/ |
| #if defined(AUD_EXTERNAL_RINGER) && !defined(AUD_EXTERNAL_RINGER_MA2) |
| #define AUD_EXTERNAL_RINGER_MA3 |
| #endif |
| |
| /****************************************************************************** |
| * |
| * Type defines |
| * |
| ******************************************************************************/ |
| /* QQQQ UINT8, UINT16, UINT32, SINT8, SINT16, and SINT32 should not be used * |
| * - remove the defines when they are not used any longer */ |
| #if 0 //huojishan 200801.01 |
| #if !defined (UNITEST) /* UINT8 and UINT16 are already defined in Microsoft Visual Studio which is used for Unitest UMAC test environment build */ |
| #if !defined (UINT8) |
| typedef unsigned char UINT8; |
| #endif |
| |
| #if !defined (UINT16) |
| typedef unsigned short UINT16; |
| #endif |
| #endif /* UNITEST */ |
| |
| #if !defined (UINT32) |
| #if defined (_WIN32) |
| typedef unsigned int UINT32; |
| #else |
| typedef unsigned long UINT32; |
| #endif |
| #endif /* UINT32 */ |
| |
| #if !defined (SINT8) |
| typedef signed char SINT8; |
| #endif |
| |
| #if !defined (SINT16) |
| typedef signed short SINT16; |
| #endif |
| |
| #if !defined (SINT32) |
| #if !defined (_WIN32) |
| typedef signed long SINT32; |
| #else |
| typedef signed int SINT32; |
| #endif |
| #endif /* SINT32 */ |
| |
| #if defined (_WIN32) /* QQQQ Problem with including bastypes.h in the test suite - fix this later */ |
| #if !defined (U8) |
| typedef unsigned char U8; |
| #endif |
| #if !defined (U16) |
| typedef unsigned short U16; |
| #endif |
| #if !defined (U32) |
| typedef unsigned int U32; |
| #endif |
| #if !defined (S8) |
| typedef signed char S8; |
| #endif |
| #if !defined (S16) |
| typedef signed short S16; |
| #endif |
| #if !defined (S32) |
| typedef signed int S32; |
| #endif |
| #endif /* QQQQ _WIN32 */ |
| #endif |
| |
| /* Defines/includes for PC/target builds */ |
| #if defined (_WIN32) |
| #define SDL_Pid U8 |
| #define SDL_boolean BOOL |
| #endif /* _WIN32 */ |
| |
| #define DWD_HUGE |
| #define DWD_AUDIO_FAR |
| |
| /* Return codes */ |
| #define aud_rc_ok 0 |
| #define aud_rc_resource_in_use -1 |
| #define aud_rc_resource_conflict -2 |
| #define aud_rc_handle_not_used -3 |
| #define aud_rc_no_hw_support -4 |
| #define aud_rc_sharing_violation -5 |
| #define aud_rc_parameter_out_of_range -6 |
| #define aud_rc_audio_driver_disabled -7 |
| #define aud_rc_missing_dsp_resources -8 |
| #define aud_rc_format_not_supported -10 |
| #define aud_rc_no_playback -11 |
| #define aud_rc_unknown_position -12 |
| #define aud_rc_request_error -13 |
| #define aud_rc_syntax_error -14 |
| #define aud_rc_tone_error -15 |
| #define aud_rc_storage_problems -16 |
| #define aud_rc_performance_problems -17 |
| #define aud_rc_ram_buffer_used -18 |
| #define aud_rc_suspend_resume_error -19 |
| #define aud_rc_info -20 |
| #define aud_rc_playback_finish -21 |
| #define aud_rc_playback_started -22 |
| #define aud_rc_playback_stopped -23 |
| #define aud_rc_playback_suspended -24 |
| #define aud_rc_playback_loop -25 |
| #define aud_rc_recording_finish -26 |
| #define aud_rc_recording_started -27 |
| #define aud_rc_user_event -28 |
| #define aud_rc_elapsed_time -29 |
| #define aud_rc_total_playtime -30 |
| #define aud_rc_not_supported -31 |
| #define aud_rc_mapi -32 |
| #define aud_rc_current_frame -33 |
| #define aud_rc_backwardforward_info -34 |
| #define aud_rc_path_removal_success -35 |
| #define aud_rc_path_addition_success -36 |
| #define aud_rc_path_addition_conflict -37 |
| #define aud_rc_path_removal_error -38 |
| #define aud_rc_user_message -39 |
| #define aud_rc_encoding_started -40 |
| #define aud_rc_encoding_stopped -41 |
| #define aud_rc_encoder_suspended -42 |
| #define aud_rc_I2S_started -43 |
| #define aud_rc_I2S_stopped -44 |
| #define aud_rc_I2S_setup_error -45 |
| #define aud_rc_path_in_use -46 |
| /* !!! Please inform the MobileAnalyzer decoding maintainer (HHE) when adding new return codes */ |
| |
| /* Used for defining which HW is present in the system in question - must be updated when aud_resource_enum is updated */ |
| #define AUD_HW_AVAILABLE_SPEECH 0x00000001 |
| #define AUD_HW_AVAILABLE_TONE_GENERATOR 0x00000002 |
| #define AUD_HW_AVAILABLE_RINGER 0x00000004 |
| #define AUD_HW_AVAILABLE_EXTERNAL_VIBRATOR 0x00000008 |
| #define AUD_HW_AVAILABLE_EXTERNAL_AMPLIFIER 0x00000010 |
| #define AUD_HW_AVAILABLE_FM_RADIO 0x00000020 |
| #define AUD_HW_AVAILABLE_RECORDING_VM 0x00000040 |
| #define AUD_HW_AVAILABLE_PLAYBACK_VM 0x00000080 |
| #define AUD_HW_AVAILABLE_PLAYBACK_MP3 0x00000100 |
| #define AUD_HW_AVAILABLE_I2S_PCM 0x00000200 |
| #define AUD_HW_AVAILABLE_INTERNAL_MIDI 0x00000400 |
| #define AUD_HW_AVAILABLE_TTY 0x00000800 |
| #define AUD_HW_AVAILABLE_PLAYBACK_PCM 0x00001000 |
| #define AUD_HW_AVAILABLE_RECORD_PCM 0x00002000 |
| #define AUD_HW_AVAILABLE_MAPI 0x00004000 |
| #define AUD_HW_AVAILABLE_INBAND 0x00008000 |
| #define AUD_HW_ABAILABLE_SMPOWER_BACKSPEAKER 0x00010000 |
| #define AUD_HW_AVAILABLE_SBC_ENCODER 0x00020000 |
| #define AUD_HW_AVAILABLE_I2S2_RX 0x00040000 |
| #define AUD_HW_AVAILABLE_I2S2_TX 0x00080000 |
| |
| #define AUD_HW_AVAILABLE_I2S1_RX 0x00000000 |
| #define AUD_HW_AVAILABLE_I2S1_TX 0x00000000 |
| #define AUD_HW_AVAILABLE_I2S1_BLUETOOTH 0x00400000 |
| /* Test handles - update this list when the list above is updated */ |
| #define AUD_TEST_HANDLE 0xFF |
| #define AUD_SPEECH_TEST_HANDLE 0xFE |
| #define AUD_TONE_GENERATOR_TEST_HANDLE 0xFD |
| #define AUD_AMPLIFIER_TEST_HANDLE 0xFC |
| #define AUD_RINGER_TEST_HANDLE 0xFB |
| #define AUD_FM_RADIO_TEST_HANDLE 0xFA |
| #define AUD_RECORDING_VM_TEST_HANDLE 0xF9 |
| #define AUD_PLAYBACK_VM_TEST_HANDLE 0xF8 |
| #define AUD_PLAYBACK_MP3_TEST_HANDLE 0xF7 |
| #define AUD_TTY_TEST_HANDLE 0xF6 |
| #define AUD_VIBRATOR_TEST_HANDLE 0xF5 |
| #define AUD_MIDI_PLAYER_TEST_HANDLE 0xF4 |
| #define AUD_PCM_CHANNEL_TEST_HANDLE 0xF3 |
| #define AUD_PLAYBACK_PCM_TEST_HANDLE 0xF2 |
| #define AUD_RECORD_PCM_TEST_HANDLE 0xF1 |
| #define AUD_MAPI_TEST_HANDLE 0xF0 |
| #define AUD_INBAND_TEST_HANDLE 0xEF |
| #define AUD_SMPOWER_BACKSPEAKER_TEST_HANDLE 0xEE |
| #define AUD_SBC_ENCODER_TEST_HANDLE 0xED |
| #define AUD_I2S2_RX_TEST_HANDLE 0xEC |
| #define AUD_I2S2_TX_TEST_HANDLE 0xEB |
| |
| /* For compatility reasons with atcptst */ |
| #define AUD_MIC 1 |
| #define AUD_EARPIECE 2 |
| |
| /****************************************************************************** |
| * |
| * External enumerations and structures |
| * |
| ******************************************************************************/ |
| |
| /* Resources */ |
| typedef enum { |
| aud_resource_speech, /* 0 */ |
| aud_resource_tone_generator, |
| aud_resource_ringer, /* This Does NOT include the vibrator */ |
| aud_resource_vibrator, |
| aud_resource_amplifier, /* External amplifier for speaker phone */ |
| aud_resource_radio, /* 5 */ |
| aud_resource_record_vm, |
| aud_resource_playback_vm, |
| aud_resource_playback_mp3, |
| aud_resource_PCM_channel, /* Replaced by I2S2_Rx and I2S2_Tx (05-12-2006) */ |
| aud_resource_midi_player, /* 10 */ |
| aud_resource_tty, |
| aud_resource_playback_pcm, |
| aud_resource_record_pcm, |
| aud_resource_mapi, |
| aud_resource_inband, /* 15 */ /* Virtual resource used to indicate whether non-baseband audio is active. */ |
| aud_resource_smpower_backspeaker, /* SM power only if other devices input audio through SP power gain. */ |
| aud_resource_sbc_encoder, /*SBC Encoder */ |
| aud_resource_I2S2_Rx, |
| aud_resource_I2S2_Tx, |
| aud_resource_end |
| } aud_resource_enum; /* When adding more resources, also add them to the defines at the top of this file, and notify PhoneTool group */ |
| |
| /* Priorities for resource allocation */ |
| typedef enum { |
| aud_priority_normal, |
| aud_priority_high, |
| aud_priority_end |
| } aud_priority_enum; |
| |
| /* Mute-related enumerations */ |
| typedef enum { |
| aud_mute_enable, |
| aud_mute_disable, |
| aud_mute_end |
| } aud_mute_enum; |
| |
| typedef enum { |
| aud_mute_left_channel_dac, |
| aud_mute_right_channel_dac, |
| aud_mute_dac_end |
| } aud_mute_dac_enum; |
| |
| typedef enum { |
| aud_direction_uplink, /* 0 */ |
| aud_direction_downlink, |
| aud_direction_updownlink, |
| aud_direction_downlink_left, |
| aud_direction_downlink_right, |
| aud_direction_uplink_speech, /* 5 */ |
| aud_direction_downlink_speech, |
| aud_direction_updownlink_speech, |
| aud_direction_end |
| } aud_direction_enum; |
| |
| typedef enum { |
| aud_direction_resource_uplink, |
| aud_direction_resource_downlink, |
| aud_direction_resource_updownlink, |
| aud_direction_resource_end |
| } aud_ul_dl_direction_enum; |
| |
| /* Path-related enumerations */ |
| typedef enum { |
| aud_disable_path, |
| aud_enable_path, |
| aud_audio_path_end |
| } aud_audio_path_enum; |
| |
| typedef enum { |
| aud_handset_mic, /* 0 */ |
| aud_headset_mic, |
| aud_I2S1_rx, /*Now used for any kind of bluetooth device connection*/ |
| aud_tty_uplink, |
| aud_hfcarkit_mic, |
| aud_I2S1_inband_rx, /* 5 */ |
| aud_handset_mic_42dB, |
| aud_handset_dthf_uplink, |
| aud_mic_mute, |
| aud_handset_mic_slidedown, |
| aud_handset_mic_loopback, /* 10 */ |
| aud_I2S1_rx_loopback, |
| aud_media_to_uplink, |
| aud_media_to_uplink_hifi, |
| aud_stereo_mic, |
| aud_scheduler_8kHz, /* 15 */ |
| aud_scheduler_16kHz, |
| aud_scheduler_48kHz, |
| aud_external_stereo_input, |
| aud_headset_mic_42dB, |
| aud_uplink_source_end |
| } aud_uplink_source_enum; /* When adding more paths, remember to notify the PhoneTool group */ |
| |
| typedef enum { |
| aud_normal_earpiece, /* 0 */ |
| aud_mono_headset, |
| aud_stereo_headset, |
| aud_backspeaker, |
| aud_I2S1_tx, |
| aud_tty_downlink, /* 5 */ |
| aud_mono_headset_external_ringer, |
| aud_stereo_headset_external_ringer, |
| aud_backspeaker_path_downlink, |
| aud_earpiece_path_downlink, |
| aud_backspeaker_external_ringer, /* 10 */ |
| aud_hfcarkit_speaker, |
| aud_I2S1_inband_tx, /*Special path used for routing inband audio (like ringtones) to the bt headset*/ |
| aud_backspeaker_stereo, |
| aud_fmradio_backspeaker, |
| aud_fmradio_headset, /* 15 */ |
| aud_companion_mono_headset, |
| aud_companion_stereo_headset, |
| aud_companion_mono_backspeaker, |
| aud_companion_stereo_backspeaker, |
| aud_smpower_backspeaker, /* 20 */ /*Special path to backspeaker for non baseband audio*/ |
| aud_normal_earpiece_loopback, |
| aud_I2S1_tx_loopback, |
| aud_media_to_downlink_mute, |
| aud_sidetone_loopback, |
| aud_I2S2_external, /* 25 */ |
| aud_tmp_downlink_path, /* To be replaced when a new path is added. Preserved for PhoneTool compatibility. */ |
| aud_downlink_source_end |
| } aud_downlink_source_enum; /* When adding more paths, remember to notify the PhoneTool group */ |
| |
| /* Enable/disable enumerations */ |
| typedef enum { |
| aud_enable, |
| aud_disable, |
| aud_enable_disable_end |
| } aud_enable_disable_enum; |
| |
| /* Volume enumerations */ |
| typedef enum { |
| aud_ringer_volume_off, |
| aud_ringer_volume_1, |
| aud_ringer_volume_2, |
| aud_ringer_volume_3, |
| aud_ringer_volume_4, |
| aud_ringer_volume_5, |
| aud_ringer_volume_in_call, |
| aud_ringer_volume_init, /* Only for internal use in audio driver */ |
| aud_ringer_volume_end |
| } aud_ringer_volume_enum; |
| |
| typedef enum { |
| aud_speech_volume_1, |
| aud_speech_volume_2, |
| aud_speech_volume_3, |
| aud_speech_volume_4, |
| aud_speech_volume_5, |
| aud_speech_volume_6, |
| aud_speech_volume_7, |
| aud_speech_volume_8, |
| aud_speech_volume_9, |
| aud_speech_volume_10, |
| aud_speech_volume_special, /* For test purpose only */ |
| aud_speech_volume_end |
| } aud_speech_volume_enum; |
| |
| typedef enum { |
| aud_volume_0=0, |
| aud_volume_1=1, |
| aud_volume_2, |
| aud_volume_3, |
| aud_volume_4, |
| aud_volume_5, |
| aud_volume_6, |
| aud_volume_7, |
| aud_volume_8, |
| aud_volume_9, |
| aud_volume_10, |
| aud_volume_11, |
| aud_volume_12, |
| aud_volume_13, |
| aud_volume_14, |
| aud_volume_15, |
| aud_volume_16, |
| aud_volume_17, |
| aud_volume_18, |
| aud_volume_19, |
| aud_volume_20, |
| aud_volume_21, |
| aud_volume_22, |
| aud_volume_23, |
| aud_volume_24, |
| aud_volume_25, |
| aud_volume_26, |
| aud_volume_27, |
| aud_volume_28, |
| aud_volume_29, |
| aud_volume_30, |
| aud_volume_31, |
| aud_volume_32, |
| aud_volume_33, |
| aud_volume_34, |
| aud_volume_35, |
| aud_volume_36, |
| aud_volume_37, |
| aud_volume_38, |
| aud_volume_39, |
| aud_volume_40, |
| aud_volume_41, |
| aud_volume_42, |
| aud_volume_43, |
| aud_volume_44, |
| aud_volume_45, |
| aud_volume_46, |
| aud_volume_47, |
| aud_volume_48, |
| aud_volume_49, |
| aud_volume_50, |
| aud_volume_51, |
| aud_volume_52, |
| aud_volume_53, |
| aud_volume_54, |
| aud_volume_55, |
| aud_volume_56, |
| aud_volume_57, |
| aud_volume_58, |
| aud_volume_59, |
| aud_volume_60, |
| aud_volume_61, |
| aud_volume_62, |
| aud_volume_63, |
| aud_volume_64, |
| aud_volume_65, |
| aud_volume_66, |
| aud_volume_67, |
| aud_volume_68, |
| aud_volume_69, |
| aud_volume_70, |
| aud_volume_71, |
| aud_volume_72, |
| aud_volume_73, |
| aud_volume_74, |
| aud_volume_75, |
| aud_volume_76, |
| aud_volume_77, |
| aud_volume_78, |
| aud_volume_79, |
| aud_volume_80, |
| aud_volume_81, |
| aud_volume_82, |
| aud_volume_83, |
| aud_volume_84, |
| aud_volume_85, |
| aud_volume_86, |
| aud_volume_87, |
| aud_volume_88, |
| aud_volume_89, |
| aud_volume_90, |
| aud_volume_91, |
| aud_volume_92, |
| aud_volume_93, |
| aud_volume_94, |
| aud_volume_95, |
| aud_volume_96, |
| aud_volume_97, |
| aud_volume_98, |
| aud_volume_99, |
| aud_volume_100, |
| aud_volume_special, /* For test purpose only */ |
| aud_volume_end |
| } aud_volume_enum; |
| |
| /* Tone enumerations */ |
| typedef enum { |
| aud_tone_DTMF_0, /* 0 */ |
| aud_tone_DTMF_1, |
| aud_tone_DTMF_2, |
| aud_tone_DTMF_3, |
| aud_tone_DTMF_4, |
| aud_tone_DTMF_5, /* 5 */ |
| aud_tone_DTMF_6, |
| aud_tone_DTMF_7, |
| aud_tone_DTMF_8, |
| aud_tone_DTMF_9, |
| aud_tone_DTMF_hash, /* 10 */ |
| aud_tone_DTMF_asterix, |
| aud_tone_key_tone_1, // Not in use. |
| aud_tone_key_tone_2, // Not in use. |
| aud_tone_key_tone_3, // Not in use. |
| aud_tone_key_tone_4, /* 15 */ /* Not in use. */ |
| aud_tone_key_tone_5, // Not in use. |
| aud_tone_sv_subscriber_busy, |
| aud_tone_sv_congestion, |
| aud_tone_sv_radio_path_ack, |
| aud_tone_sv_radio_path_not_avail, /* 20 */ |
| aud_tone_sv_error_info, |
| aud_tone_sv_call_waiting, |
| aud_tone_info_free_tone, |
| aud_tone_info_connection, |
| aud_tone_info_disconnect, /* 25 */ |
| aud_tone_info_device_in, |
| aud_tone_info_device_out, |
| aud_tone_info_msg_full, |
| aud_tone_info_ussd, |
| aud_tone_info_minutte_minder, /* 30 */ |
| aud_tone_info_error_1, |
| aud_tone_info_error_2, |
| aud_tone_info_sms_in_call, |
| aud_tone_info_broadcast_in_call, |
| aud_tone_info_alarm_in_call, /* 35 */ |
| aud_tone_info_low_bat_in_call, |
| aud_tone_info_power_off, |
| aud_tone_info_power_on, |
| aud_tone_info_single_beep, |
| aud_tone_info_positive_acknowledgement, /* 40 */ |
| aud_tone_info_negative_acknowledgement, |
| aud_tone_info_auto_redial, |
| aud_tone_info_network_attention, |
| aud_tone_info_dial_tone, |
| aud_tone_info_low_bat, /* 45 */ |
| aud_tone_id_end |
| } aud_tone_id_enum; |
| |
| typedef enum { |
| aud_single_user_tone, |
| aud_dual_user_tone, |
| aud_triple_user_tone, |
| aud_tone_type_end |
| } aud_tone_type_enum; |
| |
| /* Tone generator structures */ |
| typedef struct { |
| U16 freq1; |
| S16 amp1; |
| U16 duration; |
| } aud_single_user_tone_type; |
| |
| typedef struct { |
| U16 freq1; |
| S16 amp1; |
| U16 freq2; |
| S16 amp2; |
| U16 duration; |
| } aud_dual_user_tone_type; |
| |
| typedef struct { |
| U16 freq1; |
| S16 amp1; |
| U16 freq2; |
| S16 amp2; |
| U16 freq3; |
| S16 amp3; |
| U16 duration; |
| } aud_triple_user_tone_type; |
| |
| /* Ringer enumerations */ |
| typedef enum { |
| aud_ringer_info_power_off, /* 0 */ |
| aud_ringer_info_power_on, |
| aud_ringer_info_low_bat, |
| aud_ringer_info_connection, |
| aud_ringer_info_error_1, |
| aud_ringer_info_error_2, /* 5 */ |
| aud_ringer_info_device_in, |
| aud_ringer_info_device_out, |
| aud_ringer_info_msg_full, |
| aud_ringer_message_1, |
| aud_ringer_message_2, /* 10 */ |
| aud_ringer_message_3, |
| aud_ringer_message_4, |
| aud_ringer_message_5, |
| aud_ringer_message_6, |
| aud_ringer_message_7, /* 15 */ |
| aud_ringer_message_8, |
| aud_ringer_message_9, |
| aud_ringer_message_10, |
| aud_ringer_broadcast_1, |
| aud_ringer_broadcast_2, /* 20 */ |
| aud_ringer_broadcast_3, |
| aud_ringer_broadcast_4, |
| aud_ringer_broadcast_5, |
| aud_ringer_broadcast_6, |
| aud_ringer_broadcast_7, /* 25 */ |
| aud_ringer_broadcast_8, |
| aud_ringer_broadcast_9, |
| aud_ringer_broadcast_10, |
| aud_ringer_alarm_1, |
| aud_ringer_alarm_2, /* 30 */ |
| aud_ringer_alarm_3, |
| aud_ringer_alarm_4, |
| aud_ringer_alarm_5, |
| aud_ringer_alarm_6, |
| aud_ringer_alarm_7, /* 35 */ |
| aud_ringer_alarm_8, |
| aud_ringer_alarm_9, |
| aud_ringer_alarm_10, |
| aud_ringer_1, |
| aud_ringer_2, /* 40 */ |
| aud_ringer_3, |
| aud_ringer_4, |
| aud_ringer_5, |
| aud_ringer_6, |
| aud_ringer_7, /* 45 */ |
| aud_ringer_8, |
| aud_ringer_9, |
| aud_ringer_10, |
| aud_ringer_11, |
| aud_ringer_12, /* 50 */ |
| aud_ringer_13, |
| aud_ringer_14, |
| aud_ringer_15, |
| aud_ringer_16, |
| aud_ringer_17, /* 55 */ |
| aud_ringer_18, |
| aud_ringer_19, |
| aud_ringer_20, |
| aud_ringer_21, |
| aud_ringer_22, /* 60 */ |
| aud_ringer_23, |
| aud_ringer_24, |
| aud_ringer_25, |
| aud_ringer_26, |
| aud_ringer_27, /* 65 */ |
| aud_ringer_28, |
| aud_ringer_29, |
| aud_ringer_30, |
| aud_ringer_31, |
| aud_ringer_32, /* 70 */ |
| aud_ringer_33, |
| aud_ringer_34, |
| aud_ringer_35, |
| aud_ringer_36, |
| aud_ringer_37, /* 75 */ |
| aud_ringer_38, |
| aud_ringer_39, |
| aud_ringer_40, |
| aud_ringer_41, |
| aud_ringer_42, /* 80 */ |
| aud_ringer_43, |
| aud_ringer_44, |
| aud_ringer_45, |
| aud_ringer_46, |
| aud_ringer_47, /* 85 */ |
| aud_ringer_48, |
| aud_ringer_49, |
| aud_ringer_50, |
| aud_ringer_game_1, |
| aud_ringer_game_2, /* 90 */ |
| aud_ringer_game_3, |
| aud_ringer_game_4, |
| aud_ringer_game_5, |
| aud_ringer_game_6, |
| aud_ringer_game_7, /* 95 */ |
| aud_ringer_game_8, |
| aud_ringer_game_9, |
| aud_ringer_game_10, |
| aud_ringer_camera_1, |
| aud_ringer_prod_test_1, /* 100 */ |
| aud_ringer_prod_test_2, |
| aud_ringer_prod_test_3, |
| aud_ringer_prod_test_4, |
| ringer_test_01, |
| ringer_test_02, /* 105 */ |
| ringer_test_03, |
| ringer_test_04, |
| ringer_test_05, |
| ringer_test_06, |
| ringer_test_07, /* 110 */ |
| ringer_test_08, |
| ringer_test_09, |
| ringer_test_10, |
| ringer_test_11, |
| ringer_test_12, /* 115 */ |
| ringer_test_13, |
| ringer_test_14, |
| ringer_test_15, |
| ringer_test_16, |
| ringer_test_17, /* 120 */ |
| ringer_test_18, |
| ringer_test_19, |
| ringer_test_20, |
| ringer_test_21, |
| ringer_test_22, /* 125 */ |
| ringer_test_23, |
| ringer_test_24, |
| ringer_test_25, |
| ringer_test_26, |
| ringer_test_rambuff, |
| |
| aud_ringer_tone_id_end |
| } aud_ringer_tone_id_enum; |
| |
| typedef enum { |
| aud_ringer_device_sound, |
| aud_ringer_device_vibrator, /* Not used anymore (the functions for starting/stopping vibrator should be used) */ |
| aud_ringer_device_sound_and_vibrator, /* Not used anymore (the functions for starting/stopping vibrator should be used) */ |
| aud_ringer_device_end |
| } aud_ringer_device_enum; |
| |
| typedef enum { |
| aud_format_smaf, /* MA2/MA3 NB: SMAF is not just SMAF. With the MA3 came extentions |
| to the SMAF, which cannot be played on a MA2 */ |
| aud_format_midi, /* MA2/MA3 NB: Be aware that MIDI is many different formats, |
| only following formats are supported: SP-MIDI, SMF format 0 and 1 */ |
| aud_format_smaf_phrase_l1, /* MA3/MA2 */ |
| aud_format_rmd, /* MA3 */ |
| aud_format_imelody, /* MA2/MA3 */ |
| aud_format_buzzer, /* Buzzer */ |
| aud_format_wav, /* wav */ |
| aud_format_mp3, /* mp3 */ |
| aud_format_smafaudio, /* pcm data in smaf header container*/ |
| aud_format_end |
| } aud_format_enum; |
| |
| /* Vibrator enumerations */ |
| typedef enum { |
| Aud_vibrator_mode_async_1, |
| Aud_vibrator_mode_async_2, |
| Aud_vibrator_mode_sync_1, |
| Aud_vibrator_mode_sync_2, |
| aud_vibmode_end |
| } aud_vibrator_mode_enum; |
| |
| typedef enum { |
| aud_vibrator_on, /* 0 */ |
| aud_vibrator_async_blinking1, |
| aud_vibrator_async_blinking2, |
| aud_vibrator_async_blinking3, |
| aud_vibrator_async_blinking4, |
| aud_vibrator_async_blinking5, /* 5 */ |
| aud_vibrator_async_blinking6, |
| aud_vibrator_async_blinking7, |
| aud_vibrator_async_blinking8, |
| aud_vibrator_async_blinking9, |
| aud_vibrator_async_blinking10, /* 10 */ |
| aud_vibrator_async_blinking11, |
| aud_vibrator_async_blinking12, |
| aud_vibrator_async_blinking13, |
| aud_vibrator_async_blinking14, |
| aud_vibrator_async_blinking15, /* 15 */ |
| aud_vibrator_async_blinking16, |
| aud_vibrator_sync1, |
| aud_vibrator_sync2, |
| aud_vibrator_sync3, |
| aud_vibrator_sync4, /* 20 */ |
| aud_vib_mode_end |
| } aud_vib_mode; |
| |
| typedef enum { |
| Aud_vibrator_on_200ms, |
| Aud_vibrator_on_300ms, |
| Aud_vibrator_on_400ms, |
| Aud_vibrator_on_600ms, |
| Aud_vibrator_on_800ms, |
| Aud_vibrator_on_1000ms, |
| Aud_vibrator_on, |
| Aud_vibrator_on_end |
| } aud_vibrator_on_enum; |
| |
| typedef enum { |
| Aud_vibrator_off_200ms, |
| Aud_vibrator_off_300ms, |
| Aud_vibrator_off_400ms, |
| Aud_vibrator_off_600ms, |
| Aud_vibrator_off, |
| Aud_vibrator_off_end |
| } aud_vibrator_off_enum; |
| |
| /* FM radio enumerations */ |
| typedef enum { |
| aud_fm_radio_rssi_0, |
| aud_fm_radio_rssi_1, |
| aud_fm_radio_rssi_2, |
| aud_fm_radio_rssi_3, |
| aud_fm_radio_rssi_4, |
| aud_fm_radio_rssi_5, |
| aud_fm_radio_rssi_6, |
| aud_fm_radio_rssi_7, |
| aud_fm_radio_rssi_8, |
| aud_fm_radio_rssi_9, |
| aud_fm_radio_rssi_enum_end |
| } aud_fm_radio_rssi_enum; |
| |
| typedef enum { |
| aud_fm_radio_seek_off, /* Station preset */ |
| aud_fm_radio_seek_up, /* Auto seek up */ |
| aud_fm_radio_seek_down, /* Auto seek down */ |
| aud_fm_radio_seek_enum_end |
| } aud_fm_radio_seek_mode_enum; |
| |
| typedef enum { |
| aud_fm_radio_rssi_info, /* SDL message contains RSSI level */ |
| aud_fm_radio_seek_info, /* SDL message contains station seek result */ |
| aud_fm_radio_rds_info, /* SDL message contains RDS data - only used for module testing */ |
| aud_fm_radio_freq_info, /* SDL message contains frequency returned during seeking */ |
| aud_fm_radio_sdl_opcodes_end |
| } aud_fm_radio_sdl_opcodes_enum; |
| |
| /* Voice memo enumerations */ |
| typedef enum { |
| aud_vm_mode_standby, |
| aud_vm_mode_tch, |
| aud_vm_mode_end |
| } aud_vm_mode_enum; |
| |
| typedef enum { |
| aud_dsp_format_fr, |
| aud_dsp_format_amr, |
| aud_dsp_format_pcm, |
| aud_dsp_format_amr_if2, |
| aud_dsp_format_end |
| } aud_dsp_format_enum; |
| |
| typedef enum { |
| aud_media_ffs, |
| aud_media_mmc, |
| aud_media_ram, |
| aud_media_test_ram, |
| aud_media_I2S, |
| aud_media_mmf, /* Support for Multimedia framework */ |
| aud_media_mmf_test, /* Support for Multimedia framework */ |
| aud_media_vr, |
| aud_media_fs_cdrive, /*FS_FTL_DEVICE1 RW mode*/ |
| aud_media_fs_edrive, /*FS_FTL_DEVICE2, RO only */ |
| aud_media_fs_fdrive, /*FS_FTL_DEVICE1 RW mode*/ |
| aud_media_end |
| } aud_media_enum; |
| |
| typedef enum { |
| aud_amr_475, /* 0 */ |
| aud_amr_515, |
| aud_amr_590, |
| aud_amr_670, |
| aud_amr_740, |
| aud_amr_795, /* 5 */ |
| aud_amr_102, |
| aud_amr_122, |
| aud_amr_end |
| } aud_amr_bitrate; |
| |
| |
| /* PCM player/recorder enumerations */ |
| typedef enum { |
| aud_pcm_mode_mono, |
| aud_pcm_mode_dual_mono, |
| aud_pcm_mode_stereo, |
| aud_pcm_mode_end |
| } aud_pcm_mode_enum; |
| |
| typedef enum { |
| aud_pcm_rate_1, |
| aud_pcm_rate_2, |
| aud_pcm_rate_3, |
| aud_pcm_rate_4, |
| aud_pcm_rate_5, |
| aud_pcm_rate_6, |
| aud_pcm_rate_7, |
| aud_pcm_rate_8, |
| aud_pcm_rate_9, |
| aud_pcm_rate_end |
| } aud_pcm_sample_rate_enum; |
| |
| typedef enum { |
| aud_pcm_format_pcm, |
| aud_pcm_format_adpcm, |
| aud_pcm_format_wave, |
| aud_pcm_format_end |
| } aud_pcm_format_enum; |
| |
| /* Yamaha Music API (mapi) enumerations */ |
| typedef enum { |
| aud_mapi_getmode, /* 0 */ |
| aud_mapi_setmode, |
| aud_mapi_resetmode, |
| aud_mapi_initialize, |
| aud_mapi_terminate, |
| aud_mapi_checkload, /* 5 */ |
| aud_mapi_checkunload, |
| aud_mapi_getcontentsdata, |
| aud_mapi_getphraselist, |
| aud_mapi_realtime_midiopen, |
| aud_mapi_realtime_midisendchmessage, /* 10 */ |
| aud_mapi_realtime_starttimer, |
| aud_mapi_realtime_stoptimer, |
| aud_mapi_realtime_midiclose, |
| aud_mapi_realtime_midisendsysexmessage, |
| aud_mapi_realtime_midisetapivolume, /* 15 */ |
| aud_mapi_realtime_midigetchvolume, |
| aud_mapi_phrase_audioload, |
| aud_mapi_phrase_audioopen, |
| aud_mapi_phrase_audiostandby, |
| aud_mapi_phrase_audiocontrol, /* 20 */ |
| aud_mapi_phrase_audiostart, |
| aud_mapi_phrase_audiostop, |
| aud_mapi_phrase_audioclose, |
| aud_mapi_phrase_audiounload, |
| aud_mapi_phrase_getposition, /* 25 */ |
| aud_mapi_phrase_setevhandler, |
| aud_mapi_phrase_getlink, |
| aud_mapi_phrase_setlink, |
| aud_mapi_phrase_kill, |
| aud_mapi_phrase_setdata, /* 30 */ |
| aud_mapi_phrase_seek, |
| aud_mapi_phrase_getlength, |
| aud_mapi_phrase_setvolume, |
| aud_mapi_phrase_setpanpot, |
| aud_mapi_phrase_play, /* 35 */ |
| aud_mapi_phrase_stop, |
| aud_mapi_phrase_removedata, |
| aud_mapi_phrase_getstatus, |
| aud_mapi_phrase_pause, |
| aud_mapi_phrase_restart, /* 40 */ |
| aud_mapi_melody_control, |
| aud_mapi_melody_openarginit, |
| aud_mapi_melody_open, |
| aud_mapi_melody_standby, |
| aud_mapi_melody_waitready, /* 45 */ |
| aud_mapi_melody_start, |
| aud_mapi_melody_stop, |
| aud_mapi_melody_seek, |
| aud_mapi_melody_close, |
| aud_mapi_melody_load, /* 50 */ |
| aud_mapi_melody_unload, |
| aud_mapi_devicecontrol, |
| aud_mapi_melody_end |
| } aud_mapi_if_enum; |
| |
| /* SBC Encoder enumerations */ |
| typedef enum { |
| aud_sbc_mono, |
| aud_sbc_dual_channel, |
| aud_sbc_stereo, |
| aud_sbc_joint_stereo, |
| aud_sbc_channel_mode_end |
| } aud_sbc_encoder_channel_mode_enum; |
| |
| typedef enum { |
| aud_sbc_sample_rate_16_khz, |
| aud_sbc_sample_rate_32_khz, |
| aud_sbc_sample_rate_44_1_khz, |
| aud_sbc_sample_rate_48_khz, |
| aud_sbc_sample_rate_end |
| } aud_sbc_encoder_sample_rate_enum; |
| |
| typedef enum { |
| aud_sbc_number_of_blocks_4, |
| aud_sbc_number_of_blocks_8, |
| aud_sbc_number_of_blocks_12, |
| aud_sbc_number_of_blocks_16, |
| aud_sbc_number_of_blocks_end |
| } aud_sbc_encoder_number_of_blocks_enum; |
| |
| typedef enum { |
| aud_sbc_internal_data_encoding_mode, |
| aud_sbc_external_data_encoding_mode, |
| aud_sbc_data_mode_end |
| } aud_sbc_encoder_data_mode_enum; |
| |
| /* I2S enumerations */ |
| typedef enum { |
| aud_dai_mode_normal, |
| aud_dai_mode_codec_test, |
| aud_dai_mode_acoustic_test, |
| aud_dai_mode_loopback, |
| aud_dai_mode_end |
| } aud_dai_mode_enum; |
| |
| #if defined (aud_old_I2S_interface) |
| typedef enum { |
| aud_I2Sx_mode1, /* Mode 1: 16 bit 8 kHz Master, Burst Mode, Mono */ |
| aud_I2Sx_mode2, /* Mode 2: 16 bit 8 kHz Slave, Burst Mode, Mono */ |
| aud_I2Sx_mode3, /* Mode 3: 16 bit 8 kHz Master, Normal Mode, Mono */ |
| aud_I2Sx_mode4, /* Mode 4: 16 bit 8 kHz Slave, Normal Mode, Mono */ |
| aud_I2Sx_mode5, /* Mode 5: 16 bit 16 kHz Master, Normal Mode, Mono */ |
| aud_I2Sx_mode6, /* Mode 6: 16 bit 16 kHz Slave, Normal Mode, Mono */ |
| aud_I2Sx_mode7, /* Mode 7: 16 bit 32 kHz Master, Normal Mode, Mono */ |
| aud_I2Sx_mode8, /* Mode 8: 16 bit 32 kHz Master, Normal Mode, Stereo */ |
| aud_I2Sx_mode9, /* Mode 9: 16 bit 32 kHz Slave, Normal Mode, Mono*/ |
| aud_I2Sx_mode10, /* Mode 10: 16 bit 44.1 kHz Master, Normal Mode, Mono */ |
| aud_I2Sx_mode11, /* Mode 11: 16 bit 44.1 kHz Master, Normal Mode, Stereo */ |
| aud_I2Sx_mode12, /* Mode 12: 16 bit 44.1 kHz Slave, Normal Mode, Mono */ |
| aud_I2Sx_mode13, /* Mode 13: 16 bit 48 kHz Master, Normal Mode, Mono */ |
| aud_I2Sx_mode14, /* Mode 14: 16 bit 48 kHz Master, Normal Mode, Stereo */ |
| aud_I2Sx_mode15, /* Mode 15: 16 bit 48 kHz Slave, Normal Mode, Mono */ |
| aud_I2S2_mode_dai, /* set up the I2S2 to dai mode*/ |
| aud_I2Sx_mode16, /* Mode 16: 16bit 8 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode17, /* Mode 17: 16bit 11.025 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode18, /* Mode 18: 16bit 12 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode19, /* Mode 19: 16bit 16 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode20, /* Mode 20: 16bit 22.05 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode21, /* Mode 21: 16bit 24 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode22, /* Mode 22: 16bit 32 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode23, /* Mode 23: 16bit 44.1 kHz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode24, /* Mode 24: 16bit 48k Hz, Slave, Normal mode, Stereo*/ |
| aud_I2Sx_mode25, /* Mode 25: 16bit 8kHz, Master, Normal mode, DualMono*/ |
| aud_I2Sx_mode_end |
| } aud_I2Sx_mode_enum; |
| #endif /* aud_old_I2S_interface */ |
| |
| typedef enum { |
| aud_I2S2_clk0, |
| aud_I2S2_clk1, |
| aud_I2S_clk_end |
| } aud_I2S_clk_enum; |
| |
| typedef enum { /* Changes in this enum will change the validation matrix */ |
| aud_I2S_master, |
| aud_I2S_slave, |
| aud_I2S_Master_Slave_end |
| } aud_I2S_Master_Slave_enum; |
| |
| typedef enum { /* Changes in this enum will change the validation matrix */ |
| aud_I2S_samplerate_08000, |
| aud_I2S_samplerate_11025, |
| aud_I2S_samplerate_12000, |
| aud_I2S_samplerate_16000, |
| aud_I2S_samplerate_22050, |
| aud_I2S_samplerate_24000, |
| aud_I2S_samplerate_32000, |
| aud_I2S_samplerate_44100, |
| aud_I2S_samplerate_48000, |
| aud_I2S_samplerate_end |
| } aud_I2S_samplerate_enum; |
| |
| typedef enum { |
| aud_I2S_sample_width_16, |
| aud_I2S_sample_width_18, |
| aud_I2S_sample_width_20, |
| aud_I2S_sample_width_24, |
| aud_I2S_sample_width_32, |
| aud_I2S_sample_width_end |
| } aud_I2S_sample_width_enum; |
| |
| typedef enum { /* Changes in this enum will change the validation matrix */ |
| aud_I2S_transmission_mode_PCM, |
| aud_I2S_transmission_mode_normal, /* Normal I2S */ |
| aud_I2S_transmission_mode_end |
| } aud_I2S_transmission_mode_emum; |
| |
| typedef enum { |
| aud_I2S_setting_normal, |
| aud_I2S_setting_special_case1, |
| aud_I2S_setting_special_case2, |
| aud_I2S_setting_end |
| } aud_I2S_setting_enum; |
| |
| typedef enum { /* Changes in this enum will change the validation matrix */ |
| aud_I2S_mode_mono, |
| aud_I2S_mode_dual_mono, |
| aud_I2S_mode_stereo, |
| aud_I2S_mode_end |
| } aud_I2S_mode_enum; |
| |
| typedef enum { /* Changes in this enum will change the validation matrix */ |
| aud_I2S_entry_point_MMS, |
| aud_I2S_entry_point_MMS_FB, /* located at the frame-based part of the voiceband processing system */ |
| aud_I2S_entry_point_External, |
| aud_I2S_entry_point_DAI, |
| aud_I2S_entry_point_end |
| } aud_I2S_entry_point_enum; |
| |
| typedef enum { |
| aud_8_KHz, |
| aud_16_KHz, |
| aud_sample_rate_end |
| }aud_sample_rate_enum; |
| |
| #if defined (aud_old_I2S_interface) |
| typedef enum { |
| aud_disable_pcm_channel, |
| aud_enable_pcm_channel, |
| aud_enable_pcm_channel_and_Dai, |
| aud_enable_pcm_channel_externalmode, |
| aud_audio_pcm_end |
| } aud_audio_pcm_enum; |
| |
| typedef enum { |
| aud_pcm_direction_rx, |
| aud_pcm_direction_tx, |
| aud_pcm_direction_rx_tx, |
| aud_pcm_direction_end |
| } aud_pcm_direction_enum; |
| #endif /* aud_old_I2S_interface */ |
| |
| /* smaf enumerations */ |
| typedef enum { |
| aud_smaf_err_ok, /* 0 */ |
| aud_smf_err_initialize_failed, |
| aud_smf_err_create_failed, |
| aud_smf_err_load_failed, |
| aud_smf_err_open_failed, |
| aud_smf_err_evhand_failed, /* 5 */ |
| aud_smf_err_standby_failed, |
| aud_smf_err_seek_failed, |
| aud_smf_err_control_failed, |
| aud_smf_err_start_failed, |
| aud_smf_err_stop_failed, /* 10 */ |
| aud_smf_err_close_failed, |
| aud_smf_err_unload_failed, |
| aud_smf_err_delete_failed, |
| aud_smf_err_invalid_parameters, |
| aud_smf_err_wrong_state /* 15 */ |
| } aud_smaf_error_enum; |
| |
| /* DSP info */ |
| typedef enum { |
| aud_dsp_tch_mode, |
| aud_dsp_pdch_mode, |
| aud_dsp_idle_mode, |
| aud_dsp_bb_off_mode, |
| aud_dsp_bb_off_tch_26_mode, |
| aud_dsp_mode_end |
| } aud_dsp_info_enum; |
| |
| /* Accessory enumeration (deprecated) */ |
| typedef enum { |
| aud_accessory_normal, /* 0 */ |
| aud_accessory_headset, |
| aud_accessory_back_speaker_normal_mic, |
| aud_accessory_midi_louder_speaker, |
| aud_accessory_bt_headset, |
| aud_accessory_stereo_phones, /* 5 */ |
| aud_accessory_car_kit, |
| aud_accessory_end |
| } aud_accessory_enum; |
| |
| /* Layer 1 info (deprecated) */ |
| typedef enum { |
| aud_layer1_tch_mode, |
| aud_layer1_pdch_mode, |
| aud_layer1_idle_mode, |
| aud_layer1_bb_off_mode, |
| aud_layer1_bb_off_tch_26_mode, |
| aud_layer1_mode_end |
| } aud_layer1_info_enum; |
| |
| /* Resource capability enumerations (deprecated) */ |
| typedef enum { |
| uplink_paths_supported, //deprecated |
| downlink_paths_supported, //deprecated |
| resource_conflict, //deprecated |
| features_supported //deprecated |
| } aud_resource_capability_enum; //this enum is only used by deprecated function AUD_get_resource_capability |
| |
| /* Test ram buffer enumerations */ |
| typedef enum { |
| aud_testrambufferstatus_free, /* ram buffer is free to allocate */ |
| aud_testrambufferstatus_busy, /* ram buffer is used by players */ |
| aud_testrambufferstatus_copy, /* copying is ongoing */ |
| aud_testrambufferstatus_idle, /* ram buffer is allocated and copied but not used */ |
| aud_testrambufferstatus_end |
| } aud_testrambuffer_status_enum; |
| |
| /* Callback function type definitions */ |
| typedef int (*ptr_GetAudioBufferFunction)( |
| /* audiobuffer */ U8 **, |
| /* size */ U16 *, |
| /* user_data */ void *user_data); |
| typedef void (*ptr_SetVbOnStatusFunction)( |
| /* Status */ U8); |
| typedef void (*ptr_FmRadioRdsCallbackFunction)( |
| /* rds_buffer */ U8 *, |
| /* num_bytes */ U16); |
| |
| /* Structures for acoustic test */ |
| #define AUD_MAX_MIC_FREQ_NUM 3 |
| typedef struct { |
| U16 freq_mid; |
| U16 UpperLimit; |
| U16 LowerLimit; |
| } InputMicVal_Type; |
| |
| typedef struct { |
| U16 actest_no_of_freq; |
| U16 actest_no_of_freq_outoflim; |
| U16 actest_scal; |
| U16 actest_ppeak; |
| U16 actest_npeak; |
| U16 actest_level_f1; |
| U16 actest_level_f2; |
| U16 actest_level_f3; |
| U16 actest_level_f4; |
| U16 actest_level_f5; |
| U16 actest_level_f6; |
| } T_DSP_CMD_ACOUSTIC_TEST_RESULT_PAR; |
| |
| /****************************************************************************** |
| * |
| * Global variables |
| * |
| ******************************************************************************/ |
| extern U8 aud_mon_gaim_setting[2]; |
| |
| #if defined (VMS_PRESENT) |
| extern ptr_GetAudioBufferFunction getAudioBuffer; |
| #endif |
| |
| #if defined (MP3_PRESENT) |
| extern ptr_GetAudioBufferFunction mp3_getAudioBuffer; |
| #endif |
| |
| #define AUD_GLOBAL_TONE_DUR_INTER_DEFAULT_VALUE 10 |
| extern U16 aud_global_tone_dur_inter; |
| |
| |
| #ifdef _OS_WIN |
| #define DISABLE_CLOCK |
| #define ENABLE_CLOCK |
| |
| #define ATOMIC_BEGIN |
| #define ATOMIC_END |
| #else |
| #define DISABLE_CLOCK ZOSS_DISABLE_IRQ(); |
| #define ENABLE_CLOCK ZOSS_ENABLE_IRQ(); |
| |
| #define ATOMIC_BEGIN ZOSS_DISABLE_IRQ(); |
| #define ATOMIC_END ZOSS_ENABLE_IRQ(); |
| #endif |
| |
| #ifndef MAX |
| #define MAX(A,B) ( (A) > (B) ? (A) : (B) ) |
| #endif |
| |
| /****************************************************************************** |
| * |
| * Prototypes for interface functions |
| * |
| ******************************************************************************/ |
| |
| /* Resource allocation */ |
| S8 AUD_allocate_resource(U16 id, aud_resource_enum resource, aud_priority_enum priority); |
| S8 AUD_release_resource(U8 handle); |
| |
| /* Path control */ |
| U32 AUD_get_downlnk_parallel_path_configuration(aud_downlink_source_enum path); |
| U32 AUD_get_uplink_parallel_path_configuration(aud_uplink_source_enum path); |
| S8 AUD_add_uplinkpath(aud_uplink_source_enum path); |
| S8 AUD_remove_uplinkpath(aud_uplink_source_enum path); |
| S8 AUD_add_downlinkpath(aud_downlink_source_enum path); |
| S8 AUD_remove_downlinkpath(aud_downlink_source_enum path); |
| S8 AUD_Pathupdate_Enable(void); |
| S8 AUD_Pathupdate_Disable(void); |
| S8 AUD_set_eq_vol_threshold(aud_downlink_source_enum path, aud_volume_enum eq_volume_threshold); |
| |
| /* Volume control */ |
| S8 AUD_set_resource_volume(U8 handle, aud_volume_enum volume); |
| S8 AUD_set_master_volume(aud_volume_enum volume); |
| S8 AUD_mute_resource(U8 handle, aud_mute_enum enable_disable, |
| aud_ul_dl_direction_enum direction); |
| S8 AUD_mute_master(aud_mute_enum enable_disable); |
| |
| /* Speech */ |
| S8 AUD_speech_enable(U8 handle); |
| S8 AUD_speech_disable(U8 handle); |
| S8 AUD_set_EC_NR(U8 EC_on, U8 NR_on); |
| |
| /* Tone generator */ |
| S8 AUD_tone_start(U8 handle, aud_tone_id_enum tone_id, |
| U16 nof_repeats, S16 mix_factor); |
| S8 AUD_tone_start_user_tone(U8 handle, void *tone_data, aud_tone_type_enum type, |
| U32 nof_tones, U16 nof_repeats, S16 mix_factor); |
| S8 AUD_tone_stop(U8 handle); |
| S8 AUD_tone_suspend(U8 handle, U8 slot_id); |
| S8 AUD_tone_resume(U8 handle, U8 slot_id); |
| S8 AUD_tone_get_total_playtime(U8 handle, aud_tone_id_enum tone_id, void *tone_data, |
| U32 nof_tones, aud_tone_type_enum type); |
| S8 AUD_tone_get_play_position(U8 handle); |
| S8 AUD_tone_set_play_position(U8 handle, U32 pos); |
| |
| /* Ringer */ |
| S8 AUD_ringer_start(U8 handle, aud_ringer_tone_id_enum tone_id, |
| U16 nof_repeats, aud_ringer_device_enum device); |
| S8 AUD_ringer_start_user_tone(U8 handle, U8 DWD_HUGE *ringer_data, |
| U32 size, aud_format_enum format, U16 nof_repeats, |
| aud_ringer_device_enum device, U8 channel, U8 channel_volume); |
| S8 AUD_ringer_stop(U8 handle, U8 channel); |
| S8 AUD_ringer_set_channel_volume(U8 handle, U8 channel_volume, U8 channel); |
| S8 AUD_ringer_suspend(U8 handle, U8 SlotID, U8 channel); |
| S8 AUD_ringer_resume(U8 handle, U8 SlotID, U8 channel); |
| S8 AUD_ringer_stop_suspend(U8 handle, U8 SlotID, U8 channel); |
| S8 AUD_ringer_get_total_playtime(U8 handle, U8 DWD_HUGE *data, U32 data_size, |
| aud_format_enum format, aud_ringer_tone_id_enum tone_id); |
| S8 AUD_ringer_get_playposition(U8 handle); |
| S8 AUD_ringer_set_playposition(U8 handle, U8 channel, U32 offset); |
| |
| /* Vibrator */ |
| void AUD_vibrator_enable(aud_vib_mode mode, U8 channel); |
| void AUD_vibrator_pause(void); |
| void AUD_vibrator_disable(void); |
| |
| /* FM Radio */ |
| S8 AUD_radio_enable(U8 handle); |
| S8 AUD_radio_disable(U8 handle); |
| S8 AUD_radio_rssi_subscribe(U8 handle, aud_fm_radio_rssi_enum lower_threshold, |
| aud_fm_radio_rssi_enum upper_threshold); |
| S8 AUD_radio_rds_subscribe(U8 handle, ptr_FmRadioRdsCallbackFunction pCbFunc); |
| S8 AUD_radio_set_station(U8 handle, aud_fm_radio_seek_mode_enum seekmode, |
| U32 frequency, aud_fm_radio_rssi_enum detect_level, U8 force_mono); |
| S8 AUD_radio_get_frequency(U8 handle); |
| |
| /* Voice memo */ |
| S8 AUD_vm_start_recording( |
| U8 handle, |
| aud_vm_mode_enum vm_mode, |
| aud_media_enum media_type, |
| aud_dsp_format_enum format, |
| U8 rate, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size, |
| U32 offset); |
| S8 AUD_vm_stop_recording(U8 handle); |
| S8 AUD_vm_start_playback( |
| U8 handle, |
| aud_vm_mode_enum vm_mode, |
| aud_media_enum media_type, |
| aud_dsp_format_enum format, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size, |
| U16 nof_repeats, |
| U32 offset); |
| S8 AUD_vm_stop_playback(U8 handle); |
| void Aud_vms_set_getbuffer_function(U8 handle, ptr_GetAudioBufferFunction func, |
| void * user_data); |
| S8 AUD_vm_suspend(U8 handle, U8 slot_id); |
| S8 AUD_vm_resume(U8 handle, U8 slot_id); |
| S8 AUD_vm_get_total_playtime( |
| U8 handle, |
| aud_media_enum media_type, |
| aud_dsp_format_enum format, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size, |
| U32 offset); |
| S8 AUD_vm_get_play_position(U8 handle); |
| S8 AUD_vm_set_play_position( |
| U8 handle, |
| U32 pos, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size); |
| S8 AUD_vm_stop_suspend(U8 handle, U8 slot_id); |
| |
| /* MP3 Player */ |
| S8 AUD_mp3_start(U8 handle, aud_media_enum media_type, U16 DWD_HUGE *file_handle, |
| U32 buffer_size, U32 id_offset, U32 start_frame, U16 nof_repeats); |
| S8 AUD_mp3_stop(U8 handle); |
| S8 AUD_mp3_suspend(U8 handle, U16 slot_id); |
| S8 AUD_mp3_resume(U8 handle, U16 slot_id); |
| S8 AUD_mp3_fastforward(U8 handle, U32 frame, U16 slot_id); |
| S8 AUD_mp3_backward(U8 handle, U32 frame, U16 slot_id); |
| void Aud_mp3_set_getbuffer_function(U8 handle, ptr_GetAudioBufferFunction func, |
| void * user_data); |
| S8 Aud_mp3_get_current_frame(U8 handle, U16 slot_id); |
| S8 AUD_mp3_get_total_playtime(U8 handle, aud_media_enum media_type, |
| U16 DWD_HUGE *file_handle, U32 buffer_size, |
| U32 id_offset ); |
| S8 AUD_mp3_get_play_position(U8 handle); |
| S8 AUD_mp3_set_play_position(U8 handle, U32 pos, U16 DWD_HUGE *file_handle, |
| U32 buffer_size); |
| S8 AUD_mp3_stop_suspend(U8 handle, U8 SlotID); |
| |
| /* TTY */ |
| S8 AUD_tty_enable(U8 handle); |
| S8 AUD_tty_disable(U8 handle); |
| S8 AUD_tty_set_negotiation(U8 handle,U8 on_off); |
| |
| /* PCM player/recorder */ |
| S8 AUD_pcm_intern_start_playback( |
| U8 handle, |
| aud_pcm_mode_enum mode, |
| aud_pcm_sample_rate_enum sample_rate, |
| U8 bit_rate, |
| aud_media_enum media_type, |
| aud_pcm_format_enum format, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size, |
| U16 nof_repeats, |
| U32 start_offset); |
| S8 AUD_pcm_intern_stop_playback(U8 handle); |
| S8 AUD_pcm_intern_start_recording( |
| U8 handle, |
| aud_pcm_sample_rate_enum sample_rate, |
| aud_media_enum media_type, |
| aud_pcm_format_enum format, |
| U16 DWD_HUGE *file_handle, |
| U32 buffer_size, |
| U32 start_offset); |
| S8 AUD_pcm_intern_stop_recording(U8 handle); |
| S8 AUD_pcm_intern_getbuffer_function(U8 handle, ptr_GetAudioBufferFunction func, |
| void * user_data); |
| S8 AUD_pcm_intern_suspend(U8 handle, U8 slot_id); |
| S8 AUD_pcm_intern_resume(U8 handle, U8 slot_id); |
| S8 AUD_pcm_intern_stop_suspend(U8 handle, U8 slot_id); |
| S8 AUD_pcm_intern_get_total_playtime(U8 handle, aud_media_enum media_type, |
| aud_pcm_format_enum format, aud_pcm_sample_rate_enum sample_rate, |
| aud_pcm_mode_enum mode, U8 bit_rate, |
| U16 DWD_HUGE *file_handle, U32 buffer_size, U32 offset); |
| S8 AUD_pcm_intern_get_play_position(U8 handle); |
| S8 AUD_pcm_intern_set_play_position(U8 handle, U32 pos, |
| U16 DWD_HUGE *file_handle, U32 buffer_size); |
| |
| /* Yamaha Music API (mapi) */ |
| S8 AUD_mapi(U8 handle, aud_mapi_if_enum func_id, U32 parm1, U32 parm2, |
| U32 parm3, U32 parm4, U32 parm5, U32 parm6, U32 parm7); |
| |
| /* Inband resource, used for non-baseband audio */ |
| /** |
| * AUD_non_baseband_resource_start |
| * |
| * This function activates the inband virtual resource, used for non-baseband audio. |
| * Only use this when aud_resource_inband is allocated. The resource is virtual, |
| * so the usecase is non-baseband audio output on whatever paths are enabled. |
| * |
| * @param handle (generated by AUD_allocate_resource) |
| * @see AUD_allocate_resource |
| * @return signed 8bit integer (error code) |
| */ |
| S8 AUD_non_baseband_resource_start(U8 handle); |
| |
| /** |
| * AUD_non_baseband_resource_stop |
| * |
| * This function deactivates the inband virtual resource, used for non-baseband audio. |
| * Only use this when aud_resource_inband is allocated. The resource is virtual, |
| * so the usecase is non-baseband audio output on whatever paths are enabled. |
| * |
| * @param handle (generated by AUD_allocate_resource) |
| * @see AUD_allocate_resource |
| * @return signed 8bit integer (error code) |
| */ |
| S8 AUD_non_baseband_resource_stop(U8 handle); |
| |
| /* SM Power */ |
| /** |
| * AUD_SMPower_enable |
| * |
| * This function is to trigger the power-on of the SM Power Gain Amplifier |
| * Only use this when allocating the aud_resource_smpower. The resource is virtual, |
| * so the usecase is an external device outputting through SM power. |
| * |
| * @param handle (generated by AUD_allocate_resource) |
| * @see AUD_allocate_resource |
| * @return signed 8bit integer (error code) |
| */ |
| S8 AUD_SMPower_enable(U8 handle); |
| /** |
| * AUD_SMPower_disable |
| * |
| * This function is to trigger the power-off of the SM Power Gain Amplifier |
| * Only use this when allocating the aud_resource_smpower. The resource is virtual, |
| * so the usecase is an external device outputting through SM power. |
| * |
| * @param handle (generated by AUD_allocate_resource) |
| * @see AUD_allocate_resource |
| * @return signed 8bit integer (error code) |
| */ |
| S8 AUD_SMPower_disable(U8 handle); |
| |
| /* SBC Encoder */ |
| S8 AUD_sbc_encoder_start (U8 handle, |
| aud_sbc_encoder_data_mode_enum data_mode, |
| aud_sbc_encoder_channel_mode_enum channel_mode, |
| aud_sbc_encoder_sample_rate_enum sample_rate, |
| aud_sbc_encoder_number_of_blocks_enum no_of_blocks, |
| U8 bitpool); |
| S8 AUD_sbc_encoder_stop(U8 handle); |
| S8 AUD_sbc_encoder_suspend(U8 handle, U8 slot_id); |
| S8 AUD_sbc_encoder_resume (U8 handle, U8 slot_id); |
| S8 AUD_sbc_encoder_set_getinputbuffer_function(U8 handle, |
| ptr_GetAudioBufferFunction input_buffer_function, |
| void * user_data); |
| S8 AUD_sbc_encoder_set_getoutputbuffer_function(U8 handle, |
| ptr_GetAudioBufferFunction output_buffer_function, |
| void * user_data); |
| |
| /* I2S2 Rx and Tx*/ |
| #if defined (aud_old_I2S_interface) |
| S8 AUD_configure_pcm_channel(U8 handle, aud_I2Sx_mode_enum mode); |
| S8 AUD_pcm_channel_routing(U8 handle, U8 input_to_uplink, U8 input_to_downlink, |
| U8 output_from_uplink, U8 output_from_downlink); |
| S8 AUD_pcm_channel_enable(U8 handle, aud_pcm_direction_enum direction); |
| S8 AUD_pcm_channel_disable(U8 handle); |
| #endif /* aud_old_I2S_interface */ |
| S8 AUD_I2S_enable_resource(U8 handle); |
| S8 AUD_I2S_disable_resource (U8 handle); |
| S8 AUD_I2S_setup_clock(aud_I2S_clk_enum clock, |
| aud_I2S_Master_Slave_enum Master_Slave, |
| aud_I2S_samplerate_enum samplerate, |
| aud_I2S_sample_width_enum sample_width, |
| aud_I2S_transmission_mode_emum transmission_mode, |
| aud_I2S_setting_enum settings, |
| aud_I2S_mode_enum I2S_mode); |
| S8 AUD_I2S_setup_resource(U8 handle, |
| aud_I2S_clk_enum clock, |
| aud_I2S_entry_point_enum entry_point); |
| |
| /* I2S1 */ |
| S8 AUD_configure_bluetooth(U8 handle, aud_I2Sx_mode_enum mode); |
| |
| /* 3D stereo */ |
| S8 AUD_3D_mode_enable(void); |
| S8 AUD_3D_mode_disable(void); |
| |
| /* Interrupts */ |
| void AUD_tone_handle_int(void); |
| void AUD_TONE_int_handler(int vector); |
| void AUD_poak_int2_handle_int(void); |
| void AUD_POAK_INT2_int_handler(int vector); |
| void AUD_TEAK_INT5_int_handler(int vector); |
| void AUD_teak_int5_handle_int(void); |
| void AUD_TEAK_INT4_int_handler(int vector); |
| void AUD_teak_int4_handle_int(void); |
| void AUD_TEAK_INT6_int_handler(int vector); |
| void AUD_teak_int6_handle_int(void); |
| void AUD_TEAK_INT7_int_handler(int vector); |
| void AUD_teak_int7_handle_int(void); |
| void AUD_hal_fm_radio_lisr_int_handler(int vector); /* LISR for FM Radio interrupt */ |
| |
| /* Misc functions */ |
| U32 AUD_info_hw_available(void); |
| void AUD_misc_dsp_info(aud_dsp_info_enum dsp_info); /* Only to be used on interface between DSP and AUD */ |
| S8 Aud_set_vb_on_status_function(ptr_SetVbOnStatusFunction func); |
| |
| /* Misc functions */ |
| void aud_drv_check_timeout(void); |
| void aud_dai_mode(aud_dai_mode_enum dai_mode); |
| void aud_drv_restart_hf(void); |
| |
| /* Test functions */ |
| U16 AUD_ptest_generic_func(void *func_req_ptr); /* generic ATCP test interface */ |
| U16 AUD_ptest_generic_func_memaligned(void *func_req_ptr); |
| |
| /* FFT analysis */ |
| S8 AUD_FFT_Start(U16 NoOfFrames, U16 AverageExponent, U16 RefLevel, U16 QFormat, |
| InputMicVal_Type *pMicVal); |
| S8 AUD_FFT_GetResult(T_DSP_CMD_ACOUSTIC_TEST_RESULT_PAR **pFFT_Result); |
| |
| /* Audio Dispatcher - should only be used in aud_intf.c and aud_op.c */ |
| void AudioDispatcher( |
| SDL_Pid sender, |
| U8 event, |
| U16 caller_id, |
| U32 parm1, |
| U32 parm2, |
| U32 parm3, |
| U32 parm4, |
| U32 parm5, |
| U32 parm6, |
| U32 parm7, |
| U32 parm8, |
| U8 *ptr1, |
| U8 *ptr2); |
| |
| /****************************************************************************** |
| * |
| * Deprecated functions |
| * |
| ******************************************************************************/ |
| /* Do not remove the following functions here - file is shared between EGold, SGold and other systems */ |
| /* This is old stuff that has to be removed when Apoxi has cleaned out their inclusion of old files - depending on this */ |
| |
| S8 AUD_media_to_uplink(U8 enable_disable); /* deprecated - use new path aud_media_to_uplink instead */ |
| S8 AUD_media_to_downlink(U8 enable_disable); /* deprecated - use new path aud_media_to_downlink_mute instead */ |
| U32 AUD_get_resource_capability(aud_resource_enum resource, aud_resource_capability_enum capability); |
| S8 AUD_key_tone(aud_tone_id_enum key_tone, S16 mix_factor); |
| S8 AUD_amp_enable(U8 handle); |
| S8 AUD_amp_disable(U8 handle); |
| S8 AUD_vibrator_start(U8 handle, aud_vibrator_mode_enum mode, |
| aud_vibrator_on_enum on, aud_vibrator_off_enum off); |
| S8 AUD_vibrator_stop(U8 handle); |
| void AUD_misc_set_accessory(aud_accessory_enum accessory); |
| void AUD_misc_set_vmic(U8 status); |
| S8 AUD_set_volume(U8 handle, aud_volume_enum volume); |
| S8 AUD_speech_set_volume(U8 handle, aud_speech_volume_enum volume); |
| S8 AUD_ringer_set_volume(U8 handle,aud_ringer_volume_enum volume); |
| void AUD_init(void); |
| S8 AUD_radio_init(U8 handle); |
| S8 AUD_radio_config(U8 handle, void * aud_radio_config_data); |
| S8 AUD_radio_read_current_status(U8 handle); |
| S8 AUD_radio_mute(U8 handle,U8 mute); |
| S8 AUD_speech_mute(U8 handle,aud_mute_enum status,aud_direction_enum direction); |
| #ifdef USE_VOICE_SUPPORT |
| void AUD_misc_layer1_info(aud_layer1_info_enum layer1_info); /* Only to be used on interface between AUD and Layer1 */ |
| #endif |
| #endif /* _AUD_INTERFACES */ |
| /* End of file. */ |