1// Copyright (C) 2017 Witekio.
2// Copyright (C) 2018 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
5#include <QtCoap/qcoapglobal.h>
6#include <QtCore/qobject.h>
7#include <QtCore/qrandom.h>
8
9#ifndef QCOAPNAMESPACE_H
10#define QCOAPNAMESPACE_H
11
12QT_BEGIN_NAMESPACE
13
14#define FOR_EACH_COAP_ERROR(X) \
15 X(BadRequest, 0x80) X(Unauthorized, 0x81) X(BadOption, 0x82) X(Forbidden, 0x83) \
16 X(NotFound, 0x84) X(MethodNotAllowed, 0x85) X(NotAcceptable, 0x86) \
17 X(RequestEntityIncomplete, 0x88) X(PreconditionFailed, 0x8C) X(RequestEntityTooLarge, 0x8D) \
18 X(UnsupportedContentFormat, 0x8E) X(InternalServerFault, 0xA0) X(NotImplemented, 0xA1) \
19 X(BadGateway, 0xA2) X(ServiceUnavailable, 0xA3) X(GatewayTimeout, 0xA4) \
20 X(ProxyingNotSupported, 0xA5)
21
22namespace QtCoap
23{
24 Q_COAP_EXPORT Q_NAMESPACE
25
26 enum class ResponseCode : quint8 {
27 EmptyMessage = 0x00,
28 Created = 0x41, // 2.01
29 Deleted = 0x42, // 2.02
30 Valid = 0x43, // 2.03
31 Changed = 0x44, // 2.04
32 Content = 0x45, // 2.05
33 Continue = 0x5F, // 2.31
34
35#define SINGLE_CODE(name, value) name = value,
36 FOR_EACH_COAP_ERROR(SINGLE_CODE)
37#undef SINGLE_CODE
38
39 InvalidCode = 0xFF
40 };
41 Q_ENUM_NS(ResponseCode)
42
43 enum class Error : quint8 {
44 Ok,
45 HostNotFound,
46 AddressInUse,
47 TimeOut,
48
49#define SINGLE_ERROR(name, ignored) name,
50 FOR_EACH_COAP_ERROR(SINGLE_ERROR)
51#undef SINGLE_ERROR
52
53 Unknown
54 };
55 Q_ENUM_NS(Error)
56
57 enum class Method : quint8 {
58 Invalid,
59 Get,
60 Post,
61 Put,
62 Delete,
63#if 0
64 //! TODO Support other methods included in RFC 8132
65 //! https://tools.ietf.org/html/rfc8132
66 Fetch,
67 Patch,
68 IPatch,
69#endif
70 Other
71 };
72 Q_ENUM_NS(Method)
73
74 enum Port {
75 DefaultPort = 5683,
76 DefaultSecurePort = 5684
77 };
78 Q_ENUM_NS(Port)
79
80 enum class SecurityMode : quint8 {
81 NoSecurity = 0,
82 PreSharedKey,
83 RawPublicKey,
84 Certificate
85 };
86 Q_ENUM_NS(SecurityMode)
87
88 enum class MulticastGroup : quint8 {
89 AllCoapNodesIPv4,
90 AllCoapNodesIPv6LinkLocal,
91 AllCoapNodesIPv6SiteLocal
92 };
93 Q_ENUM_NS(MulticastGroup)
94
95 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
96}
97
98QT_END_NAMESPACE
99
100Q_DECLARE_METATYPE(QtCoap::ResponseCode)
101Q_DECLARE_METATYPE(QtCoap::Error)
102Q_DECLARE_METATYPE(QtCoap::Method)
103Q_DECLARE_METATYPE(QtCoap::SecurityMode)
104Q_DECLARE_METATYPE(QtCoap::MulticastGroup)
105
106#endif // QCOAPNAMESPACE_H
107

source code of qtcoap/src/coap/qcoapnamespace.h