uiot_defs.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /*
  2. * Copyright (C) 2012-2019 UCloud. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License").
  5. * You may not use this file except in compliance with the License.
  6. * A copy of the License is located at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * or in the "license" file accompanying this file. This file is distributed
  11. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  12. * express or implied. See the License for the specific language governing
  13. * permissions and limitations under the License.
  14. */
  15. #ifndef C_SDK_UIOT_DEFS_H_
  16. #define C_SDK_UIOT_DEFS_H_
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. #define IOT_PRODUCT_SN_LEN (16)
  21. #define IOT_PRODUCT_SECRET_LEN (16)
  22. #define IOT_DEVICE_SN_LEN (64)
  23. #define IOT_DEVICE_SECRET_LEN (16)
  24. #ifndef _IN_
  25. #define _IN_
  26. #endif
  27. #ifndef _OU_
  28. #define _OU_
  29. #endif
  30. typedef enum {
  31. MQTT_ALREADY_CONNECTED = 4, // 表示与MQTT服务器已经建立连接
  32. MQTT_CONNECTION_ACCEPTED = 3, // 表示服务器接受客户端MQTT连接
  33. MQTT_MANUALLY_DISCONNECTED = 2, // 表示与MQTT服务器已经手动断开
  34. MQTT_RECONNECTED = 1, // 表示与MQTT服务器重连成功
  35. SUCCESS_RET = 0, // 表示成功返回
  36. FAILURE_RET = -1, // 表示失败返回
  37. ERR_PARAM_INVALID = -2, // 表示参数无效错误
  38. ERR_HTTP_CLOSED = -3, // 远程主机关闭连接
  39. ERR_HTTP_UNKNOWN_ERROR = -4, // HTTP未知错误
  40. ERR_HTTP_PROTOCOL_ERROR = -5, // 协议错误
  41. ERR_HTTP_UNRESOLVED_DNS = -6, // 域名解析失败
  42. ERR_HTTP_URL_PARSE_ERROR = -7, // URL解析失败
  43. ERR_HTTP_CONN_ERROR = -8, // HTTP连接失败
  44. ERR_HTTP_AUTH_ERROR = -9, // HTTP鉴权问题
  45. ERR_HTTP_NOT_FOUND = -10, // HTTP 404
  46. ERR_HTTP_TIMEOUT = -11, // HTTP 超时
  47. ERR_MQTT_PUSH_TO_LIST_FAILED = -102, // 表示往等待 ACK 列表中添加元素失败
  48. ERR_MQTT_NO_CONN = -103, // 表示未与MQTT服务器建立连接或已经断开连接
  49. ERR_MQTT_UNKNOWN_ERROR = -104, // 表示MQTT相关的未知错误
  50. ERR_MQTT_ATTEMPTING_RECONNECT = -105, // 表示正在与MQTT服务重新建立连接
  51. ERR_MQTT_RECONNECT_TIMEOUT = -106, // 表示重连已经超时
  52. ERR_MQTT_MAX_SUBSCRIPTIONS_REACHED = -107, // 表示超过可订阅的主题数
  53. ERR_MQTT_SUB_FAILED = -108, // 表示订阅主题失败, 即服务器拒绝
  54. ERR_MQTT_NOTHING_TO_READ = -109, // 表示无MQTT相关报文可以读取
  55. ERR_MQTT_PACKET_READ_ERROR = -110, // 表示读取的MQTT报文有问题
  56. ERR_MQTT_REQUEST_TIMEOUT = -111, // 表示MQTT相关操作请求超时
  57. ERR_MQTT_CONNACK_UNKNOWN = -112, // 表示客户端MQTT连接未知错误
  58. ERR_MQTT_CONNACK_UNACCEPTABLE_PROTOCOL_VERSION = -113, // 表示客户端MQTT版本错误
  59. ERR_MQTT_CONNACK_IDENTIFIER_REJECTED = -114, // 表示客户端标识符错误
  60. ERR_MQTT_CONNACK_SERVER_UNAVAILABLE = -115, // 表示服务器不可用
  61. ERR_MQTT_CONNACK_BAD_USERDATA = -116, // 表示客户端连接参数中的username或password错误
  62. ERR_MQTT_CONNACK_NOT_AUTHORIZED = -117, // 表示客户端连接认证失败
  63. ERR_MQTT_RX_MESSAGE_PACKET_TYPE_INVALID = -118, // 表示收到的消息无效
  64. ERR_MQTT_BUFFER_TOO_SHORT = -119, // 表示消息接收缓冲区的长度小于消息的长度
  65. ERR_MQTT_QOS_NOT_SUPPORT = -120, // 表示该QOS级别不支持
  66. ERR_MQTT_UNSUB_FAILED = -121, // 表示取消订阅主题失败,比如该主题不存在
  67. ERR_JSON_PARSE = -132, // 表示JSON解析错误
  68. ERR_JSON_BUFFER_TRUNCATED = -133, // 表示JSON文档会被截断
  69. ERR_JSON_BUFFER_TOO_SMALL = -134, // 表示存储JSON文档的缓冲区太小
  70. ERR_JSON = -135, // 表示JSON文档生成错误
  71. ERR_MAX_JSON_TOKEN = -136, // 表示超过JSON文档中的最大Token数
  72. ERR_MAX_APPENDING_REQUEST = -137, // 表示超过同时最大的文档请求
  73. ERR_MAX_TOPIC_LENGTH = -138, // 表示超过规定最大的topic长度
  74. ERR_SHADOW_PROPERTY_EXIST = -201, // 表示注册的属性已经存在
  75. ERR_SHADOW_NOT_PROPERTY_EXIST = -202, // 表示注册的属性不存在
  76. ERR_SHADOW_UPDATE_TIMEOUT = -203, // 表示更新设备影子文档超时
  77. ERR_SHADOW_UPDATE_REJECTED = -204, // 表示更新设备影子文档被拒绝
  78. ERR_SHADOW_GET_TIMEOUT = -205, // 表示拉取设备影子文档超时
  79. ERR_SHADOW_GET_REJECTED = -206, // 表示拉取设备影子文档被拒绝
  80. ERR_OTA_GENERAL_FAILURE = -301, // 表示OTA通用FAILURE返回值
  81. ERR_OTA_INVALID_PARAM = -302, // 表示OTA参数错误
  82. ERR_OTA_INVALID_STATE = -303, // 表示OTA状态错误
  83. ERR_OTA_STR_TOO_LONG = -304, // 表示OTA字符串长度超过限制
  84. ERR_OTA_FETCH_FAILED = -305, // 表示固件下载失败
  85. ERR_OTA_FILE_NOT_EXIST = -306, // 表示固件不存在
  86. ERR_OTA_FETCH_AUTH_FAIL = -307, // 表示预签名认证失败
  87. ERR_OTA_FETCH_TIMEOUT = -308, // 表示下载超时
  88. ERR_OTA_NO_MEMORY = -309, // 表示内存不足
  89. ERR_OTA_OSC_FAILED = -310, // 表示OTA信号通道错误
  90. ERR_OTA_MD5_MISMATCH = -311, // 表示MD5不匹配
  91. ERR_TCP_SOCKET_FAILED = -601, // 表示TCP连接建立套接字失败
  92. ERR_TCP_UNKNOWN_HOST = -602, // 表示无法通过主机名获取IP地址
  93. ERR_TCP_CONNECT_FAILED = -603, // 表示建立TCP连接失败
  94. ERR_TCP_READ_TIMEOUT = -604, // 表示TCP读超时
  95. ERR_TCP_WRITE_TIMEOUT = -605, // 表示TCP写超时
  96. ERR_TCP_READ_FAILED = -606, // 表示TCP读错误
  97. ERR_TCP_WRITE_FAILED = -607, // 表示TCP写错误
  98. ERR_TCP_PEER_SHUTDOWN = -608, // 表示TCP对端关闭了连接
  99. ERR_TCP_NOTHING_TO_READ = -609, // 表示底层没有数据可以读取
  100. ERR_SSL_INIT_FAILED = -701, // 表示SSL初始化失败
  101. ERR_SSL_CERT_FAILED = -702, // 表示SSL证书相关问题
  102. ERR_SSL_CONNECT_FAILED = -703, // 表示SSL连接失败
  103. ERR_SSL_CONNECT_TIMEOUT = -704, // 表示SSL连接超时
  104. ERR_SSL_WRITE_TIMEOUT = -705, // 表示SSL写超时
  105. ERR_SSL_WRITE_FAILED = -706, // 表示SSL写错误
  106. ERR_SSL_READ_TIMEOUT = -707, // 表示SSL读超时
  107. ERR_SSL_READ_FAILED = -708, // 表示SSL读错误
  108. ERR_SSL_NOTHING_TO_READ = -709, // 表示底层没有数据可以读取
  109. } IoT_Error_t;
  110. #define Max(a,b) ((a) > (b) ? (a) : (b))
  111. #define Min(a,b) ((a) < (b) ? (a) : (b))
  112. #ifdef ENABLE_LOG_DEBUG
  113. #define LOG_DEBUG(...) \
  114. {\
  115. HAL_Printf("DEBUG: %s L#%d ", __func__, __LINE__); \
  116. HAL_Printf(__VA_ARGS__); \
  117. HAL_Printf("\r\n"); \
  118. }
  119. #else
  120. #define LOG_DEBUG(...)
  121. #endif
  122. /**
  123. * @brief Info level logging macro.
  124. *
  125. * Macro to expose desired log message. Info messages do not include automatic function names and line numbers.
  126. */
  127. #ifdef ENABLE_LOG_INFO
  128. #define LOG_INFO(...) \
  129. {\
  130. HAL_Printf(__VA_ARGS__); \
  131. HAL_Printf("\r\n"); \
  132. }
  133. #else
  134. #define LOG_INFO(...)
  135. #endif
  136. /**
  137. * @brief Warn level logging macro.
  138. *
  139. * Macro to expose function, line number as well as desired log message.
  140. */
  141. #ifdef ENABLE_LOG_WARN
  142. #define LOG_WARN(...) \
  143. { \
  144. HAL_Printf("WARN: %s L#%d ", __func__, __LINE__); \
  145. HAL_Printf(__VA_ARGS__); \
  146. HAL_Printf("\r\n"); \
  147. }
  148. #else
  149. #define LOG_WARN(...)
  150. #endif
  151. /**
  152. * @brief Error level logging macro.
  153. *
  154. * Macro to expose function, line number as well as desired log message.
  155. */
  156. #ifdef ENABLE_LOG_ERROR
  157. #define LOG_ERROR(...) \
  158. { \
  159. HAL_Printf("ERROR: %s L#%d ", __func__, __LINE__); \
  160. HAL_Printf(__VA_ARGS__); \
  161. HAL_Printf("\r\n"); \
  162. }
  163. #else
  164. #define LOG_ERROR(...)
  165. #endif
  166. #ifdef ENABLE_IOT_TRACE
  167. #define FUNC_ENTRY \
  168. {\
  169. HAL_Printf("FUNC_ENTRY: %s L#%d \r\n", __func__, __LINE__); \
  170. }
  171. #define FUNC_EXIT \
  172. {\
  173. HAL_Printf("FUNC_EXIT: %s L#%d \r\n", __func__, __LINE__); \
  174. return; \
  175. }
  176. #define FUNC_EXIT_RC(x) \
  177. {\
  178. HAL_Printf("FUNC_EXIT: %s L#%d Return Code : %d \r\n", __func__, __LINE__, x); \
  179. return x; \
  180. }
  181. #else
  182. #define FUNC_ENTRY
  183. #define FUNC_EXIT { return; }
  184. #define FUNC_EXIT_RC(x) { return x; }
  185. #endif
  186. #ifdef __cplusplus
  187. }
  188. #endif
  189. #endif //C_SDK_UIOT_DEFS_H_