示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
/*
 * 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
}