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

📄 mmi_callback.c

📁 嵌入式展讯mmi层kernel的c 源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
#include "mmi_osbridge.h"
#include "server.h"
#include "sim.map"
#include "keypad.h"
#include "mn.h"
#include "charge.h"
#include "misc_task.h"
#include "mmk_msg.h"

const uint8   keyCodeTable[ ] =
{

    0,              //  KPD_NONE =0,                    /* 0x00                             */
    SCI_VK_UP,      //  KPD_UP     ,                    /* 0x01                             */
    SCI_VK_DOWN,    //  KPD_DOWN   ,                    /* 0x02                             */
    SCI_VK_LEFT,    //  KPD_LEFT   ,                    /* 0x03                             */
    SCI_VK_RIGHT,   //  KPD_RIGHT  ,                    /* 0x04                             */
    SCI_VK_CALL,    //  KPD_GREEN  ,                    /* 0x05                             */
    SCI_VK_CANCEL,  //  KPD_CAMERA   ,                  /* 0x06                            */
    0,              //  KPD_CLR    ,                    /* 0x07                             */
    SCI_VK_1,       //  KPD_1      ,                    /* 0x08                             */
    SCI_VK_2,       //  KPD_2      ,                    /* 0x09                             */
    SCI_VK_3,       //  KPD_3      ,                    /* 0x0a                             */
    SCI_VK_4,       //  KPD_4      ,                    /* 0x0b                             */
    SCI_VK_5,       //  KPD_5      ,                    /* 0x0c                             */
    SCI_VK_6,       //  KPD_6      ,                    /* 0x0d                             */
    SCI_VK_7,       //  KPD_7      ,                    /* 0x0e                             */
    SCI_VK_8,       //  KPD_8      ,                    /* 0x0f                             */
    SCI_VK_9,       //  KPD_9      ,                    /* 0x10                             */
    SCI_VK_STAR,    //  KPD_STAR   ,                    /* 0x11                             */
    SCI_VK_0,       //  KPD_0      ,                    /* 0x12                             */
    SCI_VK_POUND,   //  KPD_HASH   ,                    /* 0x13                             */
    
    0,              //  KPD_SPUP   ,                    /* 0x14                             */
    0,              //  KPD_SPDW   ,                     /* 0x15                             */
    
    SCI_VK_EXT1,    //  KPD_LEFTSOFK,                   /* 0x16*/
    SCI_VK_EXT2,    //  KBD_RIGHTSOFK,                  /* 0x17 */
    SCI_VK_POWER,   //  KBD_RED,                     /* 0x18 */
    
    SCI_VK_EXT3       //KBD_UPSIDEKEY  			 /* 0x19 */    
    SCI_VK_EXT4,     // KBD_DOWNSIDEKEY                 /* 0x1a*/      
    
    SCI_GPIO_SIG1,    // KBD_HANDFREE                  
    SCI_GPIO_SIG2,    //KBD_HOOK

            

       
};

void mmi_KeypadCallBack(uint32 taskID, uint32 argc, void *argv)
{
    MmiSignalS    *sendSignal ;
	uint8 i;
	uint32     keycode;
	
	keycode = (uint32) argv;
	
    sendSignal = PNULL;

	MmiCreateSignal(SIG_MMI_KEY_PRESS_IND,sizeof(MmiKeyPress),&sendSignal);
    
    sendSignal->signalType = MSG_TYPE_FOCUS;

	sendSignal->sig.keyPress.keyCode = 0 ;
	
	for( i =0; i< ARR_SIZE(keyCodeTable); i++)
	{
        if((uint8)keycode == keyCodeTable[i] )
		{
			sendSignal->sig.keyPress.keyCode = i;
			break;
		}
	}
	
	if(argc  == KPD_DOWN)
    {
        sendSignal->sig.keyPress.keyIsDown = 1;
        SCI_TRACE_LOW("MMI:Receive key down keycode =%d",sendSignal->sig.keyPress.keyCode);
    }
	else
    {
        sendSignal->sig.keyPress.keyIsDown = 0;
        SCI_TRACE_LOW("MMI:Receive key up keycode =%d",sendSignal->sig.keyPress.keyCode);
    }

	MmiSendSignal(taskID,sendSignal);

}

/* @ add by Great.TIan 2003/7/9 */
/* alarm , time call back function */
void mmi_AlarmAndTimeCallBack(uint32 task_id, uint32 event_id, void *param_ptr)
{
	MmiSignalS		*sendSignal = PNULL;
	uint16			taskid = (uint16)task_id;

	switch(event_id)
	{
	case MISC_MSG_RTC_MIN:
		MmiCreateSignal(SIG_MMI_MISC_TIME_IND, 0, &sendSignal);
		MmiSendSignal(taskid,sendSignal);
		break;

	case MISC_MSG_RTC_DAY:
		MmiCreateSignal(SIG_MMI_MISC_DATE_IND, 0, &sendSignal);
		MmiSendSignal(taskid,sendSignal);
		break;

	case MISC_MSG_RTC_ALARM:
		MmiCreateSignal(SIG_MMI_MISC_ALARM_IND, 0, &sendSignal);
		MmiSendSignal(taskid,sendSignal);
		break;

	default:
		SCI_TRACE_HIGH("MMI: the error singal of alarm and time = %d", event_id);
		break;
	}
}


/* MN layer call back function**************/

void MnPhone_EventCallBackFunc(
              uint32 taskId,  // task_id which task want to receive the event
              uint32 event_id, // event id 
              void *param_ptr      // data follow the event
              )
{
	MmiSignalS     *sendSignal ;
	uint16    task_id = (uint16)taskId;
    sendSignal = PNULL;
	switch (event_id)
	{
    // notify MMI that PS is ready to work
    case EV_MN_APP_PS_READY_IND_F:
		MmiCreateSignal(SIG_APP_MN_PS_READY_IND,sizeof(MnPSReadyIndS),&sendSignal);

		MmiSendSignal(task_id,sendSignal);
	
		break;
    // notify MMI Phone status
	case EV_MN_APP_NETWORK_STATUS_IND_F:

		MmiCreateSignal(SIG_APP_MN_NETWORK_STATUS_IND,sizeof(MnNetworkStatusIndS),&sendSignal);
		sendSignal->sig.MnNetworkStatusInd.plmn_status = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->plmn_status;
		sendSignal->sig.MnNetworkStatusInd.plmn_is_selecting = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->plmn_is_selecting;
		sendSignal->sig.MnNetworkStatusInd.mcc = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->mcc;
		sendSignal->sig.MnNetworkStatusInd.mnc = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->mnc;
		sendSignal->sig.MnNetworkStatusInd.lac = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->lac;
		sendSignal->sig.MnNetworkStatusInd.cell_id = ((APP_MN_NETWORK_STATUS_IND_T*)param_ptr)->cell_id;
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_SIMCARD_READY_IND_F:

		MmiCreateSignal(SIG_APP_MN_SIM_READY_IND,sizeof(MnSimReadyIndS),&sendSignal);
		sendSignal->sig.MnSimReadyInd.pin1_is_enabled = ((APP_MN_SIM_READY_IND_T*)param_ptr)->pin1_is_enabled;
		sendSignal->sig.MnSimReadyInd.pin1_is_blocked = ((APP_MN_SIM_READY_IND_T*)param_ptr)->pin1_is_blocked;
		sendSignal->sig.MnSimReadyInd.pin1_status = ((APP_MN_SIM_READY_IND_T*)param_ptr)->pin1_status;
		sendSignal->sig.MnSimReadyInd.pin2_status = ((APP_MN_SIM_READY_IND_T*)param_ptr)->pin2_status;
		sendSignal->sig.MnSimReadyInd.unblock_pin1_status = ((APP_MN_SIM_READY_IND_T*)param_ptr)->unblock_pin1_status;
		sendSignal->sig.MnSimReadyInd.unblock_pin2_Status = ((APP_MN_SIM_READY_IND_T*)param_ptr)->unblock_pin2_Status;
		sendSignal->sig.MnSimReadyInd.is_pin2_required_acm_max = ((APP_MN_SIM_READY_IND_T*)param_ptr)->is_pin2_required_acm_max;
		sendSignal->sig.MnSimReadyInd.is_pin2_Required_acm = ((APP_MN_SIM_READY_IND_T*)param_ptr)->is_pin2_Required_acm;
		sendSignal->sig.MnSimReadyInd.is_pin2_Required_puct = ((APP_MN_SIM_READY_IND_T*)param_ptr)->is_pin2_Required_puct;
		sendSignal->sig.MnSimReadyInd.imsi = ((APP_MN_SIM_READY_IND_T*)param_ptr)->imsi;
		sendSignal->sig.MnSimReadyInd.hplmn = ((APP_MN_SIM_READY_IND_T*)param_ptr)->hplmn;
		sendSignal->sig.MnSimReadyInd.location_info = ((APP_MN_SIM_READY_IND_T*)param_ptr)->location_info;
		sendSignal->sig.MnSimReadyInd.phase = ((APP_MN_SIM_READY_IND_T*)param_ptr)->phase;
		sendSignal->sig.MnSimReadyInd.sim_service = ((APP_MN_SIM_READY_IND_T*)param_ptr)->sim_service;
		sendSignal->sig.MnSimReadyInd.admin = ((APP_MN_SIM_READY_IND_T*)param_ptr)->admin;
		MmiSendSignal(task_id,sendSignal);
		
		break;
	case EV_MN_APP_SIMCARD_NOT_READY_IND_F:
		MmiCreateSignal(SIG_APP_MN_SIM_NOT_READY_IND,sizeof(MnSimNotReadyIndS),&sendSignal);
		sendSignal->sig.MnSimNotReadyInd.reason = ((APP_MN_SIM_NOT_READY_IND_T*)param_ptr)->reason;
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_SIMCARD_GET_PIN_IND_F:
		MmiCreateSignal(SIG_APP_MN_SIM_GET_PIN_IND,sizeof(MnSimGetPinIndS),&sendSignal);
		sendSignal->sig.MnSimGetPinInd.pin_num = ((APP_MN_SIM_GET_PIN_IND_T*)param_ptr)->pin_num;
		sendSignal->sig.MnSimGetPinInd.pin_is_blocked = ((APP_MN_SIM_GET_PIN_IND_T*)param_ptr)->pin_is_blocked;
		sendSignal->sig.MnSimGetPinInd.remain_times = ((APP_MN_SIM_GET_PIN_IND_T*)param_ptr)->remain_times;			
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_SCELL_RSSI_IND_F:

		MmiCreateSignal(SIG_APP_MN_SCELL_RSSI_IND,sizeof(MnScellRssiIndS),&sendSignal);
		sendSignal->sig.MnScellRssiInd.rx_level = ((MN_PHONE_SCELL_MEAS_T*)param_ptr)->rxlev;
    	MmiSendSignal(task_id,sendSignal);
		
		break;
    case EV_MN_APP_MS_POWERING_OFF_IND_F:
		MmiCreateSignal(SIG_APP_MN_MS_POWERING_OFF_IND,sizeof(MnPowerOffIndS),&sendSignal);
		MmiSendSignal(task_id,sendSignal);

    break;
	case EV_MN_APP_MS_POWER_OFF_CNF_F:
		MmiCreateSignal(SIG_APP_MN_MS_POWER_OFF_CNF,sizeof(MnPowerOffCnfS),&sendSignal);
		MmiSendSignal(task_id,sendSignal);
		break;
	case EV_MN_APP_NCELL_RSSI_CNF_F:
		MmiCreateSignal(SIG_APP_MN_NCELL_RSSI_CNF,sizeof(MnNcellRssiCnfS),&sendSignal);
	
		//APP_MN_NCELL_RSSI_CNF_T changed , so modify this 
		//@steven  , 2003.06.16
		sendSignal->sig.MnNcellRssiCnf.ncell_num = MN_MAX_NCELL_NUM;
		memcpy(sendSignal->sig.MnNcellRssiCnf.ncell_power ,((APP_MN_NCELL_RSSI_CNF_T*)param_ptr)->ncell_power,
			sendSignal->sig.MnNcellRssiCnf.ncell_num);
		
		MmiSendSignal(task_id,sendSignal);

		break;
    case EV_MN_APP_AOC_MODIFIED_IND_F:
		MmiCreateSignal(SIG_APP_MN_AOC_MODIFIED_IND,sizeof(MnAocModifyIndS),&sendSignal);
	
		sendSignal->sig.MnAocModifyInd.is_ok =((APP_MN_AOC_MODIFIED_IND_T*)param_ptr)->is_ok;
		sendSignal->sig.MnAocModifyInd.is_reach_max =((APP_MN_AOC_MODIFIED_IND_T*)param_ptr)->is_reach_max;
		sendSignal->sig.MnAocModifyInd.acm_unit =((APP_MN_AOC_MODIFIED_IND_T*)param_ptr)->acm_unit;
		sendSignal->sig.MnAocModifyInd.acm_max =((APP_MN_AOC_MODIFIED_IND_T*)param_ptr)->acm_max;
		
		MmiSendSignal(task_id,sendSignal);

        break;
	case EV_MN_APP_PLMN_LIST_CNF_F:

		MmiCreateSignal(SIG_APP_MN_PLMN_LIST_CNF,sizeof(MnPlmnListCnfS),&sendSignal);
	
		sendSignal->sig.MnPlmnListCnf.is_valid_result =((APP_MN_PLMN_LIST_CNF_T*)param_ptr)->is_valid_result;
		sendSignal->sig.MnPlmnListCnf.plmn_detail_list =((APP_MN_PLMN_LIST_CNF_T*)param_ptr)->plmn_detail_list;
		
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_PIN_FUNC_CNF_F:
		MmiCreateSignal(SIG_APP_MN_SIM_PIN_FUNC_CNF,sizeof(MnSimPinFuncCnfS),&sendSignal);
	
		sendSignal->sig.MnSimPinFuncCnf.pin_operate_result =((APP_MN_SIM_PIN_FUNC_CNF_T*)param_ptr)->pin_operate_result;
		sendSignal->sig.MnSimPinFuncCnf.pin_function_type =((APP_MN_SIM_PIN_FUNC_CNF_T*)param_ptr)->pin_function_type;
		sendSignal->sig.MnSimPinFuncCnf.pin_num =((APP_MN_SIM_PIN_FUNC_CNF_T*)param_ptr)->pin_num;
		sendSignal->sig.MnSimPinFuncCnf.pin_status =((APP_MN_SIM_PIN_FUNC_CNF_T*)param_ptr)->pin_status;
		sendSignal->sig.MnSimPinFuncCnf.unblock_pin_status =((APP_MN_SIM_PIN_FUNC_CNF_T*)param_ptr)->unblock_pin_status;
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_PLMN_SELECT_CNF_F:
		MmiCreateSignal(SIG_APP_MN_PLMN_SELECT_CNF,sizeof(MnPlmnSelectCnfS),&sendSignal);
	
		sendSignal->sig.MnPlmnSelectCnf.plmn_is_selected =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->plmn_is_selected;
		sendSignal->sig.MnPlmnSelectCnf.plmn_status =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->plmn_status;
		sendSignal->sig.MnPlmnSelectCnf.mode_is_manual =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->mode_is_manual;
		sendSignal->sig.MnPlmnSelectCnf.mcc =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->mcc;
		sendSignal->sig.MnPlmnSelectCnf.mnc =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->mnc;
		sendSignal->sig.MnPlmnSelectCnf.lac =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->lac;
		sendSignal->sig.MnPlmnSelectCnf.cell_id =((APP_MN_PLMN_SELECT_CNF_T*)param_ptr)->cell_id;
	
		MmiSendSignal(task_id,sendSignal);

		break;
	case EV_MN_APP_FDN_SERVICE_IND_F:
		MmiCreateSignal(SIG_APP_MN_FDN_SERVICE_IND,sizeof(MnFdnServiceIndS),&sendSignal);
	
		sendSignal->sig.MnFdnServiceInd.is_fdn_enable =((APP_MN_FDN_SERVICE_IND_T*)param_ptr)->is_fdn_enable;

⌨️ 快捷键说明

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