mqtt_constants.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // Copyright: SPDX-License-Identifier: GPL-3.0-only
  2. #ifndef MQTT_CONSTANTS_H
  3. #define MQTT_CONSTANTS_H
  4. #define MQTT_MAX_QOS 0x02
  5. #define MQTT_VERSION_5_0 0x5
  6. /* [MQTT-1.5.5] most significant bit
  7. of MQTT Variable Byte Integer signifies
  8. there are more bytes following */
  9. #define MQTT_VBI_CONTINUATION_FLAG 0x80
  10. #define MQTT_VBI_DATA_MASK 0x7F
  11. #define MQTT_VBI_MAXBYTES 4
  12. /* MQTT control packet types as defined in
  13. 2.1.2 MQTT Control Packet type */
  14. #define MQTT_CPT_CONNECT 0x1
  15. #define MQTT_CPT_CONNACK 0x2
  16. #define MQTT_CPT_PUBLISH 0x3
  17. #define MQTT_CPT_PUBACK 0x4
  18. #define MQTT_CPT_PUBREC 0x5
  19. #define MQTT_CPT_PUBREL 0x6
  20. #define MQTT_CPT_PUBCOMP 0x7
  21. #define MQTT_CPT_SUBSCRIBE 0x8
  22. #define MQTT_CPT_SUBACK 0x9
  23. #define MQTT_CPT_UNSUBSCRIBE 0xA
  24. #define MQTT_CPT_UNSUBACK 0xB
  25. #define MQTT_CPT_PINGREQ 0xC
  26. #define MQTT_CPT_PINGRESP 0xD
  27. #define MQTT_CPT_DISCONNECT 0xE
  28. #define MQTT_CPT_AUTH 0xF
  29. // MQTT CONNECT FLAGS (spec:3.1.2.3)
  30. #define MQTT_CONNECT_FLAG_USERNAME 0x80
  31. #define MQTT_CONNECT_FLAG_PASSWORD 0x40
  32. #define MQTT_CONNECT_FLAG_LWT_RETAIN 0x20
  33. #define MQTT_CONNECT_FLAG_LWT 0x04
  34. #define MQTT_CONNECT_FLAG_CLEAN_START 0x02
  35. #define MQTT_CONNECT_FLAG_QOS_MASK 0x18
  36. #define MQTT_CONNECT_FLAG_QOS_BITSHIFT 3
  37. #define MQTT_MAX_CLIENT_ID 23 /* [MQTT-3.1.3-5] */
  38. // MQTT Property identifiers [MQTT-2.2.2.2]
  39. #define MQTT_PROP_PAYLOAD_FMT_INDICATOR 0x01
  40. #define MQTT_PROP_PAYLOAD_FMT_INDICATOR_NAME "Payload Format Indicator"
  41. #define MQTT_PROP_MSG_EXPIRY_INTERVAL 0x02
  42. #define MQTT_PROP_MSG_EXPIRY_INTERVAL_NAME "Message Expiry Interval"
  43. #define MQTT_PROP_CONTENT_TYPE 0x03
  44. #define MQTT_PROP_CONTENT_TYPE_NAME "Content Type"
  45. #define MQTT_PROP_RESPONSE_TOPIC 0x08
  46. #define MQTT_PROP_RESPONSE_TOPIC_NAME "Response Topic"
  47. #define MQTT_PROP_CORRELATION_DATA 0x09
  48. #define MQTT_PROP_CORRELATION_DATA_NAME "Correlation Data"
  49. #define MQTT_PROP_SUB_IDENTIFIER 0x0B
  50. #define MQTT_PROP_SUB_IDENTIFIER_NAME "Subscription Identifier"
  51. #define MQTT_PROP_SESSION_EXPIRY_INTERVAL 0x11
  52. #define MQTT_PROP_SESSION_EXPIRY_INTERVAL_NAME "Session Expiry Interval"
  53. #define MQTT_PROP_ASSIGNED_CLIENT_ID 0x12
  54. #define MQTT_PROP_ASSIGNED_CLIENT_ID_NAME "Assigned Client Identifier"
  55. #define MQTT_PROP_SERVER_KEEP_ALIVE 0x13
  56. #define MQTT_PROP_SERVER_KEEP_ALIVE_NAME "Server Keep Alive"
  57. #define MQTT_PROP_AUTH_METHOD 0x15
  58. #define MQTT_PROP_AUTH_METHOD_NAME "Authentication Method"
  59. #define MQTT_PROP_AUTH_DATA 0x16
  60. #define MQTT_PROP_AUTH_DATA_NAME "Authentication Data"
  61. #define MQTT_PROP_REQ_PROBLEM_INFO 0x17
  62. #define MQTT_PROP_REQ_PROBLEM_INFO_NAME "Request Problem Information"
  63. #define MQTT_PROP_WILL_DELAY_INTERVAL 0x18
  64. #define MQTT_PROP_WIIL_DELAY_INTERVAL_NAME "Will Delay Interval"
  65. #define MQTT_PROP_REQ_RESP_INFORMATION 0x19
  66. #define MQTT_PROP_REQ_RESP_INFORMATION_NAME "Request Response Information"
  67. #define MQTT_PROP_RESP_INFORMATION 0x1A
  68. #define MQTT_PROP_RESP_INFORMATION_NAME "Response Information"
  69. #define MQTT_PROP_SERVER_REF 0x1C
  70. #define MQTT_PROP_SERVER_REF_NAME "Server Reference"
  71. #define MQTT_PROP_REASON_STR 0x1F
  72. #define MQTT_PROP_REASON_STR_NAME "Reason String"
  73. #define MQTT_PROP_RECEIVE_MAX 0x21
  74. #define MQTT_PROP_RECEIVE_MAX_NAME "Receive Maximum"
  75. #define MQTT_PROP_TOPIC_ALIAS_MAX 0x22
  76. #define MQTT_PROP_TOPIC_ALIAS_MAX_NAME "Topic Alias Maximum"
  77. #define MQTT_PROP_TOPIC_ALIAS 0x23
  78. #define MQTT_PROP_TOPIC_ALIAS_NAME "Topic Alias"
  79. #define MQTT_PROP_MAX_QOS 0x24
  80. #define MQTT_PROP_MAX_QOS_NAME "Maximum QoS"
  81. #define MQTT_PROP_RETAIN_AVAIL 0x25
  82. #define MQTT_PROP_RETAIN_AVAIL_NAME "Retain Available"
  83. #define MQTT_PROP_USR 0x26
  84. #define MQTT_PROP_USR_NAME "User Property"
  85. #define MQTT_PROP_MAX_PKT_SIZE 0x27
  86. #define MQTT_PROP_MAX_PKT_SIZE_NAME "Maximum Packet Size"
  87. #define MQTT_PROP_WILDCARD_SUB_AVAIL 0x28
  88. #define MQTT_PROP_WILDCARD_SUB_AVAIL_NAME "Wildcard Subscription Available"
  89. #define MQTT_PROP_SUB_ID_AVAIL 0x29
  90. #define MQTT_PROP_SUB_ID_AVAIL_NAME "Subscription Identifier Available"
  91. #define MQTT_PROP_SHARED_SUB_AVAIL 0x2A
  92. #define MQTT_PROP_SHARED_SUB_AVAIL_NAME "Shared Subscription Available"
  93. #endif /* MQTT_CONSTANTS_H */