parent
3f6163defb
commit
8b3b94aa68
|
|
@ -253,7 +253,7 @@ typedef struct
|
|||
{
|
||||
stru_self_ptl_cfg_base base;
|
||||
uint8_t type;
|
||||
uint8_t dc_type;
|
||||
// uint8_t dc_type;
|
||||
uint8_t num;
|
||||
std::string unit;
|
||||
std::string min;
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ static const char *KEY_LDEV = "LDev";
|
|||
static const char *KEY_LNODE = "LNode";
|
||||
static const char *KEY_DONAME = "DoName";
|
||||
static const char *KEY_FC = "fc";
|
||||
static const char *KEY_MIN_VAL = "minVal";
|
||||
static const char *KEY_MAX_VAL = "maxVal";
|
||||
static const char *KEY_STEP_VAL = "stepVal";
|
||||
static const char *KEY_MIN_VAL = "min";
|
||||
static const char *KEY_MAX_VAL = "max";
|
||||
static const char *KEY_STEP_VAL = "step";
|
||||
static const char *KEY_UNIT = "unit";
|
||||
|
||||
static const char *KEY_VAL = "val";
|
||||
static const char *KEY_VAL = "value";
|
||||
static const char *KEY_DEFAULT_VAL = "default";
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ int parse_ao(tinyxml2::XMLElement *root)
|
|||
continue;
|
||||
}
|
||||
const char *type = signal_ele->Attribute(attr_type);
|
||||
const char *dc_type = signal_ele->Attribute(attr_dc_type);
|
||||
// const char *dc_type = signal_ele->Attribute(attr_dc_type);
|
||||
const char *unit = signal_ele->Attribute(attr_unit);
|
||||
const char *min = signal_ele->Attribute(attr_min);
|
||||
const char *max = signal_ele->Attribute(attr_max);
|
||||
|
|
@ -194,7 +194,7 @@ int parse_ao(tinyxml2::XMLElement *root)
|
|||
cfg_ao.base.desc = desc == nullptr ? "" : desc;
|
||||
cfg_ao.base.inf = inf;
|
||||
cfg_ao.type = dc_get_data_type_id_by_str(type == nullptr ? "" : type);
|
||||
cfg_ao.dc_type = dc_get_data_type_id_by_str(dc_type == nullptr ? "" : dc_type);
|
||||
// cfg_ao.dc_type = dc_get_data_type_id_by_str(dc_type == nullptr ? "" : dc_type);
|
||||
cfg_ao.unit = unit == nullptr ? "" : unit;
|
||||
cfg_ao.min = min == nullptr ? "" : min;
|
||||
cfg_ao.max = max == nullptr ? "" : max;
|
||||
|
|
@ -206,16 +206,9 @@ int parse_ao(tinyxml2::XMLElement *root)
|
|||
|
||||
g_self_ptl_cfg.ao_vec.push_back(cfg_ao);
|
||||
|
||||
if(inf == 0 && cfg_ao.type == DATA_TYPE_C64)
|
||||
{
|
||||
MY_LOG_I("saddr %s, desc %s", cfg_ao.base.saddr.c_str(), cfg_ao.base.desc.c_str());
|
||||
}
|
||||
|
||||
signal_ele = signal_ele->NextSiblingElement(ele_Signal);
|
||||
}
|
||||
|
||||
MY_LOG_I("ao signals: %d", (int)g_self_ptl_cfg.ao_vec.size());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +267,7 @@ int parse_param(tinyxml2::XMLElement *root)
|
|||
continue;
|
||||
}
|
||||
const char *type = signal_ele->Attribute(attr_type);
|
||||
const char *dc_type = signal_ele->Attribute(attr_dc_type);
|
||||
// const char *dc_type = signal_ele->Attribute(attr_dc_type);
|
||||
const char *unit = signal_ele->Attribute(attr_unit);
|
||||
const char *min = signal_ele->Attribute(attr_min);
|
||||
const char *max = signal_ele->Attribute(attr_max);
|
||||
|
|
@ -285,7 +278,7 @@ int parse_param(tinyxml2::XMLElement *root)
|
|||
cfg_param.base.desc = desc != nullptr ? desc : "";
|
||||
cfg_param.base.inf = inf;
|
||||
cfg_param.type = dc_get_data_type_id_by_str(type != nullptr ? type : "");
|
||||
cfg_param.dc_type = dc_get_data_type_id_by_str(dc_type != nullptr ? dc_type : "");
|
||||
// cfg_param.dc_type = dc_get_data_type_id_by_str(dc_type != nullptr ? dc_type : "");
|
||||
cfg_param.num = num != nullptr ? atoi(num) : 0;
|
||||
cfg_param.unit = unit != nullptr ? unit : "";
|
||||
cfg_param.min = min != nullptr ? min : "";
|
||||
|
|
|
|||
|
|
@ -28,23 +28,6 @@ typedef struct stru_signal
|
|||
}stru_signal;
|
||||
|
||||
|
||||
// 参数分组信息(用于XML序列化)
|
||||
typedef struct
|
||||
{
|
||||
std::string saddr;
|
||||
std::string desc;
|
||||
uint8_t data_type;
|
||||
int num;
|
||||
float min, max, step;
|
||||
std::string unit;
|
||||
|
||||
std::vector<std::string> val;
|
||||
std::vector<std::string> default_val;
|
||||
} dc_param_group_info;
|
||||
|
||||
void dc_param_group_add(const dc_param_group_info &group);
|
||||
std::vector<dc_param_group_info> dc_param_group_get_all();
|
||||
void dc_param_group_clear();
|
||||
|
||||
void dc_set_signal_val_from_str(void *p_data, uint8_t data_type, const std::string &str);
|
||||
bool dc_get_param_cfg_change();
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@ void dc_param_cfg_parse()
|
|||
return;
|
||||
}
|
||||
|
||||
dc_param_group_clear();
|
||||
|
||||
XMLElement *root = doc.RootElement();
|
||||
if (nullptr == root)
|
||||
{
|
||||
|
|
@ -49,19 +47,6 @@ void dc_param_cfg_parse()
|
|||
float step = sig->FloatAttribute("step", 0.0f);
|
||||
const char *unit = sig->Attribute("unit");
|
||||
|
||||
dc_param_group_info group;
|
||||
group.saddr = std::string(saddr);
|
||||
group.desc = std::string(desc);
|
||||
group.data_type = data_type;
|
||||
group.min = min;
|
||||
group.max = max;
|
||||
group.step = step;
|
||||
group.unit = unit ? std::string(unit) : std::string();
|
||||
group.num = -1;
|
||||
|
||||
std::vector<void *> vec_p_data;
|
||||
std::vector<void *> vec_p_default_data;
|
||||
|
||||
// Ao 段:从 Signal 属性读取单值
|
||||
const char *val = sig->Attribute("value");
|
||||
const char *default_val = sig->Attribute("default");
|
||||
|
|
@ -73,7 +58,6 @@ void dc_param_cfg_parse()
|
|||
dc_set_signal_val_from_str(p_data, data_type, std::string(val));
|
||||
else if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_data, data_type, std::string(default_val));
|
||||
vec_p_data.push_back(p_data);
|
||||
}
|
||||
|
||||
void *p_default_data = dc_create_data_ptr_by_type(data_type);
|
||||
|
|
@ -81,23 +65,20 @@ void dc_param_cfg_parse()
|
|||
{
|
||||
if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_default_data, data_type, std::string(default_val));
|
||||
vec_p_default_data.push_back(p_default_data);
|
||||
}
|
||||
|
||||
if (!vec_p_data.empty())
|
||||
if (p_data && p_default_data)
|
||||
{
|
||||
stru_signal_param param;
|
||||
param.min = group.min;
|
||||
param.max = group.max;
|
||||
param.step = group.step;
|
||||
param.unit = group.unit;
|
||||
param.min = min;
|
||||
param.max = max;
|
||||
param.step = step;
|
||||
param.unit = unit ? std::string(unit) : std::string();
|
||||
|
||||
dc_signal_param(group.saddr, group.desc, group.data_type, param,
|
||||
dc_signal_ao(saddr, desc, data_type, param,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL,
|
||||
vec_p_data, vec_p_default_data, nullptr);
|
||||
p_data, p_default_data, nullptr);
|
||||
}
|
||||
|
||||
dc_param_group_add(group);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -129,22 +110,12 @@ void dc_param_cfg_parse()
|
|||
float step = sig->FloatAttribute("step", 0.0f);
|
||||
const char *unit = sig->Attribute("unit");
|
||||
|
||||
dc_param_group_info group;
|
||||
group.saddr = std::string(saddr);
|
||||
group.desc = std::string(desc);
|
||||
group.data_type = data_type;
|
||||
group.min = min;
|
||||
group.max = max;
|
||||
group.step = step;
|
||||
group.unit = unit ? std::string(unit) : std::string();
|
||||
|
||||
std::vector<void *> vec_p_data;
|
||||
std::vector<void *> vec_p_default_data;
|
||||
|
||||
int num = sig->IntAttribute("num", -1);
|
||||
if (num >= 1)
|
||||
{
|
||||
int item_count = 0;
|
||||
for (XMLElement *item = sig->FirstChildElement("Item"); item != nullptr;
|
||||
item = item->NextSiblingElement("Item"))
|
||||
{
|
||||
|
|
@ -168,144 +139,28 @@ void dc_param_cfg_parse()
|
|||
dc_set_signal_val_from_str(p_default_data, data_type, std::string(default_val));
|
||||
vec_p_default_data.push_back(p_default_data);
|
||||
}
|
||||
|
||||
item_count++;
|
||||
}
|
||||
group.num = item_count;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
group.num = -1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!vec_p_data.empty())
|
||||
{
|
||||
stru_signal_param param;
|
||||
param.min = group.min;
|
||||
param.max = group.max;
|
||||
param.step = group.step;
|
||||
param.unit = group.unit;
|
||||
param.min = min;
|
||||
param.max = max;
|
||||
param.step = step;
|
||||
param.unit = unit ? std::string(unit) : std::string();
|
||||
|
||||
dc_signal_param(group.saddr, group.desc, group.data_type, param,
|
||||
dc_signal_param(saddr, desc, data_type, param,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL,
|
||||
vec_p_data, vec_p_default_data, nullptr);
|
||||
}
|
||||
|
||||
dc_param_group_add(group);
|
||||
}
|
||||
}
|
||||
|
||||
// 兼容旧格式:Signal 直接作为 root 子元素(无 Ao/Param 分组)
|
||||
if (!ao_elem && !param_elem)
|
||||
{
|
||||
for (XMLElement *sig = root->FirstChildElement("Signal"); sig != nullptr;
|
||||
sig = sig->NextSiblingElement("Signal"))
|
||||
{
|
||||
const char *saddr = sig->Attribute("saddr");
|
||||
const char *desc = sig->Attribute("desc");
|
||||
const char *type_str = sig->Attribute("type");
|
||||
if (nullptr == saddr || nullptr == desc || nullptr == type_str)
|
||||
{
|
||||
MY_LOG_E("Signal missing required attributes, skipping");
|
||||
continue;
|
||||
}
|
||||
|
||||
uint8_t data_type = dc_get_data_type_id_by_str(type_str);
|
||||
if (0 == data_type)
|
||||
{
|
||||
MY_LOG_E("unknown data type %s for saddr %s", type_str, saddr);
|
||||
continue;
|
||||
}
|
||||
|
||||
float min = sig->FloatAttribute("min", 0.0f);
|
||||
float max = sig->FloatAttribute("max", 0.0f);
|
||||
float step = sig->FloatAttribute("step", 0.0f);
|
||||
const char *unit = sig->Attribute("unit");
|
||||
|
||||
dc_param_group_info group;
|
||||
group.saddr = std::string(saddr);
|
||||
group.desc = std::string(desc);
|
||||
group.data_type = data_type;
|
||||
group.min = min;
|
||||
group.max = max;
|
||||
group.step = step;
|
||||
group.unit = unit ? std::string(unit) : std::string();
|
||||
|
||||
std::vector<void *> vec_p_data;
|
||||
std::vector<void *> vec_p_default_data;
|
||||
|
||||
int num = sig->IntAttribute("num", -1);
|
||||
if (num >= 1)
|
||||
{
|
||||
int item_count = 0;
|
||||
for (XMLElement *item = sig->FirstChildElement("Item"); item != nullptr;
|
||||
item = item->NextSiblingElement("Item"))
|
||||
{
|
||||
const char *val = item->Attribute("value");
|
||||
const char *default_val = item->Attribute("default");
|
||||
|
||||
void *p_data = dc_create_data_ptr_by_type(data_type);
|
||||
if (p_data)
|
||||
{
|
||||
if (val && strlen(val) > 0)
|
||||
dc_set_signal_val_from_str(p_data, data_type, std::string(val));
|
||||
else if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_data, data_type, std::string(default_val));
|
||||
vec_p_data.push_back(p_data);
|
||||
}
|
||||
|
||||
void *p_default_data = dc_create_data_ptr_by_type(data_type);
|
||||
if (p_default_data)
|
||||
{
|
||||
if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_default_data, data_type, std::string(default_val));
|
||||
vec_p_default_data.push_back(p_default_data);
|
||||
}
|
||||
|
||||
item_count++;
|
||||
}
|
||||
group.num = item_count;
|
||||
}
|
||||
else
|
||||
{
|
||||
group.num = -1;
|
||||
|
||||
const char *val = sig->Attribute("value");
|
||||
const char *default_val = sig->Attribute("default");
|
||||
|
||||
void *p_data = dc_create_data_ptr_by_type(data_type);
|
||||
if (p_data)
|
||||
{
|
||||
if (val && strlen(val) > 0)
|
||||
dc_set_signal_val_from_str(p_data, data_type, std::string(val));
|
||||
else if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_data, data_type, std::string(default_val));
|
||||
vec_p_data.push_back(p_data);
|
||||
}
|
||||
|
||||
void *p_default_data = dc_create_data_ptr_by_type(data_type);
|
||||
if (p_default_data)
|
||||
{
|
||||
if (default_val && strlen(default_val) > 0)
|
||||
dc_set_signal_val_from_str(p_default_data, data_type, std::string(default_val));
|
||||
vec_p_default_data.push_back(p_default_data);
|
||||
}
|
||||
}
|
||||
|
||||
if (!vec_p_data.empty())
|
||||
{
|
||||
stru_signal_param param;
|
||||
param.min = group.min;
|
||||
param.max = group.max;
|
||||
param.step = group.step;
|
||||
param.unit = group.unit;
|
||||
|
||||
dc_signal_param(group.saddr, group.desc, group.data_type, param,
|
||||
SIGNAL_CTRL_TYPE::SBO_NORMAL,
|
||||
vec_p_data, vec_p_default_data, nullptr);
|
||||
}
|
||||
|
||||
dc_param_group_add(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,8 +64,6 @@ static stru_datacenter g_datacenter;
|
|||
LOCAL bool g_param_cfg_change = false;
|
||||
LOCAL std::mutex g_param_cfg_change_mutex;
|
||||
|
||||
LOCAL std::vector<dc_param_group_info> g_param_groups;
|
||||
LOCAL std::mutex g_param_groups_mutex;
|
||||
|
||||
|
||||
LOCAL int dc_data_compare(uint8_t data_type, void *p_data, void *p_data2);
|
||||
|
|
@ -264,84 +262,84 @@ void dc_signal_out_change_check()
|
|||
}
|
||||
}
|
||||
|
||||
LOCAL void dc_signal_ctrl_data_create(stru_signal_ctrl &ctrl)
|
||||
{
|
||||
switch(ctrl.data_type)
|
||||
{
|
||||
case DATA_TYPE_B:
|
||||
case DATA_TYPE_U8:
|
||||
ctrl.p_data = new uint8_t;
|
||||
*(uint8_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_S8:
|
||||
ctrl.p_data = new int8_t;
|
||||
*(int8_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_S16:
|
||||
ctrl.p_data = new int16_t;
|
||||
*(int16_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_U16:
|
||||
ctrl.p_data = new uint16_t;
|
||||
*(uint16_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_S32:
|
||||
ctrl.p_data = new int32_t;
|
||||
*(int32_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_U32:
|
||||
ctrl.p_data = new uint32_t;
|
||||
*(uint32_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_L64:
|
||||
ctrl.p_data = new int64_t;
|
||||
*(int64_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_UL64:
|
||||
ctrl.p_data = new uint64_t;
|
||||
*(uint64_t *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_F32:
|
||||
ctrl.p_data = new float;
|
||||
*(float *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_D64:
|
||||
ctrl.p_data = new double;
|
||||
*(double *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_IP:
|
||||
ctrl.p_data = new char[4];
|
||||
memset(ctrl.p_data, 0, 4);
|
||||
break;
|
||||
case DATA_TYPE_MAC:
|
||||
ctrl.p_data = new char[8];
|
||||
memset(ctrl.p_data, 0, 8);
|
||||
break;
|
||||
case DATA_TYPE_C1:
|
||||
ctrl.p_data = new char;
|
||||
*(char *)ctrl.p_data = 0;
|
||||
break;
|
||||
case DATA_TYPE_C8:
|
||||
ctrl.p_data = new char[8];
|
||||
memset(ctrl.p_data, 0, 8);
|
||||
break;
|
||||
case DATA_TYPE_C32:
|
||||
ctrl.p_data = new char[32];
|
||||
memset(ctrl.p_data, 0, 32);
|
||||
break;
|
||||
case DATA_TYPE_C64:
|
||||
ctrl.p_data = new char[64];
|
||||
memset(ctrl.p_data, 0, 64);
|
||||
break;
|
||||
case DATA_TYPE_C128:
|
||||
ctrl.p_data = new char[128];
|
||||
memset(ctrl.p_data, 0, 128);
|
||||
break;
|
||||
default:
|
||||
LOG_E("unsupported data type %d", ctrl.data_type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// LOCAL void dc_signal_ctrl_data_create(stru_signal_ctrl &ctrl)
|
||||
// {
|
||||
// switch(ctrl.data_type)
|
||||
// {
|
||||
// case DATA_TYPE_B:
|
||||
// case DATA_TYPE_U8:
|
||||
// ctrl.p_data = new uint8_t;
|
||||
// *(uint8_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_S8:
|
||||
// ctrl.p_data = new int8_t;
|
||||
// *(int8_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_S16:
|
||||
// ctrl.p_data = new int16_t;
|
||||
// *(int16_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_U16:
|
||||
// ctrl.p_data = new uint16_t;
|
||||
// *(uint16_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_S32:
|
||||
// ctrl.p_data = new int32_t;
|
||||
// *(int32_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_U32:
|
||||
// ctrl.p_data = new uint32_t;
|
||||
// *(uint32_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_L64:
|
||||
// ctrl.p_data = new int64_t;
|
||||
// *(int64_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_UL64:
|
||||
// ctrl.p_data = new uint64_t;
|
||||
// *(uint64_t *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_F32:
|
||||
// ctrl.p_data = new float;
|
||||
// *(float *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_D64:
|
||||
// ctrl.p_data = new double;
|
||||
// *(double *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_IP:
|
||||
// ctrl.p_data = new char[4];
|
||||
// memset(ctrl.p_data, 0, 4);
|
||||
// break;
|
||||
// case DATA_TYPE_MAC:
|
||||
// ctrl.p_data = new char[8];
|
||||
// memset(ctrl.p_data, 0, 8);
|
||||
// break;
|
||||
// case DATA_TYPE_C1:
|
||||
// ctrl.p_data = new char;
|
||||
// *(char *)ctrl.p_data = 0;
|
||||
// break;
|
||||
// case DATA_TYPE_C8:
|
||||
// ctrl.p_data = new char[8];
|
||||
// memset(ctrl.p_data, 0, 8);
|
||||
// break;
|
||||
// case DATA_TYPE_C32:
|
||||
// ctrl.p_data = new char[32];
|
||||
// memset(ctrl.p_data, 0, 32);
|
||||
// break;
|
||||
// case DATA_TYPE_C64:
|
||||
// ctrl.p_data = new char[64];
|
||||
// memset(ctrl.p_data, 0, 64);
|
||||
// break;
|
||||
// case DATA_TYPE_C128:
|
||||
// ctrl.p_data = new char[128];
|
||||
// memset(ctrl.p_data, 0, 128);
|
||||
// break;
|
||||
// default:
|
||||
// LOG_E("unsupported data type %d", ctrl.data_type);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
LOCAL int dc_data_compare(uint8_t data_type, void *p_data, void *p_data2)
|
||||
{
|
||||
|
|
@ -351,6 +349,11 @@ LOCAL int dc_data_compare(uint8_t data_type, void *p_data, void *p_data2)
|
|||
return -1;
|
||||
}
|
||||
|
||||
float f1 = 0.0f;
|
||||
float f2 = 0.0f;
|
||||
double d1 = 0.0;
|
||||
double d2 = 0.0;
|
||||
|
||||
switch(data_type)
|
||||
{
|
||||
case DATA_TYPE_B:
|
||||
|
|
@ -371,12 +374,12 @@ LOCAL int dc_data_compare(uint8_t data_type, void *p_data, void *p_data2)
|
|||
case DATA_TYPE_UL64:
|
||||
return (*(uint64_t *)p_data == *(uint64_t *)p_data2) ? 0 : -1;
|
||||
case DATA_TYPE_F32:
|
||||
float f1 = *(float *)p_data;
|
||||
float f2 = *(float *)p_data2;
|
||||
f1 = *(float *)p_data;
|
||||
f2 = *(float *)p_data2;
|
||||
return f1 == f2 ? 0 : -1;
|
||||
case DATA_TYPE_D64:
|
||||
double d1 = *(double *)p_data;
|
||||
double d2 = *(double *)p_data2;
|
||||
d1 = *(double *)p_data;
|
||||
d2 = *(double *)p_data2;
|
||||
return d1 == d2 ? 0 : -1;
|
||||
case DATA_TYPE_C1:
|
||||
return (*(char *)p_data == *(char *)p_data2) ? 0 : -1;
|
||||
|
|
@ -386,6 +389,7 @@ LOCAL int dc_data_compare(uint8_t data_type, void *p_data, void *p_data2)
|
|||
case DATA_TYPE_C32:
|
||||
case DATA_TYPE_C64:
|
||||
case DATA_TYPE_C128:
|
||||
case DATA_TYPE_STR:
|
||||
return (0 == strcmp((char *)p_data, (char *)p_data2)) ? 0 : -1;
|
||||
default:
|
||||
LOG_E("unsupported data type %d", data_type);
|
||||
|
|
@ -429,10 +433,10 @@ LOCAL bool dc_signal_ao_add_check(stru_signal *p_signal, const std::string &desc
|
|||
change = true;
|
||||
}
|
||||
|
||||
if(0 != dc_data_compare(p_signal->data_type, p_data, p_signal->vec_p_data[0]))
|
||||
{
|
||||
change = true;
|
||||
}
|
||||
// if(0 != dc_data_compare(p_signal->data_type, p_data, p_signal->vec_p_data[0]))
|
||||
// {
|
||||
// change = true;
|
||||
// }
|
||||
|
||||
if(0 != dc_data_compare(p_signal->data_type, p_default_data, p_signal->vec_p_default_data[0]))
|
||||
{
|
||||
|
|
@ -470,13 +474,13 @@ LOCAL bool dc_signal_param_add_check(stru_signal *p_signal, const std::string &d
|
|||
change = true;
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < vec_p_default_data.size(); i++)
|
||||
{
|
||||
if(0 != dc_data_compare(p_signal->data_type, vec_p_default_data[i], p_signal->vec_p_default_data[i]))
|
||||
{
|
||||
change = true;
|
||||
}
|
||||
}
|
||||
// for(size_t i = 0; i < vec_p_default_data.size(); i++)
|
||||
// {
|
||||
// if(0 != dc_data_compare(p_signal->data_type, vec_p_default_data[i], p_signal->vec_p_default_data[i]))
|
||||
// {
|
||||
// change = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
for(size_t i = 0; i < vec_p_data.size(); i++)
|
||||
{
|
||||
|
|
@ -597,7 +601,8 @@ LOCAL int dc_check_ctrl_val_valid(const stru_signal_ctrl &ctrl, const void *p_da
|
|||
LOG_E("direct ctrl value %c not match selected value %c", *(char*)p_data, *(char*)ctrl.p_data);
|
||||
return -1;
|
||||
}
|
||||
}else if(ctrl.data_type == DATA_TYPE_C8 || ctrl.data_type == DATA_TYPE_C32 || ctrl.data_type == DATA_TYPE_C64 || ctrl.data_type == DATA_TYPE_C128)
|
||||
}
|
||||
else if(ctrl.data_type == DATA_TYPE_C8 || ctrl.data_type == DATA_TYPE_C32 || ctrl.data_type == DATA_TYPE_C64 || ctrl.data_type == DATA_TYPE_C128 || ctrl.data_type == DATA_TYPE_STR)
|
||||
{
|
||||
if(0 != strcmp((char *)ctrl.p_data, (char *)p_data))
|
||||
{
|
||||
|
|
@ -863,7 +868,8 @@ LOCAL int dc_check_val_valid(const stru_signal *p_signal, uint8_t setting_zone,
|
|||
p_signal->data_type == DATA_TYPE_C8 ||
|
||||
p_signal->data_type == DATA_TYPE_C32 ||
|
||||
p_signal->data_type == DATA_TYPE_C64 ||
|
||||
p_signal->data_type == DATA_TYPE_C128)
|
||||
p_signal->data_type == DATA_TYPE_C128 ||
|
||||
p_signal->data_type == DATA_TYPE_STR)
|
||||
{
|
||||
if(0 == strcmp((char *)current_p_data, (char *)p_data))
|
||||
{
|
||||
|
|
@ -1148,7 +1154,7 @@ int dc_signal_ao(const std::string &saddr, const std::string &desc, uint8_t data
|
|||
|
||||
XXH128_hash_t hash = XXH3_128bits(saddr.c_str(), saddr.length());
|
||||
stru_signal *p_signal = dc_find_signal(hash, g_datacenter.signal_ao);
|
||||
if(p_signal != nullptr)
|
||||
if(p_signal != nullptr && !p_signal->vec_p_data.empty() && !p_signal->vec_p_default_data.empty() && nullptr != p_signal->vec_p_data[0] && nullptr != p_signal->vec_p_default_data[0])
|
||||
{
|
||||
if(true == dc_signal_ao_add_check(p_signal, desc, data_type, param, ctrl_type, p_data, p_default_data))
|
||||
{
|
||||
|
|
@ -1269,6 +1275,8 @@ int dc_signal_ao_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, stru_s
|
|||
}
|
||||
}
|
||||
|
||||
dc_set_param_cfg_change(true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
|
|
@ -1304,6 +1312,7 @@ int dc_signal_ao_set_val_without_check(const std::string &saddr, uint8_t data_ty
|
|||
}
|
||||
|
||||
dc_set_signal_val(p_signal->vec_p_data[0], data_type, p_data);
|
||||
dc_set_param_cfg_change(true);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
|
|
@ -1348,7 +1357,17 @@ int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t d
|
|||
{
|
||||
// delete p_signal->vec_p_data[i];
|
||||
dc_delete_signal_data(p_signal->vec_p_data[i], data_type);
|
||||
p_signal->vec_p_data[i] = vec_p_data[i];
|
||||
dc_delete_signal_data(p_signal->vec_p_default_data[i], data_type);
|
||||
// p_signal->vec_p_data[i] = vec_p_data[i];
|
||||
}
|
||||
|
||||
p_signal->vec_p_data.clear();
|
||||
p_signal->vec_p_default_data.clear();
|
||||
|
||||
for(size_t i = 0; i < vec_p_data.size(); i++)
|
||||
{
|
||||
p_signal->vec_p_data.push_back(vec_p_data[i]);
|
||||
p_signal->vec_p_default_data.push_back(vec_p_default_data[i]);
|
||||
}
|
||||
|
||||
p_signal->change_cb_list.push_back(cb);
|
||||
|
|
@ -1373,6 +1392,7 @@ int dc_signal_param(const std::string &saddr, const std::string &desc, uint8_t d
|
|||
for(size_t i = 0; i < vec_p_data.size(); i++)
|
||||
{
|
||||
p_signal->vec_p_data.push_back(vec_p_data[i]);
|
||||
p_signal->vec_p_default_data.push_back(vec_p_default_data[i]);
|
||||
}
|
||||
|
||||
if(cb)
|
||||
|
|
@ -1462,6 +1482,8 @@ int dc_signal_param_set_val(const std::string &saddr, SIGNAL_CTRL_STEP step, str
|
|||
}
|
||||
}
|
||||
|
||||
dc_set_param_cfg_change(true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
|
|
@ -1497,6 +1519,7 @@ int dc_signal_param_set_val_without_check(const std::string &saddr, uint8_t data
|
|||
}
|
||||
|
||||
dc_set_signal_val(p_signal->vec_p_data[setting_zone], data_type, p_data);
|
||||
dc_set_param_cfg_change(true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1668,7 +1691,8 @@ LOCAL std::map<uint8_t, std::string> g_data_type_str = {
|
|||
{DATA_TYPE_C32, "char32"},
|
||||
{DATA_TYPE_C64, "char64"},
|
||||
{DATA_TYPE_C128, "char128"},
|
||||
{DATA_TYPE_C1, "char1"}
|
||||
{DATA_TYPE_C1, "char1"},
|
||||
{DATA_TYPE_STR, "str"}
|
||||
};
|
||||
|
||||
LOCAL std::map<uint8_t, uint8_t> g_data_type_len = {
|
||||
|
|
@ -1862,6 +1886,7 @@ LOCAL int dc_set_signal_val(void *p_data, uint8_t data_type, void *set_data)
|
|||
case DATA_TYPE_C32:
|
||||
case DATA_TYPE_C64:
|
||||
case DATA_TYPE_C128:
|
||||
case DATA_TYPE_STR:
|
||||
strncpy((char *)p_data, (char *)set_data, dc_get_data_type_len(data_type));
|
||||
break;
|
||||
case DATA_TYPE_C1:
|
||||
|
|
@ -1940,6 +1965,7 @@ void dc_set_signal_val_from_str(void *p_data, uint8_t data_type, const std::stri
|
|||
case DATA_TYPE_C32:
|
||||
case DATA_TYPE_C64:
|
||||
case DATA_TYPE_C128:
|
||||
case DATA_TYPE_STR:
|
||||
strncpy((char *)p_data, str.c_str(), dc_get_data_type_len(data_type));
|
||||
break;
|
||||
case DATA_TYPE_C1:
|
||||
|
|
@ -2117,24 +2143,6 @@ void dc_delete_signal_data(void *p_data, uint8_t data_type)
|
|||
|
||||
|
||||
|
||||
void dc_param_group_add(const dc_param_group_info &group)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(g_param_groups_mutex);
|
||||
g_param_groups.push_back(group);
|
||||
}
|
||||
|
||||
void dc_param_group_clear()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(g_param_groups_mutex);
|
||||
g_param_groups.clear();
|
||||
}
|
||||
|
||||
std::vector<dc_param_group_info> dc_param_group_get_all()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(g_param_groups_mutex);
|
||||
return g_param_groups;
|
||||
}
|
||||
|
||||
void dc_param_cfg_check()
|
||||
{
|
||||
if (false == dc_get_param_cfg_change()) return;
|
||||
|
|
@ -2144,73 +2152,59 @@ void dc_param_cfg_check()
|
|||
XMLDocument doc;
|
||||
doc.InsertEndChild(doc.NewDeclaration());
|
||||
|
||||
XMLElement *root = doc.NewElement("param");
|
||||
XMLElement *root = doc.NewElement("Root");
|
||||
doc.InsertEndChild(root);
|
||||
|
||||
XMLElement *ao_elem = doc.NewElement("Ao");
|
||||
XMLElement *param_elem = doc.NewElement("Param");
|
||||
|
||||
auto groups = dc_param_group_get_all();
|
||||
int ao_no = 0, param_no = 0;
|
||||
|
||||
for (auto &group : groups)
|
||||
XMLElement *ao_elem = doc.NewElement("Ao");
|
||||
|
||||
for(auto it = g_datacenter.signal_ao.map_signals.begin(); it != g_datacenter.signal_ao.map_signals.end(); it++)
|
||||
{
|
||||
stru_signal *p_ao = &it->second;
|
||||
|
||||
XMLElement *sig_elem = doc.NewElement("Signal");
|
||||
|
||||
std::string desc;
|
||||
uint8_t data_type;
|
||||
stru_signal_param param;
|
||||
uint8_t ctrl_type;
|
||||
std::vector<void *> vec_p_data;
|
||||
std::vector<void *> vec_p_default_data;
|
||||
|
||||
if (0 != dc_get_param_signal_info(group.saddr, desc, data_type, param, ctrl_type, vec_p_data, vec_p_default_data))
|
||||
continue;
|
||||
|
||||
if (group.num >= 1)
|
||||
{
|
||||
// Param 段:多值参数
|
||||
sig_elem->SetAttribute("no", param_no++);
|
||||
sig_elem->SetAttribute("saddr", group.saddr.c_str());
|
||||
sig_elem->SetAttribute("desc", group.desc.c_str());
|
||||
sig_elem->SetAttribute("type", dc_get_data_type_str_by_id(group.data_type).c_str());
|
||||
sig_elem->SetAttribute("min", group.min);
|
||||
sig_elem->SetAttribute("max", group.max);
|
||||
sig_elem->SetAttribute("step", group.step);
|
||||
sig_elem->SetAttribute("unit", group.unit.c_str());
|
||||
sig_elem->SetAttribute("num", group.num);
|
||||
|
||||
for (int i = 0; i < group.num && i < (int)vec_p_data.size(); i++)
|
||||
{
|
||||
XMLElement *item = doc.NewElement("Item");
|
||||
item->SetAttribute("no", i);
|
||||
item->SetAttribute("value", dc_get_signal_val(vec_p_data[i], data_type).c_str());
|
||||
item->SetAttribute("default", i < (int)vec_p_default_data.size() ?
|
||||
dc_get_signal_val(vec_p_default_data[i], data_type).c_str() : "");
|
||||
sig_elem->InsertEndChild(item);
|
||||
}
|
||||
|
||||
param_elem->InsertEndChild(sig_elem);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ao 段:单值参数
|
||||
sig_elem->SetAttribute("no", ao_no++);
|
||||
sig_elem->SetAttribute("saddr", group.saddr.c_str());
|
||||
sig_elem->SetAttribute("desc", group.desc.c_str());
|
||||
sig_elem->SetAttribute("type", dc_get_data_type_str_by_id(group.data_type).c_str());
|
||||
sig_elem->SetAttribute("min", group.min);
|
||||
sig_elem->SetAttribute("max", group.max);
|
||||
sig_elem->SetAttribute("step", group.step);
|
||||
sig_elem->SetAttribute("unit", group.unit.c_str());
|
||||
|
||||
if (!vec_p_data.empty())
|
||||
sig_elem->SetAttribute("value", dc_get_signal_val(vec_p_data[0], data_type).c_str());
|
||||
if (!vec_p_default_data.empty())
|
||||
sig_elem->SetAttribute("default", dc_get_signal_val(vec_p_default_data[0], data_type).c_str());
|
||||
sig_elem->SetAttribute("saddr", p_ao->saddr.c_str());
|
||||
sig_elem->SetAttribute("desc", p_ao->desc.c_str());
|
||||
sig_elem->SetAttribute("type", dc_get_data_type_str_by_id(p_ao->data_type).c_str());
|
||||
sig_elem->SetAttribute("min", p_ao->param.min);
|
||||
sig_elem->SetAttribute("max", p_ao->param.max);
|
||||
sig_elem->SetAttribute("step", p_ao->param.step);
|
||||
sig_elem->SetAttribute("unit", p_ao->param.unit.c_str());
|
||||
sig_elem->SetAttribute("value", dc_get_signal_val(p_ao->vec_p_data[0], p_ao->data_type).c_str());
|
||||
sig_elem->SetAttribute("default", dc_get_signal_val(p_ao->vec_p_default_data[0], p_ao->data_type).c_str());
|
||||
|
||||
ao_elem->InsertEndChild(sig_elem);
|
||||
}
|
||||
|
||||
XMLElement *param_elem = doc.NewElement("Param");
|
||||
|
||||
for(auto it = g_datacenter.signal_param.map_signals.begin(); it != g_datacenter.signal_param.map_signals.end(); it++)
|
||||
{
|
||||
stru_signal *p_param = &it->second;
|
||||
|
||||
XMLElement *sig_elem = doc.NewElement("Signal");
|
||||
sig_elem->SetAttribute("saddr", p_param->saddr.c_str());
|
||||
sig_elem->SetAttribute("desc", p_param->desc.c_str());
|
||||
sig_elem->SetAttribute("type", dc_get_data_type_str_by_id(p_param->data_type).c_str());
|
||||
sig_elem->SetAttribute("min", p_param->param.min);
|
||||
sig_elem->SetAttribute("max", p_param->param.max);
|
||||
sig_elem->SetAttribute("step", p_param->param.step);
|
||||
sig_elem->SetAttribute("unit", p_param->param.unit.c_str());
|
||||
sig_elem->SetAttribute("num", p_param->vec_p_data.size());
|
||||
|
||||
|
||||
for(int i = 0; i < p_param->vec_p_data.size(); i++)
|
||||
{
|
||||
XMLElement *item_elem = doc.NewElement("Item");
|
||||
item_elem->SetAttribute("index", i+1);
|
||||
item_elem->SetAttribute("val", dc_get_signal_val(p_param->vec_p_data[i], p_param->data_type).c_str());
|
||||
item_elem->SetAttribute("default", dc_get_signal_val(p_param->vec_p_default_data[i], p_param->data_type).c_str());
|
||||
|
||||
sig_elem->InsertEndChild(item_elem);
|
||||
}
|
||||
|
||||
param_elem->InsertEndChild(sig_elem);
|
||||
}
|
||||
|
||||
root->InsertEndChild(ao_elem);
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@ void ao_pop_out(stru_icp67 *p_icp67, uint16_t addr, uint8_t type, uint8_t len, u
|
|||
uint16_t pos = g_local_ao_get.offset + g_local_ao_get.rx_cnt;
|
||||
stru_self_ptl_cfg_param_data *p_ao_data = &p_app_cfg_data->ao_vec[pos];
|
||||
|
||||
|
||||
|
||||
if(p_ao_data->p_param->base.inf == addr && p_ao_data->p_param->type == type && dc_get_data_type_len(type) == len)
|
||||
{
|
||||
// dc_signal_param_set_val(p_ao_data->p_param->base.saddr, SIGNAL_CTRL_STEP::SELECT, type, p_data);
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ LOCAL int self_ptl_cfg_init()
|
|||
stru_self_ptl_cfg *p_cfg = self_ptl_cfg_get();
|
||||
if(nullptr == p_cfg)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init self_ptl_cfg_get failed");
|
||||
MY_LOG_E("self_ptl_cfg_init self_ptl_cfg_get failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ LOCAL int self_ptl_cfg_init()
|
|||
stru_signal_ctrl *p_ctrl = new stru_signal_ctrl;
|
||||
if(nullptr == p_ctrl)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init new stru_signal_ctrl failed");
|
||||
MY_LOG_E("self_ptl_cfg_init new stru_signal_ctrl failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -514,7 +514,7 @@ LOCAL int self_ptl_cfg_init()
|
|||
p_ctrl->p_data = dc_create_data_ptr_by_type(DATA_TYPE_U8);
|
||||
if(nullptr == p_ctrl->p_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", DATA_TYPE_U8);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", DATA_TYPE_U8);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -538,34 +538,35 @@ LOCAL int self_ptl_cfg_init()
|
|||
stru_signal_ctrl *p_ctrl = new stru_signal_ctrl;
|
||||
if(nullptr == p_ctrl)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p_ctrl->type = SIGNAL_CTRL_TYPE::SBO_NORMAL;
|
||||
p_ctrl->step = SIGNAL_CTRL_STEP::READY;
|
||||
p_ctrl->data_type = p_ao->dc_type;
|
||||
p_ctrl->p_data = dc_create_data_ptr_by_type(p_ao->dc_type);
|
||||
p_ctrl->data_type = p_ao->type;
|
||||
p_ctrl->p_data = dc_create_data_ptr_by_type(p_ao->type);
|
||||
if(nullptr == p_ctrl->p_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d, saddr %s, desc %s",
|
||||
p_ao->type, p_ao->base.saddr.c_str(), p_ao->base.desc.c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
p_cfg_data->ao_vec.push_back({p_ao, p_ctrl});
|
||||
|
||||
void *p_data = dc_create_data_ptr_by_type(p_ao->dc_type);
|
||||
void *p_data = dc_create_data_ptr_by_type(p_ao->type);
|
||||
if(nullptr == p_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->type);
|
||||
return -1;
|
||||
}
|
||||
p_cfg_data->ao_vec.back().vec_p_data.push_back(p_data);
|
||||
|
||||
void *p_default_data = dc_create_data_ptr_by_type(p_ao->dc_type);
|
||||
void *p_default_data = dc_create_data_ptr_by_type(p_ao->type);
|
||||
if(nullptr == p_default_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_ao->type);
|
||||
return -1;
|
||||
}
|
||||
p_cfg_data->ao_vec.back().vec_p_default_data.push_back(p_default_data);
|
||||
|
|
@ -579,17 +580,17 @@ LOCAL int self_ptl_cfg_init()
|
|||
stru_signal_ctrl *p_ctrl = new stru_signal_ctrl;
|
||||
if(nullptr == p_ctrl)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p_ctrl->type = SIGNAL_CTRL_TYPE::SBO_NORMAL;
|
||||
p_ctrl->step = SIGNAL_CTRL_STEP::READY;
|
||||
p_ctrl->data_type = p_param->dc_type;
|
||||
p_ctrl->p_data = dc_create_data_ptr_by_type(p_param->dc_type);
|
||||
p_ctrl->data_type = p_param->type;
|
||||
p_ctrl->p_data = dc_create_data_ptr_by_type(p_param->type);
|
||||
if(nullptr == p_ctrl->p_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -597,18 +598,18 @@ LOCAL int self_ptl_cfg_init()
|
|||
|
||||
for(uint8_t i = 0; i < p_param->num; i++)
|
||||
{
|
||||
void *p_val_data = dc_create_data_ptr_by_type(p_param->dc_type);
|
||||
void *p_val_data = dc_create_data_ptr_by_type(p_param->type);
|
||||
if(nullptr == p_val_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->type);
|
||||
return -1;
|
||||
}
|
||||
p_cfg_data->param_vec.back().vec_p_data.push_back(p_val_data);
|
||||
|
||||
void *p_default_val_data = dc_create_data_ptr_by_type(p_param->dc_type);
|
||||
void *p_default_val_data = dc_create_data_ptr_by_type(p_param->type);
|
||||
if(nullptr == p_default_val_data)
|
||||
{
|
||||
LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->dc_type);
|
||||
MY_LOG_E("self_ptl_cfg_init dc_create_data_ptr_by_type failed, type:%d", p_param->type);
|
||||
return -1;
|
||||
}
|
||||
p_cfg_data->param_vec.back().vec_p_default_data.push_back(p_default_val_data);
|
||||
|
|
@ -896,7 +897,7 @@ int self_ptl_do_signal_out(stru_app *p_app)
|
|||
param.step = safeStringToFloat(p_ao->p_param->step);
|
||||
param.unit = p_ao->p_param->unit;
|
||||
|
||||
ret |= dc_signal_ao(p_ao->p_param->base.saddr, p_ao->p_param->base.desc, p_ao->p_param->dc_type, param, 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, param, SIGNAL_CTRL_TYPE::SBO_NORMAL, p_ao->vec_p_data[0], p_ao->vec_p_default_data[0], self_ptl_signal_change_callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -918,7 +919,7 @@ int self_ptl_do_signal_out(stru_app *p_app)
|
|||
|
||||
|
||||
// ret(saddr, p(saddr, p->name, p->type, p->p_data);
|
||||
ret |= dc_signal_param(p_param->p_param->base.saddr, p_param->p_param->base.desc, p_param->p_param->dc_type, param, SIGNAL_CTRL_TYPE::SBO_NORMAL, p_param->vec_p_data, p_param->vec_p_default_data, self_ptl_signal_change_callback);
|
||||
ret |= dc_signal_param(p_param->p_param->base.saddr, p_param->p_param->base.desc, p_param->p_param->type, param, SIGNAL_CTRL_TYPE::SBO_NORMAL, p_param->vec_p_data, p_param->vec_p_default_data, self_ptl_signal_change_callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -938,7 +939,11 @@ int app_self_ptl_init1(void *arg)
|
|||
{
|
||||
stru_app *p_app = (stru_app *)arg;
|
||||
|
||||
self_ptl_cfg_init();
|
||||
if(0 != self_ptl_cfg_init())
|
||||
{
|
||||
MY_LOG_E("self ptl cfg_init failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
self_ptl_init();
|
||||
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
<Item no="4" type="2" ctlModel="4" name="co4" desc="低频保护软压板" LDev="PROT" LNode="GGIO1" DoName="SPCSO1" fc="0"/>
|
||||
</Co>
|
||||
<Ao desc="参数">
|
||||
<Item no="0" type="5" ctlModel="4" name="ao0" desc="参数01" LDev="PROT" LNode="LPHD1" DoName="SettingGrp" fc="2" min="1" max="30" step="1" unit=""/>
|
||||
<Item no="1" type="5" ctlModel="4" name="ao1" desc="参数02" LDev="PROT" LNode="LPHD1" DoName="DeviceName" fc="2" min="" max="" step="" unit=""/>
|
||||
<Item no="0" type="5" ctlModel="4" name="ao0" desc="参数01" LDev="PROT" LNode="LPHD1" DoName="SettingGrp" fc="2" min="1" max="30" step="1" unit="" value="1" default="1"/>
|
||||
<Item no="1" type="5" ctlModel="4" name="ao1" desc="参数02" LDev="PROT" LNode="LPHD1" DoName="DeviceName" fc="2" min="" max="" step="" unit="" value="1" default="1"/>
|
||||
</Ao>
|
||||
<Param desc="定值">
|
||||
<Item no="0" type="5" ctlModel="4" name="param0" desc="定值01" LDev="PROT" LNode="LPHD1" DoName="SettingGrp" fc="2" min="0.05" max="150" step="0.001" unit="A" num="2">
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue