⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_messages.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:


T_RV_RET lcd_clear_rectangle(UINT8 x1, UINT8 y1, UINT8 x2, UINT8 y2)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_CLEAR_RECTANGLE	      *msg_ptr;
	
	 /* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
		return (RV_NOT_READY);
	
    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);

	mb_status = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_CLEAR_RECTANGLE ), (void **) &msg_ptr);	
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
		msg_ptr->x1 = x1;
		msg_ptr->y1 = y1;
		msg_ptr->x2 = x2;
		msg_ptr->y2 = y2;

		msg_ptr->os_hdr.msg_id = LCD_CLEAR_RECTANGLE_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

		return (RV_OK);
	}
	else 
			{	
		rvf_send_trace("LCD_ClearRectangle function FAILED ",35, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
	}
}

/********************************************************************************/
/*    Function Name: LCD_DrawIcon						    					*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_display_icon message into lcd mailbox	*/
/*																				*/		
/*                                                                              */
/*    Input Parameters:x, y, icon_id											*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_draw_icon(UINT8 x,UINT8 y,UINT8 icon_id)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_DRAW_ICON			*msg_ptr;
	
    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);

	/* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
	{	
		return (RV_NOT_READY);
	}

	mb_status = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_DRAW_ICON ), (void **) &msg_ptr);	
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
		msg_ptr->icon_id = icon_id;
		msg_ptr->x = x;
		msg_ptr->y = y;

		msg_ptr->os_hdr.msg_id = LCD_DRAW_ICON_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

		return (RV_OK);
	}
	else 
			{	
		rvf_send_trace("LCD_DrawIcon function FAILED ",29, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
	}
}

/********************************************************************************/
/*    Function Name: LCD_RefreshBloc								    		*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_draw_bloc message into lcd mailbox		*/	
/*																				*/		
/*                                                                              */
/*    Input Parameters:table,x_dim,y_dim,x_pos,y_pos							*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_refresh_bloc(char *table,UINT8 x_dim,UINT8 y_dim,UINT8 x_pos,UINT8 y_pos)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_REFRESH_BLOC	      *msg_ptr;
	

	/* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
		return (RV_NOT_READY);

    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);

	mb_status = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_REFRESH_BLOC), (void **) &msg_ptr);	

	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
		msg_ptr->table = table;
		msg_ptr->x_dim = x_dim;
		msg_ptr->y_dim = y_dim;
		msg_ptr->x_pos = x_pos;
		msg_ptr->y_pos = y_pos;

		msg_ptr->os_hdr.msg_id = LCD_REFRESH_BLOC_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

		return (RV_OK);
	}
	else 
	{	
		rvf_send_trace("LCD_RefreshBloc function FAILED ",32, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
	}
}

/********************************************************************************/
/*    Function Name: LCD_PixBlt													*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_refresh_bloc message into lcd mailbox	*/	
/*																				*/		
/*                                                                              */
/*    Input Parameters:table,x_dim,y_dim,x_pos,y_pos,table						*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_pix_blt(int x_pos,int y_pos,int x_dim,int y_dim,char *table)
{
	T_RVF_MB_STATUS			mb_status1,mb_status2;
    T_LCD_DRAW_BLOC	    	*msg_ptr;
	int  					i;
	char					*table_to_send;  //pointer to the table created to copy the transmitted data
	

	 /* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
		return (RV_NOT_READY);
	
    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);
	
	if((x_pos>83)||(y_pos>48))
	{
		rvf_send_trace("LCD - image outside lcd",23, NULL_PARAM,RV_TRACE_LEVEL_WARNING, R2D_USE_ID );	
		return(RV_OK);
	}
     
	mb_status1 = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_DRAW_BLOC), (void **) &msg_ptr);	
	
	if((mb_status1==RVF_RED))//memory allocation failed
	{	
		rvf_send_trace("LCD_PixBlt function FAILED ",27, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
    }

	//dynamic allocation of the copy table
	mb_status2 = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, (x_dim*y_dim)/8, (void **) &table_to_send);

   	if((mb_status2==RVF_RED))//memory allocation failed
	  {	
		rvf_free_buf(msg_ptr);
		rvf_send_trace("LCD_PixBlt function FAILED ",27, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
      }

	else 
	{  
		for(i=0;i<((x_dim*y_dim/8)-1);i++)
			table_to_send[i]=table[i];
	
		msg_ptr->table = table_to_send;
		msg_ptr->x_dim = x_dim;
		msg_ptr->y_dim = y_dim;
		msg_ptr->x_pos = x_pos;
		msg_ptr->y_pos = y_pos;

		msg_ptr->os_hdr.msg_id = LCD_DRAW_BLOC_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);	

		return (RV_OK);
	}
}

/********************************************************************************/
/*    Function Name: LCD_Enable													*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_enable message into lcd mailbox		*/	
/*																				*/		
/*                                                                              */
/*    Input Parameters:	x														*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_enable(UINT8 x)
{

	/* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
		return (RV_NOT_READY);

    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);

		return (RV_OK);
}

/********************************************************************************/
/*    Function Name: LCD_SetPower												*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_set_power message into lcd mailbox		*/	
/*																				*/		
/*                                                                              */
/*    Input Parameters:	None													*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_set_power()
{

	T_RVF_MB_STATUS		mb_status;
    T_LCD_SET_POWER		*msg_ptr;
	
	/* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
	{	LCD_Init_ll();
		return (RV_NOT_READY);
	}
    if (DrvTaskReady == 0)
	{
     	LCD_Init_ll();
		return (RV_NOT_READY);
	}
	

	mb_status = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_SET_POWER), (void **) &msg_ptr);	
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		

		msg_ptr->os_hdr.msg_id = LCD_SET_POWER_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

		return (RV_OK);
	}
	else 
		{	
		rvf_send_trace("LCD_SetPower function FAILED ",29, NULL_PARAM, 
						RV_TRACE_LEVEL_WARNING, R2D_USE_ID );
		return(RV_MEMORY_ERR);
	}
}

/********************************************************************************/
/*    Function Name: LCD_Cursor													*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_cursor message into lcd mailbox		*/	
/*																				*/		
/*                                                                              */
/*    Input Parameters:x,y														*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_cursor(UINT8 y,UINT8 x)
{

	/* check if the driver has been started */
	if ( DRIVER_GBL_INFO_PTR == NULL)
		return (RV_NOT_READY);

    if (DrvTaskReady == 0)
	    return(RV_NOT_READY);

		return (RV_OK);
}


		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -