OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [tools/] [src/] [tools/] [Utils/] [common/] [eCosSerial.h] - Blame information for rev 174

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 26 unneback
//####COPYRIGHTBEGIN####
2
//                                                                          
3
// ----------------------------------------------------------------------------
4
// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
5
//
6
// This program is part of the eCos host tools.
7
//
8
// This program is free software; you can redistribute it and/or modify it 
9
// under the terms of the GNU General Public License as published by the Free 
10
// Software Foundation; either version 2 of the License, or (at your option) 
11
// any later version.
12
// 
13
// This program is distributed in the hope that it will be useful, but WITHOUT 
14
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
15
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
16
// more details.
17
// 
18
// You should have received a copy of the GNU General Public License along with
19
// this program; if not, write to the Free Software Foundation, Inc., 
20
// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21
//
22
// ----------------------------------------------------------------------------
23
//                                                                          
24
//####COPYRIGHTEND####
25
//=================================================================
26
//
27
//        eCosSerial.h
28
//
29
//        Serial test class
30
//
31
//=================================================================
32
//=================================================================
33
//#####DESCRIPTIONBEGIN####
34
//
35
// Author(s):     sdf
36
// Contributors:  sdf
37
// Date:          1999-04-01
38
// Description:   This class abstracts the serial port 
39
// Usage:
40
//
41
//
42
//####DESCRIPTIONEND####
43
 
44
#ifndef _CECOSSERIAL_H
45
#define _CECOSSERIAL_H
46
#include "eCosStd.h"
47
#include "eCosSocket.h"
48
#include "Collections.h"
49
//=================================================================
50
// This class is a host-independent interface to a serial port
51
//=================================================================
52
class CeCosSerial {
53
    friend CeCosSocket::SSReadResult CeCosSocket::SSRead (CeCosSerial &serial,CeCosSocket &socket,void *pBuf,unsigned int nSize,unsigned int &nRead,bool *pbStop);
54
 
55
public:
56
    enum StopBitsType { ONE_STOP_BIT, ONE_POINT_FIVE_STOP_BITS, TWO_STOP_BITS };
57
    CeCosSerial(LPCTSTR pszPort,int nBaud); // ctor and open all in one go
58
    CeCosSerial();                          // Call Open() later
59
    virtual ~CeCosSerial();
60
 
61
    // Open the port with given baud rate.  Result indicates how successful we've been
62
    bool Open(LPCTSTR pszPort,int nBaud);
63
 
64
    // Set various line characteristics.  This can be done with the line open or closed.
65
    // In each case the "bApplySettingsNow" argument indicates whether to perform the action now,
66
    // or to hold off until a call of ApplySettings().
67
 
68
    bool SetBaud(unsigned int nBaud,bool bApplySettingsNow=true);
69
    bool SetParity(bool bParityOn,bool bApplySettingsNow=true);
70
    bool SetDataBits(int n,bool bApplySettingsNow=true);
71
    bool SetStopBits(StopBitsType n,bool bApplySettingsNow=true);
72
    bool SetXONXOFFFlowControl(bool b,bool bApplySettingsNow=true);
73
    bool SetRTSCTSFlowControl(bool b,bool bApplySettingsNow=true);
74
    bool SetDSRDTRFlowControl(bool b,bool bApplySettingsNow=true);
75
    bool SetReadTimeOuts(int nTotal,int nBetweenChars,bool bApplySettingsNow=true);  // Times are in mSec
76
    bool SetWriteTimeOuts(int nTotal,int nBetweenChars,bool bApplySettingsNow=true); // Times are in mSec
77
 
78
    bool ApplySettings();
79
 
80
    // Query the settings:
81
    int  GetParity() const { return m_bParity; }
82
    int  GetDataBits() const { return m_nDataBits; }
83
    StopBitsType GetStopBits() const { return m_nStopBits; }
84
    bool GetXONXOFFFlowControl() const { return m_bXONXOFFFlowControl; }
85
    bool GetRTSCTSFlowControl() const { return m_bRTSCTSFlowControl; }
86
    bool GetDSRDTRFlowControl() const { return m_bDSRDTRFlowControl; }
87
    unsigned int GetBaud() const { return m_nBaud; }
88
    bool GetReadTimeOuts(int &nTotal,int &nBetweenChars) const {nTotal=m_nTotalReadTimeout; nBetweenChars=m_nInterCharReadTimeout; return true; }// mSec
89
    bool GetWriteTimeOuts(int &nTotal,int &nBetweenChars) const {nTotal=m_nTotalWriteTimeout; nBetweenChars=m_nInterCharWriteTimeout; return true; }// mSec
90
    bool GetBlockingReads() const { return m_bBlockingReads; }
91
    bool Close();
92
 
93
    // Clear the serial buffer:
94
    bool Flush (void);
95
 
96
    // Use to test success after opening with the ctor:
97
    bool Ok() const { return 0!=m_pHandle; }
98
 
99
    // Will read up to the length provided:
100
    bool Read (void *pBuf,unsigned int nSize,unsigned int &nRead);
101
    bool Write(void *pBuf,unsigned int nSize,unsigned int &nWritten);
102
 
103
    // Use in the event of an error that needs to be cleared before the next operation:
104
    bool ClearError();
105
 
106
    // Set blocking/non-blocking
107
    bool SetBlockingReads(bool b,bool bApplySettingsNow=true);
108
 
109
    // Return last error
110
    int Error() const { return m_nErr; }
111
 
112
    // Return last error, translated to a string
113
    String ErrString() const;
114
 
115
protected:
116
    // The last error:
117
    int m_nErr
118
      ;
119
    // Remember the error
120
    void SaveError() {
121
        #ifdef _WIN32
122
        m_nErr=WSAGetLastError();
123
        #else // UNIX
124
        m_nErr=errno;
125
        #endif
126
    }
127
 
128
    // Line characteristics:
129
    void *m_pHandle;
130
    int m_nDataBits;
131
    StopBitsType m_nStopBits;
132
    bool m_bXONXOFFFlowControl;
133
    bool m_bRTSCTSFlowControl;
134
    bool m_bDSRDTRFlowControl;
135
    bool m_bParity;
136
    unsigned int m_nBaud;
137
    int m_nTotalReadTimeout,m_nTotalWriteTimeout;
138
    int m_nInterCharReadTimeout,m_nInterCharWriteTimeout;
139
    bool m_bBlockingReads;
140
    String m_strPort;
141
};
142
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.