187 lines
4.0 KiB
C++
187 lines
4.0 KiB
C++
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef MY_GET_DATA_WITH_TYPE
|
|
#define MY_GET_DATA_WITH_TYPE(p, type) (*(type *)(p))
|
|
#endif
|
|
|
|
|
|
#ifndef MY_SET_DATA_WITH_TYPE
|
|
#define MY_SET_DATA_WITH_TYPE(p, q, type) (*(type *)(p) = *(type *)(q))
|
|
#endif
|
|
|
|
|
|
enum
|
|
{
|
|
_MMS_M_EVENT_ALL_CALL,
|
|
_MMS_M_EVENT_GI_CALL,
|
|
_MMS_M_EVENT_CO_SELECT,
|
|
_MMS_M_EVENT_CO_DIRECT,
|
|
_MMS_M_EVENT_CO_CANCEL,
|
|
_MMS_M_EVENT_AO_READ,
|
|
_MMS_M_EVENT_AO_WRITE,
|
|
_MMS_M_EVENT_END
|
|
};
|
|
|
|
enum
|
|
{
|
|
_MMS_M_data_type_unknown = 0,
|
|
_MMS_M_data_type_bool,
|
|
_MMS_M_data_type_int8,
|
|
_MMS_M_data_type_int16,
|
|
_MMS_M_data_type_int32,
|
|
_MMS_M_data_type_int64,
|
|
_MMS_M_data_type_uint8,
|
|
_MMS_M_data_type_uint16,
|
|
_MMS_M_data_type_uint32,
|
|
_MMS_M_data_type_uint64,
|
|
_MMS_M_data_type_float,
|
|
_MMS_M_data_type_double,
|
|
_MMS_M_data_type_string,
|
|
_MMS_M_data_type_end
|
|
};
|
|
|
|
#define MMS_M_STR_LEN 64
|
|
#define MMS_M_REF_LEN 128
|
|
|
|
#define MMS_M_ON_LINE 1
|
|
#define MMS_M_OFF_LINE 0
|
|
|
|
|
|
#define MMS_M_DEBUG_PRINT_OFF 0
|
|
#define MMS_M_DEBUG_PRINT_ON 1
|
|
|
|
// typedef union
|
|
// {
|
|
// bool b;
|
|
// int8_t c;
|
|
// int16_t s;
|
|
// int32_t l;
|
|
// uint8_t cu;
|
|
// uint16_t su;
|
|
// uint32_t lu;
|
|
// float f;
|
|
// }un_value;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
char saddr[MMS_M_STR_LEN];
|
|
char desc[MMS_M_STR_LEN];
|
|
uint8_t data_type;
|
|
// void *p_data;
|
|
std::vector<void *> vec_p_data;
|
|
}stru_mms_m_gen_signal;
|
|
|
|
typedef struct
|
|
{
|
|
stru_mms_m_gen_signal sig;
|
|
uint8_t ctrl_type;
|
|
}stru_mms_m_ctrl_signal;
|
|
|
|
typedef struct
|
|
{
|
|
stru_mms_m_gen_signal sig;
|
|
uint8_t ctrl_type;
|
|
double min;
|
|
double max;
|
|
double step;
|
|
char unit[MMS_M_STR_LEN];
|
|
// void *p_default;
|
|
std::vector<void *> vec_p_default;
|
|
}stru_mms_m_param_signal;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t st_num;
|
|
uint16_t mx_num;
|
|
uint16_t co_num;
|
|
uint16_t ao_num;
|
|
uint16_t param_num;
|
|
stru_mms_m_gen_signal *p_st_sig;
|
|
stru_mms_m_gen_signal *p_mx_sig;
|
|
stru_mms_m_ctrl_signal *p_co_sig;
|
|
stru_mms_m_param_signal *p_ao_sig;
|
|
stru_mms_m_param_signal *p_param_sig;
|
|
}stru_mms_m_config;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int app_fd; // 61850客户端句柄
|
|
char ied[MMS_M_STR_LEN]; // ied名称
|
|
char name[MMS_M_STR_LEN]; // 信号名
|
|
int value_type; // 数据类型
|
|
// void *p_val; // 设置值
|
|
char val[128];
|
|
// char val_str[MMS_M_STR_LEN]; // 字符串类型的值
|
|
int ctrl_type; // 遥控类型
|
|
int set_zone; // 定值区
|
|
void (*p_func)(void *arg, int ret); // 设置回调函数
|
|
// void *arg; // 回调函数参数
|
|
}stru_mms_m_event;
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int year;
|
|
int mon;
|
|
int day;
|
|
int hour;
|
|
int min;
|
|
int sec;
|
|
int msec;
|
|
}stru_mms_m_time;
|
|
|
|
typedef struct
|
|
{
|
|
int app_fd;
|
|
int reason;
|
|
int type;
|
|
int quality;
|
|
char name[MMS_M_STR_LEN];
|
|
char desc[MMS_M_STR_LEN];
|
|
char reference[MMS_M_REF_LEN];
|
|
void *p_value;
|
|
stru_mms_m_time time;
|
|
}stru_mms_m_out_value;
|
|
|
|
typedef void (*mms_m_out_status_cb)(int app_fd, int status);
|
|
typedef void (*mms_m_out_value_cb)(stru_mms_m_out_value *p_value);
|
|
|
|
|
|
|
|
int mms_m_out_init(const char *config_path, int debug_print_flag, uint32_t connectionTimeout);
|
|
|
|
int mms_m_out_get_signal_info(int app_fd, stru_mms_m_config *p_config);
|
|
|
|
int mms_m_out_get_connect_status(int fd, mms_m_out_status_cb p_func);
|
|
|
|
int mms_m_out_debug_print_swicth(int id, int debug_print_flag);
|
|
|
|
int mms_m_out_do_set_yk_or_param(stru_mms_m_event *p_event);
|
|
|
|
int mms_m_out_read_params(int app_fd);
|
|
int mms_m_out_read_param(int app_fd, const char *param_name);
|
|
|
|
int mms_m_out_get_value(int app_fd, mms_m_out_value_cb p_func);
|
|
char *mms_m_out_reason_str(int reason);
|
|
|
|
|
|
void *mms_m_create_data_ptr(uint8_t type);
|
|
int mms_m_set_data_value(void *srt, void *dst, uint8_t type);
|
|
int mms_m_get_data_value_str(void *data, uint8_t type, char *str);
|
|
int mms_m_set_data_by_str(void *data, uint8_t type, const char *str);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|