Sane C++ Libraries
C++ Platform Abstraction Libraries
Loading...
Searching...
No Matches
SerialPort.h
1// Copyright (c) Stefano Cristiano
2// SPDX-License-Identifier: MIT
3#pragma once
4
5#include "../Common/CompilerMacrosExport.h"
6#ifndef SC_EXPORT_LIBRARY_SERIAL_PORT
7#define SC_EXPORT_LIBRARY_SERIAL_PORT 0
8#endif
9#define SC_SERIAL_PORT_EXPORT SC_COMPILER_LIBRARY_EXPORT(SC_EXPORT_LIBRARY_SERIAL_PORT)
10
11#include "../File/File.h"
12#include "SerialPortError.h"
13
14namespace SC
15{
16
19
22
24struct SC_SERIAL_PORT_EXPORT SerialSettings
25{
26 enum class DataBits : uint8_t
27 {
28 Bits5 = 5,
29 Bits6 = 6,
30 Bits7 = 7,
31 Bits8 = 8,
32 };
33
34 enum class Parity : uint8_t
35 {
36 None = 0,
37 Odd,
38 Even,
39 };
40
41 enum class StopBits : uint8_t
42 {
43 One = 1,
44 Two = 2,
45 };
46
47 enum class FlowControl : uint8_t
48 {
49 None = 0,
50 Software,
51 Hardware,
52 };
53
54 uint32_t baudRate = 9600;
55 DataBits dataBits = DataBits::Bits8;
56 Parity parity = Parity::None;
57 StopBits stopBits = StopBits::One;
58 FlowControl flowControl = FlowControl::None;
59};
60
62struct SC_SERIAL_PORT_EXPORT SerialOpenOptions
63{
64 bool blocking = true;
65 bool inheritable = false;
66 bool exclusive = false;
67
68 SerialSettings settings;
69};
70
73struct SC_SERIAL_PORT_EXPORT SerialDescriptor : public FileDescriptor
74{
79 ResultSerialPort open(StringSpan path, const SerialOpenOptions& options = SerialOpenOptions());
80
85
90};
91
93} // namespace SC
[UniqueHandleDeclaration2Snippet]
Definition File.h:130
SerialPort result retaining optional lower-level and native error details.
Definition SerialPortError.h:60
Native serial port descriptor with configuration support.
Definition SerialPort.h:74
ResultSerialPort setSettings(const SerialSettings &settings)
Applies settings to an already opened serial descriptor.
ResultSerialPort open(StringSpan path, const SerialOpenOptions &options=SerialOpenOptions())
Opens a serial port and applies the requested settings.
ResultSerialPort getSettings(SerialSettings &settings) const
Reads current settings from an opened serial descriptor.
Open options for a serial descriptor.
Definition SerialPort.h:63
Serial port settings.
Definition SerialPort.h:25