#include "BTPLayer.hh" #include "BTPTypes.hh" #include "loggers.hh" BTPLayer::BTPLayer(const std::string & p_type, const std::string & param) : TLayer(p_type), _params(), _codec() { loggers::get_instance().log(">>> BTPLayer::BTPLayer: %s, %s", to_string().c_str(), param.c_str()); // Setup parameters Params::convert(_params, param); } void BTPLayer::sendMsg(const LibItsBtp__TestSystem::BtpReq& p, const Params& params){ loggers::get_instance().log(">>> BTPLayer::sendMsg"); // Encode BTP PDU OCTETSTRING data; _codec.encode(p.msgOut(), data); // Update parameters Params par(params); // FIXME Review all const Param& in method declarations sendData(data, par); } void BTPLayer::sendData(OCTETSTRING& data, Params& params) { loggers::get_instance().log_msg(">>> BTPLayer::sendData: ", data); params.log(); sendToAllLayers(data, params); } void BTPLayer::receiveData(OCTETSTRING& data, Params& params) { loggers::get_instance().log_msg(">>> BTPLayer::receiveData: ", data); // Decode the payload LibItsBtp__TestSystem::BtpInd p; _codec.decode(data, p.msgIn()); // Send it to the ports toAllUpperPorts(p, params); } class BTPFactory : public LayerFactory { static BTPFactory _f; public: BTPFactory(); virtual Layer * createLayer(const std::string & type, const std::string & param); }; BTPFactory::BTPFactory(){ // Register factory loggers::get_instance().log(">>> BTPFactory::BTPFactory"); LayerStackBuilder::RegisterLayerFactory("BTP", this); } Layer * BTPFactory::createLayer(const std::string & p_type, const std::string & param){ return new BTPLayer(p_type, param); } BTPFactory BTPFactory::_f;