chenluhua1980
2026-01-10 ded981a2ac5dbb456bafce5468d7289bc45e313b
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());
@@ -1800,6 +1809,11 @@
            }
         }
      };
      listener.onReceivedJob = [&](void* pEquipment, int port, CJobDataS* pJobDataS) {
         if (m_listener.onJobReceived != nullptr) {
            m_listener.onJobReceived(this, (CEquipment*)pEquipment, port, pJobDataS);
         }
      };
      pEquipment->setListener(listener);
      pEquipment->setCcLink(&m_cclink);
@@ -2115,8 +2129,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);
               }
            };