EC600U_esp32_iap_uart/LinkSDK/components/diag/aiot_diag_api.h

311 lines
7.7 KiB
C
Raw Permalink Normal View History

2024-02-05 17:39:56 +08:00
/**
* @file aiot_diag_api.h
* @brief diag模块头文件, SDK的能力
*
* @copyright Copyright (C) 2015-2020 Alibaba Group Holding Limited
*
*/
#ifndef __AIOT_DIAG_API_H__
#define __AIOT_DIAG_API_H__
#if defined(__cplusplus)
extern "C" {
#endif
#include <stdint.h>
/**
* @brief -0x0.00~-0x0.FF表达SDK在diag模块内的状态码
*/
#define STATE_DIAG_BASE (-0x1400)
/**
* @brief STATE_DIAG_CODE1的说明
*/
#define STATE_DIAG_LOG_UNKNOWN_STATE_CODE_BASE (-0x1401)
/**
* @brief STATE_DIAG_CODE2的说明
*/
#define STATE_DIAG_CODE2 (-0x1402)
/**
* @brief diag模块收到从网络上来的报文时,
*/
typedef enum {
AIOT_DIAGRECV_DIAG_CONTROL
} aiot_diag_recv_type_t;
/**
* @brief diag模块收到从网络上来的报文时,
*/
typedef struct {
/**
* @brief , @ref aiot_diag_recv_type_t
*/
aiot_diag_recv_type_t type;
union {
/**
* @brief
*/
struct {
/**
* @brief 0: 1:
*/
uint32_t data;
} diag_control;
} data;
} aiot_diag_recv_t;
/**
* @brief diag模块收到从网络上来的报文时,
*
* @param[in] handle diag会话句柄
* @param[in] packet diag消息结构体, diag报文内容
* @param[in] userdata
*
* @return void
*/
typedef void (* aiot_diag_recv_handler_t)(void *handle, const aiot_diag_recv_t *packet, void *userdata);
/**
* @brief diag模块内部发生值得用户关注的状态变化时,
*/
typedef enum {
/**
* @brief
*/
AIOT_DIAGEVT_ALERT
} aiot_diag_event_type_t;
/**
* @brief diag模块内部发生值得用户关注的状态变化时,
*/
typedef struct {
/**
* @brief , @ref aiot_diag_event_type_t
*/
aiot_diag_event_type_t type;
union {
struct {
/**
* @brief
*/
char *module_name;
/**
* @brief
*/
char *level;
/**
* @brief
*/
char *desc;
} alert;
} data;
} aiot_diag_event_t;
/**
* @brief diag模块内部发生值得用户关注的状态变化时,
*
* @param[in] handle, diag会话句柄
* @param[in] event, diag模块中发生的事件的内容
* @param[in] userdata,
*
* @return void
*/
typedef void (*aiot_diag_event_handler_t)(void *handle, const aiot_diag_event_t *event, void *userdata);
/**
* @brief
*/
typedef struct {
/**
* @brief
*
* @details
*
* 0: , 1:
*/
uint8_t enabled;
/**
* @brief
*/
uint32_t interval_ms;
/**
* @brief warning级别告警的阈值
*/
int64_t warning_threashold;
/**
* @brief fatal级别告警的阈值
*/
int64_t fatal_threshold;
} aiot_diag_config_t;
/**
* @brief @ref aiot_diag_setopt option参数可选值.
*
* @details , @ref aiot_diag_setopt , data参数的数据类型
*
* 1. data的数据类型是void *, @ref AIOT_DIAGOPT_MQTT_HANDLE :
*
* void *mqtt_handle = aiot_mqtt_init();
* aiot_diag_setopt(diag_handle, AIOT_DIAGOPT_MQTT_HANDLE, mqtt_handle);
*
* 2. data的数据类型是其他数据类型时, @ref AIOT_DIAGOPT_LOCAL_REPORT_ENABLED :
*
* uint8_t local_report_enabled = 1;
* aiot_mqtt_setopt(diag_handle, AIOT_DIAGOPT_LOCAL_REPORT_ENABLED, (void *)&local_report_enabled);
*/
typedef enum {
/**
* @brief diag会话 MQTT句柄, MQTT连接, MQTT句柄
*
* @details
*
* : (void *)
*/
AIOT_DIAGOPT_MQTT_HANDLE,
/**
* @brief
*
* @details
*
* 0: , 1:
*
* : (uint8_t *)
*/
AIOT_DIAGOPT_LOCAL_REPORT_ENABLED,
/**
* @brief
*
* @details
*
* 0: , 1:
*
* : (uint8_t *)
*/
AIOT_DIAGOPT_CLOUD_REPORT_ENABLED,
/**
* @brief MQTT建联时长告警配置
*
* @details
*
* : ( @ref aiot_diag_config_t )
*/
AIOT_DIAGOPT_MQTT_CONNECTION,
/**
* @brief MQTT心跳丢失告警配置
*
* @details
*
* : ( @ref aiot_diag_config_t )
*/
AIOT_DIAGOPT_MQTT_HEARTBEAT,
/**
* @brief Alink协议上行报文的回复速度告警配置
*
* @details
*
* : ( @ref aiot_diag_config_t )
*/
AIOT_DIAGOPT_ALINK_UPLINK,
/**
* @brief , SDK收到网络报文的时候被调用,
*
* @details
*
* : ( @ref aiot_diag_recv_handler_t )
*/
AIOT_DIAGOPT_RECV_HANDLER,
/**
* @brief diag内部发生的事件会从此回调函数进行通知
*
* @details
*
* : ( @ref aiot_diag_event_handler_t )
*/
AIOT_DIAGOPT_EVENT_HANDLER,
/**
* @brief SDK暂存的上下文
*
* @details AIOT_DIAGOPT_RECV_HANDLER AIOT_DIAGOPT_EVENT_HANDLER , SDK传给用户
*
* : (void *)
*/
AIOT_DIAGOPT_USERDATA,
AIOT_DIAGOPT_MAX
} aiot_diag_option_t;
/**
* @brief diag会话实例,
*
* @return void *
* @retval NULL diag实例的句柄
* @retval NULL ,
*
*/
void *aiot_diag_init(void);
/**
* @brief diag会话
*
* @param[in] handle diag会话句柄
* @param[in] option , @ref aiot_diag_option_t
* @param[in] data , @ref aiot_diag_option_t
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*
*/
int32_t aiot_diag_setopt(void *handle, aiot_diag_option_t option, void *data);
/**
* @brief diag会话,
*
* @param[in] handle diag会话句柄的指针
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*
*/
int32_t aiot_diag_deinit(void **handle);
/**
* @brief SDK内部信息
*
* @param handle diag会话句柄
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*/
int32_t aiot_diag_start(void *handle);
/**
* @brief SDK内部信息
*
* @param handle diag会话句柄
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*/
int32_t aiot_diag_stop(void *handle);
#if defined(__cplusplus)
}
#endif
#endif /* __AIOT_DIAG_API_H__ */