From 2d69213b1b41b5b039e5dc6f6b7c55d53fd03037 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 13 五月 2025 09:34:04 +0800
Subject: [PATCH] Merge branch 'clh'

---
 SourceCode/Bond/Servo/CMaster.cpp |  114 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 96 insertions(+), 18 deletions(-)

diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 40f4705..6394380 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -24,7 +24,7 @@
 
 	CMaster::CMaster()
 	{
-		m_listener = {nullptr, nullptr, nullptr, nullptr};
+		m_listener = {nullptr, nullptr, nullptr, nullptr, nullptr};
 		m_bDataModify = FALSE;
 		m_hEventReadBitsThreadExit[0] = ::CreateEvent(NULL, TRUE, FALSE, NULL);
 		m_hEventReadBitsThreadExit[1] = ::CreateEvent(NULL, TRUE, FALSE, NULL);
@@ -56,6 +56,7 @@
 		m_listener.onEqCimStateChanged = listener.onEqCimStateChanged;
 		m_listener.onEqAlarm = listener.onEqAlarm;
 		m_listener.onEqVcrEventReport = listener.onEqVcrEventReport;
+		m_listener.onEqDataChanged = listener.onEqDataChanged;
 	}
 
 	int CMaster::init()
@@ -91,24 +92,63 @@
 
 		// 初始化添加各子设备
 		CLoadPort* pPort1, * pPort2, * pPort3, * pPort4;
+		CBonder* pBonder1, * pBonder2;
 		CEFEM* pEfem;
+		CArm* pArm;
+		CArmTray* pArmTray1, * pArmTray2;
+		CFliper* pFliper;
+		CVacuumBake* pVacuumBake;
+		CAligner* pAligner;
+		CBakeCooling* pBakeCooling;
+
 		pPort1 = addLoadPort(0);
 		pPort2 = addLoadPort(1);
 		pPort3 = addLoadPort(2);
 		pPort4 = addLoadPort(3);
 		pEfem = addEFEM();
+		pArm = addArm();
+		pArmTray1 = addArmTray(0);
+		pArmTray2 = addArmTray(1);
+		pFliper = addFliper();
+		pVacuumBake = addVacuumBake();
+		pAligner = addAligner();
+		pBonder1 = addBonder(0);
+		pBonder2 = addBonder(1);
+		pBakeCooling = addBakeCooling();
+
+		ASSERT(pEfem);
+		ASSERT(pFliper);
+		ASSERT(pVacuumBake);
+		ASSERT(pAligner);
+		ASSERT(pBonder1);
+		ASSERT(pBonder2);
+		ASSERT(pBakeCooling);
+
 		pEfem->setPort(0, pPort1);
 		pEfem->setPort(1, pPort1);
 		pEfem->setPort(2, pPort1);
 		pEfem->setPort(3, pPort1);
+		pEfem->setFliper(pFliper);
+		pEfem->setAligner(pAligner);
+		pEfem->setArmTray(0, pArmTray1);
+		pEfem->setArmTray(1, pArmTray2);
+		pPort1->setArm(pArm);
+		pPort2->setArm(pArm);
+		pPort3->setArm(pArm);
+		pPort4->setArm(pArm);
+		pArmTray1->setArm(pArm);
+		pArmTray2->setArm(pArm);
+		pFliper->setArm(pArm);
+		pVacuumBake->setArm(pArm);
+		pAligner->setArm(pArm);
+		pBonder1->setArm(pArm);
+		pBonder2->setArm(pArm);
+		pBakeCooling->setArm(pArm);
 
-		addFliper();
-		addVacuumBake();
-		addAligner();
-		addBonder(0);
-		addBonder(1);
-		addBakeCooling();
 		connectEquipments();
+
+
+
 
 		
 		// 读缓存数据
@@ -206,6 +246,10 @@
 		};
 		listener.onDataChanged = [&](void* pEquipment, int code) -> void {
 			m_bDataModify = TRUE;
+			CEquipment* p = (CEquipment*)pEquipment;
+			if (m_listener.onEqDataChanged != nullptr) {
+				m_listener.onEqDataChanged(this, p, 0);
+			}
 		};
 
 		pEquipment->setListener(listener);
@@ -255,7 +299,7 @@
 		return pEquipment;
 	}
 
-	int CMaster::addFliper()
+	CFliper* CMaster::addFliper()
 	{
 		CFliper* pEquipment = new CFliper();
 		pEquipment->setID(EQ_ID_FLIPER);
@@ -269,10 +313,10 @@
 
 		pEquipment->init();
 		LOGE("已添加“Fliper”.");
-		return 0;
+		return pEquipment;
 	}
 
-	int CMaster::addVacuumBake()
+	CVacuumBake* CMaster::addVacuumBake()
 	{
 		CVacuumBake* pEquipment = new CVacuumBake();
 		pEquipment->setID(EQ_ID_VACUUMBAKE);
@@ -286,10 +330,11 @@
 
 		pEquipment->init();
 		LOGE("已添加“VacuumBake”.");
-		return 0;
+
+		return pEquipment;
 	}
 
-	int CMaster::addAligner()
+	CAligner* CMaster::addAligner()
 	{
 		CAligner* pEquipment = new CAligner();
 		pEquipment->setID(EQ_ID_ALIGNER);
@@ -303,7 +348,8 @@
 
 		pEquipment->init();
 		LOGE("已添加“Aligner”.");
-		return 0;
+
+		return pEquipment;
 	}
 
 	CEFEM* CMaster::addEFEM()
@@ -324,11 +370,43 @@
 		return pEquipment;
 	}
 
+	CArm* CMaster::addArm()
+	{
+		CArm* pEquipment = new CArm();
+		pEquipment->setID(EQ_ID_ARM);
+		pEquipment->setBaseAlarmId(BASE_ALARM_EFEM);
+		pEquipment->setName("ARM");
+		pEquipment->setDescription("ARM.");
+		addToEquipmentList(pEquipment);
+
+
+		pEquipment->init();
+		LOGE("已添加“ARM”.");
+
+		return pEquipment;
+	}
+
+	CArmTray* CMaster::addArmTray(int index)
+	{
+		CArmTray* pEquipment = new CArmTray();
+		pEquipment->setID(index == 0 ? EQ_ID_ARM_TRAY1 : EQ_ID_ARM_TRAY2);
+		pEquipment->setBaseAlarmId(BASE_ALARM_EFEM);
+		pEquipment->setName(index == 0 ? "Arm Tray1" : "Arm Tray2");
+		pEquipment->setDescription(index == 0 ? "Arm Tray1." : "Arm Tray2.");
+		addToEquipmentList(pEquipment);
+
+
+		pEquipment->init();
+		LOGE("已添加“%s”.", pEquipment->getName().c_str());
+
+		return pEquipment;
+	}
+
 	/* 添加bonder1 或 bonder2 
 	 * index -- 0, bonder1
 	 * index -- 1, bonder2
 	 */
-	int CMaster::addBonder(int index)
+	CBonder* CMaster::addBonder(int index)
 	{
 		ASSERT(index == 0 || index == 1);
 		CBonder* pEquipment = new CBonder();
@@ -346,10 +424,10 @@
 		LOGE("已添加“%s”.", pEquipment->getName().c_str());
 
 
-		return 0;
+		return pEquipment;
 	}
 
-	int CMaster::addBakeCooling()
+	CBakeCooling* CMaster::addBakeCooling()
 	{
 		CBakeCooling* pEquipment = new CBakeCooling();
 		pEquipment->setID(EQ_ID_BAKE_COOLING);
@@ -360,10 +438,10 @@
 		pEquipment->setStation(0, 255);
 		addToEquipmentList(pEquipment);
 
-
 		pEquipment->init();
 		LOGE("已添加“Aligner”.");
-		return 0;
+
+		return pEquipment;
 	}
 
 	void CMaster::onTimer(UINT nTimerid)

--
Gitblit v1.9.3