chenluhua1980
2026-01-09 6e0341c6356cdb6e527fbd89d1dc876f4e47ce46
SourceCode/Bond/Servo/CMaster.cpp
@@ -1540,7 +1540,7 @@
            unlock();
         }
      };
      listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE state) -> void {
      listener.onProcessStateChanged = [&](void* pEquipment, int slotNo, PROCESS_STATE prevState, PROCESS_STATE state) -> void {
         ASSERT(1 <= slotNo && slotNo <= 8);
         int eqid = ((CEquipment*)pEquipment)->getID();
         CGlass* pGlass = ((CEquipment*)pEquipment)->getGlassFromSlot(slotNo);
@@ -1558,7 +1558,12 @@
         }
         if (m_listener.onProcessStateChanged != nullptr) {
            m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, state);
            m_listener.onProcessStateChanged(this, (CEquipment*)pEquipment, slotNo, prevState, state);
         }
      };
      listener.onProcessDataReport = [&](void* pEquipment, const std::vector<CParam>& params) {
         if (m_listener.onProcessDataReport != nullptr) {
            m_listener.onProcessDataReport(this, (CEquipment*)pEquipment, params);
         }
      };
      listener.onMapMismatch = [&](void* pEquipment, short scanMap, short downMap) {
@@ -1781,6 +1786,10 @@
            strOut.append(szBuffer);
         }
         LOGD("<CMaster-%s>SVDataReport:%s", ((CEquipment*)pEquipment)->getName().c_str(), strOut.c_str());
         if (m_listener.onSVDataReport != nullptr) {
            m_listener.onSVDataReport(this, (CEquipment*)pEquipment, params);
         }
      };
      listener.onPanelDataReport = [&](void* pEquipment, void* pContext) {
         LOGD("<CMaster-%s>onPanelDataReport", ((CEquipment*)pEquipment)->getName().c_str());
@@ -2082,8 +2091,8 @@
            static bool inited = false;
            static SERVO::CGlass simGlass;
            static SERVO::CVcrEventReport simVcr;
            static SERVO::CProcessJob simPj("SIM_PJ_001");
            static SERVO::CControlJob simCj("SIM_CJ_001");
            static SERVO::CProcessJob simPj("PJ1001");
            static SERVO::CControlJob simCj("CJ5007");
            if (!inited) {
               inited = true;
@@ -2115,8 +2124,9 @@
               }
            };
            auto fireProcessState = [&](SERVO::CEquipment* pEq, int slotNo, SERVO::PROCESS_STATE st) {
               if (m_listener.onProcessStateChanged != nullptr && pEq != nullptr) {
                  m_listener.onProcessStateChanged(this, pEq, slotNo, st);
               // Drive equipment state so listeners receive prev/current states consistently.
               if (pEq != nullptr) {
                  pEq->fireSetProcessState(slotNo, st);
               }
            };
@@ -2814,6 +2824,9 @@
      this->saveState();
      if (m_listener.onControlJobChanged) {
         m_listener.onControlJobChanged(this);
      }
      return (int)m_processJobs.size();
   }