Beispiel #1
0
void tcm_timer_expiry(ilm_struct *ilm_rcv)
{
    /* Poying: Use new EV_SH api. */
	// if (stack_is_time_out_valid(&(base_timer)))
	{
		evshed_timer_handler( tcm_ptr_g->tcm_event_scheduler_ptr ) ;    // tcm_timer_expiry_hdlr
	}
	// stack_process_time_out(&(base_timer));

    return ;
}
/*****************************************************************************
 * FUNCTION
 *  med_timer_expiry_hdlr
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void med_timer_expiry_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    stack_timer_struct *stack_timer_ptr;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    stack_timer_ptr = (stack_timer_struct*) ilm_ptr->local_para_ptr;

    if (stack_timer_ptr->timer_indx == MED_BASE_TIMER_ID)
    {
        /* Execute event's timeout handler */
        evshed_timer_handler(med_context_p->event_scheduler_ptr);
    }
}
/*****************************************************************************
 * FUNCTION
 *  avk_mytimer_expiry_handler
 * DESCRIPTION
 *  mytimer proc for EVT_ID_MMI_TIMER_EXPIRY_PROC_EXT
 * PARAMETERS
 *  evt : [IN] mmi timer event pointer in fact
 * RETURNS
 *  0 : callback manager will continue to deliver this event
 *  non-zero : callback manager will stop deliver this event
 *****************************************************************************/
extern "C" mmi_ret avk_mytimer_expiry_handler(mmi_event_struct *evt)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    mmi_timer_event_struct *timer_event;
    ilm_struct *ilm;
    kal_uint16 timer_index;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    timer_event = (mmi_timer_event_struct *)evt;
    ilm = (ilm_struct *)timer_event->expiry_msg;
    timer_index = evshed_get_index(ilm);
    if (AVK_MYTIMER_BASE_ID == timer_index)
    {
        evshed_timer_handler((event_scheduler *)g_mytimer_base_cntx);
        /* my timer expiry msg, return non-zero to stop deliver timer event */
        return 1;
    }
    /* not my timer expiry msg, return 0 to continue to deliver timer event for other listeners */
    return 0;
}
Beispiel #4
0
/*****************************************************************************
* FUNCTION
*  rac_main
* DESCRIPTION
*   rac_main is the dispacher of message handler..
*
* PARAMETERS
*  ilm_ptr  IN   Inter layer messages.
*
* RETURNS
*  none
* GLOBALS AFFECTED
*   none
*****************************************************************************/
void rac_main( ilm_struct *ilm_ptr )
{
    local_para_struct *local_para_ptr = ilm_ptr->local_para_ptr; 
    peer_buff_struct *peer_buff_ptr = ilm_ptr->peer_buff_ptr;
    rac_context_struct * rac_ptr_g = rac_ptr_global;

   kal_brief_trace(TRACE_INFO,RAC_INFO_BEFORE_MAIN, rac_ptr_g->current_action, rac_ptr_g->rac_mm_state, rac_ptr_g->rac_gmm_state);
   switch( ilm_ptr->msg_id )
   {
      /*****************************/
      /*       L4C Message         */
      /*****************************/
      case MSG_ID_L4CRAC_SET_PREFERRED_BAND_REQ:
         rac_l4c_set_preferred_band_req_handler(local_para_ptr, peer_buff_ptr);
         break;
      case MSG_ID_L4CRAC_RFOFF_REQ:
         rac_l4c_rfoff_req_handler();
         break;

      case MSG_ID_L4CRAC_ACT_REQ :
         rac_l4c_act_req_handler(local_para_ptr, peer_buff_ptr);
         break;
   	
  	   case MSG_ID_L4CRAC_REG_REQ:
         rac_l4c_reg_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      #ifdef __PS_SERVICE__
  	   case MSG_ID_L4CRAC_PS_REG_REQ:
         rac_l4c_ps_reg_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
      #endif

      case MSG_ID_L4CRAC_DEREG_REQ:
         rac_l4c_dereg_req_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_PLMN_LIST_REQ:
         rac_l4c_plmn_list_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_PLMN_SEARCH_REQ:
         rac_l4c_plmn_search_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_PLMN_LIST_STOP_REQ:
         rac_l4c_plmn_list_stop_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_CLASS_CHANGE_REQ:
         rac_l4c_class_change_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_SET_RAT_MODE_REQ:
         rac_l4c_set_rat_mode_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_SET_PREFER_RAT_REQ:
         rac_l4c_set_prefer_rat_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
#ifdef __2STAGE_NW_SELECTION__
      case MSG_ID_L4CRAC_SUSP_RESU_UPDATE_REQ:
         rac_l4c_susp_resu_update_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif         
      case MSG_ID_L4CRAC_SET_ROAMING_MODE_REQ:
         rac_l4c_set_roaming_mode_req_handler(local_para_ptr, peer_buff_ptr); 
         break;

      #ifdef __DYNAMIC_SET_IMEI__
      case MSG_ID_L4CRAC_SET_IMEI_REQ:
         rac_l4c_set_imei_req_handler(local_para_ptr, peer_buff_ptr); 
         break;
      #endif

#ifdef __UE_EFOPLMN__
      case MSG_ID_L4CRAC_UE_OPLMN_UPDATE_REQ:
         rac_l4c_set_ue_oplmn_update_req_handler(local_para_ptr, peer_buff_ptr); 
         break;
#endif         
      /*****************************/
      /*      NVRAM Message        */
      /*****************************/

      case MSG_ID_NVRAM_READ_CNF:
         rac_nvram_read_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
      
      case MSG_ID_NVRAM_WRITE_CNF:
         /* Do nothing, since don't know how */
         /* John Tang 2004/07/09: */
         rac_nvram_write_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      /*****************************/
      /*      MM Message           */
      /*****************************/
      case MSG_ID_GMMREG_RFOFF_CNF:
         rac_mm_rfoff_cnf_handler();
         break;
      case MSG_ID_GMMREG_ATTACH_CNF:
         rac_mm_attach_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
#if 0 /* Johnny: 3G RAC */
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif /* ~Johnny */
      case MSG_ID_GMMREG_DETACH_IND:
         rac_mm_detach_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

#if 0 /* Johnny: 3G RAC */
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif /* ~Johnny */

      case MSG_ID_GMMREG_NW_INFO_IND:
         rac_mm_nw_info_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_GMMREG_PLMN_LIST_CNF:
         rac_mm_plmn_list_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_GMMREG_CELL_INFO_UPDATE_IND:
         rac_mm_cell_info_update_ind_msg_handler(local_para_ptr, peer_buff_ptr);          
         break;
         
      case MSG_ID_GMMREG_CIPHER_IND:
         rac_mm_cipher_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
         
      case MSG_ID_GMMREG_PLMN_SEARCH_CNF:
	  rac_mm_plmn_search_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
	  break;

      case MSG_ID_GMMREG_PLMN_LIST_STOP_CNF:
	  rac_mm_plmn_list_stop_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
	  break;

      case MSG_ID_GMMREG_SET_RAT_MODE_CNF:
	  rac_mm_set_rat_mode_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
	  break;
         
      /* CH_Liang 2005/05/31: Notify L4C if entering dedicated / pkt transfer mode */

      case MSG_ID_GMMREG_DEDICATED_MODE_IND:
         rac_mm_dedicated_mode_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
      #ifdef __HOMEZONE_SUPPORT__
      case MSG_ID_MMIAS_PKT_TRANSFER_MODE_IND:
         rac_rr_pkt_transfer_mode_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
      #endif

      #ifdef __PS_SERVICE__
      case MSG_ID_GMMREG_PS_SERVICE_INFO_IND:
         rac_mm_ps_service_info_ind_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
      #endif         

      #ifdef __REL5__
      case MSG_ID_GMMREG_NW_ECC_IND:
         rac_mm_nw_ecc_ind_msg_handler(ilm_ptr);
         break;
      #endif       

      case MSG_ID_GMMREG_SET_ROAMING_MODE_CNF:
         rac_mm_set_roaming_mode_cnf_handler(local_para_ptr, peer_buff_ptr); 
         break;
      
      case MSG_ID_GMMREG_SET_PREFER_RAT_CNF:
         break;
         
#if defined (__NO_PSDATA_SEND_SCRI__) || defined (__FAST_DORMANCY__) 
      case MSG_ID_GMMREG_END_PS_DATA_SESSION_IND:
         rac_mm_end_ps_data_session_ind_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif /*defined (__NO_PSDATA_SEND_SCRI__) || defined (__FAST_DORMANCY__) */
#ifdef __REPORT_AVAILABLE_PLMN__
      case MSG_ID_GMMREG_PLMN_LIST_IND:
         rac_mm_plmn_list_ind_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif		 
#ifdef __2STAGE_NW_SELECTION__		 
      case MSG_ID_GMMREG_SUSP_RESU_UPDATE_CNF:
         rac_mm_susp_resu_update_cnf_handler(local_para_ptr, peer_buff_ptr);
         break;
      case MSG_ID_GMMREG_SUSPEND_STATUS_IND:
         rac_mm_suspend_status_ind_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif		 
      /*****************************/
      /*      GEMINI Message          */
      /*****************************/
#ifdef __GEMINI__
      case MSG_ID_GMMREG_POWERON_SEARCH_FINISH_IND:
         rac_mm_search_normal_finish_ind_handler(ilm_ptr);
         break;

      case MSG_ID_GMMREG_RR_SERVICE_STATUS_IND: //20080217
         rac_mm_rr_service_status_ind_handler(ilm_ptr);
         break;

      case MSG_ID_L4CRAC_SIM_STATUS_UPDATE_REQ: //20071211
         rac_l4c_sim_status_update_req_handler(ilm_ptr);
         break;
#endif		 
	  
      /*****************************/
      /*      SAT Message          */
      /*****************************/
      #ifdef __SAT__

      case MSG_ID_SAT_IMEI_INFO_REQ:
         rac_sat_imei_info_req_msg_handler(ilm_ptr);
         break;

      case MSG_ID_SAT_TIME_ZONE_REQ:
         rac_sat_time_zone_req_msg_handler();
         break;
       
      #endif /* #ifdef __SAT__ */

#if defined(__FAST_DORMANCY__) || defined(__NO_PSDATA_SEND_SCRI__)
      //mtk02475: for Fast Dormancy, allow upperlayer explicitly disconnect data channel
      case MSG_ID_L4CRAC_END_PS_DATA_SESSION_REQ:
         rac_l4c_end_ps_data_session_req_handler(local_para_ptr, peer_buff_ptr);
         break;
         
      case MSG_ID_GMMREG_END_PS_DATA_SESSION_CNF:
         rac_mm_end_ps_data_session_cnf_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif

#ifdef __CSG_SUPPORT__
      //mtk02475: for Rel8 CSG feature
      case MSG_ID_L4CRAC_CSG_LIST_REQ:
         rac_l4c_csg_list_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_L4CRAC_CSG_LIST_STOP_REQ:
         rac_l4c_csg_list_stop_req_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_GMMREG_CSG_LIST_CNF:
         rac_mm_csg_list_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;

      case MSG_ID_GMMREG_CSG_LIST_STOP_CNF:
         rac_mm_csg_list_stop_cnf_msg_handler(local_para_ptr, peer_buff_ptr);
         break;
#endif /* __CSG_SUPPORT__ */

      case MSG_ID_TIMER_EXPIRY:
      {
         //MAUI_02914482 [RAC] use evshed_create to replace new_evshed
         /* Execute event's timeout handler */
         evshed_timer_handler(rac_ptr_g->event_scheduler_ptr);
      }
      break;

#ifdef __MTK_INTERNAL__
/* under construction !*/
/* under construction !*/
#ifdef __UMTS_RAT__         
/* under construction !*/
#endif             
/* under construction !*/
/* under construction !*/
#endif /* __MTK_INTERNAL__ */   
  
      default:
         DEBUG_ASSERT(0);
         break;

   } /* end of switch messages */

} /* end of rac_main*/
Beispiel #5
0
void usbc_cosim_core_task_main(task_entry_struct* task_entry_ptr)
{
    kal_uint8 wait_count = 0;
    ilm_struct current_ilm;
    kal_uint32 rt_event;
    kal_uint16 timer_index;
    module_type dest_mod;
    msg_type msg_id;
    usbc_class_device_esl_connect_parm  *rsp_msg_p;
    usbc_core_t* pUsbCore = usbc_core_get_instance();

    kal_set_active_module_id(MOD_USBCORE);
    kal_mem_set(&current_ilm, 0, sizeof(ilm_struct));

    usbc_esl_printf("Start USBCORE task loop...\n");
    while(1)
    {
        while ( msg_get_extq_messages() > 0 )
        {
            if ( msg_receive_extq(&current_ilm) != KAL_TRUE )
            {
                break;
            }

            switch (current_ilm.msg_id)
            {
                case MSG_ID_TIMER_EXPIRY:
                    timer_index = evshed_get_index(&current_ilm);
                    switch (timer_index)
                    {
                        case USBC_WK_NOTIFY_INDEX:
                            ASSERT(0);
                            evshed_timer_handler(pUsbCore->usbc_es_wk_notify_g);
                            break;

                        default:
                            break;
                    }
                    break;

                default:
                    break;
            }

            destroy_ilm(&current_ilm);
        }

        /* Wait someone notify HMU to wake up HIF. */
        rt_event = hmu_hifeg_wait(HIF_DRV_EG_HIF_TICK_EVENT | HIF_DRV_EG_USBC_IND_EVENT);
        if ((HIF_DRV_EG_HIF_TICK_EVENT & rt_event) &&
            (pUsbCore->state != USBC_USB_STATE_SUSPENDED))
        {
            /* poll HIF queue data */
            usbc_esl_printf("Start HIF USB poll queue...\n");
            usbc_normal_hif_poll_queue();
            usbc_esl_printf("End HIF USB poll queue...\n");
        }
        if ((HIF_DRV_EG_USBC_IND_EVENT & rt_event))
        {
            /* Handle indications */
            usbc_normal_hif_process_indications();
        }

        // wait for IPCORE finishing handling ILMs in ipc_init
        if (wait_count < 1)
        {
            wait_count++;

            if(wait_count == 1)
            {
                usbc_esl_printf("Emulare USB enumeration...\n");
                // Emulate USB plug-in for ESL COSIM
                usbc_cosim_hif_attach();

                usbc_esl_printf("Set USB class to connected state...\n");
                // change USB classes state to transfer data
                rsp_msg_p = (usbc_class_device_esl_connect_parm*)construct_local_para(sizeof(usbc_class_device_esl_connect_parm), TD_RESET);
                ASSERT(rsp_msg_p);
                rsp_msg_p->class_device_id = 0;
                msg_id = MSG_ID_USBCLASS_USBCORE_ESL_ENTER_CONNECTED_STATE_REQ;

                switch ((pUsbCore->class_device[0]).class_type)
                {
#ifdef __USB_MBIM_SUPPORT__
                    case USB_CLASS_MBIM:
                        dest_mod = MOD_MBIM;
                        break;
#endif
#ifdef __USB_ECM_SUPPORT__
                    case USB_CLASS_ECM:
                        dest_mod = MOD_ECM;
                        break;
#endif
#ifdef __USB_RNDIS_SUPPORT__			
                    case USB_CLASS_RNDIS:
                        dest_mod = MOD_RNDIS;
                        break;
#endif			
                    default:
                        // We assume the first class device must be a NIC for ESL CO-SIM
                        ASSERT(0);
                        return;
                        break;
                }

                msg_send6(MOD_USBCORE,  // src module
                          dest_mod,  // dst module
                          0,       // sap id
                          msg_id,
                          (local_para_struct*)rsp_msg_p,
                          0); //msg id
            }
        }
    }
}