<修改> 1、给数据中心的接口加上module_id,避免控制类型命令自锁;2、iec61850s中增加接口注册绑定参数与定值区,设置定值区时,参数能相应修改。
This commit is contained in:
parent
dbfcf92552
commit
3806a32af9
|
|
@ -5,11 +5,33 @@
|
|||
"label": "run-build-script",
|
||||
"type": "shell",
|
||||
"command": "${workspaceFolder}/release/build.sh",
|
||||
"problemMatcher": ["$gcc"],
|
||||
"problemMatcher": [
|
||||
"$gcc"
|
||||
],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "cppbuild",
|
||||
"label": "C/C++: aarch64-linux-gnu-g++ 生成活动文件",
|
||||
"command": "/usr/bin/aarch64-linux-gnu-g++",
|
||||
"args": [
|
||||
"-fdiagnostics-color=always",
|
||||
"-g",
|
||||
"${file}",
|
||||
"-o",
|
||||
"${fileDirname}/${fileBasenameNoExtension}"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${fileDirname}"
|
||||
},
|
||||
"problemMatcher": [
|
||||
"$gcc"
|
||||
],
|
||||
"group": "build",
|
||||
"detail": "编译器: /usr/bin/aarch64-linux-gnu-g++"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -57,42 +57,42 @@ 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_with_callback(const std::string &saddr, const std::string &desc, uint8_t data_type, void *p_data, out_signal_change_cb cb, const std::string &module_id);
|
||||
|
||||
int dc_signal_out_link_with_callback(const std::string &saddr, 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, const std::string &module_id);
|
||||
|
||||
// 数据中心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_in_with_callback(const std::string &saddr, const std::string &desc, const std::string &link_saddr, void **p_data, out_signal_change_cb cb, const std::string &module_id);
|
||||
|
||||
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(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, const std::string &module_id);
|
||||
|
||||
int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb);
|
||||
int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb, const std::string &module_id);
|
||||
|
||||
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(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data, const std::string &module_id);
|
||||
|
||||
int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_type, void *p_data);
|
||||
int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_type, void *p_data, const std::string &module_id);
|
||||
|
||||
// 数据中心参数信号注册接口
|
||||
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(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, const std::string &module_id);
|
||||
|
||||
// 数据中心参数链接信号接口
|
||||
int dc_signal_param_link_with_callback(const std::string &saddr, void **p_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, const std::string &module_id);
|
||||
|
||||
// 数据中心参数设置接口
|
||||
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(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, uint8_t setting_zone, void *p_data, const std::string &module_id);
|
||||
|
||||
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_param_set_val_without_check(const std::string &saddr, uint8_t data_type, uint8_t setting_zone, void *p_data, const std::string &module_id);
|
||||
|
||||
// 数据中心遥控信号注册接口
|
||||
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(const std::string &saddr, const std::string &desc, uint8_t data_type, uint8_t ctrl_type, void *p_data, signal_change_cb cb, const std::string &module_id);
|
||||
|
||||
// 数据中心遥控信号链接接口
|
||||
int dc_signal_yk_link_with_callback(const std::string &saddr, 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, const std::string &module_id);
|
||||
|
||||
// 数据中心遥控控制接口(校验前置,调用前需先调 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);
|
||||
int dc_signal_yk_set_status(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data, const std::string &module_id);
|
||||
|
||||
// 数据中心获取out信号信息接口
|
||||
int dc_get_out_signal_info(const std::string &saddr, std::string &desc, uint8_t &data_type, void **p_data);
|
||||
|
|
@ -112,7 +112,7 @@ int dc_get_yk_signal_info(const std::string &saddr, std::string &desc, uint8_t &
|
|||
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);
|
||||
int dc_set_out_signal_val(const std::string &saddr, void *set_data, const std::string &module_id);
|
||||
|
||||
// 数据中心根据数据类型创建数据指针接口
|
||||
void *dc_create_data_ptr_by_type(uint8_t data_type);
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ typedef struct
|
|||
int app_fd;
|
||||
int reason;
|
||||
int type;
|
||||
int quality;
|
||||
uint32_t quality;
|
||||
MMS_STR name;
|
||||
MMS_STR desc;
|
||||
MMS_REF reference;
|
||||
|
|
|
|||
|
|
@ -200,6 +200,23 @@ int mms_s_param_register(stru_mms_s_param *p_param, uint16_t num, mms_s_param_cb
|
|||
*/
|
||||
int mms_s_file_path_set(const char* file_path);
|
||||
|
||||
/**
|
||||
* 定值组激活切换回调
|
||||
* @param zone_saddr 绑定的定值区指示信号短地址
|
||||
* @param new_act_sg 新的激活定值组号(1-based)
|
||||
*/
|
||||
typedef void (*mms_s_sg_change_cb)(const char *zone_saddr, int new_act_sg);
|
||||
|
||||
/**
|
||||
* 绑定表示定值区号的信号,并注册定值组切换回调
|
||||
* 当定值组激活切换时(如 IEDScout 的 Activate selected SG),
|
||||
* 通过 cb 通知上层更新 datacenter 中对应的信号值
|
||||
* @param zone_saddr 定值区指示信号的短地址(如 "ao.0")
|
||||
* @param cb 定值组切换回调函数
|
||||
* @return 0 成功,-1 失败
|
||||
*/
|
||||
int mms_s_bind_param_zone_signal(const char *zone_saddr, mms_s_sg_change_cb cb);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1070,8 +1070,8 @@ static int mms_m_get_MmsValue(stru_point_value &point_value, stru_mms_m_out_valu
|
|||
tm_flag = 1;
|
||||
break;
|
||||
case MMS_BIT_STRING:
|
||||
out_val.type = MMS_BIT_STRING;
|
||||
*(uint32_t *)p_val = MmsValue_getBitStringAsIntegerBigEndian(p_mms_values);
|
||||
// out_val.type = MMS_BIT_STRING;
|
||||
out_val.quality = MmsValue_getBitStringAsIntegerBigEndian(p_mms_values);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ LOCAL std::vector<stru_mms_s_param> g_vec_params;
|
|||
|
||||
LOCAL mms_s_param_cb g_param_cb = NULL;
|
||||
|
||||
LOCAL char g_zone_saddr[MMS_S_STR_LEN] = {0};
|
||||
LOCAL mms_s_sg_change_cb g_sg_change_cb = NULL;
|
||||
|
||||
/** 更新 BOOLEAN 类型属性值 */
|
||||
void param_update_BOOLEAN(IedServer server, DataAttribute* dataAttribute, std::string val)
|
||||
{
|
||||
|
|
@ -202,7 +205,6 @@ LOCAL void param_load_edit_sg_values(stru_LDevice &ld, int editSG)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
for(std::vector<stru_mms_s_param>::iterator it_param = g_vec_params.begin(); it_param != g_vec_params.end(); it_param++)
|
||||
{
|
||||
std::string saddr = std::string(it_param->base.saddr) + "_SE";
|
||||
|
|
@ -271,6 +273,11 @@ LOCAL bool param_active_sg_changed_handler(void* parameter, SettingGroupControlB
|
|||
|
||||
param_load_active_sg_values(*p_ld, newActSg);
|
||||
|
||||
if(strlen(g_zone_saddr) > 0 && g_sg_change_cb != NULL)
|
||||
{
|
||||
g_sg_change_cb(g_zone_saddr, newActSg);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -547,9 +554,10 @@ LOCAL void param_get_FLOAT(DataAttribute *node_SE, DataAttribute *node_SG, std::
|
|||
float gap = floatVal - min;
|
||||
if(fabs(step) > EPSILON)
|
||||
{
|
||||
float gap_mod = fmod(gap, step);
|
||||
|
||||
if(fabs(gap_mod) > EPSILON && fabs(gap_mod - step) > EPSILON)
|
||||
float steps = roundf(gap / step);
|
||||
float expected = min + steps * step;
|
||||
float stepEpsilon = fmax(1e-5f, step * 1e-4f);
|
||||
if(fabs(floatVal - expected) > stepEpsilon)
|
||||
{
|
||||
LOG_E("Value %f does not conform to step size %f", floatVal, step);
|
||||
return;
|
||||
|
|
@ -670,7 +678,7 @@ LOCAL void edit_sg_confirmation_handler(void* parameter, SettingGroupControlBloc
|
|||
{
|
||||
g_param_get_funcs[i].get_value((DataAttribute *)node_se, (DataAttribute *)node_sg, val);
|
||||
|
||||
if(g_param_cb != NULL)
|
||||
if(!val.empty() && g_param_cb != NULL)
|
||||
{
|
||||
g_param_cb(&*it_param, val.c_str(), editSg - 1);
|
||||
}
|
||||
|
|
@ -798,3 +806,26 @@ int param_init(IedServer server, stru_icd &icd)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定表示定值区号的信号,并注册定值组切换回调
|
||||
* 当定值组激活切换时,通过 cb 通知上层更新 datacenter 中对应的信号值
|
||||
* @param zone_saddr 定值区指示信号的短地址(如 "ao.0")
|
||||
* @param cb 定值组切换回调函数
|
||||
* @return 0 成功,-1 失败
|
||||
*/
|
||||
int mms_s_bind_param_zone_signal(const char *zone_saddr, mms_s_sg_change_cb cb)
|
||||
{
|
||||
if(NULL == zone_saddr || strlen(zone_saddr) == 0)
|
||||
{
|
||||
LOG_E("zone_saddr is NULL or empty");
|
||||
return -1;
|
||||
}
|
||||
|
||||
strncpy(g_zone_saddr, zone_saddr, MMS_S_STR_LEN - 1);
|
||||
g_zone_saddr[MMS_S_STR_LEN - 1] = '\0';
|
||||
g_sg_change_cb = cb;
|
||||
|
||||
LOG_I("bind zone signal %s", zone_saddr);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@ LOCAL void cmd_recv()
|
|||
|
||||
int app_cmd_init1(void *arg)
|
||||
{
|
||||
lineniseSetCompletionCallback(cmd_complete);
|
||||
// lineniseSetCompletionCallback(cmd_complete);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ void *app_cmd(void *arg)
|
|||
|
||||
if(event & EV_TIMER1)
|
||||
{
|
||||
cmd_recv();
|
||||
// cmd_recv();
|
||||
}
|
||||
|
||||
if(event & EV_TIMER2)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include "dc_signal.h"
|
||||
#include "myDatacenter.h"
|
||||
|
||||
#define MODULE_DATACENTER "datacenter"
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,9 @@ typedef struct stru_signal
|
|||
std::unordered_set<std::string> link_set; // O(1) 查重
|
||||
uint8_t ctrl_type; // 信号控制类型
|
||||
stru_signal_param param; // 信号参数信息
|
||||
std::vector<out_signal_change_cb> out_change_cb_list; // 输出类型信号变化回调函数列表
|
||||
std::vector<signal_change_cb> change_cb_list; // 参数类型信号变化回调函数列表
|
||||
std::vector<std::pair<std::string, out_signal_change_cb>> out_change_cb_list; // <module_id, cb>
|
||||
std::vector<std::pair<std::string, signal_change_cb>> change_cb_list; // <module_id, cb>
|
||||
std::string last_caller_module; // 上次修改本信号的模块ID(用于out信号回调回路阻断)
|
||||
}stru_signal;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ static int dc_param_register_signals(const std::string ¶m_path,
|
|||
{
|
||||
dc_signal_ao(saddr, desc, data_type,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL,
|
||||
p_data, p_default_data, nullptr);
|
||||
p_data, p_default_data, nullptr, MODULE_DATACENTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -296,7 +296,7 @@ static int dc_param_register_signals(const std::string ¶m_path,
|
|||
{
|
||||
dc_signal_param(saddr, desc, data_type,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL,
|
||||
vec_p_data.data(), vec_p_default_data.data(), num, nullptr);
|
||||
vec_p_data.data(), vec_p_default_data.data(), num, nullptr, MODULE_DATACENTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -302,8 +302,10 @@ void dc_signal_out_change_check()
|
|||
if (0 != dc_data_compare(p_signal->data_type,
|
||||
p_signal->vec_p_data[0], p_signal->p_last_data))
|
||||
{
|
||||
for (auto cb : p_signal->out_change_cb_list) {
|
||||
cb(p_signal->saddr, p_signal->data_type,
|
||||
for (auto &entry : p_signal->out_change_cb_list) {
|
||||
// 回路阻断:修改本信号的模块不回调自身
|
||||
if (entry.first == p_signal->last_caller_module) continue;
|
||||
entry.second(p_signal->saddr, p_signal->data_type,
|
||||
p_signal->vec_p_data[0], p_signal->p_last_data);
|
||||
}
|
||||
dc_set_signal_val(p_signal->p_last_data,
|
||||
|
|
@ -454,7 +456,7 @@ LOCAL bool dc_signal_param_add_check(stru_signal *p_signal, const std::string &d
|
|||
{
|
||||
if(0 != dc_data_compare(p_signal->data_type, p_default_data[i], p_signal->vec_p_default_data[i]))
|
||||
{
|
||||
printf(" zone %d: val=%s def=%s, %p, %p\n", i+1, dc_get_signal_val(p_signal->vec_p_data[i], p_signal->data_type).c_str(), dc_get_signal_val(p_signal->vec_p_default_data[i], p_signal->data_type).c_str(), p_signal->vec_p_data[i], p_signal->vec_p_default_data[i]);
|
||||
// printf(" zone %d: val=%s def=%s, %p, %p\n", i+1, dc_get_signal_val(p_signal->vec_p_data[i], p_signal->data_type).c_str(), dc_get_signal_val(p_signal->vec_p_default_data[i], p_signal->data_type).c_str(), p_signal->vec_p_data[i], p_signal->vec_p_default_data[i]);
|
||||
change = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -927,7 +929,7 @@ int dc_signal_out(const std::string &saddr, const std::string &desc, uint8_t dat
|
|||
return dc_signal_add_to_map(signal, g_datacenter.signal_out);
|
||||
}
|
||||
|
||||
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_with_callback(const std::string &saddr, const std::string &desc, uint8_t data_type, void *p_data, out_signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
if(nullptr == p_data)
|
||||
{
|
||||
|
|
@ -957,13 +959,13 @@ int dc_signal_out_with_callback(const std::string &saddr, const std::string &des
|
|||
signal.p_last_data = p_last_data;
|
||||
if(nullptr != cb)
|
||||
{
|
||||
signal.out_change_cb_list.push_back(cb);
|
||||
signal.out_change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
return dc_signal_add_to_map(signal, g_datacenter.signal_out);
|
||||
}
|
||||
|
||||
int dc_signal_out_link_with_callback(const std::string &saddr, 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, const std::string &module_id)
|
||||
{
|
||||
stru_signal *p_signal = dc_find_out_signal(saddr);
|
||||
if(nullptr == p_signal)
|
||||
|
|
@ -985,7 +987,7 @@ int dc_signal_out_link_with_callback(const std::string &saddr, void **p_data, ou
|
|||
|
||||
if(nullptr != cb)
|
||||
{
|
||||
p_signal->out_change_cb_list.push_back(cb);
|
||||
p_signal->out_change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -1040,7 +1042,7 @@ int dc_signal_in(const std::string &saddr, const std::string &desc, const std::s
|
|||
return dc_signal_add_to_map(signal, g_datacenter.signal_in);
|
||||
}
|
||||
|
||||
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_in_with_callback(const std::string &saddr, const std::string &desc, const std::string &link_saddr, void **p_data, out_signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1079,7 +1081,7 @@ int dc_signal_in_with_callback(const std::string &saddr, const std::string &desc
|
|||
|
||||
if(nullptr != cb)
|
||||
{
|
||||
p_signal_out->out_change_cb_list.push_back(cb);
|
||||
p_signal_out->out_change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
if(p_signal_out->link_set.find(saddr) == p_signal_out->link_set.end())
|
||||
|
|
@ -1093,7 +1095,7 @@ int dc_signal_in_with_callback(const std::string &saddr, const std::string &desc
|
|||
return dc_signal_add_to_map(signal, g_datacenter.signal_in);
|
||||
}
|
||||
|
||||
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(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, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr || p_default_data == nullptr)
|
||||
{
|
||||
|
|
@ -1120,7 +1122,7 @@ int dc_signal_ao(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
dc_delete_signal_data(p_signal->vec_p_data[0], data_type);
|
||||
p_signal->vec_p_data[0] = p_data;
|
||||
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1144,7 +1146,7 @@ int dc_signal_ao(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -1153,7 +1155,7 @@ int dc_signal_ao(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
return -1;
|
||||
}
|
||||
|
||||
int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb)
|
||||
int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1167,7 +1169,7 @@ int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, sig
|
|||
{
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
(*p_data) = p_signal->vec_p_data.empty() ? nullptr : p_signal->vec_p_data[0];
|
||||
|
|
@ -1177,7 +1179,7 @@ int dc_signal_ao_link_with_callback(const std::string &saddr, void **p_data, sig
|
|||
return -1;
|
||||
}
|
||||
|
||||
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(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1218,11 +1220,13 @@ int dc_signal_ao_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_s
|
|||
return -1;
|
||||
}
|
||||
|
||||
for(auto cb : p_signal->change_cb_list)
|
||||
for(auto &entry : p_signal->change_cb_list)
|
||||
{
|
||||
if(cb)
|
||||
if(entry.second)
|
||||
{
|
||||
cb(saddr, step, ctrl.data_type, 0, p_data);
|
||||
// 回路阻断:修改本信号的模块不回调自身
|
||||
if (entry.first == module_id) continue;
|
||||
entry.second(saddr, step, ctrl.data_type, 0, p_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1243,7 +1247,7 @@ int dc_signal_ao_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_s
|
|||
return -1;
|
||||
}
|
||||
|
||||
int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_type, void *p_data)
|
||||
int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_type, void *p_data, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1280,7 +1284,7 @@ int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_ty
|
|||
return -1;
|
||||
}
|
||||
|
||||
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 data_num, signal_change_cb cb)
|
||||
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 data_num, signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
// 先从参数表里解析,调用参数注册
|
||||
// 程序注册时,从参数表里去查找,同一个信息,使用参数表中的保存的数据值,在线程初始化时,通知所有链接此信号的信号
|
||||
|
|
@ -1343,7 +1347,7 @@ int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t d
|
|||
p_signal->vec_p_default_data.push_back(p_default_data[i]);
|
||||
}
|
||||
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1370,7 +1374,7 @@ int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t d
|
|||
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1378,7 +1382,7 @@ int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t d
|
|||
return -1;
|
||||
}
|
||||
|
||||
int dc_signal_param_link_with_callback(const std::string &saddr, void **p_data, int data_num, signal_change_cb cb)
|
||||
int dc_signal_param_link_with_callback(const std::string &saddr, void **p_data, int data_num, signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
XXH128_hash_t hash = XXH3_128bits(saddr.c_str(), saddr.length());
|
||||
stru_signal *p_signal = dc_find_signal(saddr, g_datacenter.signal_param);
|
||||
|
|
@ -1386,7 +1390,7 @@ int dc_signal_param_link_with_callback(const std::string &saddr, void **p_data,
|
|||
{
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < p_signal->vec_p_data.size() && i < data_num; i++)
|
||||
|
|
@ -1400,7 +1404,7 @@ int dc_signal_param_link_with_callback(const std::string &saddr, void **p_data,
|
|||
}
|
||||
|
||||
|
||||
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(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, uint8_t setting_zone, void *p_data, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1440,11 +1444,13 @@ int dc_signal_param_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, str
|
|||
return -1;
|
||||
}
|
||||
|
||||
for(auto cb : p_signal->change_cb_list)
|
||||
for(auto &entry : p_signal->change_cb_list)
|
||||
{
|
||||
if(cb != nullptr)
|
||||
if(entry.second != nullptr)
|
||||
{
|
||||
cb(saddr, step, ctrl.data_type, setting_zone, p_data);
|
||||
// 回路阻断:修改本信号的模块不回调自身
|
||||
if (entry.first == module_id) continue;
|
||||
entry.second(saddr, step, ctrl.data_type, setting_zone, p_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1465,7 +1471,7 @@ int dc_signal_param_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, str
|
|||
return -1;
|
||||
}
|
||||
|
||||
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_param_set_val_without_check(const std::string &saddr, uint8_t data_type, uint8_t setting_zone, void *p_data, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1498,7 +1504,7 @@ int dc_signal_param_set_val_without_check(const std::string &saddr, uint8_t data
|
|||
return -1;
|
||||
}
|
||||
|
||||
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(const std::string &saddr, const std::string &desc, uint8_t data_type, uint8_t ctrl_type, void *p_data, signal_change_cb cb, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1521,7 +1527,7 @@ int dc_signal_yk(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
{
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
|
||||
p_signal->ctrl_type = ctrl_type;
|
||||
|
|
@ -1532,7 +1538,7 @@ int dc_signal_yk(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
return -1;
|
||||
}
|
||||
|
||||
int dc_signal_yk_link_with_callback(const std::string &saddr, 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, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1546,7 +1552,7 @@ int dc_signal_yk_link_with_callback(const std::string &saddr, void **p_data, sig
|
|||
{
|
||||
if(cb)
|
||||
{
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
p_signal->change_cb_list.push_back({module_id, cb});
|
||||
}
|
||||
(*p_data) = p_signal->vec_p_data.empty() ? nullptr : p_signal->vec_p_data[0];
|
||||
return (*p_data) != nullptr ? 0 : -1;
|
||||
|
|
@ -1555,7 +1561,7 @@ int dc_signal_yk_link_with_callback(const std::string &saddr, void **p_data, sig
|
|||
return -1;
|
||||
}
|
||||
|
||||
int dc_signal_yk_set_status(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data)
|
||||
int dc_signal_yk_set_status(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_signal_ctrl &ctrl, void *p_data, const std::string &module_id)
|
||||
{
|
||||
if(p_data == nullptr)
|
||||
{
|
||||
|
|
@ -1589,11 +1595,13 @@ int dc_signal_yk_set_status(const std::string &saddr, SIGNAL_CTRL_STEP step, str
|
|||
return -1;
|
||||
}
|
||||
|
||||
for(auto cb : p_signal->change_cb_list)
|
||||
for(auto &entry : p_signal->change_cb_list)
|
||||
{
|
||||
if(cb != nullptr)
|
||||
if(entry.second != nullptr)
|
||||
{
|
||||
cb(saddr, step, ctrl.data_type, 0, p_data);
|
||||
// 回路阻断:修改本信号的模块不回调自身
|
||||
if (entry.first == module_id) continue;
|
||||
entry.second(saddr, step, ctrl.data_type, 0, p_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1947,11 +1955,12 @@ void dc_set_signal_val_from_str(void *p_data, uint8_t data_type, const std::stri
|
|||
}
|
||||
}
|
||||
|
||||
int dc_set_out_signal_val(const std::string &saddr, void *set_data)
|
||||
int dc_set_out_signal_val(const std::string &saddr, void *set_data, const std::string &module_id)
|
||||
{
|
||||
stru_signal *p_signal = dc_find_out_signal(saddr);
|
||||
if(p_signal != nullptr)
|
||||
{
|
||||
p_signal->last_caller_module = module_id;
|
||||
dc_mark_signal_dirty(p_signal);
|
||||
return dc_set_signal_val(p_signal->vec_p_data[0], p_signal->data_type, set_data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,4 +6,6 @@
|
|||
#include "iec_cfg_parse.h"
|
||||
#include "iec.h"
|
||||
|
||||
#define MODULE_IEC104 "iec104"
|
||||
|
||||
int iec_point_init();
|
||||
|
|
@ -213,7 +213,7 @@ int iec_point_init()
|
|||
p_vec = vec_st_mx_dd[i];
|
||||
for(uint32_t j = 0; j < p_vec->size(); j++)
|
||||
{
|
||||
if(0 != dc_signal_out_link_with_callback(p_vec->at(j).link, &p_vec->at(j).p_data, vec_out_change_cb_list[i]))
|
||||
if(0 != dc_signal_out_link_with_callback(p_vec->at(j).link, &p_vec->at(j).p_data, vec_out_change_cb_list[i], MODULE_IEC104))
|
||||
{
|
||||
MY_LOG_E("dc_signal_out_link_with_callback failed, link %s", p_vec->at(j).link.c_str());
|
||||
return -1;
|
||||
|
|
@ -223,7 +223,7 @@ int iec_point_init()
|
|||
|
||||
for(uint32_t i = 0; i < p_iec_cfg->vec_co.size(); i++)
|
||||
{
|
||||
if(0 != dc_signal_yk_link_with_callback(p_iec_cfg->vec_co[i].link, &p_iec_cfg->vec_co[i].p_data, iec_signal_yk_change))
|
||||
if(0 != dc_signal_yk_link_with_callback(p_iec_cfg->vec_co[i].link, &p_iec_cfg->vec_co[i].p_data, iec_signal_yk_change, MODULE_IEC104))
|
||||
{
|
||||
MY_LOG_E("dc_signal_yk_link failed, link %s", p_iec_cfg->vec_co[i].link.c_str());
|
||||
return -1;
|
||||
|
|
@ -232,7 +232,7 @@ int iec_point_init()
|
|||
|
||||
for(uint32_t i = 0; i < p_iec_cfg->vec_ao.size(); i++)
|
||||
{
|
||||
if(0 != dc_signal_ao_link_with_callback(p_iec_cfg->vec_ao[i].link, &p_iec_cfg->vec_ao[i].p_data, iec_signal_ao_change))
|
||||
if(0 != dc_signal_ao_link_with_callback(p_iec_cfg->vec_ao[i].link, &p_iec_cfg->vec_ao[i].p_data, iec_signal_ao_change, MODULE_IEC104))
|
||||
{
|
||||
MY_LOG_E("dc_signal_ao_link failed, link %s, type %d", p_iec_cfg->vec_ao[i].link.c_str(), p_iec_cfg->vec_ao[i].type);
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -4,3 +4,5 @@
|
|||
#include "mySystem.h"
|
||||
#include "myMms_m.h"
|
||||
|
||||
#define MODULE_IEC61850M "iec61850m"
|
||||
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ LOCAL std::vector<stru_iec61850m_info> g_vec_iec61850m_info =
|
|||
|
||||
LOCAL std::map<uint8_t, uint8_t> g_mms_m_type_to_local_type = {
|
||||
{MMS_BOOLEAN, DATA_TYPE_U8},
|
||||
{MMS_BIT_STRING, DATA_TYPE_U32},
|
||||
{MMS_INTEGER, DATA_TYPE_S32},
|
||||
{MMS_UNSIGNED, DATA_TYPE_U32},
|
||||
{MMS_FLOAT, DATA_TYPE_F32},
|
||||
|
|
@ -140,6 +141,9 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
case MMS_BOOLEAN:
|
||||
printf("value %d, ", MY_GET_DATA_WITH_TYPE(p->p_value, uint8_t));
|
||||
break;
|
||||
case MMS_BIT_STRING:
|
||||
printf("value %d, ", MY_GET_DATA_WITH_TYPE(p->p_value, uint32_t));
|
||||
break;
|
||||
case MMS_INTEGER:
|
||||
printf("value %d, ", MY_GET_DATA_WITH_TYPE(p->p_value, int32_t));
|
||||
break;
|
||||
|
|
@ -150,6 +154,7 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
printf("value %s, ", (char *)p->p_value);
|
||||
break;
|
||||
default:
|
||||
printf("unknown type %d, ", p->type);
|
||||
break;
|
||||
}
|
||||
stru_mms_m_time *t = &p->time;
|
||||
|
|
@ -164,7 +169,7 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
{
|
||||
if(strcmp(p_cfg->point.p_st[j].saddr, p->name) == 0 && NULL != p_cfg->point.p_st[j].value.p_val[0])
|
||||
{
|
||||
dc_set_out_signal_val(p_cfg->point.p_st[j].saddr, p->p_value);
|
||||
dc_set_out_signal_val(p_cfg->point.p_st[j].saddr, p->p_value, MODULE_IEC61850M);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -172,7 +177,7 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
{
|
||||
if(strcmp(p_cfg->point.p_mx[j].saddr, p->name) == 0 && NULL != p_cfg->point.p_mx[j].value.p_val[0])
|
||||
{
|
||||
dc_set_out_signal_val(p_cfg->point.p_mx[j].saddr, p->p_value);
|
||||
dc_set_out_signal_val(p_cfg->point.p_mx[j].saddr, p->p_value, MODULE_IEC61850M);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -191,7 +196,20 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
continue;
|
||||
}
|
||||
|
||||
dc_signal_ao_set_val_without_check(p_cfg->point.p_ao[j].saddr, local_type, p->p_value);
|
||||
// dc_signal_ao_set_val_without_check(p_cfg->point.p_ao[j].saddr, local_type, p->p_value, MODULE_IEC61850M);
|
||||
|
||||
auto ao = p_cfg->point.p_ao[j];
|
||||
uint8_t temp[128] = {0};
|
||||
stru_signal_ctrl ctrl = {};
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
ctrl.p_data = temp;
|
||||
ctrl.step = SIGNAL_CTRL_STEP::READY;
|
||||
ctrl.data_type = local_type;
|
||||
|
||||
if(0 != dc_signal_ao_set_val(ao.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, p->p_value, MODULE_IEC61850M))
|
||||
{
|
||||
LOG_E("iec61850m_ext_demo, set ao %s value failed", ao.saddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -212,7 +230,20 @@ LOCAL void mms_data_back(stru_mms_m_out_value *p)
|
|||
}
|
||||
|
||||
printf("mms_data_back: set param %s zone=%d\n", p_cfg->point.p_param[j].saddr, p->set_zone);
|
||||
dc_signal_param_set_val_without_check(p_cfg->point.p_param[j].saddr, local_type, p->set_zone - 1, p->p_value);
|
||||
// dc_signal_param_set_val_without_check(p_cfg->point.p_param[j].saddr, local_type, p->set_zone - 1, p->p_value, MODULE_IEC61850M);
|
||||
|
||||
auto param = p_cfg->point.p_param[j];
|
||||
uint8_t temp[128] = {0};
|
||||
stru_signal_ctrl ctrl = {};
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
ctrl.p_data = temp;
|
||||
ctrl.step = SIGNAL_CTRL_STEP::READY;
|
||||
ctrl.data_type = local_type;
|
||||
|
||||
if(0 != dc_signal_param_set_val(param.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, p->set_zone - 1, p->p_value, MODULE_IEC61850M))
|
||||
{
|
||||
LOG_E("iec61850m_ext_demo, set param %s value failed", param.saddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -449,7 +480,7 @@ LOCAL int iec61850m_co_signal_init(int num, stru_point_item *p_item)
|
|||
}
|
||||
uint8_t local_type = g_mms_m_type_to_local_type[p->type];
|
||||
uint8_t local_ctrl_type = g_mms_m_ctrl_type_to_local_ctrl_type[p->ctrl_model];
|
||||
if(0 != dc_signal_yk(p->saddr, p->desc, local_type, local_ctrl_type, p->value.p_val[0], iec61850m_signal_co_change_callback))
|
||||
if(0 != dc_signal_yk(p->saddr, p->desc, local_type, local_ctrl_type, p->value.p_val[0], iec61850m_signal_co_change_callback, MODULE_IEC61850M))
|
||||
{
|
||||
MY_LOG_E("dc_signal_yk failed, saddr %s, desc %s, type %d", p->saddr, p->desc, p->type);
|
||||
return -1;
|
||||
|
|
@ -482,7 +513,7 @@ LOCAL int iec61850m_ao_signal_init(int num, stru_point_item *p_item)
|
|||
uint8_t local_type = g_mms_m_type_to_local_type[p->type];
|
||||
uint8_t ctrl_type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
|
||||
if(0 != dc_signal_ao(p->saddr, p->desc, local_type, ctrl_type, p->value.p_val[0], p->value.p_default[0], iec61850m_signal_ao_change_callback))
|
||||
if(0 != dc_signal_ao(p->saddr, p->desc, local_type, ctrl_type, p->value.p_val[0], p->value.p_default[0], iec61850m_signal_ao_change_callback, MODULE_IEC61850M))
|
||||
{
|
||||
MY_LOG_E("dc_signal_ao failed, saddr %s, desc %s, type %d", p->saddr, p->desc, p->type);
|
||||
return -1;
|
||||
|
|
@ -509,7 +540,7 @@ LOCAL int iec61850m_param_signal_init(int num, stru_point_item *p_item)
|
|||
uint8_t local_type = g_mms_m_type_to_local_type[p->type];
|
||||
uint8_t ctrl_type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
|
||||
if(0 != dc_signal_param(p->saddr, p->desc, local_type, ctrl_type, p->value.p_val, p->value.p_default, MMS_M_MAX_VAL_NUM, iec61850m_signal_param_change_callback))
|
||||
if(0 != dc_signal_param(p->saddr, p->desc, local_type, ctrl_type, p->value.p_val, p->value.p_default, MMS_M_MAX_VAL_NUM, iec61850m_signal_param_change_callback, MODULE_IEC61850M))
|
||||
{
|
||||
MY_LOG_E("dc_signal_param failed, saddr %s, desc %s, type %d", p->saddr, p->desc, p->type);
|
||||
return -1;
|
||||
|
|
@ -844,4 +875,4 @@ LOCAL void cmd_iec61850m(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
CMD_REGISTER("iec61850m", cmd_iec61850m, "iec61850客户端线程的控制命令");
|
||||
CMD_REGISTER(MODULE_IEC61850M, cmd_iec61850m, "iec61850客户端线程的控制命令");
|
||||
|
|
@ -3,3 +3,5 @@
|
|||
#include "myBase.h"
|
||||
#include "mySystem.h"
|
||||
#include "myMms_s.h"
|
||||
|
||||
#define MODULE_IEC61850S "iec61850s"
|
||||
|
|
@ -31,6 +31,50 @@ LOCAL std::vector<stru_mms_s_param> g_vec_param = {};
|
|||
LOCAL mms_s_value_update_cb g_mms_s_value_update_cb = NULL;
|
||||
|
||||
|
||||
LOCAL void iec61850s_sg_change_callback(const char *zone_saddr, int new_act_sg)
|
||||
{
|
||||
printf("[THREAD_TRACE] iec61850s_sg_change_callback ENTER zone_saddr=%s new_act_sg=%d tid=%lu\n", zone_saddr, new_act_sg, pthread_self());
|
||||
LOG_I("SG changed to %d, zone_saddr %s", new_act_sg, zone_saddr);
|
||||
|
||||
for(auto &setting : g_vec_setting)
|
||||
{
|
||||
if(strcmp(setting.base.saddr, zone_saddr) == 0)
|
||||
{
|
||||
uint8_t temp[128] = {0};
|
||||
stru_signal_ctrl ctrl = {};
|
||||
ctrl.step = SIGNAL_CTRL_STEP::READY;
|
||||
ctrl.type = setting.base.ctrl_model;
|
||||
ctrl.data_type = setting.base.type;
|
||||
ctrl.p_data = temp;
|
||||
|
||||
if(setting.base.ctrl_model == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_ao_set_val(setting.base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, (void *)&new_act_sg, MODULE_IEC61850S))
|
||||
{
|
||||
LOG_E("dc_signal_ao_set_val SELECT failed, saddr: %s", setting.base.saddr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(0 != dc_signal_ao_set_val(setting.base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, (void *)&new_act_sg, MODULE_IEC61850S))
|
||||
{
|
||||
LOG_E("dc_signal_ao_set_val DIRECT failed, saddr: %s", setting.base.saddr);
|
||||
return;
|
||||
}
|
||||
|
||||
// /* 同步更新 MMS 服务端模型,使 IEDScout 等客户端能读到最新值 */
|
||||
// std::string val_str = dc_get_signal_val(p_val, setting.base.type);
|
||||
// if(g_mms_s_value_update_cb != NULL)
|
||||
// {
|
||||
// g_mms_s_value_update_cb(zone_saddr, val_str.c_str());
|
||||
// }
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LOCAL void iec61850s_st_mx_change_callback(std::string saddr, uint8_t data_type, void *p_data, void *p_last_data)
|
||||
{
|
||||
if(NULL == p_data || NULL == p_last_data)
|
||||
|
|
@ -66,7 +110,7 @@ LOCAL int iec61850s_st_signals_init(std::vector<stru_mms_s_signal_base> &vec_st)
|
|||
st.base = it;
|
||||
std::string desc = "";
|
||||
|
||||
if(0 != dc_signal_out_link_with_callback(st.base.saddr, &st.p_data, iec61850s_st_mx_change_callback))
|
||||
if(0 != dc_signal_out_link_with_callback(st.base.saddr, &st.p_data, iec61850s_st_mx_change_callback, MODULE_IEC61850S))
|
||||
{
|
||||
LOG_E("dc_signal_out_link_with_callback failed");
|
||||
return -1;
|
||||
|
|
@ -91,7 +135,7 @@ LOCAL int iec61850s_mx_signals_init(std::vector<stru_mms_s_signal_base> &vec_mx)
|
|||
mx.base = it;
|
||||
std::string desc = "";
|
||||
|
||||
if(0 != dc_signal_out_link_with_callback(mx.base.saddr, &mx.p_data, iec61850s_st_mx_change_callback))
|
||||
if(0 != dc_signal_out_link_with_callback(mx.base.saddr, &mx.p_data, iec61850s_st_mx_change_callback, MODULE_IEC61850S))
|
||||
{
|
||||
LOG_E("dc_signal_out_link_with_callback failed");
|
||||
return -1;
|
||||
|
|
@ -127,7 +171,7 @@ LOCAL void iec61850s_control_callback(stru_mms_s_control *p_control, uint8_t sta
|
|||
if(base.ctrl_model == CONTROL_MODEL_DIRECT_NORMAL || base.ctrl_model == CONTROL_MODEL_DIRECT_ENHANCED)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, &state))
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, &state, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_yk_set_status failed");
|
||||
return;
|
||||
|
|
@ -136,13 +180,13 @@ LOCAL void iec61850s_control_callback(stru_mms_s_control *p_control, uint8_t sta
|
|||
else if(base.ctrl_model == CONTROL_MODEL_SBO_NORMAL || base.ctrl_model == CONTROL_MODEL_SBO_ENHANCED)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::SBO_NORMAL;
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, &state))
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, &state, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_yk_set_status failed");
|
||||
return;
|
||||
}
|
||||
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, &state))
|
||||
if(0 != dc_signal_yk_set_status(base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, &state, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_yk_set_status failed");
|
||||
return;
|
||||
|
|
@ -184,6 +228,22 @@ LOCAL int iec61850s_control_signals_init(std::vector<stru_mms_s_signal_base> &ve
|
|||
return 0;
|
||||
}
|
||||
|
||||
LOCAL void iec61850s_ao_change_callback(std::string saddr, SIGNAL_CTRL_STEP step, uint8_t data_type, uint8_t setting_zone, void *p_data)
|
||||
{
|
||||
if(NULL == p_data)
|
||||
{
|
||||
LOG_E("p_data is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
LOG_I("ao change callback called saddr: %s, step: %i, data_type: %i, setting_zone: %i", saddr.c_str(), step, data_type, setting_zone);
|
||||
std::string val = dc_get_signal_val(p_data, data_type);
|
||||
if(g_mms_s_value_update_cb != NULL && !val.empty())
|
||||
{
|
||||
g_mms_s_value_update_cb(saddr.c_str(), val.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
LOCAL void iec61850s_setting_callback(stru_mms_s_setting *p_setting, const char *p_data)
|
||||
{
|
||||
if(NULL == p_setting || NULL == p_data)
|
||||
|
|
@ -208,7 +268,7 @@ LOCAL void iec61850s_setting_callback(stru_mms_s_setting *p_setting, const char
|
|||
if(p_setting->base.ctrl_model == SIGNAL_CTRL_TYPE::DIRECT_NORMAL)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, temp_val))
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_ao_set_val failed");
|
||||
return;
|
||||
|
|
@ -217,13 +277,13 @@ LOCAL void iec61850s_setting_callback(stru_mms_s_setting *p_setting, const char
|
|||
else if(p_setting->base.ctrl_model == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::SBO_NORMAL;
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, temp_val))
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_ao_set_val select failed");
|
||||
return;
|
||||
}
|
||||
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, temp_val))
|
||||
if(0 != dc_signal_ao_set_val(p_setting->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_ao_set_val direct failed");
|
||||
return;
|
||||
|
|
@ -243,7 +303,13 @@ LOCAL int iec61850s_setting_signals_init(std::vector<stru_mms_s_signal_base> &ve
|
|||
|
||||
std::string desc = "";
|
||||
|
||||
if(0 != dc_get_ao_signal_info(setting.base.saddr, desc, setting.base.type, nullptr, setting.base.ctrl_model, &setting.p_data, nullptr))
|
||||
if(0 != dc_signal_ao_link_with_callback(setting.base.saddr, &setting.p_data, iec61850s_ao_change_callback, MODULE_IEC61850S))
|
||||
{
|
||||
LOG_E("dc_signal_ao_link_with_callback failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(0 != dc_get_ao_signal_info(setting.base.saddr, desc, setting.base.type, nullptr, setting.base.ctrl_model, NULL, NULL))
|
||||
{
|
||||
MY_LOG_E("dc_get_ao_signal_info failed, saddr: %s, desc: %s", setting.base.saddr, desc.c_str());
|
||||
return -1;
|
||||
|
|
@ -284,7 +350,7 @@ LOCAL void iec61850s_param_callback(stru_mms_s_param *p_param, const char *p_dat
|
|||
if(p_param->base.ctrl_model == SIGNAL_CTRL_TYPE::DIRECT_NORMAL)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::DIRECT_NORMAL;
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, setting_zone, temp_val))
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, setting_zone, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_param_set_val failed");
|
||||
return;
|
||||
|
|
@ -293,13 +359,13 @@ LOCAL void iec61850s_param_callback(stru_mms_s_param *p_param, const char *p_dat
|
|||
else if(p_param->base.ctrl_model == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
ctrl.type = SIGNAL_CTRL_TYPE::SBO_NORMAL;
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, setting_zone, temp_val))
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::SELECT, ctrl, setting_zone, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_param_set_val select failed");
|
||||
return;
|
||||
}
|
||||
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, setting_zone, temp_val))
|
||||
if(0 != dc_signal_param_set_val(p_param->base.saddr, SIGNAL_CTRL_STEP::DIRECT, ctrl, setting_zone, temp_val, MODULE_IEC61850S))
|
||||
{
|
||||
MY_LOG_E("dc_signal_param_set_val direct failed");
|
||||
return;
|
||||
|
|
@ -439,6 +505,11 @@ int app_iec61850s_init2(void *arg)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if(!g_vec_setting.empty() && strlen(g_vec_setting[0].base.saddr) > 0)
|
||||
{
|
||||
mms_s_bind_param_zone_signal(g_vec_setting[0].base.saddr, iec61850s_sg_change_callback);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#include "mySystem.h"
|
||||
#include "myDatacenter.h"
|
||||
|
||||
#define MODULE_SELF_PTL "self_ptl"
|
||||
|
||||
#define IEC_START 0x68
|
||||
#define IEC_TAIL 0x16
|
||||
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ void ao_pop_out(stru_icp67 *p_icp67, uint16_t addr, uint8_t type, uint8_t len, u
|
|||
// dc_signal_param_set_val(p_ao_data->p_param->base.saddr, SIGNAL_CTRL_STEP::SELECT, type, p_data);
|
||||
// dc_signal_param_set_val(p_ao_data->p_param->base.saddr, SIGNAL_CTRL_STEP::DIRECT, type, p_data);
|
||||
|
||||
if(0 != dc_signal_ao_set_val_without_check(p_ao_data->p_param->base.saddr, type, (void *)p_data))
|
||||
if(0 != dc_signal_ao_set_val_without_check(p_ao_data->p_param->base.saddr, type, (void *)p_data, MODULE_SELF_PTL))
|
||||
{
|
||||
LOG_E("dc_signal_ao_set_val_without_check failed,saddr %s, desc %s, inf %d, type %d",
|
||||
p_ao_data->p_param->base.saddr.c_str(), p_ao_data->p_param->base.desc.c_str(), p_ao_data->p_param->base.inf, type);
|
||||
|
|
@ -472,7 +472,7 @@ void mx_trans(stru_icp67 *p_icp67, uint16_t info_addr, float p_data)
|
|||
{
|
||||
// *(float *)(p_app_cfg_data->mx_vec[info_addr].p_data) = p_data;
|
||||
|
||||
dc_set_out_signal_val(p_app_cfg_data->mx_vec[info_addr].p_base->saddr, &p_data);
|
||||
dc_set_out_signal_val(p_app_cfg_data->mx_vec[info_addr].p_base->saddr, &p_data, MODULE_SELF_PTL);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -493,7 +493,7 @@ void st_trans(stru_icp67 *p_icp67, uint16_t info_addr, uint8_t p_data)
|
|||
|
||||
// *(uint8_t *)(p_app_cfg_data->st_vec[info_addr].p_data) = p_data;
|
||||
|
||||
dc_set_out_signal_val(p_app_cfg_data->st_vec[info_addr].p_base->saddr, &p_data);
|
||||
dc_set_out_signal_val(p_app_cfg_data->st_vec[info_addr].p_base->saddr, &p_data, MODULE_SELF_PTL);
|
||||
|
||||
// if(*(uint8_t *)(p_app_cfg_data->st_vec[info_addr].p_last_data) != p_data)
|
||||
// {
|
||||
|
|
@ -517,7 +517,7 @@ void dd_trans(stru_icp67 *p_icp67, uint16_t info_addr, float p_data)
|
|||
if(info_addr < p_app_cfg_data->dd_vec.size())
|
||||
{
|
||||
|
||||
dc_set_out_signal_val(p_app_cfg_data->dd_vec[info_addr].p_base->saddr, &p_data);
|
||||
dc_set_out_signal_val(p_app_cfg_data->dd_vec[info_addr].p_base->saddr, &p_data, MODULE_SELF_PTL);
|
||||
}
|
||||
LOG_I("dd_trans: info_addr %d, p_data %f", info_addr, p_data);
|
||||
}
|
||||
|
|
@ -644,7 +644,7 @@ void mx_change(stru_icp67 *p_icp67, stru_mx_info *p_data)
|
|||
uint16_t addr = p_data->addr - YC_START_PORT;
|
||||
if(addr < p_app_cfg_data->mx_vec.size())
|
||||
{
|
||||
dc_set_out_signal_val(p_app_cfg_data->mx_vec[addr].p_base->saddr, &p_data->data);
|
||||
dc_set_out_signal_val(p_app_cfg_data->mx_vec[addr].p_base->saddr, &p_data->data, MODULE_SELF_PTL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -864,7 +864,7 @@ int self_ptl_do_signal_out(stru_app *p_app)
|
|||
p = &p_app_cfg_data->co_vec.at(i);
|
||||
if(p && p->p_base)
|
||||
{
|
||||
ret |= dc_signal_yk(p->p_base->saddr, p->p_base->desc, DATA_TYPE_U8, SIGNAL_CTRL_TYPE::SBO_NORMAL, p->p_data, self_ptl_signal_change_callback);
|
||||
ret |= dc_signal_yk(p->p_base->saddr, p->p_base->desc, DATA_TYPE_U8, SIGNAL_CTRL_TYPE::SBO_NORMAL, p->p_data, self_ptl_signal_change_callback, MODULE_SELF_PTL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -892,7 +892,7 @@ int self_ptl_do_signal_out(stru_app *p_app)
|
|||
stru_self_ptl_cfg_param_data *p_ao = &p_app_cfg_data->ao_vec.at(i);
|
||||
if(p_ao && p_ao->p_param)
|
||||
{
|
||||
ret |= dc_signal_ao(p_ao->p_param->base.saddr, p_ao->p_param->base.desc, p_ao->p_param->type, SIGNAL_CTRL_TYPE::SBO_NORMAL, p_ao->vec_p_data[0], p_ao->vec_p_default_data[0], self_ptl_signal_change_callback);
|
||||
ret |= dc_signal_ao(p_ao->p_param->base.saddr, p_ao->p_param->base.desc, p_ao->p_param->type, SIGNAL_CTRL_TYPE::SBO_NORMAL, p_ao->vec_p_data[0], p_ao->vec_p_default_data[0], self_ptl_signal_change_callback, MODULE_SELF_PTL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -907,7 +907,7 @@ int self_ptl_do_signal_out(stru_app *p_app)
|
|||
if(p_param && p_param->p_param)
|
||||
{
|
||||
ret |= dc_signal_param(p_param->p_param->base.saddr, p_param->p_param->base.desc, p_param->p_param->type,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL, p_param->vec_p_data.data(), p_param->vec_p_default_data.data(), p_param->p_param->num, self_ptl_signal_change_callback);
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL, p_param->vec_p_data.data(), p_param->vec_p_default_data.data(), p_param->p_param->num, self_ptl_signal_change_callback, MODULE_SELF_PTL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include "myBase.h"
|
||||
|
||||
#define MODULE_WEB_SERVER "web_server"
|
||||
|
||||
struct mg_connection;
|
||||
|
||||
void ws_recv(struct mg_connection *c, const char *p_rx, uint16_t rx_len);
|
||||
|
|
|
|||
|
|
@ -345,7 +345,7 @@ LOCAL void set_out_signal_data(stru_ws_session &s, const std::string& saddr, con
|
|||
{
|
||||
dc_set_signal_val_from_str(data, p_signal->data_type, val);
|
||||
|
||||
if(0 != dc_set_out_signal_val(saddr, (void *)data))
|
||||
if(0 != dc_set_out_signal_val(saddr, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_set_signal_val failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -372,7 +372,7 @@ LOCAL void set_yk_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
|
||||
if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::DIRECT_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_yk_set_status direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -383,7 +383,7 @@ LOCAL void set_yk_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
}
|
||||
else if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_yk_set_status select failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -391,7 +391,7 @@ LOCAL void set_yk_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
|
||||
LOG_I("saddr %s, select value %s success !!!", saddr.c_str(), val.c_str());
|
||||
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_yk_set_status(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_yk_set_status direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -423,7 +423,7 @@ LOCAL void set_ao_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
|
||||
if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::DIRECT_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_ao_set_val direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -435,7 +435,7 @@ LOCAL void set_ao_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
else if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_ao_set_val select failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -443,7 +443,7 @@ LOCAL void set_ao_signal_data(stru_ws_session &s, const std::string& saddr, cons
|
|||
|
||||
LOG_I("saddr %s, select, value %s success !!!", saddr.c_str(), val.c_str());
|
||||
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data))
|
||||
if(0 != dc_signal_ao_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_ao_set_val direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -474,7 +474,7 @@ LOCAL void set_param_signal_data(stru_ws_session &s, const std::string& saddr, c
|
|||
|
||||
if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::DIRECT_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, setting_zone, (void *)data))
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, setting_zone, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_param_set_val direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -485,7 +485,7 @@ LOCAL void set_param_signal_data(stru_ws_session &s, const std::string& saddr, c
|
|||
}
|
||||
else if(p_signal->ctrl_type == SIGNAL_CTRL_TYPE::SBO_NORMAL)
|
||||
{
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, setting_zone, (void *)data))
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::SELECT, *p_signal->p_ctrl, setting_zone, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_param_set_val select failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
@ -493,7 +493,7 @@ LOCAL void set_param_signal_data(stru_ws_session &s, const std::string& saddr, c
|
|||
|
||||
LOG_I("saddr %s, select, value %s success !!!", saddr.c_str(), val.c_str());
|
||||
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, setting_zone, (void *)data))
|
||||
if(0 != dc_signal_param_set_val(saddr, SIGNAL_CTRL_STEP::DIRECT, *p_signal->p_ctrl, setting_zone, (void *)data, MODULE_WEB_SERVER))
|
||||
{
|
||||
LOG_E("set_signal_data: dc_signal_param_set_val direct failed, saddr = %s, val = %s", saddr.c_str(), val.c_str());
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in New Issue