屏蔽了squit3,实现了外部通讯交互
This commit is contained in:
@@ -1,48 +1,47 @@
|
||||
{"uPower_currentState_st":{
|
||||
"HVABFTDev123Cur_uint16" : 0,
|
||||
"HVABactCur_uint16" : 0,
|
||||
"HVABbowRudCur_uint16" : 0,
|
||||
"HVABbusBCur_uint16" : 0,
|
||||
"HVABbusBVol_uint16" : 0,
|
||||
"HVABmastSteGeaCur_uint16" : 0,
|
||||
"HVABopenWaterCur_uint16" : 0,
|
||||
"HVABxczCur_uint16" : 0,
|
||||
"HVBBCCUCur_uint16" : 0,
|
||||
"HVBBFCSSecurSysCur_uint16" : 0,
|
||||
"HVBBbatInsCur_uint16" : 0,
|
||||
"HVBBbowLowVolDisBoxCur_uint16" : 0,
|
||||
"HVBBdcC1InsCur_uint16" : 0,
|
||||
"HVBBemer2BusVol_uint16" : 0,
|
||||
"HVBBemerBatCur_uint16" : 0,
|
||||
"HVBBinsBusVol_uint16" : 0,
|
||||
"HVBBplcCur_uint16" : 0,
|
||||
"HVBBreservedCur1_uint16" : 0,
|
||||
"HVBBreservedCur2_uint16" : 0,
|
||||
"HVBBunit4Cur_uint16" : 0,
|
||||
"HVBFTDev45Cur_uint16" : 0,
|
||||
"HVBbatGroupCur_uint16" : 0,
|
||||
"HVBbowHVolDisBoxCur_uint16" : 0,
|
||||
"HVBbusACur_uint16" : 0,
|
||||
"HVBbusAVol_uint16" : 0,
|
||||
"HVBdcDc5Cur_uint16" : 0,
|
||||
"HVBfbCur_uint16" : 0,
|
||||
"HVBmotorCur_uint16" : 0,
|
||||
"HVBpowerBusCur_uint16" : 0,
|
||||
"HVBpowerBusVol_uint16" : 0,
|
||||
"HVBreservedCur1_uint16" : 0,
|
||||
"HVBreservedCur2_uint16" : 0,
|
||||
"HVBreservedCur3_uint16" : 0,
|
||||
"HVBsternRud1Cur_uint16" : 0,
|
||||
"HVBsternRud2Cur_uint16" : 0,
|
||||
"HVBtyzCur_uint16" : 0,
|
||||
"LVBBbowPZDevCur_uint16" : 0,
|
||||
"LVBBemerBatCur_uint16" : 0,
|
||||
"LVBBemerBusVol_uint16" : 0,
|
||||
"LVBBinsBusCur_uint16" : 0,
|
||||
"LVBBunit1Cur_uint16" : 0,
|
||||
"LVBBunit2Cur_uint16" : 0,
|
||||
"LVBBunit3Cur_uint16" : 0,
|
||||
"LVBBunit5Cur_uint16" : 0,
|
||||
"LVBinsBusVol_uint16" : 0
|
||||
}
|
||||
}
|
||||
{
|
||||
"HVABFTDev123Cur_uint16": 0,
|
||||
"HVABactCur_uint16": 0,
|
||||
"HVABbowRudCur_uint16": 0,
|
||||
"HVABbusBCur_uint16": 0,
|
||||
"HVABbusBVol_uint16": 0,
|
||||
"HVABmastSteGeaCur_uint16": 0,
|
||||
"HVABopenWaterCur_uint16": 0,
|
||||
"HVABxczCur_uint16": 0,
|
||||
"HVBBCCUCur_uint16": 0,
|
||||
"HVBBFCSSecurSysCur_uint16": 0,
|
||||
"HVBBbatInsCur_uint16": 0,
|
||||
"HVBBbowLowVolDisBoxCur_uint16": 0,
|
||||
"HVBBdcC1InsCur_uint16": 0,
|
||||
"HVBBemer2BusVol_uint16": 0,
|
||||
"HVBBemerBatCur_uint16": 0,
|
||||
"HVBBinsBusVol_uint16": 0,
|
||||
"HVBBplcCur_uint16": 0,
|
||||
"HVBBreservedCur1_uint16": 0,
|
||||
"HVBBreservedCur2_uint16": 0,
|
||||
"HVBBunit4Cur_uint16": 0,
|
||||
"HVBFTDev45Cur_uint16": 0,
|
||||
"HVBbatGroupCur_uint16": 0,
|
||||
"HVBbowHVolDisBoxCur_uint16": 0,
|
||||
"HVBbusACur_uint16": 0,
|
||||
"HVBbusAVol_uint16": 0,
|
||||
"HVBdcDc5Cur_uint16": 0,
|
||||
"HVBfbCur_uint16": 0,
|
||||
"HVBmotorCur_uint16": 0,
|
||||
"HVBpowerBusCur_uint16": 0,
|
||||
"HVBpowerBusVol_uint16": 0,
|
||||
"HVBreservedCur1_uint16": 0,
|
||||
"HVBreservedCur2_uint16": 0,
|
||||
"HVBreservedCur3_uint16": 0,
|
||||
"HVBsternRud1Cur_uint16": 0,
|
||||
"HVBsternRud2Cur_uint16": 0,
|
||||
"HVBtyzCur_uint16": 0,
|
||||
"LVBBbowPZDevCur_uint16": 0,
|
||||
"LVBBemerBatCur_uint16": 0,
|
||||
"LVBBemerBusVol_uint16": 0,
|
||||
"LVBBinsBusCur_uint16": 0,
|
||||
"LVBBunit1Cur_uint16": 0,
|
||||
"LVBBunit2Cur_uint16": 0,
|
||||
"LVBBunit3Cur_uint16": 0,
|
||||
"LVBBunit5Cur_uint16": 0,
|
||||
"LVBinsBusVol_uint16": 0
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
{"uPower_disSysState_st":{
|
||||
"HVolABusBreaker_unit16" : 0,
|
||||
"HVolBBusBreaker_unit16" : 0,
|
||||
"HVolBusBreaker_uint16" : 0,
|
||||
"LVolBusBreaker_uint16" : 0,
|
||||
"faultCode_array" :
|
||||
[
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
{
|
||||
"HVolABusBreaker_unit16": 0,
|
||||
"HVolBBusBreaker_unit16": 0,
|
||||
"HVolBusBreaker_uint16": 0,
|
||||
"LVolBusBreaker_uint16": 0,
|
||||
"faultCode_array":
|
||||
[
|
||||
0
|
||||
]
|
||||
}
|
||||
@@ -1,31 +1,30 @@
|
||||
{"uPower_fcsState_st":{
|
||||
"backpressure1_fp32" : 0.0,
|
||||
"backpressure2_fp32" : 0.0,
|
||||
"ch4oConcent1_fp32" : 0.0,
|
||||
"ch4oConcent2_fp32" : 0.0,
|
||||
"ch4o_fp32" : 0.0,
|
||||
"excTemp_fp32" : 0.0,
|
||||
"faultCode1_uint16" : 0,
|
||||
"faultCode2_uint16" : 0,
|
||||
"faultCode3_uint16" : 0,
|
||||
"fcuCurIns_fp32" : 0.0,
|
||||
"fcuCurPower_fp32" : 0.0,
|
||||
"fcuCur_fp32" : 0.0,
|
||||
"fcuFaultLeve_uint8" : 0,
|
||||
"fcuOutIns_fp32" : 0.0,
|
||||
"fcuOutPower_fp32" : 0.0,
|
||||
"fcuState_uint8" : 0,
|
||||
"fcuVolIns_fp32" : 0.0,
|
||||
"fcuVolPower_fp32" : 0.0,
|
||||
"fcuVol_fp32" : 0.0,
|
||||
"flameDet_uint8" : 0,
|
||||
"h2Concent1_fp32" : 0.0,
|
||||
"h2Concent2_fp32" : 0.0,
|
||||
"o2Concent1_fp32" : 0.0,
|
||||
"o2Concent2_fp32" : 0.0,
|
||||
"o2Level_fp32" : 0.0,
|
||||
"o2_fp32" : 0.0,
|
||||
"powLimit_fp32" : 0.0,
|
||||
"powerGen_fp32" : 0.0
|
||||
}
|
||||
}
|
||||
{
|
||||
"backpressure1_fp32": 0.0,
|
||||
"backpressure2_fp32": 0.0,
|
||||
"ch4oConcent1_fp32": 0.0,
|
||||
"ch4oConcent2_fp32": 0.0,
|
||||
"ch4o_fp32": 0.0,
|
||||
"excTemp_fp32": 0.0,
|
||||
"faultCode1_uint16": 0,
|
||||
"faultCode2_uint16": 0,
|
||||
"faultCode3_uint16": 0,
|
||||
"fcuCurIns_fp32": 0.0,
|
||||
"fcuCurPower_fp32": 0.0,
|
||||
"fcuCur_fp32": 0.0,
|
||||
"fcuFaultLeve_uint8": 0,
|
||||
"fcuOutIns_fp32": 0.0,
|
||||
"fcuOutPower_fp32": 0.0,
|
||||
"fcuState_uint8": 0,
|
||||
"fcuVolIns_fp32": 0.0,
|
||||
"fcuVolPower_fp32": 0.0,
|
||||
"fcuVol_fp32": 0.0,
|
||||
"flameDet_uint8": 0,
|
||||
"h2Concent1_fp32": 0.0,
|
||||
"h2Concent2_fp32": 0.0,
|
||||
"o2Concent1_fp32": 0.0,
|
||||
"o2Concent2_fp32": 0.0,
|
||||
"o2Level_fp32": 0.0,
|
||||
"o2_fp32": 0.0,
|
||||
"powLimit_fp32": 0.0,
|
||||
"powerGen_fp32": 0.0
|
||||
}
|
||||
@@ -1,39 +1,38 @@
|
||||
{"uPower_liBatState_st":{
|
||||
"fcuCurToInsLimit1_uint8" : 0,
|
||||
"fcuCurToinsLimit2_uint8" : 0,
|
||||
"insBatCurElect_uint16" : 0,
|
||||
"insBatLimit_uint16" : 0,
|
||||
"insBatSoc_uint8" : 0,
|
||||
"insBatTotalElect_uint16" : 0,
|
||||
"insChargeState_uint8" : 0,
|
||||
"insCurSocHold1_uint8" : 0,
|
||||
"insCurSocHold2_uint8" : 0,
|
||||
"insCurSocHold3_uint8" : 0,
|
||||
"insCurrent_uint16" : 0,
|
||||
"insLinkVol_uint16" : 0,
|
||||
"insNegRelayState_uint8" : 0,
|
||||
"insNegRes_uint16" : 0,
|
||||
"insPackVol_uint16" : 0,
|
||||
"insPosRelayState_uint8" : 0,
|
||||
"insPosRes_uint16" : 0,
|
||||
"insfaultCode_uint8" : 0,
|
||||
"powBatCurElect_uint16" : 0,
|
||||
"powBatSoc_uint8" : 0,
|
||||
"powBatTotalElect_uint16" : 0,
|
||||
"powChargeState_uint8" : 0,
|
||||
"powCurSocHold1_uint8" : 0,
|
||||
"powCurSocHold2_uint8" : 0,
|
||||
"powCurSocHold3_uint8" : 0,
|
||||
"powCurToInsLimit1_uint8" : 0,
|
||||
"powCurToinsLimit2_uint8" : 0,
|
||||
"powCur_uint16" : 0,
|
||||
"powLinkVol_uint16" : 0,
|
||||
"powNegRelayState_uint8" : 0,
|
||||
"powNegRes_uint16" : 0,
|
||||
"powPosRelayState_uint8" : 0,
|
||||
"powPosRes_uint16" : 0,
|
||||
"powerBatLimit_uint16" : 0,
|
||||
"powerPackVol_uint16" : 0,
|
||||
"powfaultCode_uint8" : 0
|
||||
}
|
||||
}
|
||||
{
|
||||
"fcuCurToInsLimit1_uint8": 0,
|
||||
"fcuCurToinsLimit2_uint8": 0,
|
||||
"insBatCurElect_uint16": 0,
|
||||
"insBatLimit_uint16": 0,
|
||||
"insBatSoc_uint8": 0,
|
||||
"insBatTotalElect_uint16": 0,
|
||||
"insChargeState_uint8": 0,
|
||||
"insCurSocHold1_uint8": 0,
|
||||
"insCurSocHold2_uint8": 0,
|
||||
"insCurSocHold3_uint8": 0,
|
||||
"insCurrent_uint16": 0,
|
||||
"insLinkVol_uint16": 0,
|
||||
"insNegRelayState_uint8": 0,
|
||||
"insNegRes_uint16": 0,
|
||||
"insPackVol_uint16": 0,
|
||||
"insPosRelayState_uint8": 0,
|
||||
"insPosRes_uint16": 0,
|
||||
"insfaultCode_uint8": 0,
|
||||
"powBatCurElect_uint16": 0,
|
||||
"powBatSoc_uint8": 0,
|
||||
"powBatTotalElect_uint16": 0,
|
||||
"powChargeState_uint8": 0,
|
||||
"powCurSocHold1_uint8": 0,
|
||||
"powCurSocHold2_uint8": 0,
|
||||
"powCurSocHold3_uint8": 0,
|
||||
"powCurToInsLimit1_uint8": 0,
|
||||
"powCurToinsLimit2_uint8": 0,
|
||||
"powCur_uint16": 0,
|
||||
"powLinkVol_uint16": 0,
|
||||
"powNegRelayState_uint8": 0,
|
||||
"powNegRes_uint16": 0,
|
||||
"powPosRelayState_uint8": 0,
|
||||
"powPosRes_uint16": 0,
|
||||
"powerBatLimit_uint16": 0,
|
||||
"powerPackVol_uint16": 0,
|
||||
"powfaultCode_uint8": 0
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"currentMod_uint8": 0,
|
||||
"falutLevel_uint8": 0,
|
||||
"faultCode_array":
|
||||
[
|
||||
0
|
||||
],
|
||||
"powerState_uint8": 0,
|
||||
"soc_uint32": 0,
|
||||
"sustainableTime_uint32": 0,
|
||||
"workCondition_uint8": 1
|
||||
}
|
||||
+1
-1
@@ -16,7 +16,7 @@ INCLUDE_DIRECTORIES(${LOCAL_LIBRARY_DIRS})
|
||||
# List the subdirectories to build...
|
||||
#============================================================================
|
||||
ADD_SUBDIRECTORY(pPowerManger)
|
||||
ADD_SUBDIRECTORY(appPowerMangerWebUI)
|
||||
# ADD_SUBDIRECTORY(appPowerMangerWebUI)
|
||||
add_subdirectory(pPMtest)
|
||||
##############################################################################
|
||||
# END of CMakeLists.txt
|
||||
|
||||
@@ -16,7 +16,7 @@ else (${WIN32})
|
||||
endif (${WIN32})
|
||||
|
||||
# Find SQLite3 package
|
||||
find_package(SQLite3 REQUIRED)
|
||||
# find_package(SQLite3 REQUIRED)
|
||||
|
||||
SET(SRC
|
||||
PowerManagerFsm.cpp
|
||||
@@ -24,7 +24,7 @@ SET(SRC
|
||||
PowerManger_Info.cpp
|
||||
udpComm.cpp
|
||||
main.cpp
|
||||
SQLiteDB.cpp
|
||||
# SQLiteDB.cpp
|
||||
driver.cpp
|
||||
LowerCommManager.cpp
|
||||
UpperCommManager.cpp
|
||||
@@ -41,8 +41,9 @@ TARGET_LINK_LIBRARIES(pPowerManger
|
||||
pthread
|
||||
jsoncpp
|
||||
${SYSTEM_LIBS}
|
||||
SQLiteDB
|
||||
sqlite3)
|
||||
# SQLiteDB
|
||||
# sqlite3
|
||||
)
|
||||
|
||||
# Add SQLiteDB static library
|
||||
SET(UDPCOMM_SRC
|
||||
@@ -67,7 +68,7 @@ SET(DRIVER_SRC
|
||||
# driver.cpp
|
||||
# PowerManagerFsm.cpp)
|
||||
|
||||
ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
|
||||
# ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
|
||||
ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
|
||||
ADD_LIBRARY(FSMLib STATIC ${FSMLIB_SRC})
|
||||
ADD_LIBRARY(Driver STATIC ${DRIVER_SRC})
|
||||
|
||||
@@ -44,28 +44,36 @@ LowerCommManager::~LowerCommManager(){
|
||||
}
|
||||
}
|
||||
bool LowerCommManager::initUdpComm(){
|
||||
//设置UDP监听端口
|
||||
if(m_udpComm->udpScoket)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_udpComm->udpScoket->vBindSocket();
|
||||
cout<<MOOS::ConsoleColours::green()<< "UDP set succeed!"<< MOOS::ConsoleColours::reset() << endl;
|
||||
}
|
||||
catch(const std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << '\n';
|
||||
cout<<MOOS::ConsoleColours::red()<< "UDP set Fild!"<< MOOS::ConsoleColours::reset() << endl;
|
||||
|
||||
if (m_udpComm->udpScoket) {
|
||||
try {
|
||||
std::cout << MOOS::ConsoleColours::yellow() << "Attempting to bind UDP socket..." << MOOS::ConsoleColours::reset() << std::endl;
|
||||
m_udpComm->udpScoket->vBindSocket(); // 可能会抛出 XPCException 或其他 std::exception
|
||||
std::cout << MOOS::ConsoleColours::green() << "UDP bind succeeded!" << MOOS::ConsoleColours::reset() << std::endl;
|
||||
LOG_F(INFO, "UDP bind succeeded!");
|
||||
}
|
||||
catch (const std::exception& e) {
|
||||
std::cerr << MOOS::ConsoleColours::red()
|
||||
<< "[UDP Bind Failed] Exception: " << e.what()
|
||||
<< MOOS::ConsoleColours::reset() << std::endl;
|
||||
LOG_F(ERROR, "UDP bind failed: %s", e.what());
|
||||
return false;
|
||||
}
|
||||
catch (...) {
|
||||
std::cerr << MOOS::ConsoleColours::red()
|
||||
<< "[UDP Bind Failed] Unknown exception occurred!"
|
||||
<< MOOS::ConsoleColours::reset() << std::endl;
|
||||
LOG_F(ERROR, "Unknown exception occurred during UDP bind");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
std::cerr << MOOS::ConsoleColours::red()
|
||||
<< "[UDP Init Failed] udpSocket is null!"
|
||||
<< MOOS::ConsoleColours::reset() << std::endl;
|
||||
LOG_F(ERROR, "udpSocket is null!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<MOOS::ConsoleColours::red()<< "UDP set Fild!"<< MOOS::ConsoleColours::reset() << endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
void LowerCommManager::processPeriodicTasks() {
|
||||
sendCcuCommand(m_pm->m_CcuColCmd);
|
||||
@@ -128,10 +136,10 @@ bool LowerCommManager::sendDisSysCommand(const disSysBreakerList& cmd){
|
||||
d.emergencyLithiumBatteryGroup1CircuitBreaker = getBreakerOption(cmd.bus4Breaker.emergencyLithiumBatteryGroup1CircuitBreaker);
|
||||
m_udpComm->sendDisSysCmd(d);
|
||||
//将指令写入数据库
|
||||
m_pm->m_db->insertDisSysCmd(a);
|
||||
m_pm->m_db->insertDisSysCmd(b);
|
||||
m_pm->m_db->insertDisSysCmd(c);
|
||||
m_pm->m_db->insertDisSysCmd(d);
|
||||
// m_pm->m_db->insertDisSysCmd(a);
|
||||
// m_pm->m_db->insertDisSysCmd(b);
|
||||
// m_pm->m_db->insertDisSysCmd(c);
|
||||
// m_pm->m_db->insertDisSysCmd(d);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,203 @@
|
||||
// 定义静态成员
|
||||
PowerManger* PowerManagerFsm::pm = nullptr;
|
||||
|
||||
void PowerManagerFsm::react(DevCmdExt const &e) {
|
||||
LOG_F(INFO, "DevCmdExt received - id: %d, cmd: %d", e.id, e.cmd);
|
||||
switch (e.id)
|
||||
{
|
||||
case 0:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 1:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 2:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 3:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 4:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar5 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 5:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar6 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 6:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar7 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 7:
|
||||
LOG_F(INFO, "DevCmdExt received singleBeamSonar8 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 8:
|
||||
LOG_F(INFO, "DevCmdExt received forwardSonar - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 9:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 10:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 11:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 12:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 13:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover5 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 14:
|
||||
LOG_F(INFO, "DevCmdExt received bowCover6 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 15:
|
||||
LOG_F(INFO, "DevCmdExt received bowRudderDeploy - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 16:
|
||||
LOG_F(INFO, "DevCmdExt received bowRudderServo1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 17:
|
||||
LOG_F(INFO, "DevCmdExt received bowRudderServo2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 18:
|
||||
LOG_F(INFO, "DevCmdExt received depth1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 19:
|
||||
LOG_F(INFO, "DevCmdExt received depth2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 20:
|
||||
LOG_F(INFO, "DevCmdExt received depth3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 21:
|
||||
LOG_F(INFO, "DevCmdExt received overDeep1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 22:
|
||||
LOG_F(INFO, "DevCmdExt received overDeep2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 23:
|
||||
LOG_F(INFO, "DevCmdExt received ctd1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 24:
|
||||
LOG_F(INFO, "DevCmdExt received ctd2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 25:
|
||||
LOG_F(INFO, "DevCmdExt received soundVeloc - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 26:
|
||||
LOG_F(INFO, "DevCmdExt received waterInject - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 27:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 28:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 29:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 30:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 31:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet5 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 32:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet6 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 33:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet7 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 34:
|
||||
LOG_F(INFO, "DevCmdExt received bowWaterlnet8 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 35:
|
||||
LOG_F(INFO, "DevCmdExt received sideSonar - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 36:
|
||||
LOG_F(INFO, "DevCmdExt received lowFreqSonar - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 37:
|
||||
LOG_F(INFO, "DevCmdExt received launchControler - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 38:
|
||||
LOG_F(INFO, "DevCmdExt received photoSensor - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 39:
|
||||
LOG_F(INFO, "DevCmdExt received electSensor - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 40:
|
||||
LOG_F(INFO, "DevCmdExt received commMast - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 41:
|
||||
LOG_F(INFO, "DevCmdExt received mastLiftingServo - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 42:
|
||||
LOG_F(INFO, "DevCmdExt received USBL - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 43:
|
||||
LOG_F(INFO, "DevCmdExt received DVL - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 44:
|
||||
LOG_F(INFO, "DevCmdExt received buoyancyAdjust1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 45:
|
||||
LOG_F(INFO, "DevCmdExt received buoyancyAdjust2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 46:
|
||||
LOG_F(INFO, "DevCmdExt received buoyancyAdjust3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 47:
|
||||
LOG_F(INFO, "DevCmdExt received buoyancyAdjust4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 48:
|
||||
LOG_F(INFO, "DevCmdExt received buoyancyAdjust5 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 49:
|
||||
LOG_F(INFO, "DevCmdExt received sternRudderServo1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 50:
|
||||
LOG_F(INFO, "DevCmdExt received sternRudderServo2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 51:
|
||||
LOG_F(INFO, "DevCmdExt received bowRudderServo3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 52:
|
||||
LOG_F(INFO, "DevCmdExt received bowRudderServo4 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 53:
|
||||
LOG_F(INFO, "DevCmdExt received thruster - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 54:
|
||||
LOG_F(INFO, "DevCmdExt received bowThrow - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 55:
|
||||
LOG_F(INFO, "DevCmdExt received sternThrow - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 56:
|
||||
LOG_F(INFO, "DevCmdExt received buoyage - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 57:
|
||||
LOG_F(INFO, "DevCmdExt received ins - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 58:
|
||||
LOG_F(INFO, "DevCmdExt received ntp - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 59:
|
||||
LOG_F(INFO, "DevCmdExt received inputWaterSensor1 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 60:
|
||||
LOG_F(INFO, "DevCmdExt received inputWaterSensor2 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
case 61:
|
||||
LOG_F(INFO, "DevCmdExt received inputWaterSensor3 - id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
default:
|
||||
LOG_F(WARNING, "DevCmdExt received unknown id: %d, cmd: %d", e.id, e.cmd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// InitState实现
|
||||
void InitState::entry() {
|
||||
PowerManagerFsm::entry();
|
||||
@@ -59,6 +256,7 @@ void FaultState::react(FaultEvent const & e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PowerManagerFsm::handelPowerCmd(){
|
||||
switch (pm->m_msCmd.powerCMD)
|
||||
{
|
||||
@@ -176,6 +374,9 @@ void PowerManagerFsm::handleModCmd(){
|
||||
LOG_F(INFO, "当前工作模式: %d", pm->currentMod);
|
||||
}
|
||||
|
||||
void PowerManagerFsm::handleDeviceCmd() {
|
||||
LOG_F(INFO, "开始处理设备命令:");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -386,4 +587,5 @@ void FloatDown::react(TaskStart const &)
|
||||
LOG_F(INFO, "进入上浮下潜模式");
|
||||
}
|
||||
|
||||
|
||||
FSM_INITIAL_STATE(PowerManagerFsm, InitState);
|
||||
@@ -29,6 +29,13 @@ struct FaultEvent : tinyfsm::Event {
|
||||
struct MasterCommandEvent : tinyfsm::Event {};
|
||||
struct TaskStart : tinyfsm::Event { };
|
||||
struct DeviceCmd : tinyfsm::Event { };
|
||||
struct DevCmdExt : tinyfsm::Event {
|
||||
int id;
|
||||
int cmd;
|
||||
DevCmdExt() : id(0), cmd(0) {};
|
||||
DevCmdExt(int id, int cmd) : id(id), cmd(cmd) {};
|
||||
};
|
||||
|
||||
|
||||
class PowerManagerFsm : public tinyfsm::Fsm<PowerManagerFsm> {
|
||||
protected:
|
||||
@@ -44,14 +51,16 @@ public:
|
||||
virtual void react(InitEvent const &) {};
|
||||
virtual void react(StandbyEvent const &) { };
|
||||
virtual void react(FaultEvent const &) { };
|
||||
virtual void react(MasterCommandEvent const &) { std::cout << "[ Reseve Envt ] " << "No Idear" << std::endl; };
|
||||
virtual void react(TaskStart const &) { std::cout << "[ Reseve Envt ] " << "No Idear" << std::endl; };
|
||||
virtual void react(DeviceCmd const &) { std::cout << "[ Reseve Envt ] " << "No Idear" << std::endl; };
|
||||
virtual void react(MasterCommandEvent const &) { LOG_F(INFO, "MasterCommandEvent");};
|
||||
virtual void react(TaskStart const &) { LOG_F(INFO, "TaskStart"); };
|
||||
virtual void react(DeviceCmd const &) { LOG_F(INFO, "DeviceCmd"); };
|
||||
virtual void react(DevCmdExt const &e);
|
||||
|
||||
//操作函数
|
||||
void handelPowerCmd();
|
||||
void handleModCmd();
|
||||
void handleWorkCmd();
|
||||
void handleWorkCmd();
|
||||
void handleDeviceCmd();
|
||||
|
||||
// 状态机生命周期方法
|
||||
virtual void entry() {
|
||||
@@ -104,7 +113,6 @@ public:
|
||||
void react(TaskStart const &) override;
|
||||
// void react(DeviceCmd const &) override;
|
||||
private:
|
||||
void handlePowerCommands();
|
||||
void handlePowerOn();
|
||||
};
|
||||
|
||||
|
||||
@@ -47,15 +47,15 @@ PowerManger::PowerManger()
|
||||
initControlCmd();
|
||||
|
||||
//初始化数据库
|
||||
string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
|
||||
m_db = new SQLiteDB(dbPath);
|
||||
m_db->createPowerDataTables();
|
||||
m_db->createStateTables();
|
||||
m_db->createDisCcuSysTables();
|
||||
m_db->createDriversTables(VAR_TO_STR(m_currentDriverState));
|
||||
m_db->createDriversTables(VAR_TO_STR(m_subDisSysState));
|
||||
m_db->createDriversTables(VAR_TO_STR(m_subDisSysCmd));
|
||||
m_db->createDriversTables(VAR_TO_STR(m_MSDriverCmd));
|
||||
// string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
|
||||
// m_db = new SQLiteDB(dbPath);
|
||||
// m_db->createPowerDataTables();
|
||||
// m_db->createStateTables();
|
||||
// m_db->createDisCcuSysTables();
|
||||
// m_db->createDriversTables(VAR_TO_STR(m_currentDriverState));
|
||||
// m_db->createDriversTables(VAR_TO_STR(m_subDisSysState));
|
||||
// m_db->createDriversTables(VAR_TO_STR(m_subDisSysCmd));
|
||||
// m_db->createDriversTables(VAR_TO_STR(m_MSDriverCmd));
|
||||
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ PowerManger::PowerManger()
|
||||
|
||||
PowerManger::~PowerManger()
|
||||
{
|
||||
delete m_db;
|
||||
// delete m_db;
|
||||
delete m_lowerCommManager;
|
||||
}
|
||||
|
||||
@@ -241,14 +241,14 @@ bool PowerManger::FsmLoop()
|
||||
bool PowerManger::writeDataToDB()
|
||||
{
|
||||
//写入设备状态
|
||||
if(!m_db->insertDriverTables(m_currentDriverState,VAR_TO_STR(m_currentDriverState)))
|
||||
return false;
|
||||
if(!m_db->insertDriverTables(m_subDisSysState,VAR_TO_STR(m_subDisSysState)))
|
||||
return false;
|
||||
if(!m_db->insertDriverTables(m_subDisSysCmd,VAR_TO_STR(m_subDisSysCmd)))
|
||||
return false;
|
||||
if(!m_db->insertDriverTables(m_MSDriverCmd,VAR_TO_STR(m_MSDriverCmd)))
|
||||
return false;
|
||||
// if(!m_db->insertDriverTables(m_currentDriverState,VAR_TO_STR(m_currentDriverState)))
|
||||
// return false;
|
||||
// if(!m_db->insertDriverTables(m_subDisSysState,VAR_TO_STR(m_subDisSysState)))
|
||||
// return false;
|
||||
// if(!m_db->insertDriverTables(m_subDisSysCmd,VAR_TO_STR(m_subDisSysCmd)))
|
||||
// return false;
|
||||
// if(!m_db->insertDriverTables(m_MSDriverCmd,VAR_TO_STR(m_MSDriverCmd)))
|
||||
// return false;
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "udpComm.h"
|
||||
#include "pmSysvariable.h"
|
||||
#include "PowerManagerFsm.hpp"
|
||||
#include "SQLiteDB.h"
|
||||
// #include "SQLiteDB.h"
|
||||
#include "driver.h"
|
||||
#include "LowerCommManager.h"
|
||||
#include "UpperCommManager.h"
|
||||
@@ -63,7 +63,7 @@ class PowerManger : public AppCastingMOOSApp
|
||||
public:
|
||||
void updateTime(){m_current_time = MOOSTime();}
|
||||
//数据库
|
||||
SQLiteDB* m_db;
|
||||
// SQLiteDB* m_db;
|
||||
bool writeDataToDB();
|
||||
|
||||
/************************************************************/
|
||||
|
||||
@@ -27,9 +27,39 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson)
|
||||
}
|
||||
else if(key == DB_TO_PM_MISSION) {
|
||||
m_pm->m_missionState = getMission(key, strJson);
|
||||
//TODO:转移到对应工况下
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETOPCONDITION) {
|
||||
m_pm->m_msCmd.workCMD = getSetOpCondition(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETOPMODE) {
|
||||
m_pm->m_msCmd.modCMD = getSetOpMode(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETPMSYS) {
|
||||
m_pm->m_msCmd.powerCMD = getSetPMSys(key, strJson);
|
||||
MasterCommandEvent event;
|
||||
PowerManagerFsm::dispatch(event);
|
||||
return true;
|
||||
} else if(key == DB_TO_PM_SETDEVSWITCH) {
|
||||
DeviceSwitchCmd cmd;
|
||||
cmd = getSetDevSwitch(key, strJson);
|
||||
if (cmd.id < 0) {
|
||||
LOG_F(WARNING, "parse device switch error:%s", strJson.c_str());
|
||||
}
|
||||
else {
|
||||
DevCmdExt devCmdExt;
|
||||
devCmdExt.id = cmd.id;
|
||||
devCmdExt.cmd = cmd.cmd;
|
||||
PowerManagerFsm::dispatch(devCmdExt);
|
||||
}
|
||||
LOG_F(INFO, "set dev switch success");
|
||||
return true;
|
||||
}
|
||||
std::cout << "Unknown key: " << key << std::endl;
|
||||
LOG_F(WARNING, "Unknown key: %s", key.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -133,6 +163,101 @@ MissionState UpperCommManager::getMission(const std::string& key, const std::str
|
||||
return mission;
|
||||
}
|
||||
|
||||
int UpperCommManager::getSetOpCondition(const std::string& key, const std::string& msg)
|
||||
{
|
||||
Json::Value root;
|
||||
Json::CharReaderBuilder builder;
|
||||
JSONCPP_STRING errs;
|
||||
|
||||
// 解析JSON字符串
|
||||
std::istringstream stream(msg);
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 检查并读取操作条件
|
||||
if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
|
||||
return root["opCondition"].asUInt();
|
||||
LOG_F(INFO, "上位机指令:opCondition: %d", root["opCondition"].asUInt());
|
||||
} else {
|
||||
LOG_F(WARNING, "缺少或类型不匹配: opCondition");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int UpperCommManager::getSetOpMode(const std::string& key, const std::string& msg)
|
||||
{
|
||||
Json::Value root;
|
||||
Json::CharReaderBuilder builder;
|
||||
JSONCPP_STRING errs;
|
||||
|
||||
// 解析JSON字符串
|
||||
std::istringstream stream(msg);
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 检查并读取操作模式
|
||||
if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) {
|
||||
return root["state_uint8"].asUInt();
|
||||
} else {
|
||||
LOG_F(WARNING, "缺少或类型不匹配: opMode");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int UpperCommManager::getSetPMSys(const std::string& key, const std::string& msg)
|
||||
{
|
||||
Json::Value root;
|
||||
Json::CharReaderBuilder builder;
|
||||
JSONCPP_STRING errs;
|
||||
|
||||
// 解析JSON字符串
|
||||
std::istringstream stream(msg);
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
std::cerr << "JSON解析失败: " << errs << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 检查并读取电源系统设置
|
||||
if (root.isMember("powerCmd_uint8") && root["powerCmd_uint8"].isUInt()) {
|
||||
return root["powerCmd_uint8"].asUInt();
|
||||
} else {
|
||||
LOG_F(WARNING, "缺少或类型不匹配: powerCmd_uint8");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
DeviceSwitchCmd UpperCommManager::getSetDevSwitch(const std::string& key, const std::string& msg)
|
||||
{
|
||||
Json::Value root;
|
||||
Json::CharReaderBuilder builder;
|
||||
JSONCPP_STRING errs;
|
||||
DeviceSwitchCmd cmd;
|
||||
// 解析JSON字符串
|
||||
std::istringstream stream(msg);
|
||||
if (!Json::parseFromStream(builder, stream, &root, &errs)) {
|
||||
LOG_F(WARNING, "JSON解析失败: %s", errs.c_str());
|
||||
cmd.id = -1;
|
||||
}
|
||||
|
||||
// 检查并读取设备开关状态
|
||||
if (root.isMember("id_uint8") && root["id_uint8"].isUInt()) {
|
||||
cmd.id = root["id_uint8"].asUInt();
|
||||
} else {
|
||||
cmd.id = -1;
|
||||
LOG_F(WARNING, "缺少或类型不匹配: id_uint8");
|
||||
}
|
||||
if (root.isMember("cmd_uint8") && root["cmd_uint8"].isUInt()) {
|
||||
cmd.cmd = root["cmd_uint8"].asUInt();
|
||||
} else {
|
||||
LOG_F(WARNING, "缺少或类型不匹配: state_bool");
|
||||
}
|
||||
return cmd;
|
||||
}
|
||||
|
||||
const std::string UpperCommManager::getCurrentEquState(DriverTable& driver)
|
||||
{
|
||||
return m_pm->m_driver.saveDriverTableToJson(&driver);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
using namespace std;
|
||||
#define VAR_TO_STR(var) #var
|
||||
//能源管理反馈的消息
|
||||
#define PM_TO_DB_STATE "uPower_pmState_st"
|
||||
#define PM_TO_DB_STATE "uPower_pmState_fb"
|
||||
#define PM_TO_DB_CURRENTSTATE "uPower_currentState_st"
|
||||
#define PM_TO_DB_DISSTATE "uPower_disSysState_st"
|
||||
#define PM_TO_DB_LIBATSTATE "uPower_liBatState_st"
|
||||
@@ -29,6 +29,12 @@ using namespace std;
|
||||
#define DB_TO_PM_DEEPTH "uDevice_depth_st"
|
||||
#define DB_TO_PM_MISSION "uPlan_taskStart_cmd"
|
||||
|
||||
//外部通信消息
|
||||
#define DB_TO_PM_SETOPCONDITION "uExternComm_setOpCondition_cmd"
|
||||
#define DB_TO_PM_SETOPMODE "uExternComm_setOpMode_cmd"
|
||||
#define DB_TO_PM_SETPMSYS "uExternComm_setPowerSystem_cmd"
|
||||
#define DB_TO_PM_SETDEVSWITCH "uExternComm_setDeviceSwitch_cmd"
|
||||
|
||||
class PowerManger; // 前向声明
|
||||
|
||||
class UpperCommManager {
|
||||
@@ -51,7 +57,11 @@ public:
|
||||
const DriverTable getSubDisState(const std::string& key, const std::string& msg);
|
||||
const int getDeepth(const std::string& key, const std::string& msg);
|
||||
MissionState getMission(const std::string& key, const std::string& msg);
|
||||
|
||||
// 处理外部通信消息
|
||||
int getSetOpCondition(const std::string& key, const std::string& msg);
|
||||
int getSetOpMode(const std::string& key, const std::string& msg);
|
||||
int getSetPMSys(const std::string& key, const std::string& msg);
|
||||
DeviceSwitchCmd getSetDevSwitch(const std::string& key, const std::string& msg);
|
||||
|
||||
const std::string getCurrentEquState(DriverTable& driver);
|
||||
const std::string getSubDisCmd(DriverTable& driver);
|
||||
@@ -59,6 +69,7 @@ public:
|
||||
string getTypeName(const string typeName);
|
||||
bool saveStringToJsonFile(const string &strJson, const string &filePath);
|
||||
|
||||
|
||||
private:
|
||||
PowerManger* m_pm;
|
||||
MSControlCmd m_msCmd;
|
||||
|
||||
@@ -18,43 +18,6 @@ void Driver::setDebug(bool debug)
|
||||
{
|
||||
this->debug = debug;
|
||||
}
|
||||
int Driver::getDriverTable(workCondition condition, DriverTable* driverTable)
|
||||
{
|
||||
switch (condition)
|
||||
{
|
||||
case STANDBY:
|
||||
|
||||
break;
|
||||
|
||||
case SHORE_BASED_READY:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
case WATER_BASED_READY:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
case CRUISE_MODE:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
case HIGH_SPEED_MODE:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
case ASCEND_DESCEND:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
case BUOYANCY_ADJUST:
|
||||
/* code */
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Driver::getSTANDBYTable(DriverTable* driverTable)
|
||||
{
|
||||
|
||||
@@ -80,29 +80,6 @@ struct DriverTable
|
||||
unsigned char buoyage;
|
||||
};
|
||||
|
||||
enum DriverState
|
||||
{
|
||||
POWER_OFF, // 断电
|
||||
FULL_POWER_ON, // 全电
|
||||
INSTRUMENT_POWER_ON, // 仪表电上电
|
||||
MOTIVE_POWER_ON, // 动力电上电
|
||||
};
|
||||
|
||||
enum workCondition
|
||||
{
|
||||
STANDBY, // 待机工况
|
||||
SHORE_BASED_READY, // 岸基备航
|
||||
WATER_BASED_READY, // 水中备航
|
||||
CRUISE_MODE, // 巡航模式
|
||||
HIGH_SPEED_MODE, // 高速模式
|
||||
ASCEND_DESCEND, // 上浮下潜
|
||||
BUOYANCY_ADJUST, // 浮调模式
|
||||
UNDERWATER_RECON, // 水下侦查
|
||||
SURFACE_RECON, // 水面侦查
|
||||
DJ_MODE, // DJ模式
|
||||
DEBUG_MODE // 调试模式
|
||||
};
|
||||
|
||||
class Driver
|
||||
{
|
||||
public:
|
||||
@@ -114,7 +91,10 @@ public:
|
||||
DriverTable* currentDriverTable;
|
||||
DriverTable* nextDriverTable;
|
||||
|
||||
int getDriverTable(workCondition condition, DriverTable* driverTable);
|
||||
//操作函数,操作指定设备
|
||||
//TODO: 增加设备操作函数
|
||||
// void setDriverTable(DriverTable* driverTable, ,DriverCmd::Type cmd);
|
||||
|
||||
|
||||
void getSTANDBYTable(DriverTable* driverTable);
|
||||
void getSHORE_BASED_READYable(DriverTable* driverTable);
|
||||
@@ -126,6 +106,8 @@ public:
|
||||
void getUNDERWATER_RECONable(DriverTable* driverTable);
|
||||
void getSURFACE_RECONable(DriverTable* driverTable);
|
||||
void getDJ_MODEable(DriverTable* driverTable);
|
||||
|
||||
// void setDriverTable(DriverTable* driverTable, );
|
||||
|
||||
std::string getDriverTableJson();
|
||||
std::string getSubDisCmdJson(const DriverTable* driverTable);
|
||||
@@ -135,7 +117,7 @@ public:
|
||||
int loadDriverTableFromJson(const std::string &strJson, DriverTable& table);
|
||||
|
||||
int SafeReadUInt(const Json::Value& root, const std::string& key, unsigned char& value);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
bool debug;
|
||||
|
||||
@@ -437,14 +437,7 @@ namespace WorkCondition {
|
||||
DEBUG_MODE = 12 // 调试模式
|
||||
};
|
||||
};
|
||||
// 抛载 throwLoad
|
||||
// 运动上浮 floatUp
|
||||
// 回收 recycle
|
||||
// 悬停 hover
|
||||
// 上浮通信 satComm
|
||||
// 上浮校准 satCalibrate
|
||||
// 游曳 tour
|
||||
// 航行 sail
|
||||
|
||||
namespace TaskType {
|
||||
enum Type : unsigned char {
|
||||
THROW_LOAD = 1, // 抛载
|
||||
@@ -487,6 +480,22 @@ namespace TaskType {
|
||||
}
|
||||
}
|
||||
|
||||
namespace DriverCmd {
|
||||
enum Type : unsigned char {
|
||||
OFF = 0, //断电
|
||||
ON = 1, //上电
|
||||
//仪表电上电
|
||||
METER_ON = 2,
|
||||
//动力电上电
|
||||
POWER_ON = 3,
|
||||
//仪表电断电
|
||||
METER_OFF = 4,
|
||||
//动力电断电
|
||||
POWER_OFF = 5,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
struct MissionState
|
||||
{
|
||||
int type;
|
||||
@@ -494,5 +503,11 @@ struct MissionState
|
||||
bool enableBuoyancyAdjustment;
|
||||
};
|
||||
|
||||
struct DeviceSwitchCmd
|
||||
{
|
||||
int id;
|
||||
int cmd;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user