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
13namespace SC
14{
15
18
21
23struct SC_SERIAL_PORT_EXPORT SerialSettings
24{
25 enum class DataBits : uint8_t
26 {
27 Bits5 = 5,
28 Bits6 = 6,
29 Bits7 = 7,
30 Bits8 = 8,
31 };
32
33 enum class Parity : uint8_t
34 {
35 None = 0,
36 Odd,
37 Even,
38 };
39
40 enum class StopBits : uint8_t
41 {
42 One = 1,
43 Two = 2,
44 };
45
46 enum class FlowControl : uint8_t
47 {
48 None = 0,
49 Software,
50 Hardware,
51 };
52
53 uint32_t baudRate = 9600;
54 DataBits dataBits = DataBits::Bits8;
55 Parity parity = Parity::None;
56 StopBits stopBits = StopBits::One;
57 FlowControl flowControl = FlowControl::None;
58};
59
61struct SC_SERIAL_PORT_EXPORT SerialOpenOptions
62{
63 bool blocking = true;
64 bool inheritable = false;
65 bool exclusive = false;
66
67 SerialSettings settings;
68};
69
72struct SC_SERIAL_PORT_EXPORT SerialDescriptor : public FileDescriptor
73{
78 Result open(StringSpan path, const SerialOpenOptions& options = SerialOpenOptions());
79
83 Result setSettings(const SerialSettings& settings);
84
88 Result getSettings(SerialSettings& settings) const;
89};
90
92} // namespace SC
[UniqueHandleDeclaration2Snippet]
Definition File.h:130
Native serial port descriptor with configuration support.
Definition SerialPort.h:73
Result open(StringSpan path, const SerialOpenOptions &options=SerialOpenOptions())
Opens a serial port and applies the requested settings.
Result setSettings(const SerialSettings &settings)
Applies settings to an already opened serial descriptor.
Result getSettings(SerialSettings &settings) const
Reads current settings from an opened serial descriptor.
Open options for a serial descriptor.
Definition SerialPort.h:62
Serial port settings.
Definition SerialPort.h:24