#include "stdafx.h" #include "CArm.h" namespace SERVO { CArm::CArm() : CEquipment() { } CArm::~CArm() { } const char* CArm::getClassName() { static char* pszName = "CArm"; return pszName; } void CArm::init() { CEquipment::init(); } void CArm::term() { CEquipment::term(); } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯PinÁбí void CArm::initPins() { } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯SlotÐÅÏ¢ void CArm::initSlots() { m_slot[0].enable(); m_slot[0].setPosition(m_nID); m_slot[0].setNo(1); m_slot[0].setName("Slot 1(Temp)"); m_slot[1].enable(); m_slot[1].setPosition(m_nID); m_slot[1].setNo(2); m_slot[1].setName("Slot 2(Temp)"); } void CArm::onTimer(UINT nTimerid) { CEquipment::onTimer(nTimerid); } void CArm::serialize(CArchive& ar) { CEquipment::serialize(ar); } void CArm::getAttributeVector(CAttributeVector& attrubutes) { __super::getAttributeVector(attrubutes); } int CArm::recvIntent(CPin* pPin, CIntent* pIntent) { return __super::recvIntent(pPin, pIntent); } int CArm::tempStore(CGlass* pGlass) { // Ô­£º±£Ö¤ÁбíÖÐÖ»´æ´¢Ò»¸öÎïÁÏ // ÐÞ¸ÄΪ£ºÏÈÇå¿Õ֮ǰµÄ£¬ÔÙÌí¼Óµ±Ç°pGlass, Èç¹ûpGlassÓÐbuddy£¬Ò²Òª¼ÓÈëÁбíÖÐ Lock(); CGlass* pPreviousGlass; pPreviousGlass = (CGlass*)m_slot[0].getContext(); if (pPreviousGlass != nullptr) { pPreviousGlass->release(); } pPreviousGlass = (CGlass*)m_slot[1].getContext(); if (pPreviousGlass != nullptr) { pPreviousGlass->release(); } m_slot[0].setContext(pGlass); if (pGlass->getBuddy() != nullptr) { m_slot[1].setContext(pGlass->getBuddy()); } Unlock(); if (m_listener.onDataChanged != nullptr) { m_listener.onDataChanged(this, 0); } return 0; } int CArm::tempFetchOut(OUT CGlass*& pGlass) { Lock(); CGlass* pPreviousGlass = (CGlass*)m_slot[0].getContext(); if (pPreviousGlass == nullptr) { Unlock(); return -1; } pGlass = pPreviousGlass; pGlass->addRef(); m_slot[0].setContext(nullptr); Unlock(); if (m_listener.onDataChanged != nullptr) { m_listener.onDataChanged(this, 0); } return 0; } }