📄 serial_line_dflt.c
字号:
/*
*********************************************************************************************************
* SERIAL (BYTE) COMMUNICATION
*
* (c) Copyright 2007-2009; Micrium, Inc.; Weston, FL
*
* All rights reserved. Protected by international copyright laws.
* Knowledge of the source code may NOT be used to develop a similar product.
* Please help us continue to provide the Embedded community with the finest
* software available. Your honesty is greatly appreciated.
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*
* SERIAL (BYTE) COMMUNICATION
*
* SERIAL LINE DRIVER
* DEFAULT
*
* Filename : serial_line_dflt.c
* Version : V2.00
* Programmer(s) : FGK
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#define SERIAL_LINE_DFLT_MODULE
#include <serial.h>
/*
*********************************************************************************************************
* LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/
/* Open line driver. */
static void *SerialLine_Open (SERIAL_DEV *pdev,
SERIAL_ERR *perr);
/* Close line driver. */
static void SerialLine_Close (SERIAL_DEV *pdev,
void *pline_data,
SERIAL_ERR *perr);
/* Rd octet from buf via protocol. */
static void SerialLine_RdOctet(SERIAL_DEV *pdev,
SERIAL_BUF *pbuf,
CPU_INT08U *pdatum,
SERIAL_ERR *perr);
/* Wr octet into buf via protocol. */
static void SerialLine_WrOctet(SERIAL_DEV *pdev,
SERIAL_BUF *pbuf,
CPU_INT08U datum,
SERIAL_ERR *perr);
/*
*********************************************************************************************************
*********************************************************************************************************
* SERIAL INTERFACE LINE DRIVER API
*********************************************************************************************************
*********************************************************************************************************
*/
SERIAL_LINE_DRV_API SerialLine_Dflt = {
SerialLine_Open,
SerialLine_Close,
SerialLine_RdOctet,
SerialLine_WrOctet
};
/*$PAGE*/
/*
*********************************************************************************************************
*********************************************************************************************************
* DRIVER INTERFACE FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* SerialLine_Open()
*
* Description : Open serial line driver.
*
* Argument(s) : pdev Pointer to device.
*
* perr Pointer to variable that will receive the return error code from this function :
*
* SERIAL_ERR_NONE Serial line driver opened.
* SERIAL_ERR_LINE_OPEN Serial line driver could NOT be opened.
*
* Return(s) : Pointer to line driver data structure.
*
* Caller(s) : Serial_Open().
*
* Note(s) : 1) Interrupts are assumed to be disabled when this function is called.
*********************************************************************************************************
*/
static void *SerialLine_Open (SERIAL_DEV *pdev,
SERIAL_ERR *perr)
{
(void)&pdev;
*perr = SERIAL_ERR_NONE;
return ((void *)0);
}
/*$PAGE*/
/*
*********************************************************************************************************
* SerialLine_Close()
*
* Description : Close serial line driver.
*
* Argument(s) : pdev Pointer to device.
*
* pline_data Pointer to line driver data structure.
*
* perr Pointer to variable that will receive the return error code from this function :
*
* SERIAL_ERR_NONE Serial line driver closed.
*
* Return(s) : None.
*
* Caller(s) : Serial_Close().
*
* Note(s) : 1) Interrupts are assumed to be disabled when this function is called.
*********************************************************************************************************
*/
static void SerialLine_Close (SERIAL_DEV *pdev,
void *pline_data,
SERIAL_ERR *perr)
{
(void)&pdev;
(void)&pline_data;
*perr = SERIAL_ERR_NONE;
}
/*$PAGE*/
/*
*********************************************************************************************************
* SerialLine_RdOctet()
*
* Description : Get next octet to transmit.
*
* Argument(s) : pdev Pointer to device.
*
* pbuf Pointer to buffer.
*
* pdatum Pointer to variable that will receive data octet.
*
* perr Pointer to variable that will receive the return error code from this function :
*
* SERIAL_ERR_NONE Octet supplied.
* SERIAL_ERR_UNDERFLOW Buffer underflow.
*
* Return(s) : None.
*
* Caller(s) : Serial_IF_Tx().
*
* Note(s) : (1) Interrupts are assumed to be disabled when this function is called.
*********************************************************************************************************
*/
static void SerialLine_RdOctet (SERIAL_DEV *pdev,
SERIAL_BUF *pbuf,
CPU_INT08U *pdatum,
SERIAL_ERR *perr)
{
CPU_BOOLEAN rd;
(void)&pdev;
rd = SerialBuf_RdOctet(pbuf, pdatum);
if (rd == DEF_NO) {
*perr = SERIAL_ERR_UNDERFLOW;
return;
}
*perr = SERIAL_ERR_NONE;
}
/*$PAGE*/
/*
*********************************************************************************************************
* SerialLine_WrOctet()
*
* Description : Handle octet received from serial port.
*
* Argument(s) : pdev Pointer to device.
*
* pbuf Pointer to buffer.
*
* datum Data octet to write.
*
* perr Pointer to variable that will receive the return error code from this function :
*
* SERIAL_ERR_NONE Octet handled.
* SERIAL_ERR_OVERFLOW Buffer overflow.
* SERIAL_ERR_LINE_END End of line detected.
*
* Return(s) : None.
*
* Caller(s) : Serial_IF_Rx().
*
* Note(s) : (1) Interrupts are assumed to be disabled when this function is called.
*********************************************************************************************************
*/
static void SerialLine_WrOctet (SERIAL_DEV *pdev,
SERIAL_BUF *pbuf,
CPU_INT08U datum,
SERIAL_ERR *perr)
{
CPU_BOOLEAN wr;
(void)&pdev;
wr = SerialBuf_WrOctet(pbuf, datum);
if (wr == DEF_NO) {
*perr = SERIAL_ERR_OVERFLOW;
return;
}
*perr = SERIAL_ERR_NONE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -