⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 am_hw_primitive_builder_main.cc

📁 Motorola synergy audio component
💻 CC
📖 第 1 页 / 共 5 页
字号:
        hPortConfigure( HAPI_SMART_AUDIO_DAI_EN );    }    // ===========  MUTE/UNMUTE FM CHIP ============    //    Screen out phones not supporting HAPI CE bus accy signals. #if ((MAKE_NEPTUNE_CHIPSET == TRUE && MAKE_HDW_BB_IC != MAKE_HDW_NEPTUNE_LT) \ ||  (MAKE_NEPTUNE_CHIPSET == FALSE))    //    HAPI_get_power_ic_type() is only defined for C650, an LTS product.   #if (MAKE_HDW_BB_IC == MAKE_HDW_NEPTUNE_LTS)    /*  The call below will find out if we have seaweed, pcap or atlas ul. */    if (( HAPI_get_power_ic_type() == HAPI_POWER_IC_TYPE_PCAP ) ||        ( HAPI_get_power_ic_type() == HAPI_POWER_IC_TYPE_AUL ))  #endif    {        if ( info_ptr->tone.type != am_hw_current_info_ptr->tone.type            && (is_ext_generated_audio_on_queue == TRUE) )        {                if (info_ptr->tone.fields.id == DL_AUDIO_TONE_TYPE_RADIO )            {                    hPortConfigure(HAPI_FM_ACC_MUTE_EN);                   aud_hPortWrite(HAPI_FM_ACC_MUTE_EN, HAPI_SIGNAL_DISABLE, AM_HW_FM_ACC_MUTE_EN );                if(fm_muted == TRUE)                {                    HAPI_FM_RADIO_FREQ_T frequency;                    //   Delay to allow FM Chip to power up successfully                     suSleep(50, NULL);                     //   Set the frequency after unmuting                     DL_DbFeatureGetValue(DL_DB_FEATURE_ID_FM_RADIO_ACTIVE_STATION,                       &frequency);                    HAPI_FM_RADIO_set_channel(frequency);                   }                 fm_muted = FALSE;            }            else                        if (info_ptr->tone.fields.id == DL_AUDIO_TONE_TYPE_MP3_PLAYER )            {                hPortConfigure(HAPI_FM_ACC_MUTE_EN);                   aud_hPortWrite(HAPI_FM_ACC_MUTE_EN, HAPI_SIGNAL_DISABLE, AM_HW_FM_ACC_MUTE_EN );            }            else            {                hPortConfigure(HAPI_FM_ACC_MUTE_EN);                aud_hPortWrite(HAPI_FM_ACC_MUTE_EN, HAPI_SIGNAL_ENABLE, AM_HW_FM_ACC_MUTE_EN );                 fm_muted=TRUE;            }         }     }                            #endif    //============   NOISE SUPPRESSION   ===========    if (read_bit (delta_I_mask, AM_I_MASK_NOISE_SUPPRESS) ||        (( info_ptr->echo_mode != am_hw_current_info_ptr->echo_mode ) &&         ( read_bit(info_ptr->instruction_mask, AM_I_MASK_NOISE_SUPPRESS))))    {        am_hw_string_primitive << (AM_HW_MSG_HEADER_WORD_LEN);                if( read_bit( info_ptr->instruction_mask, AM_I_MASK_NOISE_SUPPRESS ))        {            am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_NS_ENABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  0;        }        else        {            am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_NS_DISABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  0;                    }        am_hw_string_primitive.send ();    }    //============   ECHO CONTROL/MODE   ===========    if ((info_ptr->echo_mode != am_hw_current_info_ptr->echo_mode ) &&        (info_ptr->echo_mode != ECHO_MODE_NONE))    {        am_hw_string_primitive << (AM_HW_MSG_HEADER_WORD_LEN + MCU_DSP_AUDIO_MODE_SELECT_WORD_LEN);                am_hw_string_primitive = am_hw_string_primitive            + (UINT16) MCU_DSP_AUDIO_MODE_SELECT            + (UINT8)  am_hw_string_primitive.stamp_time()            + (UINT8)  MCU_DSP_AUDIO_MODE_SELECT_WORD_LEN            + (UINT16) info_ptr->echo_mode;                am_hw_string_primitive.send ();    }        if (read_bit (delta_I_mask, AM_I_MASK_ECHO_CONTROL) ||        (( info_ptr->echo_mode != am_hw_current_info_ptr->echo_mode ) &&         ( read_bit(info_ptr->instruction_mask, AM_I_MASK_ECHO_CONTROL))))    {        if( read_bit(info_ptr->instruction_mask, AM_I_MASK_ECHO_CONTROL))        {            am_hw_string_primitive << (AM_HW_MSG_HEADER_WORD_LEN);                        am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_ECHO_CTL_ENABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  0;                        am_hw_string_primitive.send ();        }        else        {            am_hw_string_primitive << (AM_HW_MSG_HEADER_WORD_LEN);                        am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_ECHO_CTL_DISABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  0;                         am_hw_string_primitive.send ();                   }    }    //============   NOTIFY DSP OF A CHANGE IN THE TTY MODE  ============#if (MAKE_TTY == TRUE)    if (DL_DbGetFeatureAvailability(DL_DB_FEATURE_ID_DIGITAL_TTY_AVAILABLE) == TRUE)    {            am_send_tty_enable_disable();          }#endif    //============   AUDIO SHAPING   ===============    //note that the "handset filter" uses the audio shaper, as do the companders    if ((read_bit (delta_I_mask, AM_I_MASK_MIDI_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_MP3_COMPAND)) ||         (read_bit (delta_I_mask, AM_I_MASK_INT_SPEAKER_PHONE_VOICE_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_CLIP_ON_SPEAKER_PHONE_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_PLOVER_VOICE_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_ZIHF_VOICE_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_PLOVER_HIFI_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_ZIHF_HIFI_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_BT_HEADSET_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_HEADSET_VOICE_COMPAND)) ||        (read_bit (delta_I_mask, AM_I_MASK_AUDIO_HANDSET_FILTERING)) ||        (read_bit (delta_I_mask, AM_I_MASK_HAPTICS_AS )) ||        (read_bit (delta_I_mask, AM_I_MASK_STEREO_EMU_HS_MM_COMPAND)) ||         (transition_type == AM_HW_TRANSITION_HIFI_TO_LOFI) ||        (transition_type == AM_HW_TRANSITION_LOFI_TO_HIFI))    {        //first we need to check if any audio shaping is active        if ((read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_MIDI_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_MP3_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_INT_SPEAKER_PHONE_VOICE_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_CLIP_ON_SPEAKER_PHONE_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_PLOVER_VOICE_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_ZIHF_VOICE_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_PLOVER_HIFI_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_ZIHF_HIFI_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_BT_HEADSET_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_HEADSET_VOICE_COMPAND )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_AUDIO_HANDSET_FILTERING )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_HAPTICS_AS )) ||            (read_bit (am_hw_current_info_ptr->instruction_mask, AM_I_MASK_STEREO_EMU_HS_MM_COMPAND)) )        {            //disable the entire audio shaper if it was on -- this is so parameters can be changed safely.            am_hw_string_primitive << ( AM_HW_MSG_HEADER_WORD_LEN                                     + MCU_DSP_AUDIO_AS_DISABLE_WORD_LEN );                        am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_AS_DISABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  MCU_DSP_AUDIO_AS_DISABLE_WORD_LEN                + (UINT16) AM_HW_DISABLE_ALL_AUDIO_SHAPING ;            am_hw_string_primitive.send();        }        //Need to add companding for Multimedia Playback with the Stereo EMU headset.  Due to time constraints,        //can't add it to flex, so hardcode for now.        if (read_bit( info_ptr->instruction_mask, AM_I_MASK_STEREO_EMU_HS_MM_COMPAND))        {            //Filter Coeffs            am_hw_string_primitive << ( AM_HW_MSG_HEADER_WORD_LEN                + MCU_DSP_AUDIO_AS_FILTER_COEFFS_WORD_LEN );            am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_AS_FILTER_COEFFS                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  MCU_DSP_AUDIO_AS_FILTER_COEFFS_WORD_LEN                + (UINT16) 0x0080 //Downlink AS HIFI                + (UINT16) 0x0800 //Input Gain                + (UINT16) 0x1000 //Output Gain                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000 //IIR Biquad filter not used                + (UINT16) 0x0000;//IIR Biquad filter not used            am_hw_string_primitive.send ();            //Compander Config            am_hw_string_primitive << ( AM_HW_MSG_HEADER_WORD_LEN                + MCU_DSP_AUDIO_AS_COMPANDER_CONFIG_WORD_LEN );            am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_AS_COMPANDER_CONFIG                + (UINT8)  am_hw_string_primitive.stamp_time()#if (MAKE_HDW_BB_IC == MAKE_HDW_NEPTUNE_LTS)                + (UINT8)  AM_AS_HIFI_COMPANDER_CONFIG_WORD_LEN#else                + (UINT8)  MCU_DSP_AUDIO_AS_COMPANDER_CONFIG_WORD_LEN#endif                + (UINT16) 0x0080 //Downlink HIFI                + (UINT16) stereo_EMU_multimedia_compand_beta_table[info_ptr->sampling_rate].beta1  //beta 1                + (UINT16) stereo_EMU_multimedia_compand_beta_table[info_ptr->sampling_rate].beta2  //beta 2                + (UINT16) 0x0001 //signal level 1                + (UINT16) 0x2D6B //signal level 2                + (UINT16) 0x2FF6 //signal level 3                + (UINT16) 0x32A6 //signal level 4                + (UINT16) 0x357D //signal level 5                + (UINT16) 0x387D //signal level 6                + (UINT16) 0x3BA7 //signal level 7                + (UINT16) 0x3EFF //signal level 8                + (UINT16) 0x4287 //signal level 9                + (UINT16) 0x4642 //signal level 10                + (UINT16) 0x4A32 //signal level 11                + (UINT16) 0x4E5A //signal level 12                + (UINT16) 0x52BE //signal level 13                + (UINT16) 0x5762 //signal level 14                + (UINT16) 0x5C48 //signal level 15                + (UINT16) 0x6174 //signal level 16                + (UINT16) 0x66EA //signal level 17                + (UINT16) 0x6CAF //signal level 18                + (UINT16) 0x72C6 //signal level 19                + (UINT16) 0x7935 //signal level 20                + (UINT16) 0x7FFF //gain value 1                + (UINT16) 0x7FFF //gain value 2                + (UINT16) 0x7A61 //gain value 3                + (UINT16) 0x7501 //gain value 4                + (UINT16) 0x6FDE //gain value 5                + (UINT16) 0x6AF5 //gain value 6                + (UINT16) 0x6642 //gain value 7                + (UINT16) 0x61C5 //gain value 8                + (UINT16) 0x5D7A //gain value 9                + (UINT16) 0x595F //gain value 10                + (UINT16) 0x5572 //gain value 11                + (UINT16) 0x51B2 //gain value 12                + (UINT16) 0x4E1B //gain value 13                + (UINT16) 0x4AAD //gain value 14                + (UINT16) 0x4766 //gain value 15                + (UINT16) 0x4443 //gain value 16                + (UINT16) 0x4144 //gain value 17                + (UINT16) 0x3E66 //gain value 18                + (UINT16) 0x3BA9 //gain value 19                + (UINT16) 0x390A //gain value 20                + (UINT16) stereo_EMU_multimedia_compand_beta_table[info_ptr->sampling_rate].beta3; //beta 3             am_hw_string_primitive.send ();            //AS Enable            am_hw_string_primitive << ( AM_HW_MSG_HEADER_WORD_LEN                                        + MCU_DSP_AUDIO_AS_ENABLE_WORD_LEN );            am_hw_string_primitive = am_hw_string_primitive                + (UINT16) MCU_DSP_AUDIO_AS_ENABLE                + (UINT8)  am_hw_string_primitive.stamp_time()                + (UINT8)  MCU_DSP_AUDIO_AS_ENABLE_WORD_LEN                + (UINT16) 0x00C8; //DL HIFI, DL Output Gain, and DL Companding              am_hw_string_primitive.send ();        }        // MIDI is enabled, Haptics is enabled        // Words 0, 1, 2, 3, 4 of the am_companding_midi_table will contain        // Word 0: Control word for MCU_DSP_AUDIO_AS_FILTER_COEFFS message,         // Word 1: Control word for MCU_DSP_AUDIO_AS_FILTER_COEFFS message with Haptics disabled        // Word 2: Control word for MCU_DSP_AUDIO_AS_COMPANDER_CONFIG message        // Word 3: Control word for MCU_DSP_AUDIO_AS_ENABLE message        // Word 4: Control word for MCU_DSP_AUDIO_AS_ENABLE message with Haptics disabled         // One of these four are used are at some point during MIDI companding.        // The rest of the array with have the actual parameters        // We want to send the companding parameters only if the gain is valid        else if( read_bit( info_ptr->instruction_mask, AM_I_MASK_MIDI_COMPAND ))        {             if ((am_companding_midi_table[0] != 0x0000)            ||  (am_companding_midi_table[1] != 0x0000))            {                //Start by setting up output gain for audio shaper                am_hw_string_primitive << ( AM_HW_MSG_HEADER_WORD_LEN                    + MCU_DSP_AUDIO_AS_FILTER_COEFFS_WORD_LEN );                am_hw_string_primitive = am_hw_string_primitive                    + (UINT16) MCU_DSP_AUDIO_AS_FILTER_COEFFS                    + (UINT8)  am_hw_string_primitive.stamp_time()                    + (UINT8)  MCU_DSP_AUDIO_AS_FILTER_COEFFS_WORD_LEN;                            if (read_bit( info_ptr->instruction_mask, AM_I_MASK_HAPTICS_AS ))                  {                    am_hw_string_primitive = am_hw_string_primitive                        + am_companding_midi_table[1]                        // This is to ensure that if companding had been enabled for the                        // corresponding signal before, we send the input and output gains                        // co

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -