-
-
Notifications
You must be signed in to change notification settings - Fork 915
/
SerialController.h
147 lines (128 loc) · 4.45 KB
/
SerialController.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//-----------------------------------------------------------------------------
//
// SerialController.h
//
// Cross-platform serial port handler
//
// Copyright (c) 2010 Jason Frazier <frazierjason@gmail.com>
//
// SOFTWARE NOTICE AND LICENSE
//
// This file is part of OpenZWave.
//
// OpenZWave is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation, either version 3 of the License,
// or (at your option) any later version.
//
// OpenZWave is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
//
//-----------------------------------------------------------------------------
#ifndef _SerialController_H
#define _SerialController_H
#include <string>
#include "Defs.h"
#include "platform/Controller.h"
namespace OpenZWave
{
namespace Internal
{
namespace Platform
{
// class Driver;
// class Msg;
class SerialControllerImpl;
/** \brief Interface for controllers that implement a Serial Interface (USB Serial Port Emulation)
* \ingroup Platform
*/
class SerialController: public Controller
{
friend class SerialControllerImpl;
public:
enum Parity
{
Parity_None = 0,
Parity_Odd,
Parity_Even,
Parity_Mark,
Parity_Space
};
enum StopBits
{
StopBits_One = 0,
StopBits_OneAndAHalf = 1,
StopBits_Two = 2
};
/**
* Constructor.
* Creates an object that represents a serial port.
*/
SerialController();
/**
* Destructor.
* Destroys the serial port object.
*/
virtual ~SerialController();
/**
* Set the serial port baud rate. The serial port must be closed for the setting to be accepted.
* @param _baud Integer containing the expected baud-rate of the serial connection. Most Z-Wave interfaces run at 115200 baud.
* @return True if the baud value was accepted.
* @see Open, Close
*/
bool SetBaud(uint32 const _baud);
/**
* Set the serial port parity. The serial port must be closed for the setting to be accepted.
* @param _parity Parity enum value indicating the serial data's expected type of parity bits, if any.
* @return True if the parity value was accepted.
* @see Open, Close
*/
bool SetParity(Parity const _parity);
/**
* Set the serial port stop bits. The serial port must be closed for the setting to be accepted.
* @param _stopBits StopBits enum value indicating the serial data's expected number of stop-bits.
* @return True if the stop bits value was accepted.
* @see Open, Close
*/
bool SetStopBits(StopBits const _stopBits);
/**
* Open a serial port.
* Attempts to open a serial port and initialize it with the specified parameters.
* @param _SerialControllerName The name of the port to open. For example, ttyS1 on Linux, or \\.\COM2 in Windows.
* @return True if the port was opened and configured successfully.
* @see Close, Read, Write
*/
bool Open(string const& _SerialControllerName);
/**
* Close a serial port.
* Closes the serial port.
* @return True if the port was closed successfully, or false if the port was already closed, or an error occurred.
* @see Open
*/
bool Close();
/**
* Write to a serial port.
* Attempts to write data to an open serial port.
* @param _buffer Pointer to a block of memory containing the data to be written.
* @param _length Length in bytes of the data.
* @return The number of bytes written.
* @see Read, Open, Close
*/
uint32 Write(uint8* _buffer, uint32 _length);
private:
uint32 m_baud;
SerialController::Parity m_parity;
SerialController::StopBits m_stopBits;
string m_serialControllerName;
OpenZWave::Internal::Platform::SerialControllerImpl* m_pImpl; // Pointer to an object that encapsulates the platform-specific implementation of the serial port.
bool m_bOpen;
};
} // namespace Platform
} // namespace Internal
} // namespace OpenZWave
#endif //_SerialController_H