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

📄 serial_line_tty.c

📁 STM3240G-Eval_uCOS-III
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                     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 + -