📄 xrser16550.h
字号:
////////////////////////////////////////
//(c) 2005 EXAR Corporation
//All Rights Reserved.
//
// Here is the callback for serial events
typedef VOID (*PFN_SER_EVENT) (
PVOID pHandle, // PHW_INDEP_INFO, but pdd doesn't know it
UINT32 events // What events where encountered?
);
// And now, all the function prototypes
VOID XRSL_Init(
PVOID pHead, // points to device head
PUCHAR pRegBase, // Pointer to 16550 register base
UINT8 RegStride, // Stride amongst the 16550 registers
EVENT_FUNC EventCallback, // This callback exists in MDD
PVOID pMddHead, // This is the first parm to callback
PLOOKUP_TBL pBaudTable // Pointer to baud rate table
);
BOOL XRSL_PostInit(
PVOID pHead
);
VOID XRSL_Deinit(
PVOID pHead // points to device head
);
VOID XRSL_Open(
PVOID pHead
);
VOID XRSL_Close(
PVOID pHead
);
VOID XRSL_ClearDTR(
PVOID pHead
);
VOID XRSL_SetDTR(
PVOID pHead
);
VOID XRSL_ClearRTS(
PVOID pHead
);
VOID XRSL_SetRTS(
PVOID pHead
);
VOID XRSL_ClearBreak(
PVOID pHead
);
VOID XRSL_SetBreak(
PVOID pHead
);
VOID XRSL_ClearBreak(
PVOID pHead
);
VOID XRSL_SetBreak(
PVOID pHead
);
ULONG XRSL_GetByteNumber(
PVOID pHead
);
VOID XRSL_DisableXmit(
PVOID pHead
);
VOID XRSL_EnableXmit(
PVOID pHead
);
BOOL XRSL_SetBaudRate(
PVOID pHead,
ULONG BaudRate // ULONG representing decimal baud rate.
);
BOOL XRSL_SetDCB(
PVOID pHead,
LPDCB lpDCB // Pointer to DCB structure
);
ULONG XRSL_SetCommTimeouts(
PVOID pHead,
LPCOMMTIMEOUTS lpCommTimeouts // Pointer to CommTimeout structure
);
ULONG XRSL_GetRxBufferSize(
PVOID pHead
);
PVOID XRSL_GetRxStart(
PVOID pHead
);
INTERRUPT_TYPE XRSL_GetInterruptType(
PVOID pHead
);
ULONG XRSL_RxIntr(
PVOID pHead,
PUCHAR pRxBuffer, // Pointer to receive buffer
ULONG *pBufflen // In = max bytes to read, out = bytes read
);
ULONG XRSL_PutBytes(
PVOID pHead,
PUCHAR pSrc, // Pointer to bytes to be sent.
ULONG NumberOfBytes, // Number of bytes to be sent.
PULONG pBytesSent // Pointer to actual number of bytes put.
);
VOID XRSL_TxIntr(
PVOID pHead
);
VOID XRSL_LineIntr(
PVOID pHead
);
VOID XRSL_OtherIntr(
PVOID pHead
);
VOID XRSL_ModemIntr(
PVOID pHead
);
ULONG XRSL_GetStatus(
PVOID pHead,
LPCOMSTAT lpStat // Pointer to LPCOMMSTAT to hold status.
);
VOID XRSL_Reset(
PVOID pHead
);
VOID XRSL_GetModemStatus(
PVOID pHead,
PULONG pModemStatus // PULONG passed in by user.
);
VOID XRSL_PurgeComm(
PVOID pHead,
DWORD fdwAction // Action to take.
);
BOOL XRSL_XmitComChar(
PVOID pHead,
UCHAR ComChar // Character to transmit.
);
VOID XRSL_PowerOn(
PVOID pHead
);
VOID XRSL_PowerOff(
PVOID pHead
);
BOOL XRSL_Ioctl(
PVOID pHead,
DWORD dwCode,
PBYTE pBufIn,
DWORD dwLenIn,
PBYTE pBufOut,
DWORD dwLenOut,
PDWORD pdwActualOut);
VOID XRSL_TxIntrEx(
PVOID pHead,
PUCHAR pTxBuffer, // @parm Pointer to receive buffer
ULONG *pBufflen // @parm In = max bytes to transmit, out = bytes transmitted
);
/*
* The special register set for XR17C15X UARTs.
*/
#define XR_17C15X_EXTENDED_FCTR 8
#define XR_17C15X_EXTENDED_EFR 9
#define XR_17C15X_TXFIFO_CNT 10
#define XR_17C15X_EXTENDED_TXTRG 10
#define XR_17C15X_RXFIFO_CNT 11
#define XR_17C15X_EXTENDED_RXTRG 11
#define XR_17C15X_EXTENDED_XOFF1 12 // write-only
#define XR_17C15X_EXTENDED_XOFF2 13 // write-only
#define XR_17C15X_EXTENDED_XON1 14 // write-only
#define XR_17C15X_EXTENDED_XON2 15 // write-only
#define XR_17C15X_FCTR_RTS_8DELAY 0x03
#define XR_17C15X_FCTR_TRGD 192
/* 17C15X TX/RX memory mapped buffer offsets */
#define UART_17158_RX_OFFSET 0x100
#define UART_17158_TX_OFFSET 0x100
/*
* These are the EXTENDED definitions for the 17C15X's Interrupt
* Enable Register
*/
#define XR_17C15X_IER_RTSDTR 0x40
#define XR_17C15X_IER_CTSDSR 0x80
/*
* These are the definitions for the Extended Features Register
* (StarTech 16C660 only, when DLAB=1)
*/
#define UART_EFR_CTS 0x80 /* CTS flow control */
#define UART_EFR_RTS 0x40 /* RTS flow control */
#define UART_EFR_SCD 0x20 /* Special character detect */
#define UART_EFR_ECB 0x10 /* Enhanced control bit */
// All the PCI XR17xy5z specific IOCTL codes and the related function ptototypes are
// defined here
// the IOCTL index starts from 50 (in pegdser.h the last ioctl index ends at 25)
#define IOCTL_XR17C15X_ENABLE_HWFLOWCONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT,50,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_HWFLOWCONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT,51,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_ENABLE_SWFLOWCONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT,52,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_SWFLOWCONTROL CTL_CODE(FILE_DEVICE_SERIAL_PORT,53,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_ENABLE_IR CTL_CODE(FILE_DEVICE_SERIAL_PORT,54,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_IR CTL_CODE(FILE_DEVICE_SERIAL_PORT,55,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_ENABLE_SLEEPMODE CTL_CODE(FILE_DEVICE_SERIAL_PORT,56,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_SLEEPMODE CTL_CODE(FILE_DEVICE_SERIAL_PORT,57,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_ENABLE_INTERNAL_LOOPBACK CTL_CODE(FILE_DEVICE_SERIAL_PORT,58,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_INTERNAL_LOOPBACK CTL_CODE(FILE_DEVICE_SERIAL_PORT,59,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_ENABLE_AUTORS485 CTL_CODE(FILE_DEVICE_SERIAL_PORT,60,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_DISABLE_AUTORS485 CTL_CODE(FILE_DEVICE_SERIAL_PORT,61,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_CONFIG_REG_READ CTL_CODE(FILE_DEVICE_SERIAL_PORT,62,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_XR17C15X_CONFIG_REG_WRITE CTL_CODE(FILE_DEVICE_SERIAL_PORT,63,METHOD_BUFFERED,FILE_ANY_ACCESS)
VOID XR17C15X_EnableHardwareFlowControl(
PVOID pHead,
BOOL bEnable // TRUE for enable and FALSE for disable
);
typedef struct /* Software Flow Control Enable Options*/
{
BOOL custom; /* if YES, please specify Xon/Xoff chars */
BYTE One_or_Two_Char; /* if 1 - and custom-Yes, specify Xon1 and Xoff1 chars. If 2 and custom-Yes, specify both Xon1/Xoff1 and Xon2 and Xon2 */
BYTE Xon1;
BYTE Xoff1;
BYTE Xon2;
BYTE Xoff2;
} SW_FLOW_CONTROL_PARAMS;
typedef struct
{
unsigned char bReg;
unsigned char bData;
} CONFIG_WRITE, *PCONFIG_WRITE;
VOID XR17C15X_EnableSoftwareFlowControl(
PVOID pHead,
BOOL bEnable, // TRUE for enable and FALSE for disable
SW_FLOW_CONTROL_PARAMS *pSWFCParams
);
VOID XR17C15X_EnableIR(
PVOID pHead,
BOOL bEnable, // TRUE for enable and FALSE for disable
BOOL bInvert // TRUE for Inevrt and FALSE for default
);
VOID XR17C15X_EnableSleepMode(
PVOID pHead,
BOOL bEnable // TRUE for enable and FALSE for disable
);
VOID XR17C15X_EnableInternalLoopback(
PVOID pHead,
BOOL bEnable // TRUE for enable and FALSE for disable
);
VOID XR17C15X_EnableAutoRS485(
PVOID pHead,
BOOL bEnable, // TRUE for enable and FALSE for disable
UCHAR ucTurnAroundTime
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -