-
Notifications
You must be signed in to change notification settings - Fork 120
Consumertask ex2
Bouchkouj edited this page Sep 10, 2013
·
6 revisions
#include <DUNE/DUNE.hpp>
namespace Workshop
{
namespace TempCons
{
using DUNE_NAMESPACES;
struct Task: public DUNE::Tasks::Task
{
// Parameters.
std::string m_trg_prod;
Task(const std::string& name, Tasks::Context& ctx):
DUNE::Tasks::Task(name, ctx)
{
param("Target Producer", m_trg_prod)
.description("Target producer to read from")
.defaultValue("Producer5");
bind<IMC::Temperature>(this);
}
void
consume(const IMC::Temperature* msg)
{
//if (m_trg_prod == msg.get(SourceEntity))
if (m_trg_prod == resolveEntity(msg->getSourceEntity()))
{
inf("Source (DUNE instance) ID is: %d", msg->getSource());
inf("Source entity (Task instance) ID is: %d", msg->getSourceEntity());
inf("Temperature is %f, from %s", msg->value, resolveEntity(msg->getSourceEntity()).c_str());
}
}
void
onMain(void)
{
while (!stopping())
{
waitForMessages(1.0);
}
}
};
}
}
[Example2 main page] (https://github.com/LSTS/dune/wiki/Example2)
[Next section: Producer and Consumer Task interaction] (https://github.com/LSTS/dune/wiki/Producer-and-consumer-task-interaction-ex2)