RTU/release/inc/myDatacenter.h

174 lines
6.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "myBase.h"
#include <vector>
#include <string>
#include <map>
// 信号控制枚举
enum SIGNAL_CTRL_TYPE
{
NONE, // 无
DIRECT_NORMAL, // 直控
SBO_NORMAL, // 选控
};
// 信号控制步骤枚举
enum SIGNAL_CTRL_STEP
{
READY, // 准备
SELECT, // 选择
DIRECT, // 执行
CANCEL, // 取消
};
// 数据中心信号控制结构体
typedef struct
{
uint8_t step:2; // 控制步骤
uint8_t type:2; // 控制类型
uint8_t backup:4; // 备用字节
uint8_t data_type; // 数据类型
void *p_data; // 数据指针
}stru_signal_ctrl;
typedef struct
{
float min; // 最小值
float max; // 最大值
float step; // 步长
std::string unit; // 单位
}stru_signal_param;
typedef void (*out_signal_change_cb)(std::string saddr, uint8_t data_type, void *p_data, void *p_last_data);
typedef void (*signal_change_cb)(std::string saddr, SIGNAL_CTRL_STEP step, uint8_t data_type, uint8_t setting_zone, void *p_data);
int datacenter_init();
void datacenter_run_100ms();
void datacenter_run_1000ms();
// 数据中心out信号注册接口
int dc_signal_out(const std::string &saddr, const std::string &desc, uint8_t data_type, void *p_data);
int dc_signal_out_with_callback(const std::string &saddr, const std::string &desc, uint8_t data_type, void *p_data, out_signal_change_cb cb);
int dc_signal_out_link_with_callback(const std::string &saddr, void **p_data, out_signal_change_cb cb);
// 数据中心in信号注册并链接out信号接口
int dc_signal_in(const std::string &saddr, const std::string &desc, const std::string &link_saddr, void **p_data);
int dc_signal_in_with_callback(const std::string &saddr, const std::string &desc, const std::string &link_saddr, void **p_data, out_signal_change_cb cb);
int dc_signal_ao(const std::string &saddr, const std::string &desc, uint8_t data_type, uint8_t ctrl_type, void *p_data, void *p_default_data, signal_change_cb cb);
int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb);
int dc_signal_ao_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data);
int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_type, void *p_data);
// 数据中心参数信号注册接口
int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t data_type, uint8_t ctrl_type, void **p_data, void **p_default_data, int num, signal_change_cb cb);
// 数据中心参数链接信号接口
int dc_signal_param_link_with_callback(const std::string &saddr, void **p_data, int num, signal_change_cb cb);
// 数据中心参数设置接口
int dc_signal_param_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, uint8_t setting_zone, void *p_data);
int dc_signal_param_set_val_without_check(const std::string &saddr, uint8_t data_type, uint8_t setting_zone, void *p_data);
// 数据中心遥控信号注册接口
int dc_signal_yk(const std::string &saddr, const std::string &desc, uint8_t data_type, uint8_t ctrl_type, void *p_data, signal_change_cb cb);
// 数据中心遥控信号链接接口
int dc_signal_yk_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb);
// 数据中心遥控控制接口(校验前置,调用前需先调 dc_yk_ctrl_valid
int dc_signal_yk_set_status(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data);
// 数据中心获取out信号信息接口
int dc_get_out_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, void **p_data);
// 数据中心获取in信号信息接口
int dc_get_in_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, void **p_data);
int dc_get_ao_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, stru_signal_param *p_param, uint8_t &ctrl_type, void **p_data, void **p_default_data);
// 数据中心获取参数信号信息接口
int dc_get_param_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, stru_signal_param *p_param, uint8_t &ctrl_type, std::vector<void *> *p_vec_p_data, std::vector<void *> *p_vec_p_default_data);
// 数据中心获取遥控信号信息接口
int dc_get_yk_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, uint8_t &ctrl_type, void **p_data);
// 数据中心获取信号值字符串接口
std::string dc_get_signal_val(void *p_data, uint8_t data_type);
// 数据中心设置信号值字符串接口
int dc_set_out_signal_val(const std::string &saddr, void *set_data);
// 数据中心根据数据类型创建数据指针接口
void *dc_create_data_ptr_by_type(uint8_t data_type);
void dc_delete_signal_data(void *p_data, uint8_t data_type);
// 数据中心根据数据类型ID获取数据类型字符串接口
std::string dc_get_data_type_str_by_id(uint8_t data_type);
// 数据中心根据数据类型字符串获取数据类型ID接口
uint8_t dc_get_data_type_id_by_str(const std::string &data_type_str);
uint8_t dc_get_data_type_len(uint8_t data_type);
void dc_set_signal_val_from_str(void *p_data, uint8_t data_type, const std::string &str);
typedef struct
{
std::string saddr;
float fVal;
uint32_t sec;
uint16_t ms;
}stru_disturb_dd;
typedef struct
{
std::string saddr;
uint8_t status;
uint32_t sec;
uint16_t ms;
}stru_dc_soe;
typedef struct
{
std::string saddr;
float fVal;
}stru_dc_disturb_yc;
typedef struct
{
std::vector<stru_dc_soe> vec_soe;
std::vector<stru_dc_disturb_yc> vec_disturb_yc;
}stru_dc_fault;
typedef void (*dc_queue_pop_cb)(void *p_data);
int dc_disturb_dd_queue_push(const stru_disturb_dd &dd);
int dc_disturb_dd_register_queue_pop(dc_queue_pop_cb cb);
int dc_event_queue_push(const stru_dc_soe &soe);
int dc_event_register_queue_pop(dc_queue_pop_cb cb);
int dc_fault_queue_push(const stru_dc_fault &fault);
int dc_fault_register_queue_pop(dc_queue_pop_cb cb);