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

📄 lcd_messages.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/********************************************************************************																				    
*																				*
*   lcd_messages.c	: contains functions used by Upper layer to send messages	*
*					  to LCD mailbox, and by LCD to send events to Upper layer  *
*																				*
*	Project			: 															*
*		                                            					    	*
*   Author         	: Davide Carpegna 				    						*
*   Version number	: 1.0														*
*   Date        	: 29 September 2000											*		
*																				*
*   (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved	*		
*********************************************************************************/

#include <string.h>

#include "lcd_messages.h"
#include "rvm_use_id_list.h"

/* Global variables */
typedef struct DRIVER_GBL_INFO
{
	T_RVF_MB_ID		prim_id;
	T_RVF_ADDR_ID	addr_id;
	UINT8		rtc_mailbox;
} T_DRIVER_GBL_INFO;

T_DRIVER_GBL_INFO * DRIVER_GBL_INFO_PTR = NULL;

UINT8 DrvTaskReady = 0;


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


T_RV_RET lcd_reset(void)
{

		/* 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_clear													*/
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_clear message into lcd mailbox			*/
/*																				*/		
/*                                                                              */
/*    Input Parameters:	None													*/
/*    Output Parameters: 				            							*/
/*        T_RV_RET.                                                             */
/********************************************************************************/


T_RV_RET lcd_clear(void)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_CLEAR				*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 ), (void **) &msg_ptr);	
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
	
		msg_ptr->os_hdr.msg_id = LCD_CLEAR_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

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

}

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


T_RV_RET lcd_init(void)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_INIT				*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_INIT ), (void **) &msg_ptr);	
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
		
		
		msg_ptr->os_hdr.msg_id = LCD_INIT_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);				

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

/********************************************************************************/
/*    Function Name: LCD_WriteString		                                    */
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_write_string message into lcd mailbox	*/
/*																				*/		
/*                                                                              */
/*    Input Parameters:	row, column, string, mode                               */
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_write_string(UINT8 row, UINT8 column, char *string, T_VIDEO_MODE mode)
{

	UINT8					length;
	T_RVF_MB_STATUS			mb_status;
    T_LCD_WRITE_STRING      *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);
	}

	/* the string must fit into one row, so the maximum string length is 14		*/
	/* character starting from column 0											*/
	length = (UINT8) strlen (string);
	if((length*6+column)>DISP_PIXELWIDTH)
	{
		rvf_send_trace("LCD_WriteString - too long string ",34, NULL_PARAM,RV_TRACE_LEVEL_WARNING, R2D_USE_ID );	
		return (RV_INVALID_PARAMETER);
	}

	mb_status = rvf_get_buf (DRIVER_GBL_INFO_PTR->prim_id, sizeof (T_LCD_WRITE_STRING ) + length, (void **) &msg_ptr);
	
	if ((mb_status == RVF_GREEN) || (mb_status == RVF_YELLOW)) /* Memory allocation success */
	{		
		msg_ptr->row = row;
		msg_ptr->column = column * 6;
		msg_ptr->mode = mode;

		/* the first byte indicates the string length ('\x00' excepted), while 	*/
		/* the message is included beyond this parameter						*/
		msg_ptr->string = length;
		memcpy (&(msg_ptr->string) + 1,
				string,
				length);
		
		msg_ptr->os_hdr.msg_id = LCD_WRITE_STRING_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

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

}


/********************************************************************************/
/*    Function Name: LCD_WriteCenter		                                    */
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_write_center message into lcd mailbox	*/
/*																				*/		
/*                                                                              */
/*    Input Parameters:	string	                                                */
/*    Output Parameters: 				            							*/
/*        T_RV_RET                                                              */
/********************************************************************************/


T_RV_RET lcd_write_center( char *string)
{

	UINT8					length;
	T_RVF_MB_STATUS			mb_status;
    T_LCD_WRITE_CENTER      *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);
	}

	/* the string must fit into one row, so the maximum string length is 14		*/
	/* character starting from column 0											*/
	length = (UINT8) strlen (string);
	if((length*6+X_CENTER-(length/2)*DISP_PAGEHEIGHT)>DISP_PIXELWIDTH)
	{
		rvf_send_trace("LCD_WriteCenter - too long string ",34, NULL_PARAM,RV_TRACE_LEVEL_WARNING, R2D_USE_ID );	
		return (RV_INVALID_PARAMETER);
	}

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

		/* the first byte indicates the length ('\x00' excepted), while the		*/
		/* message is included beyond this parameter							*/
		msg_ptr->string = length;
		memcpy (&(msg_ptr->string) + 1,
				string,
				length);
		
		msg_ptr->os_hdr.msg_id = LCD_WRITE_CENTER_EVT;
		
		rvf_send_msg (DRIVER_GBL_INFO_PTR->addr_id, msg_ptr);		

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

/********************************************************************************/
/*    Function Name: LCD_ClearString		                                    */
/*                                                                              */
/*    Purpose:called by Appli, sends lcd_clear_strring message into lcd mailbox	*/
/*																				*/		
/*                                                                              */
/*    Input Parameters:	row					                                    */
/*    Output Parameters: 				            							*/
/*        T_RV_RET.                                                             */
/********************************************************************************/


T_RV_RET lcd_clear_string(UINT8 row)
{

	T_RVF_MB_STATUS			mb_status;
    T_LCD_CLEAR_STRING      *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_STRING ), (void **) &msg_ptr);	

⌨️ 快捷键说明

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