void SoarManager::handleOutput(string attName, WMElement* wme){ if(!wme->IsJustAdded() || !wme->IsIdentifier()){ return; } SoarDevice* dev = 0; Identifier* id = wme->ConvertToIdentifier(); string att = string(attName); //cout << "ATT: " << att << endl; if(att == "brick"){ dev = brick; } else if(att == "motor"){ string port; if(WMUtil::getValue(id, "port", port)){ int portNum = port[0] - 'A'; if(portNum >= 0 && portNum <= 4){ dev = motors[portNum]; } } } else if(att == "sensor"){ int port; if(WMUtil::getValue(id, "port", port)){ if(port >= 1 && port <= 4){ dev = inputs[port-1]; } } } else if(att == "manager"){ if(!this->readSoarCommand(id)){ id->CreateStringWME("status", "error"); } } else { id->CreateStringWME("error", "Unrecognized command"); id->CreateStringWME("status", "error"); return; } if(dev){ if(!dev->readSoarCommand(id)){ id->CreateStringWME("status", "error"); } } }