1/****************************************************************************
2**
3** Copyright (C) 2017 The Qt Company Ltd.
4** Contact: http://www.qt.io/licensing/
5**
6** This file is part of the QtSerialBus module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL3$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see http://www.qt.io/terms-conditions. For further
15** information use the contact form at http://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPLv3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or later as published by the Free
28** Software Foundation and appearing in the file LICENSE.GPL included in
29** the packaging of this file. Please review the following information to
30** ensure the GNU General Public License version 2.0 requirements will be
31** met: http://www.gnu.org/licenses/gpl-2.0.html.
32**
33** $QT_END_LICENSE$
34**
35****************************************************************************/
36
37#ifndef QMODBUSCOMMEVENT_P_H
38#define QMODBUSCOMMEVENT_P_H
39
40#include <QtSerialBus/qtserialbusglobal.h>
41
42//
43// W A R N I N G
44// -------------
45//
46// This file is not part of the Qt API. It exists purely as an
47// implementation detail. This header file may change from version to
48// version without notice, or even be removed.
49//
50// We mean it.
51//
52
53QT_BEGIN_NAMESPACE
54
55class QModbusCommEvent
56{
57public:
58 enum struct SendFlag : quint8 {
59 ReadExceptionSent = 0x01,
60 ServerAbortExceptionSent = 0x02,
61 ServerBusyExceptionSent = 0x04,
62 ServerProgramNAKExceptionSent = 0x08,
63 WriteTimeoutErrorOccurred = 0x10,
64 CurrentlyInListenOnlyMode = 0x20,
65 };
66
67 enum struct ReceiveFlag : quint8 {
68 /* Unused */
69 CommunicationError = 0x02,
70 /* Unused */
71 /* Unused */
72 CharacterOverrun = 0x10,
73 CurrentlyInListenOnlyMode = 0x20,
74 BroadcastReceived = 0x40
75 };
76
77 enum EventByte {
78 SentEvent = 0x40,
79 ReceiveEvent = 0x80,
80 EnteredListenOnlyMode = 0x04,
81 InitiatedCommunicationRestart = 0x00
82 };
83
84 inline QModbusCommEvent(QModbusCommEvent::EventByte byte)
85 : m_eventByte(byte) {}
86
87 operator quint8() const { return m_eventByte; }
88 operator QModbusCommEvent::EventByte() const {
89 return static_cast<QModbusCommEvent::EventByte> (m_eventByte);
90 }
91
92 inline QModbusCommEvent operator=(QModbusCommEvent::EventByte byte) {
93 m_eventByte = byte;
94 return *this;
95 }
96 inline QModbusCommEvent operator|=(QModbusCommEvent::SendFlag sf) {
97 m_eventByte |= quint8(sf);
98 return *this;
99 }
100 inline QModbusCommEvent operator|=(QModbusCommEvent::ReceiveFlag rf) {
101 m_eventByte |= quint8(rf);
102 return *this;
103 }
104
105private:
106 quint8 m_eventByte;
107};
108
109inline QModbusCommEvent::EventByte operator|(QModbusCommEvent::EventByte b,
110 QModbusCommEvent::SendFlag sf) { return QModbusCommEvent::EventByte(quint8(b) | quint8(sf)); }
111inline QModbusCommEvent::EventByte operator|(QModbusCommEvent::SendFlag sf,
112 QModbusCommEvent::EventByte b) { return operator|(b, sf); }
113inline QModbusCommEvent::EventByte operator|(QModbusCommEvent::EventByte b,
114 QModbusCommEvent::ReceiveFlag rf) { return QModbusCommEvent::EventByte(quint8(b) | quint8(rf)); }
115inline QModbusCommEvent::EventByte operator|(QModbusCommEvent::ReceiveFlag rf,
116 QModbusCommEvent::EventByte b) { return operator|(b, rf); }
117
118QT_END_NAMESPACE
119
120#endif // QMODBUSCOMMEVENT_P_H
121

source code of qtserialbus/src/serialbus/qmodbuscommevent_p.h