#include "stdafx.h" #include "CBonder.h" namespace SERVO { CBonder::CBonder() : CEquipment() { } CBonder::~CBonder() { } const char* CBonder::getClassName() { static char* pszName = "CBonder"; return pszName; } void CBonder::init() { CEquipment::init(); } void CBonder::term() { CEquipment::term(); } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯PinÁбí void CBonder::initPins() { // ¼ÓÈëPin³õʼ»¯´úÂë LOGI("initPins"); addPin(SERVO::PinType::INPUT, _T("In")); addPin(SERVO::PinType::OUTPUT, _T("Out")); } void CBonder::onTimer(UINT nTimerid) { CEquipment::onTimer(nTimerid); } void CBonder::serialize(CArchive& ar) { CEquipment::serialize(ar); } void CBonder::getAttributeVector(CAttributeVector& attrubutes) { __super::getAttributeVector(attrubutes); for (auto item : m_inputPins) { attrubutes.addAttribute(new CAttribute(item->getName().c_str(), std::to_string((int)item->getType()).c_str(), "")); } for (auto item : m_outputPins) { attrubutes.addAttribute(new CAttribute(item->getName().c_str(), std::to_string((int)item->getType()).c_str(), "")); } for (auto item : m_panelList) { attrubutes.addAttribute(new CAttribute("Panel", item->getID().c_str(), "")); } } int CBonder::recvIntent(CPin* pPin, CIntent* pIntent) { ASSERT(pPin); CPin* pFromPin = pPin->getConnectedPin(); ASSERT(pFromPin); CEquipment* pFromEq = pFromPin->getEquipment(); ASSERT(pFromEq); LOGI("<%s-%s>ÊÕµ½À´×Ô<%s.%s>µÄIntent<%d,%s,0x%x>", this->getName().c_str(), pPin->getName().c_str(), pFromEq->getName().c_str(), pFromPin->getName().c_str(), pIntent->getCode(), pIntent->getMsg(), pIntent->getContext()); // ÒÔϽâÊÍ´¦ÀíÊý¾Ý int code = pIntent->getCode(); // ²âÊÔ if (code == FLOW_TEST) { AfxMessageBox(pIntent->getMsg()); return FLOW_ACCEPT; } // ÐźŠif (code == FLOW_SIGNAL) { return FLOW_ACCEPT; } // Êý¾Ý if (code == FLOW_SIGNAL) { return FLOW_ACCEPT; } // ÎïÁÏ if (code == FLOW_MOVE_MATERIAL) { // Èç¹ûÎÒÕâÀïÊǿյģ¬¿ÉÒÔ½ÓÊÜ Lock(); if (m_panelList.size() < 15) { CPanel* pPanel = (CPanel*)pIntent->getContext(); ASSERT(pPanel); pPanel->addRef(); m_panelList.push_back(pPanel); Unlock(); return FLOW_ACCEPT; } else { Unlock(); return FLOW_REJECT; } } return FLOW_ACCEPT; } }