RTU/release/inc/myMms_s.h

132 lines
2.9 KiB
C

#pragma once
#include <stdint.h>
#include <stdbool.h>
#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 */