#pragma once #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef DATA_TYPE_B #define DATA_TYPE_B 1 #endif /* DATA_TYPE_B */ #ifndef DATA_TYPE_S8 #define DATA_TYPE_S8 43 #endif /* DATA_TYPE_S8 */ #ifndef DATA_TYPE_U8 #define DATA_TYPE_U8 32 #endif /* DATA_TYPE_U8 */ #ifndef DATA_TYPE_S16 #define DATA_TYPE_S16 33 #endif /* DATA_TYPE_S16 */ #ifndef DATA_TYPE_U16 #define DATA_TYPE_U16 45 #endif /* DATA_TYPE_U16 */ #ifndef DATA_TYPE_S32 #define DATA_TYPE_S32 2 #endif /* DATA_TYPE_S32 */ #ifndef DATA_TYPE_U32 #define DATA_TYPE_U32 35 #endif /* DATA_TYPE_U32 */ #ifndef DATA_TYPE_L64 #define DATA_TYPE_L64 36 #endif /* DATA_TYPE_L64 */ #ifndef DATA_TYPE_UL64 #define DATA_TYPE_UL64 37 #endif /* DATA_TYPE_UL64 */ #ifndef DATA_TYPE_F32 #define DATA_TYPE_F32 38 #endif /* DATA_TYPE_F32 */ #ifndef DATA_TYPE_D64 #define DATA_TYPE_D64 39 #endif /* DATA_TYPE_D64 */ #ifndef DATA_TYPE_IP #define DATA_TYPE_IP 100 #endif /* DATA_TYPE_IP */ #ifndef DATA_TYPE_MAC #define DATA_TYPE_MAC 101 #endif /* DATA_TYPE_MAC */ #ifndef DATA_TYPE_C8 #define DATA_TYPE_C8 102 #endif /* DATA_TYPE_C8 */ #ifndef DATA_TYPE_C32 #define DATA_TYPE_C32 103 #endif /* DATA_TYPE_C32 */ #ifndef DATA_TYPE_C64 #define DATA_TYPE_C64 104 #endif /* DATA_TYPE_C64 */ #ifndef DATA_TYPE_C128 #define DATA_TYPE_C128 105 #endif /* DATA_TYPE_C128 */ #ifndef DATA_TYPE_C1 #define DATA_TYPE_C1 106 #endif /* DATA_TYPE_C1 */ #ifndef DATA_TYPE_STR #define DATA_TYPE_STR 107 #endif /* DATA_TYPE_STR */ #define MMS_S_STR_LEN 64 #define MMS_S_PARAM_MAX 16 typedef struct { char saddr[MMS_S_STR_LEN]; char desc[MMS_S_STR_LEN]; uint8_t type; uint8_t ctrl_model; // float min; // float max; // float step; // char unit[MMS_S_STR_LEN]; }stru_mms_s_param_base; // 定值仅支持一个参数 typedef struct { stru_mms_s_param_base base; void *data; }stru_mms_s_setting; typedef void (*mms_s_setting_cb)(stru_mms_s_setting *p_setting, const char *p_data); // 参数支持多个值 typedef struct { stru_mms_s_param_base base; uint8_t param_num; void *data[MMS_S_PARAM_MAX]; }stru_mms_s_param; typedef void (*mms_s_param_cb)(stru_mms_s_param *p_param, const char *p_data, int setting_zone); typedef struct { char saddr[MMS_S_STR_LEN]; char desc[MMS_S_STR_LEN]; uint8_t ctrl_model; }stru_mms_s_control; typedef void (*mms_s_control_cb)(stru_mms_s_control *p_control, uint8_t state); int mms_s_init(const char* icd_path, int port); void mms_s_dbg_switch(bool on); int mms_s_control_register(stru_mms_s_control *p_control, uint16_t num, mms_s_control_cb cb); int mms_s_setting_register(stru_mms_s_setting *p_setting, uint16_t num, mms_s_setting_cb cb); int mms_s_param_register(stru_mms_s_param *p_param, uint16_t num, mms_s_param_cb cb); int mms_s_file_path_set(const char* file_path); #ifdef __cplusplus } #endif /* __cplusplus */