static ssize_t lg_show_manual_mode_info(struct device *dev,
									struct device_attribute *attr, char *buf)
{
	printk(KERN_INFO "%s\n", __func__);
	remote_rpc_request_val(LGE_TESTMODE_MANUAL_TEST_INFO, (char *)testmode_manual_mode_info, sizeof(testmode_manual_mode_info));
	return snprintf(buf, sizeof(testmode_manual_mode_info), "%s\n", testmode_manual_mode_info);
}
static void
sync_cmd_func(struct work_struct *work)
{
	printk(KERN_INFO "%s, cmd : %ld\n", __func__, sync_cmd_data.cmd);	

	switch(sync_cmd_data.cmd)
	{
		case LGE_SYNC_REQUEST:
#ifdef CONFIG_LGE_SUPPORT_RAPI
			if(remote_rpc_request(LGE_SYNC_REQUEST) < 0)
				printk(KERN_ERR "%s, rpc request failed\n", __func__);
			else
				printk(KERN_INFO "%s, sync request succeeded\n", __func__);
#endif
			break;

#ifdef CONFIG_LGE_MANUAL_MODE_TEST
		case LGE_TESTMODE_MANUAL_TEST_INFO:
			remote_rpc_request_val(sync_cmd_data.cmd, (char *)testmode_manual_mode_info, sizeof(testmode_manual_mode_info));
			printk(KERN_INFO "%s, MANUAL MODE : %s\n", __func__, testmode_manual_mode_info);
			break;
#endif
		default:
			printk(KERN_ERR "%s, unknown command : %d\n", __func__, sync_cmd_data.cmd);
			break;
	}
	
	return;
}
static ssize_t lg_show_esn_info(struct sys_device *dev,
									struct sysdev_attribute *attr, char *buf)
{
	printk(KERN_INFO "%s, ESN : %s\n", __func__, testmode_esn_info);
	
//	if ((!strncmp(testmode_esn_info, "UNKNOWN", 7)) )
	{
		remote_rpc_request_val(LGE_ESN_INFO, (char *)testmode_esn_info, sizeof(testmode_esn_info));
		printk(KERN_INFO "%s, ESN : %s\n", __func__, testmode_esn_info);
	}
	return snprintf(buf, sizeof(testmode_esn_info), "%s\n", testmode_esn_info);
}
static ssize_t lg_show_min_info(struct device *dev,
									struct device_attribute *attr, char *buf)
{

	printk(KERN_INFO "%s\n", __func__);
	
	if (!strncmp(testmode_min_info, "UNKNOWN", 7)) 
	{
		remote_rpc_request_val(LGE_MIN_INFO, (char *)testmode_min_info, sizeof(testmode_min_info));
		printk(KERN_INFO "%s, MIN : %s\n", __func__, testmode_min_info);
	}
	return snprintf(buf, sizeof(testmode_min_info), "%s\n", testmode_min_info);
}
static ssize_t lg_show_sw_version_info(struct device *dev,
									struct device_attribute *attr, char *buf)
{
	char *split_char_ptr = NULL;
	printk(KERN_INFO "%s\n", __func__);
	
	if (!strncmp(testmode_sw_version_info, "UNKNOWN", 7)) 
	{
		remote_rpc_request_val(LGE_SW_VERSION_INFO, (char *)testmode_sw_version_info, sizeof(testmode_sw_version_info));
		printk(KERN_INFO "%s, SW version : %s\n", __func__, testmode_sw_version_info);
	}

	split_char_ptr = strstr(testmode_sw_version_info, "-");
	if(split_char_ptr == NULL)
	{
		printk(KERN_ERR "%s, NULL split ptr\n", __func__);
		return snprintf(buf, sizeof(testmode_sw_version_info), "%s\n", testmode_sw_version_info);
	}
	else
	{
		return snprintf(buf, (size_t)(split_char_ptr - testmode_sw_version_info +1), "%s\n", testmode_sw_version_info);
	}
}