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