Commit a20dc87d authored by garciay's avatar garciay
Browse files

Layers ongoing

parent 26db76eb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -9,7 +9,9 @@
#include "loggers.hh"

class OCTETSTRING;
class BITSTRING;
class CHARSTRING;
class INTEGER;

class Layer {
  std::vector<Layer*> upperLayers;
+7 −0
Original line number Diff line number Diff line
#pragma once

#include <vector>
#include <map>

class Params : public std::map<std::string, std::string> {
public:
  static const std::string& mac_src;
  static const std::string& mac_dst;
  static const std::string& ssp;
  static const std::string& its_aid;
  static const std::vector<unsigned char>& mac_address;
  
  Params() : std::map<std::string, std::string>() {};
  Params(const Params& p_params) : std::map<std::string, std::string>(p_params.begin(), p_params.end()) {};
  
+6 −0
Original line number Diff line number Diff line
@@ -4,6 +4,12 @@
#include "Params.hh"
#include "loggers.hh"

const std::string& Params::mac_src = std::string("mac_src");
const std::string& Params::mac_dst = std::string("mac_dst");
const std::string& Params::its_aid = std::string("its_aid");
const std::string& Params::ssp = std::string("ssp");
const std::vector<unsigned char>& Params::mac_address({0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF});

void Params::convert(Params& p_param, const std::string p_parameters) {
    //loggers::get_instance().log(">>> Params::convert: '%s'", p_parameters.c_str());
    // Sanity checks
+56 −33
Original line number Diff line number Diff line
@@ -8,21 +8,26 @@
// add your member functions here.

#include "BtpPort.hh"
#include "BTPLayer.hh"
#include "loggers.hh"

namespace LibItsBtp__TestSystem {

  BtpPort::BtpPort(const char *par_port_name) :
		BtpPort_BASE(par_port_name) {
    BtpPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(NULL), _time_key("BtpPort::outgoing_send") {

  }

  BtpPort::~BtpPort() {

    if (_layer != NULL) {
      delete _layer;
    }

void BtpPort::set_parameter(const char * /*parameter_name*/,
		const char * /*parameter_value*/) {
  }

  void BtpPort::set_parameter(const char * parameter_name, const char * parameter_value) {
    loggers::get_instance().log("BtpPort::set_parameter: %s=%s", parameter_name, parameter_value);
    _cfg_params.insert(std::pair<std::string, std::string>(std::string(parameter_name), std::string(parameter_value)));
  }

  /*void BtpPort::Handle_Fd_Event(int fd, boolean is_readable,
@@ -42,12 +47,23 @@ void BtpPort::Handle_Fd_Event_Readable(int /*fd*/) {

  /*void BtpPort::Handle_Timeout(double time_since_last_call) {}*/

void BtpPort::user_map(const char * /*system_port*/) {

  void BtpPort::user_map(const char * system_port) {
    loggers::get_instance().log(">>> BtpPort::user_map: %s", system_port);
    // Build layer stack
    std::map<std::string, std::string>::iterator it = _cfg_params.find(std::string("params"));
    if (it != _cfg_params.end()) {
      //loggers::get_instance().log("BtpPort::user_map: %s", it->second.c_str());
      _layer = LayerStackBuilder::GetInstance()->createLayerStack(it->second.c_str());
      dynamic_cast<BTPLayer *>(_layer)->addUpperPort(this);
    }
  }

void BtpPort::user_unmap(const char * /*system_port*/) {

  void BtpPort::user_unmap(const char * system_port) {
    loggers::get_instance().log(">>> BtpPort::user_unmap: %s", system_port);
    if (_layer != NULL) {
      delete _layer;
      _layer = NULL;
    }
  }

  void BtpPort::user_start() {
@@ -58,12 +74,19 @@ void BtpPort::user_stop() {

  }

void BtpPort::outgoing_send(const BtpReq& /*send_par*/) {
  void BtpPort::outgoing_send(const BtpReq& send_par) {
    loggers::get_instance().log_msg(">>> BtpPort::outgoing_send: payload=", send_par);
    
    float duration;
    loggers::get_instance().set_start_time(_time_key);
    dynamic_cast<BTPLayer *>(_layer)->sendMsg(send_par, _layer_params);
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

void BtpPort::receiveMsg(const LibItsBtp__TypesAndValues::BtpPacket&, const Params&) {
  void BtpPort::receiveMsg(const LibItsBtp__TestSystem::BtpInd& p_ind, const Params& p_params) {
    loggers::get_instance().log_msg(">>> BtpPort::receive_msg: ", p_ind);

    incoming_message(p_ind);
  }

} /* end of namespace */
+32 −28
Original line number Diff line number Diff line
@@ -12,12 +12,16 @@

#include "LibItsBtp_TestSystem.hh"

#include "BTPLayer.hh"
#include "Layer.hh"
#include "Params.hh"

namespace LibItsBtp__TestSystem {

  class BtpPort : public BtpPort_BASE {
	BTPLayer * layer;
    Params _cfg_params;
    Params _layer_params;
    Layer * _layer;
    std::string _time_key;
  public:
    BtpPort(const char *par_port_name = NULL);
    ~BtpPort();
@@ -25,7 +29,7 @@ public:
    void set_parameter(const char *parameter_name,
		       const char *parameter_value);

	void receiveMsg (const LibItsBtp__TypesAndValues::BtpPacket&, const Params&);
    void receiveMsg (const LibItsBtp__TestSystem::BtpInd&, const Params&);

  private:
    /* void Handle_Fd_Event(int fd, boolean is_readable,
Loading