📄 med_main.c
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*******************************************************************************
* Filename:
* ---------
* med_main.c
*
* Project:
* --------
* Maui
*
* Description:
* ------------
* This file includes primary functions of media task.
*
* Author:
* -------
* -------
*
*==============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*==============================================================================
*******************************************************************************/
#ifndef MED_NOT_PRESENT
/*==== INCLUDES =========*/
/* system includes */
#include "kal_release.h"
#include "kal_trace.h"
#include "stack_common.h"
#include "stack_msgs.h"
#include "app_ltlcom.h" /* Task message communiction */
#include "syscomp_config.h"
#include "task_config.h" /* Task creation */
#include "app_buff_alloc.h" /* Declaration of buffer management API */
#include "stacklib.h" /* Basic type for dll, evshed, stacktimer */
#include "event_shed.h" /* Event scheduler */
#include "stack_timer.h" /* Stack timer */
/* global includes */
#include "l1audio.h"
#include "device.h"
#include "resource_audio.h"
#include "nvram_enums.h"
#include "nvram_struct.h"
#include "nvram_user_defs.h"
#include "nvram_data_items.h"
#include "custom_nvram_editor_data_item.h"
#ifdef ISP_SUPPORT
#include "camera_para.h"
#endif
/* local include */
#include "med_global.h"
#include "med_status.h"
#include "aud_defs.h"
#include "med_struct.h"
#include "med_api.h"
#include "med_context.h"
#include "med_utility.h"
#include "aud_main.h"
#include "med_main.h"
#ifdef __MED_IMG_MOD__
#include "img_main.h"
#endif
#ifdef __MED_CAM_MOD__
#include "cam_main.h"
#endif
#if defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__)
#include "vid_main.h"
#endif
#ifdef __MED_WEBCAM_MOD__
#include "webcam_main.h"
#endif
#if defined (__MED_TVO_MOD__)
#include "tvo_main.h"
#endif
/* global variables */
med_context_struct med_context;
med_context_struct *med_context_p = &med_context;
#ifdef __MTK_TARGET__
#pragma arm section rwdata = "INTERNRW1", zidata = "INTERNZI1"
__align(4)
#endif /* __MTK_TARGET__ */
kal_uint8 med_int_mem[MED_INT_MEM_SIZE];
#ifdef __MTK_TARGET__
#pragma arm section rwdata , zidata
__align(4)
#endif /* __MTK_TARGET__ */
#ifdef __MTK_TARGET__
#pragma arm section zidata = "LARGEPOOL_ZI"
#endif
kal_uint8 med_ext_mem[MED_EXT_MEM_SIZE];
#ifdef __MTK_TARGET__
#pragma arm section zidata
#endif
/*==== FUNCTIONS ===========*/
extern void med_send_get_buffer_req(
module_type src_mod_id,
void **buffer_p,
kal_uint32 buffer_size,
kal_uint8 location);
extern void med_send_free_buffer_req(module_type src_mod_id, void **buffer_p, kal_uint8 location);
/*****************************************************************************
* FUNCTION
* med_nvram_read_data_cnf_hdlr
* DESCRIPTION
* This function is to handle nvram read data confirm.
* PARAMETERS
* local_para_ptr [?]
* peer_buff_ptr [?]
* RETURNS
* void
*****************************************************************************/
void med_nvram_read_data_cnf_hdlr(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
nvram_read_cnf_struct *parm_ptr = NULL;
kal_uint16 pdu_len;
kal_uint8 *pdu_ptr;
kal_uint16 cnt;
audio_param_struct *param_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* MED_FUNC_ENTRY(MED_NVRAM_READ_DATA_CNF_HDLR) */
parm_ptr = (nvram_read_cnf_struct*) local_para_ptr;
pdu_ptr = get_pdu_ptr(peer_buff_ptr, &pdu_len);
switch (parm_ptr->file_idx)
{
case NVRAM_EF_CUST_ACOUSTIC_DATA_LID:
if (parm_ptr->length != sizeof(custom_acoustic_struct))
{
/* error reading length */
ASSERT(parm_ptr->length != sizeof(custom_acoustic_struct)) return;
}
kal_mem_cpy(
&(aud_context_p->acoustic_data),
(custom_acoustic_struct*) pdu_ptr,
sizeof(custom_acoustic_struct));
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
aud_send_msg_to_nvram(MSG_ID_NVRAM_READ_REQ, NVRAM_EF_AUDIO_PARAM_LID, 0, 0);
}
break;
case NVRAM_EF_AUDIO_PARAM_LID:
if (parm_ptr->length != NVRAM_EF_AUDIO_PARAM_SIZE)
{
/* error reading length */
ASSERT(parm_ptr->length != NVRAM_EF_AUDIO_PARAM_SIZE);
return;
}
param_p = &(aud_context_p->audio_param);
cnt = 0;
kal_mem_cpy(param_p->FIR_input_coeff[0], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[0], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[1], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[2], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[3], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[4], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[5], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_input_coeff[1], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(param_p->FIR_output_coeff[6], (pdu_ptr + cnt), (sizeof(kal_uint16) * 30));
cnt += sizeof(kal_uint16) * 30;
kal_mem_cpy(&(param_p->selected_FIR_output_index), (pdu_ptr + cnt), sizeof(kal_uint16));
cnt += sizeof(kal_uint16);
kal_mem_cpy(param_p->speech_common_para, (pdu_ptr + cnt), sizeof(kal_uint16) * 12);
cnt += sizeof(kal_uint16) * 12;
kal_mem_cpy(param_p->speech_mode_para[0], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[1], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[2], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[3], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[4], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[5], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[6], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(param_p->speech_mode_para[7], (pdu_ptr + cnt), sizeof(kal_uint16) * 8);
cnt += sizeof(kal_uint16) * 8;
kal_mem_cpy(&(param_p->max_swing), (pdu_ptr + cnt), sizeof(kal_uint16));
cnt += sizeof(kal_uint16);
kal_mem_cpy(param_p->Speech_FIR_Input_Coeff_16k_Tbl1, (pdu_ptr + cnt), (sizeof(kal_int16) * 62));
cnt += sizeof(kal_int16) * 62;
kal_mem_cpy(param_p->Speech_FIR_Output_Coeff_16k_Tbl1, (pdu_ptr + cnt), (sizeof(kal_int16) * 62));
cnt += sizeof(kal_int16) * 62;
kal_mem_cpy(param_p->Speech_FIR_Input_Coeff_16k_Tbl2, (pdu_ptr + cnt), (sizeof(kal_int16) * 62));
cnt += sizeof(kal_int16) * 62;
kal_mem_cpy(param_p->Speech_FIR_Output_Coeff_16k_Tbl2, (pdu_ptr + cnt), (sizeof(kal_int16) * 62));
cnt += sizeof(kal_int16) * 62;
kal_mem_cpy(param_p->Melody_FIR_Output_Coeff_32k_Tbl1, (pdu_ptr + cnt), (sizeof(kal_int16) * 45));
cnt += sizeof(kal_int16) * 45;
kal_mem_cpy(param_p->Melody_FIR_Output_Coeff_32k_Tbl2, (pdu_ptr + cnt), (sizeof(kal_int16) * 45));
cnt += sizeof(kal_int16) * 45;
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
aud_set_startup_param();
#ifdef ISP_SUPPORT
aud_send_msg_to_nvram(MSG_ID_NVRAM_READ_REQ, NVRAM_EF_CAMERA_PARA_LID, 0, 0);
#else /* ISP_SUPPORT */
aud_send_startup_cnf(MED_RES_OK);
med_context_p->nvram_state = MED_POWERON_READING_NVRAM_FINISH;
#endif /* ISP_SUPPORT */
}
else
{
ASSERT(med_context_p->nvram_state == MED_POWERON_READING_NVRAM);
}
break;
#ifdef ISP_SUPPORT
case NVRAM_EF_CAMERA_PARA_LID:
/* set camera parameters to driver */
set_camera_para((nvram_camera_para_struct*) pdu_ptr);
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
#if (defined(MT6219))
aud_send_startup_cnf(MED_RES_OK);
med_context_p->nvram_state = MED_POWERON_READING_NVRAM_FINISH;
#else /* (defined(MT6219)) */ /* not MT6219 */
aud_send_msg_to_nvram(MSG_ID_NVRAM_READ_REQ, NVRAM_EF_CAMERA_DEFECT_LID, 0, 0);
#endif /* (defined(MT6219)) */
}
else
{
ASSERT(med_context_p->nvram_state == MED_POWERON_READING_NVRAM);
}
break;
#if (!defined(MT6219))
case NVRAM_EF_CAMERA_DEFECT_LID:
/* set camera defect parameters to driver */
set_camera_defect((nvram_camera_defect_struct*) pdu_ptr);
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
aud_send_msg_to_nvram(MSG_ID_NVRAM_READ_REQ, NVRAM_EF_CAMERA_LENS_LID, 0, 0);
}
else
{
ASSERT(med_context_p->nvram_state == MED_POWERON_READING_NVRAM);
}
break;
case NVRAM_EF_CAMERA_LENS_LID:
/* set camera lens parameters to driver */
set_camera_lens((nvram_camera_lens_struct*) pdu_ptr);
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
#if defined(MT6228)
aud_send_startup_cnf(MED_RES_OK);
med_context_p->nvram_state = MED_POWERON_READING_NVRAM_FINISH;
#else /* defined(MT6228) */
aud_send_msg_to_nvram(MSG_ID_NVRAM_READ_REQ, NVRAM_EF_CAMERA_GAMMA_LID, 0, 0);
#endif /* defined(MT6228) */
}
else
{
ASSERT(med_context_p->nvram_state == MED_POWERON_READING_NVRAM);
}
break;
#if (!defined(MT6228))
case NVRAM_EF_CAMERA_GAMMA_LID:
/* set camera lens parameters to driver */
set_camera_gamma((nvram_camera_gamma_struct*) pdu_ptr);
if (med_context_p->nvram_state == MED_POWERON_READING_NVRAM)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -