📄 serial_line_tty.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
* TELETYPE TERMINAL (TTY)
*
* Filename : serial_line_tty.c
* Version : V2.00
* Programmer(s) : FGK
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#define SERIAL_LINE_TTY_MODULE
#include <serial_line_tty.h>
/*
*********************************************************************************************************
* LOCAL DEFINES
*********************************************************************************************************
*/
#define SERIAL_LINE_TTY_TX_STATE_NORMAL 0u
#define SERIAL_LINE_TTY_TX_STATE_CR 1u
/*
*********************************************************************************************************
* FORWARD DECLARATIONS
*********************************************************************************************************
*/
typedef struct serial_line_tty_info SERIAL_LINE_INFO;
/*
*********************************************************************************************************
* LOCAL DATA TYPES
*********************************************************************************************************
*/
struct serial_line_tty_info {
SERIAL_LINE_INFO *NextPtr; /* Ptr to next serial line info struct. */
CPU_INT08U TxState; /* Tx state machine state. */
CPU_BOOLEAN EchoRx; /* Echo rx'd octet. */
CPU_BOOLEAN EchoTx; /* Echo tx'd octet. */
};
/*
*********************************************************************************************************
* LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/
static SERIAL_LINE_INFO *SerialLine_TTY_Info = (SERIAL_LINE_INFO *)0;
/*
*********************************************************************************************************
* 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_TTY = {
SerialLine_Open,
SerialLine_Close,
SerialLine_RdOctet,
SerialLine_WrOctet
};
/*$PAGE*/
/*
*********************************************************************************************************
*********************************************************************************************************
* DRIVER AUXILIARY FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* SerialLine_TTY_EchoRx()
*
* Description : Set receive echo control.
*
* Argument(s) : if_nbr Interface number.
*
* echo Echo control enable or disable: DEF_ENABLED, DEF_DISABLED.
*
* Return(s) : None.
*
* Caller(s) : Application.
*
* Note(s) : None.
*********************************************************************************************************
*/
void SerialLine_TTY_EchoRx (SERIAL_IF_NBR if_nbr,
CPU_BOOLEAN echo)
{
SERIAL_DEV *pdev;
SERIAL_LINE_INFO *pinfo;
SERIAL_ERR err;
pdev = SerialIF_GetDevPtr(if_nbr, &err);
if (err != SERIAL_ERR_NONE) {
return;
}
/* -------------- VALIDATE LINE DRV TYPE -------------- */
if (pdev->LineDrv_API != &SerialLine_TTY) {
return;
}
pinfo = (SERIAL_LINE_INFO *)pdev->LineDrv_Data;
pinfo->EchoRx = echo;
}
/*
*********************************************************************************************************
* SerialLine_TTY_EchoTx()
*
* Description : Set transmit echo control.
*
* Argument(s) : if_nbr Interface number.
*
* echo Echo control enable or disable: DEF_ENABLED, DEF_DISABLED.
*
* Return(s) : None.
*
* Caller(s) : Application.
*
* Note(s) : None.
*********************************************************************************************************
*/
void SerialLine_TTY_EchoTx (SERIAL_IF_NBR if_nbr,
CPU_BOOLEAN echo)
{
SERIAL_DEV *pdev;
SERIAL_LINE_INFO *pinfo;
SERIAL_ERR err;
pdev = SerialIF_GetDevPtr(if_nbr, &err);
if (err != SERIAL_ERR_NONE) {
return;
}
/* -------------- VALIDATE LINE DRV TYPE -------------- */
if (pdev->LineDrv_API != &SerialLine_TTY) {
return;
}
pinfo = (SERIAL_LINE_INFO *)pdev->LineDrv_Data;
pinfo->EchoTx = echo;
}
/*$PAGE*/
/*
*********************************************************************************************************
*********************************************************************************************************
* DRIVER INTERFACE FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* SerialLine_Open()
*
* Description : Open serial line driver.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -