174 lines
6.0 KiB
C++
174 lines
6.0 KiB
C++
#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);
|