User Manual, Developers Guide and API Documentation

Component.cpp

Go to the documentation of this file.
00001 /******************************************************************************
00002  * Glue                                                                       *
00003  * __________________________________________________________________________ *
00004  *                                                                            *
00005  * Copyright (C) 2005-2006                                                    *
00006  * Lehrstuhl fuer Kommunikationsnetze (ComNets)                               *
00007  * Kopernikusstr. 16, D-52074 Aachen, Germany                                 *
00008  * phone: ++49-241-80-27910 (phone), fax: ++49-241-80-22242                   *
00009  * email: wns@comnets.rwth-aachen.de                                          *
00010  * www: http://wns.comnets.rwth-aachen.de                                     *
00011  ******************************************************************************/
00012 
00013 #include <GLUE/Component.hpp>
00014 #include <GLUE/convergence/Upper.hpp>
00015 #include <GLUE/convergence/Lower.hpp>
00016 
00017 #include <WNS/service/dll/Handler.hpp>
00018 
00019 #include <WNS/ldk/fun/Main.hpp>
00020 #include <WNS/ldk/utils.hpp>
00021 
00022 #include <WNS/pyconfig/Parser.hpp>
00023 #include <WNS/Exception.hpp>
00024 
00025 #include <boost/bind.hpp>
00026 
00027 #include <sstream>
00028 
00029 using namespace glue;
00030 
00031 STATIC_FACTORY_REGISTER_WITH_CREATOR(
00032     Component,
00033     wns::node::component::Interface,
00034     "glue.Component",
00035     wns::node::component::ConfigCreator
00036     );
00037 
00038 Component::Component(
00039     wns::node::Interface* _node,
00040     const wns::pyconfig::View& _config) :
00041 
00042     wns::node::component::Component(_node, _config),
00043     fun(NULL),
00044     config(_config),
00045     unicastUpperConvergence(NULL),
00046     broadcastUpperConvergence(NULL),
00047     lowerConvergence(NULL),
00048     sourceMACAddress(wns::service::dll::UnicastAddress(config.get<int>("address"))),
00049     stationType_(StationTypes::fromString(config.get<std::string>("stationType"))),
00050     logger(config.get<wns::pyconfig::View>("logger"))
00051 {
00052 } // Component
00053 
00054 void
00055 Component::doStartup()
00056 {
00057     // build FUN
00058     fun = new wns::ldk::fun::Main(this);
00059     wns::ldk::configureFUN(fun, config.get<wns::pyconfig::View>("fun"));
00060 
00061     // configure upper convergence (services, MAC address)
00062     unicastUpperConvergence =
00063         dynamic_cast<convergence::UnicastUpper*>(
00064             fun->getFunctionalUnit(
00065                 config.get<std::string>("unicastUpperConvergence.commandName")));
00066     unicastUpperConvergence->setMACAddress(sourceMACAddress);
00067 
00068     broadcastUpperConvergence =
00069         dynamic_cast<convergence::BroadcastUpper*>(
00070             fun->getFunctionalUnit(
00071                 config.get<std::string>("broadcastUpperConvergence.commandName")));
00072     broadcastUpperConvergence->setMACAddress(sourceMACAddress);
00073 
00074     // register services
00075     addService(getConfig().get<std::string>("unicastDataTransmission"), unicastUpperConvergence);
00076     addService(getConfig().get<std::string>("unicastNotification"), unicastUpperConvergence);
00077     addService(getConfig().get<std::string>("broadcastDataTransmission"), broadcastUpperConvergence);
00078     addService(getConfig().get<std::string>("broadcastNotification"), broadcastUpperConvergence);
00079 
00080     // configure lower convergence (services, MAC address)
00081     lowerConvergence =
00082         dynamic_cast<convergence::Lower*>(
00083             fun->getFunctionalUnit(
00084                 config.get<std::string>("lowerConvergence.commandName")));
00085     lowerConvergence->setMACAddress(sourceMACAddress);
00086 }
00087 
00088 Component::~Component()
00089 {
00090     delete fun;
00091 } // ~Component
00092 
00093 void
00094 Component::onNodeCreated()
00095 {
00096     MESSAGE_BEGIN(NORMAL, logger, m, fun->getName());
00097     m << ": onNodeCreated(), setting phyiscal layer";
00098     MESSAGE_END();
00099 
00100     // set services in lower convergence to communicate with lower layer
00101     lowerConvergence->setDataTransmissionService(
00102         getService<wns::service::Service*>(
00103             getConfig().get<std::string>("phyDataTransmission")));
00104 
00105     lowerConvergence->setNotificationService(
00106         getService<wns::service::Service*>(
00107             getConfig().get<std::string>("phyNotification")));
00108 } // onNodeCreated
00109 
00110 void
00111 Component::onWorldCreated()
00112 {
00113     fun->onFUNCreated();
00114 } // onWorldCreated
00115 
00116 void
00117 Component::onShutdown()
00118 {
00119 } // onShutdown
00120 
00121 

Generated on Sun May 27 03:31:49 2012 for openWNS by  doxygen 1.5.5