diff --git a/src/pPowerManger/PowerManager.h b/src/pPowerManger/PowerManager.h new file mode 100644 index 0000000..e69de29 diff --git a/src/pPowerManger/PowerManagerFsm.hpp b/src/pPowerManger/PowerManagerFsm.hpp index 5986ee0..024a236 100644 --- a/src/pPowerManger/PowerManagerFsm.hpp +++ b/src/pPowerManger/PowerManagerFsm.hpp @@ -1,15 +1,15 @@ #ifndef POWER_MANAGER_FSM_HPP #define POWER_MANAGER_FSM_HPP +#include "PowerManger.h" #include "tinyfsm.hpp" -// 前向声明 -class PowerManger; + // 定义事件类型 struct InitEvent : tinyfsm::Event { }; struct StandbyEvent : tinyfsm::Event { }; -struct FaultEvent : tinyfsm::Event { +struct FaultEvent : tinyfsm::Event { unsigned int faultCode; FaultEvent(unsigned int code) : faultCode(code) {} }; @@ -17,19 +17,14 @@ struct FaultEvent : tinyfsm::Event { // 定义状态机基类 class PowerManagerFsm : public tinyfsm::Fsm { protected: - static void* pm; + static PowerManger* pm; public: // 初始化状态机 - static void init(void* powerManager) { + static void init(PowerManger* powerManager) { pm = powerManager; } - // 类型安全转换接口 - static PowerManger* getPowerManager() { - return static_cast(pm); - } - // 响应事件默认实现 virtual void react(tinyfsm::Event const &) { } @@ -40,23 +35,23 @@ public: }; // 初始化静态成员 -void* PowerManagerFsm::pm = nullptr; +PowerManger* PowerManagerFsm::pm = nullptr; // 定义状态类 class InitState : public PowerManagerFsm { public: void entry() { - PowerManagerFsm::getPowerManager()->m_pmEvent = "初始化状态"; - PowerManagerFsm::getPowerManager()->printState("InitState", "进入初始化状态"); + PowerManagerFsm::pm->m_pmEvent = "初始化状态"; // 保持正确类名 + PowerManagerFsm::pm->printState("InitState", "进入初始化状态"); } void react(InitEvent const &) { // 1. 检查通信是否正常 - double StartTime = PowerManagerFsm::getPowerManager()->GetAppStartTime(); - while (PowerManagerFsm::getPowerManager()->connectState < 5) { + double StartTime = PowerManagerFsm::pm->GetAppStartTime(); + while (PowerManagerFsm::pm->connectState < 5) { MOOSPause(1000); - PowerManagerFsm::getPowerManager()->updateTime(); - double dft = abs(PowerManagerFsm::getPowerManager()->m_current_time - StartTime); + PowerManagerFsm::pm->updateTime(); + double dft = abs(PowerManagerFsm::pm->m_current_time - StartTime); if(dft > 10) { transit(); PowerManagerFsm::pm->m_faultNum = 1; @@ -67,9 +62,9 @@ public: } // 2. 检查复合管控器是否上报故障 - if(PowerManagerFsm::getPowerManager()->checkError() < 0) { + if(PowerManagerFsm::pm->checkError() < 0) { transit(); - PowerManagerFsm::getPowerManager()->m_faultNum = 2; + PowerManagerFsm::pm->m_faultNum = 2; return; } @@ -78,17 +73,17 @@ public: // 4. 判断关键断路器是否闭合 while (true) { - if(PowerManagerFsm::getPowerManager()->m_currentDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker == 1 || - PowerManagerFsm::getPowerManager()->m_currentDisBreakerState.bus4Breaker.unit5CircuitBreaker == 1 || - PowerManagerFsm::getPowerManager()->m_currentDisBreakerState.bus4Breaker.unit2CircuitBreaker == 1 || - PowerManagerFsm::getPowerManager()->m_currentDisBreakerState.bus4Breaker.unit3CircuitBreaker == 1 || - PowerManagerFsm::getPowerManager()->m_currentDisBreakerState.bus4Breaker.unit1CircuitBreaker == 1) { + if(PowerManagerFsm::pm->m_currentDisBreakerState.bus3Breaker.unit4InstrumentDC48VCircuitBreaker == 1 || + PowerManagerFsm::pm->m_currentDisBreakerState.bus4Breaker.unit5CircuitBreaker == 1 || + PowerManagerFsm::pm->m_currentDisBreakerState.bus4Breaker.unit2CircuitBreaker == 1 || + PowerManagerFsm::pm->m_currentDisBreakerState.bus4Breaker.unit3CircuitBreaker == 1 || + PowerManagerFsm::pm->m_currentDisBreakerState.bus4Breaker.unit1CircuitBreaker == 1) { transit(); return; } - PowerManagerFsm::getPowerManager()->m_pmEvent = "等待关键断路器闭合"; + PowerManagerFsm::pm->m_pmEvent = "等待关键断路器闭合"; MOOSPause(1000); - PowerManagerFsm::getPowerManager()->printState("InitState", PowerManagerFsm::getPowerManager()->m_pmEvent); + PowerManagerFsm::pm->printState("InitState", PowerManagerFsm::pm->m_pmEvent); } } }; @@ -96,8 +91,8 @@ public: class StandbyState : public PowerManagerFsm { public: void entry() { - PowerManagerFsm::getPowerManager()->m_stateData.note = "待机状态"; - PowerManagerFsm::getPowerManager()->printState("StandbyState", "进入待机状态"); + PowerManagerFsm::pm->m_stateData.note = "待机状态"; + PowerManagerFsm::pm->printState("StandbyState", "进入待机状态"); } void react(StandbyEvent const &) { @@ -134,7 +129,7 @@ private: class FaultState : public PowerManagerFsm { public: void entry() { - PowerManagerFsm::getPowerManager()->printState("FaultState", "进入故障状态"); + PowerManagerFsm::pm->printState("FaultState", "进入故障状态"); } void react(FaultEvent const & e) {