数据库:下位机交互数据全量落库,SQLite 封装重构
- 新增 msg_log 原始帧表,RX/TX 双向记录原始字节与校验结果 - SQLite 封装改为描述符驱动的泛化 insert,删除 10 个手写 SQL - 新增 ccuSetParmCmd/ccuSetParmFb 表,补齐 CCU 参数设定反馈落库 - 错误防崩溃:统一加锁、fail-open 降级、损坏自动重建、析构顺序修复 - WAL/迁移/预编译语句路径,数据库路径支持 mission 配置 dbpath - 清理未使用的 shell.c/sqlite3ext.h/SQLite.zip
This commit is contained in:
@@ -69,11 +69,9 @@ PowerManger::PowerManger()
|
||||
//初始化上位机通信
|
||||
m_upperCommManager = new UpperCommManager(this);
|
||||
|
||||
//初始化数据库
|
||||
m_db = new SQLite("power_data.db");
|
||||
m_db->createTable();
|
||||
|
||||
m_lowerCommManager->startListenThread();
|
||||
//数据库在 OnStartUp 读取配置后初始化
|
||||
m_db = nullptr;
|
||||
|
||||
//初始化http服务器
|
||||
m_httpServer = new HttpServer(8090);
|
||||
m_httpServer->setPowerManger(this);
|
||||
@@ -88,8 +86,8 @@ PowerManger::PowerManger()
|
||||
PowerManger::~PowerManger()
|
||||
{
|
||||
m_commThread.Stop();
|
||||
delete m_lowerCommManager; // 先停止监听线程,确保其不再调用 DB
|
||||
delete m_db;
|
||||
delete m_lowerCommManager;
|
||||
delete m_upperCommManager;
|
||||
delete m_systemData;
|
||||
delete m_httpServer;
|
||||
@@ -185,12 +183,14 @@ bool PowerManger::OnStartUp()
|
||||
if(!m_MissionReader.GetConfiguration(GetAppName(), sParams))
|
||||
reportConfigWarning("No config block found for " + GetAppName());
|
||||
|
||||
std::string dbPath; // 数据库路径,不配置则默认当前目录 power_data.db
|
||||
|
||||
STRING_LIST::iterator p;
|
||||
for(p=sParams.begin(); p!=sParams.end(); p++) {
|
||||
string orig = *p;
|
||||
string line = *p;
|
||||
string param = tolower(biteStringX(line, '='));
|
||||
string value = line;
|
||||
string param = stripBlankEnds(tolower(biteStringX(line, '=')));
|
||||
string value = stripBlankEnds(line);
|
||||
|
||||
bool handled = false;
|
||||
if(param == "foo") {
|
||||
@@ -199,6 +199,10 @@ bool PowerManger::OnStartUp()
|
||||
else if(param == "bar") {
|
||||
handled = true;
|
||||
}
|
||||
else if(param == "dbpath") {
|
||||
dbPath = value;
|
||||
handled = true;
|
||||
}
|
||||
|
||||
if(!handled)
|
||||
reportUnhandledConfigWarning(orig);
|
||||
@@ -206,7 +210,17 @@ bool PowerManger::OnStartUp()
|
||||
}
|
||||
|
||||
registerVariables();
|
||||
|
||||
|
||||
// 初始化数据库:dbpath 未配置则默认当前目录
|
||||
if (dbPath.empty()) dbPath = "power_data.db";
|
||||
LOG_F(INFO, "数据库存储路径: %s", dbPath.c_str());
|
||||
m_db = new SQLite(dbPath);
|
||||
m_db->createTable();
|
||||
// 注入原始帧日志回调(RX/TX 双向落库)
|
||||
m_lowerCommManager->setCommLogger(m_db);
|
||||
// 数据库就绪后再启动下位机监听线程
|
||||
m_lowerCommManager->startListenThread();
|
||||
|
||||
// 初始化状态机
|
||||
PowerManagerFsm::init(this);
|
||||
PowerManagerFsm::start();
|
||||
|
||||
Reference in New Issue
Block a user