📄 isomodem.h
字号:
#ifndef __ISOMODEM_NEW_H__
#define __ISOMODEM_NEW_H__
#include "loopbuf.h"
#include "trace.h"
#include "switch.h"
#ifdef __cplusplus
extern "C"{
#endif
#define NEW_OS
#define DEBUG_MODEM_RECV
#define EM_PPP_NOINIT 0
#define EM_PPP_INITED 1
#define MCLK (64431000)
#define rULCON0 (*(volatile ulong*)0x1d00000)
#define rULCON1 (*(volatile ulong*)0x1d04000)
#define rUCON0 (*(volatile ulong*)0x1d00004)
#define rUCON1 (*(volatile ulong*)0x1d04004)
#define rUFCON0 (*(volatile ulong*)0x1d00008)
#define rUFCON1 (*(volatile ulong*)0x1d04008)
#define rUMCON0 (*(volatile ulong*)0x1d0000c)
#define rUMCON1 (*(volatile ulong*)0x1d0400c)
#define rUBRDIV0 (*(volatile ulong*)0x1d00028)
#define rUBRDIV1 (*(volatile ulong*)0x1d04028)
// #define rUMSTAT1 (*(volatile ulong*)0x1D0401C)
#define rUTRSTAT0 (*(volatile ulong*)0x1d00010)
#define rUTRSTAT1 (*(volatile ulong*)0x1d04010)
#define rUERSTAT0 (*(volatile ulong*)0x1d00014)
#define rUERSTAT1 (*(volatile ulong*)0x1d04014)
#define rWTCON (*(volatile ulong *)0x1d30000)
#define rWTDAT (*(volatile ulong *)0x1d30004)
#define rWTCNT (*(volatile ulong *)0x1d30008)
//Special
#define rUTXH1 (*(volatile uchar *)0x1d04020)
#define WrUTXH0(ch) (*(volatile uchar *)0x1d00020)=(uchar)(ch)
/**********************************************************************
UART寄存器
***********************************************************************/
#define SD_UART0_BASE_OFFSET 0x01D00000 // 串口0寄存器集合的起始地址
#define SD_UART1_BASE_OFFSET 0x01d04000 // 串口1寄存器集合的起始地址
// 串口各寄存器相对起始地址的偏移
#define SD_ULCON_OFFSET 0x00 /* UART 1/2 Line Control Reg */
#define SD_UCON_OFFSET 0x04 /* UART 1/2 Channel Control Reg */
#define SD_UFCON_OFFSET 0x08 /* UART 1/2 FIFO Control Reg */
#define SD_UMCON_OFFSET 0x0c /* UART 1/2 Modem Control Reg */
#define SD_UTRSTAT_OFFSET 0x10 /* UART 1/2 Channel Status Reg */
#define SD_UERSTAT_OFFSET 0x14 /* UART 1/2 RX Error Status Reg */
#define SD_UFSTAT_OFFSET 0x18 /* UART 1/2 FIFO Status Reg */
#define SD_UMSTAT_OFFSET 0x1c /* UART 1/2 Modem Status Reg */
#define SD_UTXH_OFFSET 0x20 /* Little Endian - Data in Lower byte */
#define SD_URXH_OFFSET 0x24 /* Little Endian - Data in Lower byte */
#define SD_UBRDIV_OFFSET 0x28 /* UART Baud Rate Divisor register */
// 串口寄存器的一些值定义
// 寄存器ULCONx的一些设置
#define SD_ULCON_RESERVED (uchar)0x80
#define SD_PARITY_NONE (uchar)0x00 /* 0xx=No parity */
#define SD_PARITY_ODD (uchar)0x20 /* 100=Odd parity */
#define SD_PARITY_EVEN (uchar)0x28 /* 101=Even parity */
#define SD_PARITY_ONE (uchar)0x30 /* 110=Force 1 */
#define SD_PARITY_ZERO (uchar)0x38 /* 111=Force 0 */
#define SD_STOP_BITS_1 (uchar)0x00 /* Bit 2=0 1 Stop Bit */
#define SD_STOP_BITS_2 (uchar)0x04 /* Bit 2=1 2 Stop Bits */
#define SD_DATA_BITS_5 (uchar)0x00
#define SD_DATA_BITS_6 (uchar)0x01
#define SD_DATA_BITS_7 (uchar)0x02
#define SD_DATA_BITS_8 (uchar)0x03
#define SD_MODE_NORMAL (uchar)0x00 // 正常模式
#define SD_MODE_IRDA (uchar)0x40 // 红外模式
// UCONx的一些设置
#define SD_UCON_TX_RX_PULSE (ushort)0x000 // Tx, Rx以脉冲方式触发
#define SD_UCON_TX_LEVEL (ushort)0x200 // Tx以电平方式触发
#define SD_UCON_RX_LEVEL (ushort)0x100 // Rx以电平方式触发
#define SD_UCON_TIMEOUT (ushort)0x080 /* 1=Enable FIFO Empty IRQ */
#define SD_UCON_RX_IRQ (ushort)0x040 /* 1=Enable Rx IRQ */
#define SD_UCON_LOOPBACK (ushort)0x020 /* 1=Enable Loopback Mode */
#define SD_UCON_TX_BREAK (ushort)0x010 /* 1=Send Break signal */
#define SD_UCON_TX_MODE_MASK (ushort)0x00C /* 00=Disabled */
#define SD_UCON_TX_MODE_IRQ (ushort)0x004 /* 01=IRQ or Polled Mode */
/* 10=BDMA0 (Buffered DMA0) */
/* 11=BDMA0 (Buffered DMA1) */
#define SD_UCON_RX_MODE_MASK (ushort)0x003 /* 00=Disabled */
#define SD_UCON_RX_MODE_IRQ (ushort)0x001 /* 01=IRQ or Polled Mode */
/* 10=BDMA0 (Buffered DMA0) */
/* 11=BDMA0 (Buffered DMA1) */
#define SD_UCON_DISABLE (ushort)0x000 /* 00=Disable All Functions */
// 寄存器UFCONx的一些设置
#define SD_UFCON_DISABLE 0x00 /* 00=Disable All Functions */
#define SD_UFCON_TX_FIFO_TRIG 0xC0 /* 00=IRQ on Tx FIFO Empty */
/* 01=IRQ when Tx FIFO = 4 */
/* 10=IRQ when Tx FIFO = 8 */
/* 01=IRQ when Tx FIFO = 12 */
#define SD_UFCON_TX_FIFO_TRIG_0 0x00 /* 00=Empty */
#define SD_UFCON_TX_FIFO_TRIG_4 0x40 /* 01=4-byte */
#define SD_UFCON_TX_FIFO_TRIG_8 0x80 /* 10=8-byte */
#define SD_UFCON_TX_FIFO_TRIG_12 0xC0 /* 11=12-byte */
#define SD_UFCON_RX_FIFO_TRIG 0x30 /* 00=IRQ when Rx FIFO = 4 */
/* 01=IRQ when Rx FIFO = 8 */
/* 10=IRQ when Rx FIFO = 12 */
/* 01=IRQ when Rx FIFO = 16 */
#define SD_UFCON_RX_FIFO_TRIG_0 0x00 /* 00=Empty */
#define SD_UFCON_RX_FIFO_TRIG_4 0x10 /* 01=4-byte */
#define SD_UFCON_RX_FIFO_TRIG_8 0x20 /* 10=8-byte */
#define SD_UFCON_RX_FIFO_TRIG_12 0x30 /* 11=12-byte */
#define SD_UFCON_RESERVED 0x08 /* Bit 3 is Reserved */
#define SD_UFCON_TX_FIFO_RESET 0x04 /* 0=Normal 1=Tx FIFO reset */
#define SD_UFCON_RX_FIFO_RESET 0x02 /* 0=Normal 1=Rx FIFO reset */
#define SD_UFCON_FIFO_ENABLE 0x01 /* 1=FIFO (Tx & Rx) Enable */
#define SD_UFCON_FIFO_DISABLE 0x00 /* 00=Disable All Functions */
// 寄存器UMCONx的一些设置
#define SD_UMCON_AFC 0x10 /* Auto Flow Control Enable */
#define SD_UMCON_RTS 0x01 /* 'L'level(Activate nRTS) */
#define SD_UMCON_DISABLE 0x00 /* Disable all functions */
// 寄存器 UTRSTATx的一些设置
#define SD_UTRSTAT_TSH_EMPTY 0x04 /* 1=Tx Holding & Shift Reg **
** Both Empty */
#define SD_UTRSTAT_TX_EMPTY 0x02 /* 1=Tx FIFO or Buffer NOT **
** Empty */
#define SD_UTRSTAT_RX_RDY 0x01 /* 1=Rx Data Ready */
// 寄存器UERSTATx的一些错误值
#define SD_UERSTAT_BREAK 0x08 /* 1=Break receive */
#define SD_UERSTAT_FRAME 0x04 /* 1=Frame Error */
#define SD_UERSTAT_PARITY 0x02 /* 1=Parity Error */
#define SD_UERSTAT_OVERRUN 0x01 /* 1=Overrun Error */
// 寄存器UFSTATx的一些状态值
#define SD_UFSTAT_RESERVED 0xFC00 /* Bits 15-->10 Reserved */
#define SD_UFSTAT_TX_FIFO_FULL 0x0200 /* Bit 9 =1 =Tx FIFO Full */
#define SD_UFSTAT_RX_FIFO_FULL 0x0100 /* Bit 8 =1 =Tx FIFO Full */
#define SD_UFSTAT_TX_FIFO_CNT 0x00F0 /* Number bytes in Tx FIFO */
#define SD_UFSTAT_RX_FIFO_CNT 0x000F /* Number bytes in Rx FIFO */
#define SD_UFSTAT_RX_RDY 0x00 /* 1=Rx Data Ready */
// 寄存器UMSTATx的一些状态值
#define SD_UMSTAT_Delta_CTS 0x04 /* Has changed */
#define SD_UMSTAT_CTS 0x01 /* CTS signal is activated */
/* (nCTS pin is low) */
// UART中断向量号
#define SD_UART0_TX_VECTOR 3
#define SD_UART1_TX_VECTOR 2
#define SD_UART0_RX_VECTOR 7
#define SD_UART1_RX_VECTOR 6
#define EM_MODEM_ERROR EM_ERROR
#define EM_MODEM_SUCCESS EM_SUCCESS
#define EM_MODEM_MODE_ASYS 0
#define EM_MODEM_MODE_SDLC 1
#define EM_MODEM_MODE_PPP 2
#define EM_MODEM_CX 1
#define EM_MODEM_SI 2
#define EM_MODEM_UNKNOWN 0
#define EM_ONLINE_AT 1
#define EM_ONLINE_DIALING 2
#define EM_ONLINE_CONNECTED 3
#define EM_ONLINE_DATA 4
#define EM_ONLINE_OFFLINE 5
#define EM_DIALERR_NONE 0
#define EM_DIALERR_NOCARRIER 1
#define EM_DIALERR_NOANSWER 2
#define EM_DIALERR_NODIALTONE 3
#define EM_DIALERR_BUSY 4
#define EM_DIALERR_TIMEOUT 5
#define EM_DIALERR_ELSE 6
/*数据传输状态宏定义*/
#define EM_HDLC_TRANSMIT_NODATA 0 /*无数据包*/
#define EM_HDLC_TRANSMIT_DATA 1 /*有数据包,未发送*/
#define EM_HDLC_TRANSMIT_DATA_NOACK 2 /*有数据包,已发送,未应答*/
#define EM_TIME_TICK_IN1S 100
#define RING_BIT 0x10
#define DCD_BIT 0x20
#define DEV_NOTHAND 0x00
#define DEV_HAND 0x01
#define MODEM_ICON_X 24
#define MODEM_ICON_Y 0
#define ONLINE_ICON_X 64
#define ONLINE_ICON_Y 0
#define SLEEP_STATE_NO_NEED 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -