#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("<CBonder>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("<CBonder><%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;
|
}
|
}
|