1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qcancommondefinitions.h"
5
6#ifndef QT_NO_DEBUG_STREAM
7#include <QtCore/QDebug>
8#endif // QT_NO_DEBUG_STREAM
9
10
11QT_BEGIN_NAMESPACE
12
13/*!
14 \namespace QtCanBus
15 \inmodule QtSerialBus
16 \since 6.5
17 \brief The QtCanBus namespace provides some commons enums that are used in
18 the CAN bus handling part of the QtSerialPort module.
19*/
20
21/*!
22 \enum QtCanBus::DataSource
23
24 This enum represents the placement of the data within the CAN frame.
25
26 \value Payload The data will be extracted from the payload.
27 \value FrameId The data will be extracted from the frame ID.
28*/
29
30/*!
31 \enum QtCanBus::DataFormat
32
33 This enum represents the possible data formats. The format defines how the
34 value will be extracted from its source.
35
36 \value SignedInteger The signal value is a signed integer.
37 \value UnsignedInteger The signal value is an unsigned integer.
38 \value Float The signal value is float.
39 \value Double The signal value is double.
40 \value AsciiString The signal value is an ASCII string.
41*/
42
43/*!
44 \enum QtCanBus::MultiplexState
45
46 This enum represents the possible multiplex states of a signal.
47
48 \value None The signal is not used in multiplexing.
49 \value MultiplexorSwitch The signal is used as a multiplexor switch, which
50 means that other signals depend on the values of
51 this signal.
52 \value MultiplexedSignal The signal is multiplexed by some switch, and
53 therefore its value can only be extracted when the
54 switch has a specific value.
55 \value SwitchAndSignal The multiplexor switch of the signal must have the
56 value that enables us to use this signal. When used,
57 the signal also acts as a multiplexor switch for
58 other multiplexed signals.
59*/
60
61/*!
62 \enum QtCanBus::UniqueId
63
64 Represents a CAN unique identifier. The underlying type is quint32.
65
66 An enum is used to avoid implicit conversions to or from unsigned int.
67*/
68
69#ifndef QT_NO_DEBUG_STREAM
70QDebug QtCanBus::operator<<(QDebug dbg, DataSource source)
71{
72 QDebugStateSaver saver(dbg);
73 switch (source) {
74 case DataSource::Payload:
75 dbg << "Payload";
76 break;
77 case DataSource::FrameId:
78 dbg << "FrameId";
79 break;
80 }
81 return dbg;
82}
83
84QDebug QtCanBus::operator<<(QDebug dbg, DataFormat format)
85{
86 QDebugStateSaver saver(dbg);
87 switch (format) {
88 case DataFormat::UnsignedInteger:
89 dbg << "UnsignedInteger";
90 break;
91 case DataFormat::SignedInteger:
92 dbg << "SignedInteger";
93 break;
94 case DataFormat::Float:
95 dbg << "Float";
96 break;
97 case DataFormat::Double:
98 dbg << "Double";
99 break;
100 case DataFormat::AsciiString:
101 dbg << "ASCII";
102 break;
103 }
104 return dbg;
105}
106
107QDebug QtCanBus::operator<<(QDebug dbg, MultiplexState state)
108{
109 QDebugStateSaver saver(dbg);
110 switch (state) {
111 case MultiplexState::None:
112 dbg << "None";
113 break;
114 case MultiplexState::MultiplexorSwitch:
115 dbg << "MultiplexorSwitch";
116 break;
117 case MultiplexState::MultiplexedSignal:
118 dbg << "MultiplexedSignal";
119 break;
120 case MultiplexState::SwitchAndSignal:
121 dbg << "SwitchAndSignal";
122 break;
123 }
124 return dbg;
125}
126
127QDebug QtCanBus::operator<<(QDebug dbg, UniqueId uid)
128{
129 dbg << qToUnderlying(e: uid);
130 return dbg;
131}
132#endif // QT_NO_DEBUG_STREAM
133
134QT_END_NAMESPACE
135

source code of qtserialbus/src/serialbus/qcancommondefinitions.cpp