Beispiel #1
0
MhlTxNotifyEventsStatus_e  AppNotifyMhlEvent(uint8_t eventCode, uint8_t eventParam)
{
    char    event_string[MAX_EVENT_STRING_LEN];
    //char    *envp[] = {event_string, NULL};
    MhlTxNotifyEventsStatus_e retVal = MHL_TX_EVENT_STATUS_PASSTHROUGH;
	SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
			"AppNotifyEvent called, eventCode: 0x%02x eventParam: 0x%02x\n",
			eventCode, eventParam);

	// xuecheng, we don't have uevent now.
	//return retVal;
	switch(eventCode) {
		case MHL_TX_EVENT_CONNECTION:
			gDriverContext.flags |= MHL_STATE_FLAG_CONNECTED;
			strncpy(event_string, "MHLEVENT=connected", MAX_EVENT_STRING_LEN);
#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
#endif
			break;
		case MHL_TX_EVENT_RCP_READY:
			gDriverContext.flags |= MHL_STATE_FLAG_RCP_READY;
			strncpy(event_string, "MHLEVENT=rcp_ready", MAX_EVENT_STRING_LEN);
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
		case MHL_TX_EVENT_DISCONNECTION:
			gDriverContext.flags = 0;
			gDriverContext.keyCode = 0;
			gDriverContext.errCode = 0;
			strncpy(event_string, "MHLEVENT=disconnected", MAX_EVENT_STRING_LEN);
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
		case MHL_TX_EVENT_RCP_RECEIVED:
			gDriverContext.flags &= ~MHL_STATE_FLAG_RCP_SENT;
			gDriverContext.flags |= MHL_STATE_FLAG_RCP_RECEIVED;
			gDriverContext.keyCode = eventParam;
			//for RCP report function by garyyuan
			if(eventParam > 0x7F)
				break;
			input_report_mhl_rcp_key(gDriverContext.keyCode);
			snprintf(event_string, MAX_EVENT_STRING_LEN,
					"MHLEVENT=received_RCP key code=0x%02x", eventParam);
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
		case MHL_TX_EVENT_RCPK_RECEIVED:
			if((gDriverContext.flags & MHL_STATE_FLAG_RCP_SENT)
				&& (gDriverContext.keyCode == eventParam)) {
				gDriverContext.flags |= MHL_STATE_FLAG_RCP_ACK;
				SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
						"Generating RCPK received event, keycode: 0x%02x\n",
						eventParam);
				snprintf(event_string, MAX_EVENT_STRING_LEN,
						"MHLEVENT=received_RCPK key code=0x%02x", eventParam);
				#if 0
				kobject_uevent_env(&gDriverContext.pDevice->kobj,
									KOBJ_CHANGE, envp);
				#endif
			} else {
				SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
						"Ignoring unexpected RCPK received event, keycode: 0x%02x\n",
						eventParam);
			}
			break;
		case MHL_TX_EVENT_RCPE_RECEIVED:
			if(gDriverContext.flags & MHL_STATE_FLAG_RCP_SENT) {
				gDriverContext.errCode = eventParam;
				gDriverContext.flags |= MHL_STATE_FLAG_RCP_NAK;
				SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
						"Generating RCPE received event, error code: 0x%02x\n",
						eventParam);
				snprintf(event_string, MAX_EVENT_STRING_LEN,
						"MHLEVENT=received_RCPE error code=0x%02x", eventParam);
				#if 0
				kobject_uevent_env(&gDriverContext.pDevice->kobj,
									KOBJ_CHANGE, envp);
				#endif
			} else {
				SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
						"Ignoring unexpected RCPE received event, error code: 0x%02x\n",
						eventParam);
			}
			break;
		case MHL_TX_EVENT_DCAP_CHG:
			snprintf(event_string, MAX_EVENT_STRING_LEN,
					"MHLEVENT=DEVCAP change");
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
        case MHL_TX_EVENT_DSCR_CHG:
			snprintf(event_string, MAX_EVENT_STRING_LEN,
					"MHLEVENT=SCRATCHPAD change");
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
        case MHL_TX_EVENT_POW_BIT_CHG:
			if(eventParam) {
				snprintf(event_string, MAX_EVENT_STRING_LEN,
						"MHLEVENT=MHL VBUS power OFF");
			} else {
				snprintf(event_string, MAX_EVENT_STRING_LEN,
						"MHLEVENT=MHL VBUS power ON");
			}
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
		case MHL_TX_EVENT_RGND_MHL:
			snprintf(event_string, MAX_EVENT_STRING_LEN,
					"MHLEVENT=MHL device detected");
			#if 0
			kobject_uevent_env(&gDriverContext.pDevice->kobj,
								KOBJ_CHANGE, envp);
			#endif
			break;
		default:
			SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
					"AppNotifyEvent called with unrecognized event code!\n");
	}
    return retVal;
}
Beispiel #2
0
void	AppRcpDemo( uint8_t event, uint8_t eventParameter)
{
    uint8_t 	rcpKeyCode;
    
    //printf("App: Got event = %02X, eventParameter = %02X\n", (int)event, (int)eventParameter);
    
    switch( event )
    {
    case	MHL_TX_EVENT_DISCONNECTION:
        printk("App: Got event = MHL_TX_EVENT_DISCONNECTION\n");
        #ifdef CONFIG_OPPO_MODIFY
        //added by zhangyue on 2011-11-01 for adding the auto hpd feature
        #ifdef zy_auto_hpd
	  //deleted by zhangyue on 2011-12-23 for debug audio problem start
        //external_common_enable_hpd_feature(false);
	  //deleted by zhangyue on 2011-12-23 for debug audio problem end
        #endif
        #endif
        break;
    
    case	MHL_TX_EVENT_CONNECTION:
        printk("App: Got event = MHL_TX_EVENT_CONNECTION\n");
        #ifdef CONFIG_OPPO_MODIFY
        //added by zhangyue on 2011-11-01 for adding the auto hpd feature
        #ifdef zy_auto_hpd
        //modified by zhangyue on 2012-01-09 for debug the first plugin mhl can not output video start
        
        //external_common_enable_hpd_feature(true);
        //modified by zhangyue on 2012-01-09 for debug the first plugin mhl can not output video start
        #endif
        #endif
        break;
    
    case	MHL_TX_EVENT_RCP_READY:
        // Demo RCP key code PLAY
        rcpKeyCode = APP_DEMO_RCP_SEND_KEY_CODE;
        printk("App: Got event = MHL_TX_EVENT_RCP_READY...Sending RCP (%02X)\n", (int) rcpKeyCode);
    
    
        if( (0 == (MHL_FEATURE_RCP_SUPPORT & eventParameter)) ){
            printk( "App: Peer does NOT support RCP\n" );
        }
        if( (0 == (MHL_FEATURE_RAP_SUPPORT & eventParameter)) ){
            printk( "App: Peer does NOT support RAP\n" );
        }
        if( (0 == (MHL_FEATURE_SP_SUPPORT & eventParameter)) ){
            printk( "App: Peer does NOT support WRITE_BURST\n" );
        }
        
        
        //
        // If RCP engine is ready, send one code
        //
        if( SiiMhlTxRcpSend( rcpKeyCode )){
            printk("App: SiiMhlTxRcpSend (%02X)\n", (int) rcpKeyCode);
        }else{
            printk("App: SiiMhlTxRcpSend (%02X) Returned Failure.\n", (int) rcpKeyCode);
        }
        
        break;
    
    case	MHL_TX_EVENT_RCP_RECEIVED:
        //
        // Check if we got an RCP. Application can perform the operation here
        // and send RCPK or RCPE. For now, we send the RCPK
        //
        #ifdef ZY_IMPLEMENT_RCP
        rcpKeyCode = eventParameter;
        #else
        rcpKeyCode = eventParameter & 0x7F;
        #endif
        printk("App1: Received an RCP key code = %02X\n", (int)rcpKeyCode );
        
        // Added RCP key printf and interface with UI. //by oscar 20101217
        #ifdef ZY_IMPLEMENT_RCP
        input_report_mhl_rcp_key(rcpKeyCode);
	  #endif
        
        SiiMhlTxRcpkSend(rcpKeyCode);
        break;
        
    case	MHL_TX_EVENT_RCPK_RECEIVED:
        printk("App: Received an RCPK = %02X\n",MHL_TX_EVENT_RCPK_RECEIVED);
        break;
    
    case	MHL_TX_EVENT_RCPE_RECEIVED:
        printk("App: Received an RCPE = %02X\n",MHL_TX_EVENT_RCPE_RECEIVED);
        break;
    
    default:
        break;
    }
}