Beispiel #1
0
static void drv_lcd_close_callback(void *parg)
{
    disp_lcd_flow *flow;
    u32 sel = (__u32)parg;
    s32 i = lcd_flow_cnt[sel]++;

    flow = bsp_disp_lcd_get_close_flow(sel);

    if(i < flow->func_num)
    {
    	flow->func[i].func(sel);
        if(flow->func[i].delay == 0)
        {
            drv_lcd_close_callback((void*)sel);
        }
        else
        {
            lcd_timer[sel].data = sel;
			lcd_timer[sel].expires = flow->func[i].delay;
			lcd_timer[sel].function = drv_lcd_close_callback;
			add_timer(&lcd_timer[sel]);
        }
    }
    else if(i == flow->func_num)
    {
        bsp_disp_lcd_post_disable(sel);
        lcd_op_finished[sel] = 1;
    }
}
void DRV_lcd_close_callback(void *parg)
{
    __lcd_flow_t *flow;
    __u32 sel = (__u32)parg;
    __s32 i = lcd_flow_cnt[sel]++;

    flow = bsp_disp_lcd_get_close_flow(sel);

    if(i < flow->func_num)
    {
    	flow->func[i].func(sel);
        if(flow->func[i].delay == 0)
        {
            DRV_lcd_close_callback((void*)sel);
        }
        else
        {
            lcd_timer[sel].data = sel;
			lcd_timer[sel].expires = flow->func[i].delay;
			lcd_timer[sel].function = DRV_lcd_close_callback;
			add_timer(&lcd_timer[sel]);
        }
    }
    else if(i == flow->func_num)
    {
        bsp_disp_lcd_close_after(sel);
        lcd_op_finished[sel] = 1;
    }
}