1 /**
2  * @file devinfo_private.h
3  * @brief devinfo模块内部的宏定义和数据结构声明, 不面向其它模块, 更不面向用户
4  *
5  * @copyright Copyright (C) 2015-2020 Alibaba Group Holding Limited
6  *
7  */
8 #ifndef __DEVINFO_PRIVATE_H__
9 #define __DEVINFO_PRIVATE_H__
10 
11 #if defined(__cplusplus)
12 extern "C" {
13 #endif
14 
15 #include "core_stdinc.h"
16 
17 /* TODO: 这一段列出需要包含SDK其它模块头文件, 与上一段落以1个空行隔开 */
18 #include "aiot_state_api.h"
19 #include "aiot_sysdep_api.h"
20 #include "aiot_mqtt_api.h"
21 #include "aiot_devinfo_api.h"      /* 内部头文件是用户可见头文件的超集 */
22 
23 typedef struct {
24     aiot_sysdep_portfile_t     *sysdep;             /* 底层依赖回调合集的引用指针 */
25     void *mqtt_handle;
26 
27     aiot_devinfo_event_handler_t   event_handler;      /* 组件内部运行状态变更时, 通知用户的回调 */
28     aiot_devinfo_recv_handler_t    recv_handler;       /* 组件从协议栈读到内容时, 通知用户的回调 */
29     void *userdata;                                 /* 组件调用以上2个 devinfo_handler 时的入参之一 */
30 
31     uint32_t    deinit_timeout_ms;
32 
33     /*---- 以上都是用户在API可配 ----*/
34 
35     /*---- 以下都是DEVINFO在内部使用, 用户无感知 ----*/
36 
37     void       *data_mutex;     /* 保护本地的数据结构 */
38     uint8_t     exec_enabled;
39     uint32_t    exec_count;
40 } devinfo_handle_t;
41 
42 #define DEVINFO_MODULE_NAME                    "devinfo"  /* 用于内存统计的模块名字符串 */
43 
44 #define DEVINFO_DEFAULT_DEINIT_TIMEOUT_MS      (2 * 1000)
45 
46 #define DEVINFO_UPDATE_TOPIC_FMT               "/sys/%s/%s/thing/deviceinfo/update"
47 #define DEVINFO_UPDATE_REPLY_TOPIC             "/sys/+/+/thing/deviceinfo/update_reply"
48 #define DEVINFO_DELETE_TOPIC_FMT               "/sys/%s/%s/thing/deviceinfo/delete"
49 #define DEVINFO_DELETE_REPLY_TOPIC             "/sys/+/+/thing/deviceinfo/delete_reply"
50 
51 #define DEVINFO_DEINIT_INTERVAL_MS               (100)
52 
53 #if defined(__cplusplus)
54 }
55 #endif
56 #endif  /* __DEVINFO_PRIVATE_H__ */
57 
58