refactor(libmodbus_m): MY_LOG_→LOG_ 统一日志宏 + 代码风格规范
- 全局替换 MY_LOG_I/MY_LOG_E/MY_LOG_W 为统一的 LOG_I/LOG_E/LOG_W - get_base_path(): 对齐配置路径约定(WORK_PATH 优先 → 可执行文件目录 - 修复关键字空格(if(/for(/while(/switch( → if (/for (/while (/switch () - 花括号/空行按 Allman 风格规范
This commit is contained in:
parent
16b697f9c4
commit
a0158a6cbf
|
|
@ -20,13 +20,23 @@ LOCAL std::vector<stru_modbus_m_write_req> g_write_queue;
|
||||||
|
|
||||||
LOCAL std::string get_base_path()
|
LOCAL std::string get_base_path()
|
||||||
{
|
{
|
||||||
char proc_dir[512] = {0};
|
char buf[512] = {0};
|
||||||
if(0 != func_proc_self_dir(proc_dir, sizeof(proc_dir)))
|
|
||||||
|
/* 优先使用 WORK_PATH 环境变量(RK3568 装置运行时设置) */
|
||||||
|
if (0 == func_get_work_path(buf, sizeof(buf)))
|
||||||
{
|
{
|
||||||
MY_LOG_E("func_get_process_self_dir failed");
|
return std::string(buf) + "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fallback: 从可执行文件路径推导(本地调试用) */
|
||||||
|
if (0 != func_proc_self_dir(buf, sizeof(buf)))
|
||||||
|
{
|
||||||
|
LOG_E("func_proc_self_dir failed");
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return std::string(proc_dir);
|
|
||||||
|
return std::string(buf) + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 数据类型映射 ====================
|
// ==================== 数据类型映射 ====================
|
||||||
|
|
@ -83,14 +93,14 @@ LOCAL int parse_channels(XMLElement *p_root)
|
||||||
ch.connected = false;
|
ch.connected = false;
|
||||||
|
|
||||||
g_modbus_m_cfg.channels.push_back(ch);
|
g_modbus_m_cfg.channels.push_back(ch);
|
||||||
MY_LOG_I("channel %d: mode=%s, host=%s:%d", ch.id, ch.mode.c_str(), ch.host.c_str(), ch.port);
|
LOG_I("channel %d: mode=%s, host=%s:%d", ch.id, ch.mode.c_str(), ch.host.c_str(), ch.port);
|
||||||
|
|
||||||
p_ch = p_ch->NextSiblingElement("Channel");
|
p_ch = p_ch->NextSiblingElement("Channel");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_modbus_m_cfg.channels.empty())
|
if (g_modbus_m_cfg.channels.empty())
|
||||||
{
|
{
|
||||||
MY_LOG_E("no channel configured");
|
LOG_E("no channel configured");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -139,7 +149,7 @@ LOCAL int parse_point_item(XMLElement *p_item, std::vector<stru_modbus_m_item> &
|
||||||
}
|
}
|
||||||
if (!ch_found)
|
if (!ch_found)
|
||||||
{
|
{
|
||||||
MY_LOG_E("item no=%d: channel %d not found", item.no, item.channel);
|
LOG_E("item no=%d: channel %d not found", item.no, item.channel);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -148,7 +158,7 @@ LOCAL int parse_point_item(XMLElement *p_item, std::vector<stru_modbus_m_item> &
|
||||||
item.p_val = dc_create_data(local_type);
|
item.p_val = dc_create_data(local_type);
|
||||||
if (NULL == item.p_val)
|
if (NULL == item.p_val)
|
||||||
{
|
{
|
||||||
MY_LOG_E("dc_create_data_ptr_by_type failed, type=%d", local_type);
|
LOG_E("dc_create_data_ptr_by_type failed, type=%d", local_type);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -161,7 +171,7 @@ LOCAL int parse_points(XMLElement *p_root)
|
||||||
XMLElement *p_point = p_root->FirstChildElement("Point");
|
XMLElement *p_point = p_root->FirstChildElement("Point");
|
||||||
if (NULL == p_point)
|
if (NULL == p_point)
|
||||||
{
|
{
|
||||||
MY_LOG_E("Point not found");
|
LOG_E("Point not found");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -181,7 +191,7 @@ LOCAL int parse_points(XMLElement *p_root)
|
||||||
}
|
}
|
||||||
p_item = p_item->NextSiblingElement("Item");
|
p_item = p_item->NextSiblingElement("Item");
|
||||||
}
|
}
|
||||||
MY_LOG_I("parsed %zu st items", g_modbus_m_cfg.point.st_vec.size());
|
LOG_I("parsed %zu st items", g_modbus_m_cfg.point.st_vec.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析 Mx(遥测)
|
// 解析 Mx(遥测)
|
||||||
|
|
@ -197,7 +207,7 @@ LOCAL int parse_points(XMLElement *p_root)
|
||||||
}
|
}
|
||||||
p_item = p_item->NextSiblingElement("Item");
|
p_item = p_item->NextSiblingElement("Item");
|
||||||
}
|
}
|
||||||
MY_LOG_I("parsed %zu mx items", g_modbus_m_cfg.point.mx_vec.size());
|
LOG_I("parsed %zu mx items", g_modbus_m_cfg.point.mx_vec.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析 Co(遥控)
|
// 解析 Co(遥控)
|
||||||
|
|
@ -213,7 +223,7 @@ LOCAL int parse_points(XMLElement *p_root)
|
||||||
}
|
}
|
||||||
p_item = p_item->NextSiblingElement("Item");
|
p_item = p_item->NextSiblingElement("Item");
|
||||||
}
|
}
|
||||||
MY_LOG_I("parsed %zu co items", g_modbus_m_cfg.point.co_vec.size());
|
LOG_I("parsed %zu co items", g_modbus_m_cfg.point.co_vec.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析 Ao(参数)
|
// 解析 Ao(参数)
|
||||||
|
|
@ -229,7 +239,7 @@ LOCAL int parse_points(XMLElement *p_root)
|
||||||
}
|
}
|
||||||
p_item = p_item->NextSiblingElement("Item");
|
p_item = p_item->NextSiblingElement("Item");
|
||||||
}
|
}
|
||||||
MY_LOG_I("parsed %zu ao items", g_modbus_m_cfg.point.ao_vec.size());
|
LOG_I("parsed %zu ao items", g_modbus_m_cfg.point.ao_vec.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -240,30 +250,30 @@ int modbus_m_cfg_parse(const std::string &path)
|
||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
if (XML_SUCCESS != doc.LoadFile(path.c_str()))
|
if (XML_SUCCESS != doc.LoadFile(path.c_str()))
|
||||||
{
|
{
|
||||||
MY_LOG_E("load xml failed: %s", path.c_str());
|
LOG_E("load xml failed: %s", path.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLElement *p_root = doc.RootElement();
|
XMLElement *p_root = doc.RootElement();
|
||||||
if (NULL == p_root)
|
if (NULL == p_root)
|
||||||
{
|
{
|
||||||
MY_LOG_E("root element not found");
|
LOG_E("root element not found");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != parse_channels(p_root))
|
if (0 != parse_channels(p_root))
|
||||||
{
|
{
|
||||||
MY_LOG_E("parse channels failed");
|
LOG_E("parse channels failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != parse_points(p_root))
|
if (0 != parse_points(p_root))
|
||||||
{
|
{
|
||||||
MY_LOG_E("parse points failed");
|
LOG_E("parse points failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MY_LOG_I("modbus_m cfg parsed: %zu channels, st=%zu, mx=%zu, co=%zu, ao=%zu",
|
LOG_I("modbus_m cfg parsed: %zu channels, st=%zu, mx=%zu, co=%zu, ao=%zu",
|
||||||
g_modbus_m_cfg.channels.size(),
|
g_modbus_m_cfg.channels.size(),
|
||||||
g_modbus_m_cfg.point.st_vec.size(),
|
g_modbus_m_cfg.point.st_vec.size(),
|
||||||
g_modbus_m_cfg.point.mx_vec.size(),
|
g_modbus_m_cfg.point.mx_vec.size(),
|
||||||
|
|
@ -297,7 +307,7 @@ LOCAL int channel_connect(stru_modbus_m_channel *p_ch)
|
||||||
p_ch->ctx = modbus_new_tcp(p_ch->host.c_str(), p_ch->port);
|
p_ch->ctx = modbus_new_tcp(p_ch->host.c_str(), p_ch->port);
|
||||||
if (NULL == p_ch->ctx)
|
if (NULL == p_ch->ctx)
|
||||||
{
|
{
|
||||||
MY_LOG_E("modbus_new_tcp failed: %s:%d", p_ch->host.c_str(), p_ch->port);
|
LOG_E("modbus_new_tcp failed: %s:%d", p_ch->host.c_str(), p_ch->port);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
// TCP 模式下设置默认从站地址
|
// TCP 模式下设置默认从站地址
|
||||||
|
|
@ -308,13 +318,13 @@ LOCAL int channel_connect(stru_modbus_m_channel *p_ch)
|
||||||
p_ch->ctx = modbus_new_rtu(p_ch->device.c_str(), p_ch->baud, p_ch->parity, p_ch->data_bit, p_ch->stop_bit);
|
p_ch->ctx = modbus_new_rtu(p_ch->device.c_str(), p_ch->baud, p_ch->parity, p_ch->data_bit, p_ch->stop_bit);
|
||||||
if (NULL == p_ch->ctx)
|
if (NULL == p_ch->ctx)
|
||||||
{
|
{
|
||||||
MY_LOG_E("modbus_new_rtu failed: %s", p_ch->device.c_str());
|
LOG_E("modbus_new_rtu failed: %s", p_ch->device.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MY_LOG_E("unknown mode: %s", p_ch->mode.c_str());
|
LOG_E("unknown mode: %s", p_ch->mode.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -327,7 +337,7 @@ LOCAL int channel_connect(stru_modbus_m_channel *p_ch)
|
||||||
// 建立连接
|
// 建立连接
|
||||||
if (0 != modbus_connect(p_ch->ctx))
|
if (0 != modbus_connect(p_ch->ctx))
|
||||||
{
|
{
|
||||||
MY_LOG_E("modbus_connect failed: ch=%d, mode=%s", p_ch->id, p_ch->mode.c_str());
|
LOG_E("modbus_connect failed: ch=%d, mode=%s", p_ch->id, p_ch->mode.c_str());
|
||||||
modbus_free(p_ch->ctx);
|
modbus_free(p_ch->ctx);
|
||||||
p_ch->ctx = NULL;
|
p_ch->ctx = NULL;
|
||||||
p_ch->connected = false;
|
p_ch->connected = false;
|
||||||
|
|
@ -335,7 +345,7 @@ LOCAL int channel_connect(stru_modbus_m_channel *p_ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
p_ch->connected = true;
|
p_ch->connected = true;
|
||||||
MY_LOG_I("channel %d connected: mode=%s", p_ch->id, p_ch->mode.c_str());
|
LOG_I("channel %d connected: mode=%s", p_ch->id, p_ch->mode.c_str());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -736,7 +746,7 @@ LOCAL void modbus_m_signal_co_change_callback(const char *saddr, dc_ctrl_step_t
|
||||||
}
|
}
|
||||||
|
|
||||||
enqueue_write(req);
|
enqueue_write(req);
|
||||||
MY_LOG_I("co write: ch=%d, slave=%d, addr=%d, val=%d", req.channel, req.slave, req.addr, req.value);
|
LOG_I("co write: ch=%d, slave=%d, addr=%d, val=%d", req.channel, req.slave, req.addr, req.value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -775,7 +785,7 @@ LOCAL void modbus_m_signal_ao_change_callback(const char *saddr, dc_ctrl_step_t
|
||||||
}
|
}
|
||||||
|
|
||||||
enqueue_write(req);
|
enqueue_write(req);
|
||||||
MY_LOG_I("ao write: ch=%d, slave=%d, addr=%d, val=%d", req.channel, req.slave, req.addr, req.value);
|
LOG_I("ao write: ch=%d, slave=%d, addr=%d, val=%d", req.channel, req.slave, req.addr, req.value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -794,7 +804,7 @@ LOCAL int signal_register_items(const std::vector<stru_modbus_m_item> &items, co
|
||||||
{
|
{
|
||||||
if (0 != dc_signal_out(item.saddr.c_str(), item.desc.c_str(), local_type, item.p_val, MODULE_MODBUS_M))
|
if (0 != dc_signal_out(item.saddr.c_str(), item.desc.c_str(), local_type, item.p_val, MODULE_MODBUS_M))
|
||||||
{
|
{
|
||||||
MY_LOG_E("dc_signal_out failed: %s", item.saddr.c_str());
|
LOG_E("dc_signal_out failed: %s", item.saddr.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -802,7 +812,7 @@ LOCAL int signal_register_items(const std::vector<stru_modbus_m_item> &items, co
|
||||||
{
|
{
|
||||||
if (0 != dc_signal_out(item.saddr.c_str(), item.desc.c_str(), local_type, item.p_val, MODULE_MODBUS_M))
|
if (0 != dc_signal_out(item.saddr.c_str(), item.desc.c_str(), local_type, item.p_val, MODULE_MODBUS_M))
|
||||||
{
|
{
|
||||||
MY_LOG_E("dc_signal_out failed: %s", item.saddr.c_str());
|
LOG_E("dc_signal_out failed: %s", item.saddr.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -810,7 +820,7 @@ LOCAL int signal_register_items(const std::vector<stru_modbus_m_item> &items, co
|
||||||
{
|
{
|
||||||
if (0 != dc_signal_yk(item.saddr.c_str(), item.desc.c_str(), local_type, DC_CTRL_DIRECT, item.p_val, modbus_m_signal_co_change_callback, MODULE_MODBUS_M))
|
if (0 != dc_signal_yk(item.saddr.c_str(), item.desc.c_str(), local_type, DC_CTRL_DIRECT, item.p_val, modbus_m_signal_co_change_callback, MODULE_MODBUS_M))
|
||||||
{
|
{
|
||||||
MY_LOG_E("dc_signal_yk failed: %s", item.saddr.c_str());
|
LOG_E("dc_signal_yk failed: %s", item.saddr.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -818,7 +828,7 @@ LOCAL int signal_register_items(const std::vector<stru_modbus_m_item> &items, co
|
||||||
{
|
{
|
||||||
if (0 != dc_signal_ao(item.saddr.c_str(), item.desc.c_str(), local_type, DC_CTRL_DIRECT, item.p_val, modbus_m_signal_ao_change_callback, MODULE_MODBUS_M))
|
if (0 != dc_signal_ao(item.saddr.c_str(), item.desc.c_str(), local_type, DC_CTRL_DIRECT, item.p_val, modbus_m_signal_ao_change_callback, MODULE_MODBUS_M))
|
||||||
{
|
{
|
||||||
MY_LOG_E("dc_signal_ao failed: %s", item.saddr.c_str());
|
LOG_E("dc_signal_ao failed: %s", item.saddr.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -846,7 +856,7 @@ LOCAL int signals_init()
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MY_LOG_I("signals registered: st=%zu, mx=%zu, co=%zu, ao=%zu",
|
LOG_I("signals registered: st=%zu, mx=%zu, co=%zu, ao=%zu",
|
||||||
g_modbus_m_cfg.point.st_vec.size(),
|
g_modbus_m_cfg.point.st_vec.size(),
|
||||||
g_modbus_m_cfg.point.mx_vec.size(),
|
g_modbus_m_cfg.point.mx_vec.size(),
|
||||||
g_modbus_m_cfg.point.co_vec.size(),
|
g_modbus_m_cfg.point.co_vec.size(),
|
||||||
|
|
@ -862,13 +872,13 @@ int modbus_m_init()
|
||||||
{
|
{
|
||||||
if (0 != signals_init())
|
if (0 != signals_init())
|
||||||
{
|
{
|
||||||
MY_LOG_E("signals_init failed");
|
LOG_E("signals_init failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != channels_init())
|
if (0 != channels_init())
|
||||||
{
|
{
|
||||||
MY_LOG_E("channels_init failed");
|
LOG_E("channels_init failed");
|
||||||
// 部分通道失败也可继续
|
// 部分通道失败也可继续
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -942,7 +952,7 @@ int app_modbus_m_init1(void *arg)
|
||||||
std::string base_path = get_base_path();
|
std::string base_path = get_base_path();
|
||||||
if (base_path.empty())
|
if (base_path.empty())
|
||||||
{
|
{
|
||||||
MY_LOG_E("get_base_path failed");
|
LOG_E("get_base_path failed");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
g_modbus_m_base_path = base_path + "config/MODBUS/";
|
g_modbus_m_base_path = base_path + "config/MODBUS/";
|
||||||
|
|
@ -950,7 +960,7 @@ int app_modbus_m_init1(void *arg)
|
||||||
std::string cfg_path = g_modbus_m_base_path + "modbus_m.xml";
|
std::string cfg_path = g_modbus_m_base_path + "modbus_m.xml";
|
||||||
if (0 != modbus_m_cfg_parse(cfg_path))
|
if (0 != modbus_m_cfg_parse(cfg_path))
|
||||||
{
|
{
|
||||||
MY_LOG_E("modbus_m_cfg_parse failed: %s", cfg_path.c_str());
|
LOG_E("modbus_m_cfg_parse failed: %s", cfg_path.c_str());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -985,7 +995,7 @@ void *app_modbus_m(void *arg)
|
||||||
// 预构建轮询分组
|
// 预构建轮询分组
|
||||||
build_poll_groups(g_modbus_m_cfg.point.st_vec, st_groups);
|
build_poll_groups(g_modbus_m_cfg.point.st_vec, st_groups);
|
||||||
build_poll_groups(g_modbus_m_cfg.point.mx_vec, mx_groups);
|
build_poll_groups(g_modbus_m_cfg.point.mx_vec, mx_groups);
|
||||||
MY_LOG_I("poll groups: st=%zu, mx=%zu", st_groups.size(), mx_groups.size());
|
LOG_I("poll groups: st=%zu, mx=%zu", st_groups.size(), mx_groups.size());
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue