📄 serial.h
字号:
/*
*********************************************************************************************************
* 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
*
* Filename : serial.h
* Version : V2.00
* Programmer(s) : FGK
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* MODULE
*
* Note(s) : (1) This header file is protected from multiple pre-processor inclusion through use of the
* SERIAL present pre-processor macro definition.
*********************************************************************************************************
*/
#ifndef SERIAL_PRESENT
#define SERIAL_PRESENT
/*
*********************************************************************************************************
* SERIAL VERSION NUMBER
*
* Note(s) : (1) (a) The Serial software version is denoted as follows :
*
* Vx.yy
*
* where
* V denotes 'Version' label
* x denotes major software version revision number
* yy denotes minor software version revision number
*
* (b) The Serial software version label #define is formatted as follows :
*
* ver = x.yy * 100
*
* where
* ver denotes software version number scaled as
* an integer value
* x.yy denotes software version number
*********************************************************************************************************
*/
#define SERIAL_VERSION 200u /* See Note #1. */
/*
*********************************************************************************************************
* EXTERNS
*********************************************************************************************************
*/
#ifdef SERIAL_MODULE
#define SERIAL_EXT
#else
#define SERIAL_EXT extern
#endif
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include <cpu.h>
#include <lib_def.h>
#include <lib_ascii.h>
#include <lib_str.h>
#include <lib_mem.h>
#include <app_cfg.h>
#include <serial_buf.h>
#include <serial_type.h>
#include <serial_line_dflt.h>
/*
*********************************************************************************************************
* DEFAULT DEFINES
*********************************************************************************************************
*/
#ifndef SERIAL_CFG_TX_DESC_NBR /* Number of descriptors in transmit queue. */
#define SERIAL_CFG_TX_DESC_NBR 0
#endif
#ifndef SERIAL_CFG_ARG_CHK_EXT_EN
#define SERIAL_CFG_ARG_CHK_EXT_EN DEF_DISABLED
#endif
#ifndef SERIAL_CFG_RD_BUF_EN
#define SERIAL_CFG_RD_BUF_EN DEF_DISABLED
#endif
#ifndef SERIAL_CFG_WR_BUF_EN
#define SERIAL_CFG_WR_BUF_EN DEF_DISABLED
#endif
/*
*********************************************************************************************************
* SERIAL ERROR CODE DEFINES
*********************************************************************************************************
*/
#define SERIAL_ERR_NONE 0
#define SERIAL_ERR_NULL_PTR 1
#define SERIAL_ERR_NULL_FNCT 2
#define SERIAL_ERR_SIGNAL 3
#define SERIAL_ERR_UNDERFLOW 4
#define SERIAL_ERR_OVERFLOW 5
#define SERIAL_ERR_IF_INVALID_NBR 6
#define SERIAL_ERR_BUF_POOL_INIT 7
#define SERIAL_ERR_BUF_ALLOC 8
#define SERIAL_ERR_MEM_ALLOC 9
#define SERIAL_ERR_FAIL 10
#define SERIAL_ERR_TIMEOUT 11
#define SERIAL_ERR_DRV_INVALID 20
#define SERIAL_ERR_DRV_OPEN 21
#define SERIAL_ERR_DRV_IO_ERR 22
#define SERIAL_ERR_DEV_DUP_NAME 30
#define SERIAL_ERR_DEV_NOT_FOUND 31
#define SERIAL_ERR_DEV_ALREADY_OPEN 32
#define SERIAL_ERR_IF_NOT_AVAIL 40
#define SERIAL_ERR_IF_NOT_OPEN 41
#define SERIAL_ERR_IF_IN_USE 42
#define SERIAL_ERR_IF_CLOSING 43
#define SERIAL_ERR_LINE_END 50
#define SERIAL_ERR_LINE_INVALID 51
#define SERIAL_ERR_LINE_DRV_OPEN 52
#define SERIAL_OS_ERR_NONE 60
#define SERIAL_OS_ERR_SIGNAL 61
#define SERIAL_OS_ERR_TIMEOUT 62
#define SERIAL_OS_ERR_INIT 63
/*
*********************************************************************************************************
* SERIAL DEVICE CONFIGURATION DEFINES
*********************************************************************************************************
*/
#define SERIAL_BAUDRATE_110 110
#define SERIAL_BAUDRATE_300 300
#define SERIAL_BAUDRATE_1200 1200
#define SERIAL_BAUDRATE_2400 2400
#define SERIAL_BAUDRATE_4800 4800
#define SERIAL_BAUDRATE_9600 9600
#define SERIAL_BAUDRATE_19200 19200
#define SERIAL_BAUDRATE_38400 38400
#define SERIAL_BAUDRATE_57600 57600
#define SERIAL_BAUDRATE_115200 115200
#define SERIAL_BAUDRATE_230400 230400
#define SERIAL_BAUDRATE_460800 460800
#define SERIAL_BAUDRATE_921600 921600
#define SERIAL_DATABITS_5 5
#define SERIAL_DATABITS_6 6
#define SERIAL_DATABITS_7 7
#define SERIAL_DATABITS_8 8
#define SERIAL_STOPBITS_1 0
#define SERIAL_STOPBITS_1_5 1
#define SERIAL_STOPBITS_2 2
#define SERIAL_PARITY_NONE 0
#define SERIAL_PARITY_ODD 1
#define SERIAL_PARITY_EVEN 2
#define SERIAL_PARITY_MARK 3
#define SERIAL_PARITY_SPACE 4
#define SERIAL_FLOW_CTRL_NONE 0
#define SERIAL_FLOW_CTRL_HARDWARE 1
/*
*********************************************************************************************************
* ISR TYPE DEFINES
*********************************************************************************************************
*/
#define SERIAL_ISR_TYPE_UNKNOWN 0u
#define SERIAL_ISR_TYPE_RX 1u
#define SERIAL_ISR_TYPE_RX_OVERRUN 2u
#define SERIAL_ISR_TYPE_TX_RDY 3u
#define SERIAL_ISR_TYPE_TX_COMPLETE 4u
#define SERIAL_ISR_TYPE_ERR 5u
/*
*********************************************************************************************************
* SERIAL IF NBR DEFINES
*********************************************************************************************************
*/
#define SERIAL_IF_NBR_MAX_VAL DEF_INT_08U_MAX_VAL
#define SERIAL_IF_NBR_MIN_VAL DEF_INT_08U_MIN_VAL
#define SERIAL_IF_NBR_NONE SERIAL_IF_NBR_MAX_VAL
#define SERIAL_IF_NBR_MIN SERIAL_IF_NBR_MIN_VAL
#define SERIAL_IF_NBR_MAX (SERIAL_IF_NBR_MAX_VAL - 1)
#define SERIAL_IF_NBR_TOT (SERIAL_IF_NBR_MIN_VAL + SERIAL_CFG_MAX_NBR_IF)
/*
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*/
typedef CPU_INT16U SERIAL_ERR;
/*
*********************************************************************************************************
* SERIAL INTERFACE DEVICE DRIVER API DATA TYPE
*********************************************************************************************************
*/
typedef const struct serial_drv_api {
void (*Init) (SERIAL_ERR *perr); /* Driver initialization. */
void (*Open) (SERIAL_DEV *pdev, /* Open device driver. */
SERIAL_IF_CFG *pcfg,
SERIAL_ERR *perr);
void (*Close) (SERIAL_DEV *pdev, /* Close device driver. */
SERIAL_ERR *perr);
void (*RxStart) (SERIAL_DEV *pdev, /* Start receiver. */
SERIAL_ERR *perr);
void (*RxStop) (SERIAL_DEV *pdev, /* Stop receiver. */
SERIAL_ERR *perr);
void (*RxOctet) (SERIAL_DEV *pdev, /* Receive octet from device. */
CPU_INT08U *pdatum,
SERIAL_ERR *perr);
void (*TxStart) (SERIAL_DEV *pdev, /* Start transmitter. */
SERIAL_ERR *perr);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -