SFBHWSerialBoard.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00029 #ifdef SFBHWSERIALHOST_H
00030 #error SFBHWSerialBoard.h and SFBHWSerialHost.h must not be #included together!
00031 #endif
00032
00033 #ifndef SFBHWSERIALBOARD_H
00034 #define SFBHWSERIALBOARD_H
00035
00036 #include "SFBFrame.h"
00037 #include "lpc/LPC23xx.h"
00038
00039 class SFBSerial;
00040
00041 #define CAN_WRITE(fd) (REGISTER_OFFSET(fd,UxLSR) & 0x20)
00042 #define WRITE_BYTE(fd,byte) (REGISTER_OFFSET(fd,UxTHR) = (byte))
00043 #define CAN_READ(fd) (REGISTER_OFFSET(fd,UxLSR) & 0x01)
00044 #define READ_BYTE(fd) REGISTER_OFFSET(fd,UxRBR)
00045
00058 class SFBHWSerial {
00059
00060 public:
00061
00062 SFBHWSerial(int face) ;
00063
00064 SFBFrame & getFrame() { return theFrame; }
00065
00066 void putcBlocking(const u8 byte) ;
00067
00068 static u32 getFirstFace() { return NORTH; }
00069 static bool moreFaces(u32 face) ;
00070 static u32 nextFace(u32 face) ;
00071
00072 static SFBSerial & getFace(u32 face) ;
00073
00074 bool getPreferOddParity() { return true; }
00075 u8 getPreferredBaudCode() { return preferredBaudCode; }
00076 void setPreferredBaudCode(u8 code) ;
00077 u8 getLowBaudCode() { return 0; }
00078 u8 getHighBaudCode() { return 6; }
00079
00080 void predispatch() { }
00081
00082 void start(u32 baud, bool oddParity = false);
00083 void stop() ;
00084 void setBaudRate(u32 baud, bool oddParity = false) ;
00085 void checkTx() ;
00086 u32 getFD();
00087
00088 private:
00089
00090 void uartCommonHandler() ;
00091 friend void Uart0Handler();
00092 friend void Uart1Handler();
00093 friend void Uart2Handler();
00094 friend void Uart3Handler();
00095
00096 PacketBuffer & rxBuf;
00097 SFBRxByteBuffer rxBytes;
00098 SFBTxByteBuffer txBytes;
00099 SFBFrame theFrame;
00100 u32 lastInputActivity;
00101 bool txActive;
00102 const u8 face;
00103 u8 preferredBaudCode;
00104
00105 enum {
00106 FLAG_TX_ACTIVE = 0x02
00107 };
00108
00109 public:
00110
00111 };
00112
00113 #endif
00114