static int invoke_led_service(void) { int rc = 0; int getvalue; char *argv_on[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "on", "-n", FELICA_LED_INTENT, NULL }; char *argv_off[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "off", "-n", FELICA_LED_INTENT, NULL }; static char *envp[] = {FELICA_LD_LIBRARY_PATH,FELICA_BOOTCLASSPATH,FELICA_PATH,NULL}; #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RFS] invoke led service ... \n"); #endif getvalue = felica_gpio_read(felica_get_rfs_gpio_num()); if( isFelicaUsed ==0 && getvalue == GPIO_LOW_VALUE) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED On ... \n"); #endif lock_felica_rfs_wake_lock(); rc = call_usermodehelper( argv_on[0], argv_on, envp, UMH_WAIT_PROC ); isFelicaUsed = 1; } else if( isFelicaUsed ==1 && getvalue == GPIO_HIGH_VALUE) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED Off ... \n"); #endif unlock_felica_rfs_wake_lock(); rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC ); isFelicaUsed =0; } else { #ifdef FEATURE_DEBUG_MED FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED exception case ... do nothing \n"); FELICA_DEBUG_MSG("[FELICA_RFS] felica_gpio_read = %d , isFelicaUsed =%d \n",getvalue,isFelicaUsed); #endif unlock_felica_rfs_wake_lock(); #if defined(CONFIG_LGE_FELICA_ONLY) FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED ERROR case so LED Off ... \n"); rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC ); isFelicaUsed =0; #endif } #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RFS] invoke_led_service: %d \n", rc); #endif return rc; }
static int invoke_led_service(void) { int rc = 0; int getvalue; char *argv_on[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "on", "-n", FELICA_LED_INTENT, NULL }; char *argv_off[] = { "/system/bin/sh", "/system/bin/am", "startservice", "--es", "rfs", "off", "-n", FELICA_LED_INTENT, NULL }; static char *envp[] = {FELICA_LD_LIBRARY_PATH,FELICA_BOOTCLASSPATH,FELICA_PATH,NULL}; FELICA_DEBUG_MSG("[FELICA_RFS] invoke led service ... \n"); getvalue = felica_gpio_read(GPIO_FELICA_RFS); FELICA_DEBUG_MSG("[FELICA_RFS] felica_gpio_read = %d , isFelicaUsed =%d \n",getvalue,isFelicaUsed); if( isFelicaUsed ==0 && getvalue == GPIO_LOW_VALUE) { FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED On ... \n"); lock_felica_rfs_wake_lock(); rc = call_usermodehelper( argv_on[0], argv_on, envp, UMH_WAIT_PROC ); isFelicaUsed = 1; } else if( isFelicaUsed ==1 && getvalue == GPIO_HIGH_VALUE) { FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED Off ... \n"); unlock_felica_rfs_wake_lock(); rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC ); isFelicaUsed =0; } else { FELICA_DEBUG_MSG("[FELICA_RFS] Felica LED ERROR case so LED Off ... \n"); unlock_felica_rfs_wake_lock(); rc = call_usermodehelper( argv_off[0], argv_off, envp, UMH_WAIT_PROC ); isFelicaUsed =0; } FELICA_DEBUG_MSG("[FELICA_RFS] invoke_led_service: %d \n", rc); return rc; }
/* * Description: MFC calls this function using read method(int read()) of FileInputStream class * Input: None * Output: RFS low : 1 RFS high : 0 */ static ssize_t felica_rfs_read(struct file *fp, char *buf, size_t count, loff_t *pos) { int rc = 0; int getvalue = GPIO_LOW_VALUE; #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_read - start \n"); #endif /* Check error */ if(NULL == fp) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR fp \n"); return -1; } if(NULL == buf) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR buf \n"); return -2; } if(1 != count) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR count \n"); return -3; } if(NULL == pos) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR file \n"); return -4; } /* Get GPIO value */ getvalue = felica_gpio_read(GPIO_FELICA_RFS); FELICA_DEBUG_MSG("[FELICA_RFS] RFS GPIO status : %d \n", getvalue); if((GPIO_LOW_VALUE != getvalue)&&(GPIO_HIGH_VALUE != getvalue)) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR - getvalue is out of range \n"); return -5; } /* Copy value to user memory */ getvalue = getvalue ? GPIO_LOW_VALUE: GPIO_HIGH_VALUE; FELICA_DEBUG_MSG("[FELICA_RFS] RFS status : %d \n", getvalue); rc = copy_to_user((void*)buf, (void*)&getvalue, count); if(rc) { FELICA_DEBUG_MSG("[FELICA_RFS] ERROR - copy_to_user \n"); return rc; } #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_read - end \n"); #endif #ifdef FELICA_FN_DEVICE_TEST FELICA_DEBUG_MSG("[FELICA_RFS] felica_rfs_read - result(%d) \n",result_read_rfs); if(result_read_rfs != -1) result_read_rfs = count; return result_read_rfs; #else return count; #endif }
/* * Description: MFC calls this function using read method(int read()) of FileInputStream class * Input: None * Output: INT low : RWS not available INT high : available */ static ssize_t felica_rws_read(struct file *fp, char *buf, size_t count, loff_t *pos) { int rc = 0; int getvalue = GPIO_HIGH_VALUE; /* Default status*/ #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RWS] felica_rws_read - start \n"); #endif /* Check error */ if(NULL == fp) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RWS] ERROR fp is NULL \n"); #endif return -1; } if(NULL == buf) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RWS] ERROR buf is NULL \n"); #endif return -1; } if(1 != count) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RWS] ERROR count(%d) \n",count); #endif return -1; } if(NULL == pos) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RWS] ERROR pos is NULL \n"); #endif return -1; } /* Get GPIO value */ getvalue = felica_gpio_read(felica_get_int_gpio_num()); if((GPIO_LOW_VALUE != getvalue)&&(GPIO_HIGH_VALUE != getvalue)) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RFS] ERROR - getvalue is out of range \n"); #endif return -1; } /* Change GPIO value to RWS value */ getvalue = getvalue ? RWS_AVAILABLE : RWS_NOT_AVAILABLE; #ifdef FEATURE_DEBUG_MED FELICA_DEBUG_MSG("[FELICA_RWS] RWS status : %d \n", getvalue); #endif /* Copy value to user memory */ rc = copy_to_user((void *)buf, (void *)&getvalue, count); if(rc) { #ifdef FEATURE_DEBUG_HIGH FELICA_DEBUG_MSG("[FELICA_RWS] ERROR - copy_to_user \n"); #endif return rc; } #ifdef FEATURE_DEBUG_LOW FELICA_DEBUG_MSG("[FELICA_RWS] felica_rfs_read - end \n"); #endif #ifdef FELICA_FN_DEVICE_TEST FELICA_DEBUG_MSG("[FELICA_RWS] felica_rfs_read - result(%d) \n",result_read_rws); if(result_read_rws != -1) result_read_rws = count; return result_read_rws; #else return count; #endif }