コード例 #1
0
ファイル: dsk_usbh.c プロジェクト: silview/C100A
/*
****************************************************************************************************
*Name        : dsk_send_rmmod_usbh_cmd
*Prototype   : __s32 dsk_send_rmmod_usbh_cmd(void)
*Arguments   : void
*Return      : EPDK_OK     发送成功
*              EPDK_FAIL   发送失败
*Description : 向usbh_monitor发送卸载host驱动命令
*Other       : 命令发送完毕后,delay 1s 确保卸载成功
****************************************************************************************************
*/
__s32 dsk_send_rmmod_usbh_cmd(void)
{
    ES_FILE *usbm_dev_hadle = NULL;
    __s32 ret = 0;

	__msg("%s %d :send_rmmod_usbh_cmd \n", __FUNCTION__, __LINE__);
    /* 打开 hwsc 设备 */
    usbm_dev_hadle = eLIBs_fopen("b:\\HWSC\\hwsc", "r");
    if(usbm_dev_hadle == NULL){
        __wrn("ERR: send_rmmod_usbh_cmd: eLIBs_fopen failed\n");
        return EPDK_FAIL;
    }

    /* 发送加载host命令 */
    ret = eLIBs_fioctrl(usbm_dev_hadle, DEV_IOC_USR_HWSC_APP_RMMOD_USBH, 0, NULL);
    if(ret == EPDK_FAIL){
        __msg("ERR: send_rmmod_usbh_cmd: execute DEV_IOC_USR_HWSC_APP_RMMOD_USBH failed\n");
        
        eLIBs_fclose(usbm_dev_hadle);
        usbm_dev_hadle = NULL;
        
        return EPDK_FAIL;
    }
    
    /* 关闭 hwsc 设备 */
    eLIBs_fclose(usbm_dev_hadle);
    usbm_dev_hadle = NULL;

	/* delay 1s 确保usb_monitor有足够的时间卸载 */
	esKRNL_TimeDly(400);
    
    return EPDK_OK;
}
コード例 #2
0
ファイル: dsk_usbh.c プロジェクト: silview/C100A
/*
****************************************************************************************************
*Name        : dsk_send_insmod_usbh_cmd
*Prototype   : __s32 dsk_send_insmod_usbh_cmd(void)
*Arguments   : void
*Return      : EPDK_OK     发送成功
*              EPDK_FAIL   发送失败
*Description : 向usbh_monitor发送加载host驱动命令
*Other       : 命令发送完毕后,delay 2s 确保加载成功
****************************************************************************************************
*/
__s32 dsk_send_insmod_usbh_cmd(void)
{
    ES_FILE *usbm_dev_hadle = NULL;
    __s32 ret = 0;

	__msg("%s %d :send_insmod_usbh_cmd \n", __FUNCTION__, __LINE__);
    /* 打开 hwsc 设备 */
    usbm_dev_hadle = eLIBs_fopen("b:\\HWSC\\hwsc", "r");
    if(usbm_dev_hadle == NULL){
        __wrn("ERR: send_insmod_usbh_cmd: eLIBs_fopen failed\n");
        return EPDK_FAIL;
    }
    
    /* 发送加载host命令 */
    ret = eLIBs_fioctrl(usbm_dev_hadle, DEV_IOC_USR_HWSC_APP_INSMOD_USBH, 0, NULL);
    if(ret == EPDK_FAIL){
        __msg("ERR: send_insmod_usbh_cmd: execute DEV_IOC_USR_HWSC_APP_INSMOD_USBH failed\n");
        
        eLIBs_fclose(usbm_dev_hadle);
        usbm_dev_hadle = NULL;
        
        return EPDK_FAIL;
    }
    
    /* 关闭 hwsc 设备 */
    eLIBs_fclose(usbm_dev_hadle);
    usbm_dev_hadle = NULL;

	/*wait to install host driver less than 2 second*/
	esKRNL_TimeDly(400);
    
    return EPDK_OK;
}
コード例 #3
0
ファイル: dsk_echo.c プロジェクト: silview/C100A
//详细调用方法参见SDK的app_root_scene.c和record_view_doc.c
__s32 dsk_audio_echo_close(void)
{
    __s32 aux;
    
    if(NULL == g_fp_rec)
    {
        __wrn("rec hdl not open...\n");
        return EPDK_FAIL;
    }        

    aux = 0;
    eLIBs_fioctrl(g_fp_rec, AUDIO_DEV_CMD_ENABLE_ECHO, aux, 0);

    aux = 0;
    eLIBs_fioctrl(g_fp_rec, AUDIO_DEV_CMD_SET_ECHO_BUF_MODE, aux, 0);

    eLIBs_fioctrl(g_fp_rec, AUDIO_DEV_CMD_ENABLE_REC_LOW_PASS, 0, 0);
    eLIBs_fioctrl(g_fp_rec, AUDIO_DEV_CMD_STOP, 0, 0);
    
    if(g_fp_rec)
    {
        eLIBs_fclose(g_fp_rec);
        g_fp_rec = NULL;
    }
    
    dsk_audio_direct_output_off();
    
    return EPDK_OK;
}
コード例 #4
0
ファイル: headbar_uipara.c プロジェクト: silview/C100A
static void shbar_palette_adjust(void)
{
	ES_FILE  *p_disp;		
	__u32	  *palette_buf;
	HTHEME 	  htheme;
	
	htheme = dsk_theme_open(0);	
	palette_buf = dsk_theme_hdl2buf(htheme);
	/*define palette's selfdefine area*/
	*(palette_buf+0xC0) = 0x00000000;
	*(palette_buf+0xC1) = 0xC0323232;
	
	p_disp = eLIBs_fopen("b:\\DISP\\DISPLAY", "r+");	
	if(!p_disp)
	{
		__wrn("open display fail\n");
		return ;
	}
	/* get palette */	
	{
		__u32 	arg[3];
	
		arg[0] = (__u32)palette_buf;
		arg[1] = 0;
		arg[2] = ROBIN_PALETTE_COLOR_COUNT * 4;
		eLIBs_fioctrl( p_disp, DISP_CMD_SET_PALETTE_TBL, 0, (void *)arg );	
	}
	
	eLIBs_fclose(p_disp);
	
	dsk_theme_close(htheme);	
	
}
コード例 #5
0
ファイル: awucg_stdio.c プロジェクト: esxgx/sc9800-epos-sdlx
char *__sdlx_getenvr(void)
{
	__u8		err;
	__krnl_tcb_t	*tcb;
#if	0
	ES_FILE * edebug;
#endif

//	由于EPDK本身的krnl.h久未更新,因此申请内存不能按照sizeof(__krnl_tcb_t)来
//	进行,否则会导致堆栈溢出。
	tcb = (__krnl_tcb_t *)malloc(max(sizeof(__krnl_tcb_t), 0x1000)); 

	err = esKRNL_TaskQuery(OS_PRIO_SELF, tcb);
	if(err == OS_NO_ERR) {	// OS_NO_ERR
		if (tcb->xcb != NULL) {
			strcpy(xfile, tcb->xcb->xfile);
			xdirp = strlen(xfile);
			while(xdirp>=0 && xfile[xdirp] != '\\' && xfile[xdirp] != '/') --xdirp;
	#if	0
			edebug = eLIBs_fopen("e:\\tcb_xcb.txt", "w+");
			eLIBs_fseek(edebug, 0, 2);
			fprintf((FILE *)edebug, "%s\n%d\n", xfile, xdirp);
			eLIBs_fclose(edebug);
	#endif

		}
	}
	free(tcb);
	return xfile;
}
コード例 #6
0
ファイル: awucg_stdio.c プロジェクト: esxgx/sc9800-epos-sdlx
void _fcrt_name(char *ptbuf, const char *name)
{
	// epos 将所有的斜杠变换为反斜杠
	int i,j;
#if	0
	ES_FILE * edebug;
#endif

	i = j = 0;

	// 如果请求的是当前目录,就进行一次文件名转换
	if (name[0] == '.') {
		if (name[1] == '/' || name[1] == '\\') {
			while(j < xdirp) {
				ptbuf[j] = xfile[j];
				++j;
			}
			i = 1;		// BUG Fix 2010.5.8 esxgx
		}
	}
	while(name[i]) {
		if (name[i] == '/') ptbuf[j] = '\\';
		else ptbuf[j] = name[i];
		++i; ++j;
	}
	ptbuf[j] = '\0';		// 杯具,我的程序有BUG! = =
#if	0
	edebug = eLIBs_fopen("e:\\fcrt_name.txt", "w+");
	eLIBs_fputs(ptbuf, edebug);
	eLIBs_fputc('\n', edebug);
	eLIBs_fclose(edebug);
#endif

}
コード例 #7
0
ファイル: drv_display.c プロジェクト: silview/C100A
__s32 DRV_hdmi_get_HPD_status(void)
{
    ES_FILE * p_hdmi;
    __s32 ret;
    
    p_hdmi = eLIBs_fopen("b:\\BUS\\HDMI", "r+");
    if(!p_hdmi)
    {
        __err("open hdmi device fail!\n");
    }
    ret  = eLIBs_fioctrl(p_hdmi, HDMI_CMD_GET_HPD_STATUS, 0, 0);
    if(ret != EPDK_OK)
    {
        __wrn("set hdmi mode fail!\n");
        eLIBs_fclose(p_hdmi);
        return EPDK_FAIL;
    }
    eLIBs_fclose(p_hdmi);

    return EPDK_OK;
}
コード例 #8
0
ファイル: drv_display.c プロジェクト: silview/C100A
__s32 DRV_hdmi_mode_support(__u8 mode)
{
    ES_FILE * p_hdmi;
    __s32 ret;
    
    p_hdmi = eLIBs_fopen("b:\\BUS\\HDMI", "r+");
    if(!p_hdmi)
    {
        __err("open hdmi device fail!\n");
    }
    ret  = eLIBs_fioctrl(p_hdmi, HDMI_CMD_MOD_SUPPORT, mode, 0);
    if(ret != EPDK_OK)
    {
        __wrn("set hdmi mode fail!\n");
        eLIBs_fclose(p_hdmi);
        return EPDK_FAIL;
    }
    eLIBs_fclose(p_hdmi);

    return EPDK_OK;
}
コード例 #9
0
ファイル: drv_display.c プロジェクト: silview/C100A
__s32 DRV_hdmi_set_mode(__disp_tv_mode_t mode)
{
	ES_FILE * p_hdmi;
	__s32 ret;
	
    p_hdmi = eLIBs_fopen("b:\\BUS\\HDMI", "r+");
    if(!p_hdmi)
    {
        __err("open hdmi device fail!\n");
    }
	ret  = eLIBs_fioctrl(p_hdmi, HDMI_CMD_SET_VIDEO_MOD, mode, 0);
	if(ret != EPDK_OK)
	{
		__wrn("set hdmi mode fail!\n");
		eLIBs_fclose(p_hdmi);
		return EPDK_FAIL;
	}
	eLIBs_fclose(p_hdmi);

	return EPDK_OK;
}
コード例 #10
0
ファイル: awucg_stdio.c プロジェクト: esxgx/sc9800-epos-sdlx
size_t fread(void *ptr,size_t size, size_t nmemb, FILE *fp)
{
#if	0
	ES_FILE * edebug;
	edebug = eLIBs_fopen("e:\\fp_fread_output.txt", "w+");
	eLIBs_fseek(edebug, 0, 2);
	fprintf(fp, "%x, %x, %x, %x, %x, %x, %x", ptr, size, nmemb, fp, &__stdin, &__stdout, &__stderr);
	eLIBs_fclose(edebug);
#endif
	if (fp == (FILE *)&__stdin || fp == (FILE *)&__stdout || fp == (FILE *)&__stderr)
		return size;				// 待实现
	return eLIBs_fread(ptr,size,nmemb, (ES_FILE *)fp);
}
コード例 #11
0
ファイル: awucg_stdio.c プロジェクト: esxgx/sc9800-epos-sdlx
FILE *fopen(const char *name, const char *mode)
{
	char ptbuf[FSYS_DIRNAME_MAX];
#if	0
	ES_FILE * edebug;
	edebug = eLIBs_fopen("e:\\fp_output.txt", "w+");
	eLIBs_fseek(edebug, 0, 2);
	eLIBs_fputs(name, edebug);
	eLIBs_fputc('\n', edebug);
	eLIBs_fclose(edebug);
#endif
	_fcrt_name(ptbuf, name);

	return (FILE *)eLIBs_fopen(ptbuf, mode);
}
コード例 #12
0
ファイル: dopoweroff.c プロジェクト: silview/C100A
static void __exec_poweroff(void)
{
    //do some thing here
    {
        ES_FILE * fp;
        fp = eLIBs_fopen("b:\\HID\\POWER", "w");
        if(!fp) 
        {
            __inf("power control connot be openned!\n");
        }
        //eLIBs_fioctrl(fp,  
        //eLIBs_fioctrl(fp, DRV_POWER_OFF, 0, 0);
        eLIBs_fclose(fp);
    }
    //esKSRV_PowerOff();
    __inf("Sorry 'PowerOff' system not realized\n");
}
コード例 #13
0
ファイル: dsk_usbh.c プロジェクト: silview/C100A
/*
****************************************************************************************************
*Name        : dsk_usbh_is_working
*Prototype   : __bool dsk_usbh_is_working(void)
*Arguments   : void
*Return      : EPDK_TRUE     usb host is working
*              EPDK_FAIL     usb host is NOT working
*Description : check whether the usb host is working or not.
*Other       : 
****************************************************************************************************
*/
__bool dsk_usbh_is_working(void)
{
     ES_FILE *usbm_dev_hadle = NULL;
     __s32 ret = 0;

    /* 打开 hwsc 设备 */
    usbm_dev_hadle = eLIBs_fopen("b:\\HWSC\\hwsc", "r");
    if(usbm_dev_hadle == NULL){
        __wrn("ERR: AppUsb_IsNeedAppInsmodUsbh: eLIBs_fopen failed\n");
        return EPDK_FALSE;
    }

    /* 获取usb host的工作状态 */
    ret = eLIBs_fioctrl(usbm_dev_hadle, DEV_IOC_USR_HWSC_GET_USBH_WORK_STATUS, 0, NULL);
 
    /* 关闭 hwsc 设备 */
    eLIBs_fclose(usbm_dev_hadle);
    usbm_dev_hadle = NULL;

    return ret;
}
コード例 #14
0
ファイル: drv_display.c プロジェクト: silview/C100A
void DRV_lcd_power_off(__u32 sel)
{
    ES_FILE *  hd 	= NULL;
    __s32 ret 	= 0;

    hd = eLIBs_fopen("b:\\HID\\POWER", "w");
    if(hd == NULL){
        __wrn("open power driver fail\n");
        return;
    }

    ret = eLIBs_fioctrl(hd, DRV_POWER_CMD_VSTS_SET, POWER_VOL_SW1,(void *)POWER_VOL_OFF);
    if(ret != EPDK_OK){
        __wrn("eLIBs_fioctrl DRV_POWER_CMD_VSTS_SET failed\n");
    }

    eLIBs_fclose(hd);
    hd = NULL;
    
    return;
}
コード例 #15
0
ファイル: dev_power.c プロジェクト: silview/C100A
static void __close_lcd(void)
{
	ES_FILE *disp;
	__u32 outputtype;
	__u32 	arg[3];	
	
	disp = eLIBs_fopen("b:\\DISP\\DISPLAY", "r+");		
	if(!disp)
	{
		__wrn("open display fail\n");
		return ;
	}
	
	outputtype = eLIBs_fioctrl(disp,DISP_CMD_GET_OUTPUT_TYPE,0,(void *)arg);
	if(outputtype == DISP_OUTPUT_TYPE_LCD)
	{
		arg[0] = 0;
		arg[1] = 0;
		arg[2] = 0;
		eLIBs_fioctrl(disp,DISP_CMD_LCD_OFF,0,(void *)arg);
	}

	eLIBs_fclose(disp);
}
コード例 #16
0
ファイル: home.c プロジェクト: shuntianxia/86Box
static H_LYR StandyWndCreate(const char *file_path)
{
	H_LYR hLyr;
	int rotation;
	FB frameBuf;

	ES_FILE *file = NULL;
	void *file_data = NULL;
	bmp_file_head_t *f_head= NULL;
	__layerwincreate_para_t layerWinCreate;
	__disp_layer_para_t lyrPara;
	__u32 lenth;

	file = eLIBs_fopen(file_path,"rb");
	if(file == NULL){
		__msg("file open fail\n");
		//return NULL;
		goto end;
	}
	f_head = eLIBs_malloc(sizeof(bmp_file_head_t));
	if(f_head==NULL){
  		__msg("file malloc fail\n");
		goto end;
	}
	eLIBs_fread(f_head,1,sizeof(bmp_file_head_t),file);
	if(f_head->bfType[0]!='B'||f_head->bfType[1]!='M'){
		__msg("file isnot bmp\n");
		goto end;
	}
	file_data = eLIBs_malloc(f_head->bfSize);
	eLIBs_fseek(file,0,SEEK_SET);
	lenth = eLIBs_fread(file_data,1,f_head->bfSize,file);
	__msg("lenth==%d\n",lenth);
	rotation = GUI_GetScnDir();
	MwLayerParaInit(&layerWinCreate, &frameBuf, &lyrPara, "Layer", rotation, 1, 320, 240);
	MwFillSize(&frameBuf.size, 320 , 240);
	MwFillRect(&lyrPara.src_win, 0, 0, 320, 240);
	hLyr = GUI_LyrWinCreate(&layerWinCreate);
	if (NULL == hLyr) {
		__msg("Create layer (%s) failed", layerWinCreate.name);
		goto end;
	}
	GUI_LyrWinSel(hLyr); 
	GUI_BMP_Draw(file_data, 0, 0);
	GUI_LyrWinSetSta(hLyr,GUI_LYRWIN_STA_ON);
	eLIBs_fclose(file);
	eLIBs_free(f_head);
	eLIBs_free(file_data);
	return hLyr;
end:
	if(file){
       eLIBs_fclose(file);
	}
	if(f_head){
		eLIBs_free(f_head);
	}
	if(file_data){
		eLIBs_free(file_data);
	}
	return NULL;
}
コード例 #17
0
ファイル: awucg_stdio.c プロジェクト: esxgx/sc9800-epos-sdlx
int fclose(FILE *fp)
{
	if (fp == (FILE *)&__stdin || fp == (FILE *)&__stdout || fp == (FILE *)&__stderr)
		return 0;
	return eLIBs_fclose((ES_FILE *)fp);
}
コード例 #18
0
ファイル: dode.c プロジェクト: silview/C100A
int dode(struct op *t, const char **args)
{
	ES_FILE * dispfile;
	__s32 ret = 0;
	__u32 pbuffer[3] = {0};

	esDEV_Plugin("\\drv\\display.drv", 0, 0, 1);
	dispfile = eLIBs_fopen("b:\\DISP\\DISPLAY", "r+");
    if(!dispfile)
    {
        Esh_printf("open display device fail!\n");
        return DOFAILED;
    }

	if(Esh_strcmp(args[1], "info") == 0 || Esh_strcmp(args[1], "INFO") == 0)
	{
		__disp_layer_info_t     layer_para;
		__s32 i = 0;
		char * wm[6] = {"NORMAL","PALETTE","INTER_BUF","GAMMA","SCALER","reserved"};
		char * format[17] = {"1-bpp","2-bpp","4-bpp","8-bpp","rgb655","rgb565","rgb556",
							"argb1555","rgba5551","rgb888","argb8888",
							"YUV444","YUV422","YUV420","YUV411","CSI RGB","reserved"};
		char * yuv_mode[6] = {"non-macro block planar","interleaved","non-macro block UV combined",
							"macro block planar","macro block UV combined","reserved"};

		Esh_printf(".Layers Information Begin.................................................................................................\n");
		for(i=0; i<4; i++)
		{
			__s32 pixel_fmt = 0;
			__s32 pixel_mode = 0;
			__s32 pixel_seq = 0;

			pbuffer[0] = i+100;
			pbuffer[1] = (__u32)&layer_para;
	    	ret = eLIBs_fioctrl(dispfile, DISP_CMD_LAYER_GET_PARA, 0, (void*)pbuffer);
	    	if(ret != EPDK_OK)
	    	{
		        Esh_printf(".\tLayer %d:close\n",i);
		        continue;
		    }
	    	Esh_printf(".\tLayer %d:open\n",i);
	    	
	    	Esh_printf(".\t\twork mode:%s\n",((__s32)layer_para.mode>=0 && layer_para.mode<5)?wm[layer_para.mode]:wm[5]);
	    	Esh_printf(".\t\tpriority:%d\n",layer_para.prio);

		    pixel_fmt = layer_para.fb.format;
		    pixel_mode = layer_para.fb.mode;
		    pixel_seq = layer_para.fb.seq;
	    	Esh_printf(".\t\tformat:%s,",(pixel_fmt>=0 && pixel_fmt<16)?format[pixel_fmt]:format[16]);
	    	Esh_printf("\tmode:%s,",(pixel_mode>=0 && pixel_mode<5)?yuv_mode[pixel_mode]:yuv_mode[5]);
	    	

		    if(pixel_fmt == DISP_FORMAT_ARGB8888 && pixel_mode == DISP_MOD_INTERLEAVED)
		    {
		    	Esh_printf("\tpixels sequence:%s,",(pixel_seq==DISP_SEQ_ARGB)?"ARGB":"BGRA");
		    }
		    else if(pixel_fmt == DISP_FORMAT_YUV422 && pixel_mode == DISP_MOD_INTERLEAVED)
		    {
		    	     if(pixel_seq==DISP_SEQ_UYVY) Esh_printf("\tpixels sequence:UYVY,");
		    	else if(pixel_seq==DISP_SEQ_YUYV) Esh_printf("\tpixels sequence:YUYV,");
		    	else if(pixel_seq==DISP_SEQ_VYUY) Esh_printf("\tpixels sequence:VYUY,");
		    	else if(pixel_seq==DISP_SEQ_YVYU) Esh_printf("\tpixels sequence:YVYU,");
		    }
		    else if(pixel_fmt == DISP_FORMAT_YUV444 && pixel_mode == DISP_MOD_INTERLEAVED)
		    {
		    	     if(pixel_seq==DISP_SEQ_AYUV) Esh_printf("\tpixels sequence:AYUV,");
		    	else if(pixel_seq==DISP_SEQ_VUYA) Esh_printf("\tpixels sequence:VUYA,");
		    }
		    else if(pixel_fmt == DISP_FORMAT_YUV420 && (pixel_mode == DISP_MOD_NON_MB_UV_COMBINED || pixel_mode == DISP_MOD_MB_UV_COMBINED))
		    {
		    	     if(pixel_seq==DISP_SEQ_UVUV) Esh_printf("\tpixels sequence:UVUV,");
		    	else if(pixel_seq==DISP_SEQ_VUVU) Esh_printf("\tpixels sequence:VUVU,");
		    }
		    else
		    {
		    	Esh_printf("\tpixels sequence:%d,",pixel_seq);
		    }
		    Esh_printf("\tB R channel swap:%s\n",layer_para.fb.br_swap==0?"RGB":"BGR");

			if(pixel_mode == DISP_MOD_INTERLEAVED)
			{
				Esh_printf(".\t\tframe buffer address 0:%x\n",layer_para.fb.addr[0]);
			}
		    else if(pixel_mode == DISP_MOD_NON_MB_UV_COMBINED || pixel_mode == DISP_MOD_MB_UV_COMBINED)
		    {
		    	Esh_printf(".\t\tframe buffer address 0:%x,\taddress 1:%x\n",layer_para.fb.addr[0],layer_para.fb.addr[1]);
		    }
		    else
		    {
		    	Esh_printf(".\t\tframe buffer address 0:%x,\taddress 1:%x,\tddress 2:%x\n",layer_para.fb.addr[0],layer_para.fb.addr[1],layer_para.fb.addr[2]);
		    }
		    
	    	Esh_printf(".\t\tsource window(x:%d,\ty:%d,\twidth:%d,\theight:%d)\n",layer_para.src_win.x,layer_para.src_win.y,layer_para.src_win.width,layer_para.src_win.height);
	    	Esh_printf(".\t\tscreen window(x:%d,\ty:%d,\twidth:%d,\theight:%d)\n",layer_para.scn_win.x,layer_para.scn_win.y,layer_para.scn_win.width,layer_para.scn_win.height);

	    	Esh_printf(".\t\tcolor key:%s\n",layer_para.ck_enable==0?"disable":"enable");
	    	Esh_printf(".\t\talpha:%s,\talpha value:%x\n",layer_para.alpha_en==0?"disable":"enable",layer_para.alpha_val);
	    	Esh_printf(".\t\tpipe:%d\n",layer_para.pipe);
	    }
		Esh_printf(".Layers Information End.................................................................................................\n");
	}
	else if(Esh_strcmp(args[1], "ol") == 0 || Esh_strcmp(args[1], "OL") == 0 || Esh_strcmp(args[1], "cl") == 0 || Esh_strcmp(args[1], "CL") == 0)
	{
		const char  *err = NULL;
		__s32 layer_num = 0;
		
		layer_num = eLIBs_strtol(args[2], &err, 0 );
		if(layer_num>=0 && layer_num<=3)
		{
			pbuffer[0] = layer_num+100;
			if(Esh_strcmp(args[1], "ol") == 0 || Esh_strcmp(args[1], "OL") == 0)
			{
				ret = eLIBs_fioctrl(dispfile, DISP_CMD_LAYER_OPEN, 0, (void*)pbuffer);
			}
			else
			{
				ret = eLIBs_fioctrl(dispfile, DISP_CMD_LAYER_CLOSE,0, (void*)pbuffer);
			}
			if(ret != EPDK_OK)
			{
				Esh_printf("open/close layer fail!\n");
			}
		}
		else
		{
			Esh_printf("para error!\n");
		}
	}
	
    eLIBs_fclose(dispfile);
	return DOSUCCEED;
}