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; }
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; } }