Commit c6e10767 authored by garciay's avatar garciay
Browse files

Review IVIM, MAPEM/SPATEM and SREM/SSEM

parent 2a7cd655
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@

#include "UpperTesterTypes.hh"

#include "CAMCodec.hh"
#include "IVIMCodec.hh"

template <typename T_type> class OPTIONAL;
class TTCN_EncDec;
+3 −1
Original line number Diff line number Diff line
@@ -24,7 +24,9 @@ class UpperTesterIvimCodec: public Codec <
  const unsigned char c_utIvimInitializeResult = 0x01;
  const unsigned char c_utIvimTrigger = 0xA4;
  const unsigned char c_utIvimTriggerResult = 0xA5;
  const unsigned char c_utIvimEventInd = 0xA6;
  const unsigned char c_utIvimTerminate = 0xA8;
  const unsigned char c_utIvimTerminateResult = 0xA9;
  const unsigned char c_utIvimEventInd = 0xAA;

  int encode_ (const Base_Type& type, const TTCN_Typedescriptor_t& field_descriptor, TTCN_Buffer& encoding_buffer);

+28 −0
Original line number Diff line number Diff line
/*!
 * \file      UpperTesterIvimFactory.hh
 * \brief     Header file for ITS IVIM Upper Tester protocol layer factory.
 * \author    ETSI STF525
 * \copyright ETSI Copyright Notification
 *            No part may be reproduced except as authorized by written permission.
 *            The copyright and the foregoing restriction extend to reproduction in all media.
 *            All rights reserved.
 * \version   0.1
 */
#pragma once

#include "LayerStackBuilder.hh"

#include "UpperTesterIvimLayer.hh"

class UpperTesterIvimFactory : public LayerFactory {
  static UpperTesterIvimFactory _f;
public:
  UpperTesterIvimFactory() {
    // Register factory
    loggers::get_instance().log(">>> UpperTesterIvimFactory::UpperTesterIvimFactory");
    LayerStackBuilder::RegisterLayerFactory("UT_IVIM", this);
  };
  inline virtual Layer * createLayer(const std::string& p_type, const std::string& p_param){
    return new UpperTesterIvimLayer(p_type, p_param);
  };
}; // End of class UpperTesterIvimFactory
+62 −0
Original line number Diff line number Diff line
#include "UpperTesterIvimFactory.hh"

#include "UpperTesterTypes.hh"

#include "loggers.hh"

UpperTesterIvimLayer::UpperTesterIvimLayer(const std::string & p_type, const std::string & param) : TLayer<LibItsIvim__TestSystem::UpperTesterPort>(p_type), _params(), _codec() {
  loggers::get_instance().log(">>> UpperTesterIvimLayer::UpperTesterIvimLayer: %s, %s", to_string().c_str(), param.c_str());
  // Setup parameters
  Params::convert(_params, param);
}

void UpperTesterIvimLayer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize& send_par, Params& params){
  loggers::get_instance().log_msg(">>> UpperTesterIvimLayer::sendMsg", send_par);

  // Encode UpperTester PDU
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  sendData(data, params);
}

void UpperTesterIvimLayer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimChangePosition& send_par, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterIvimLayer::sendMsg", send_par);

  // Encode UpperTester PDU
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  sendData(data, params);
}

void UpperTesterIvimLayer::sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger& send_par, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterIvimLayer::sendMsg", send_par);

  // Encode UpperTester PDU
  OCTETSTRING data;
  _codec.encode(send_par, data);
  // Update parameters
  sendData(data, params);
}

void UpperTesterIvimLayer::sendData(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log_msg(">>> UpperTesterIvimLayer::sendData: ", data);
  //params.log();
  sendToAllLayers(data, params);
}

void UpperTesterIvimLayer::receiveData(OCTETSTRING& data, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterIvimLayer::receiveData: ", data);
 
  std::unique_ptr<Base_Type> r = _codec.decode(data);
  if (r.get() != nullptr) {
    // Pass it to the ports if amy
    toAllUpperPorts(*r, params);
  }
}

UpperTesterIvimFactory UpperTesterIvimFactory::_f;
+34 −0
Original line number Diff line number Diff line
#ifndef UpperTesterIvim_LAYER_H
#define UpperTesterIvim_LAYER_H

#include "TLayer.hh"
#include "UpperTesterIvimCodec.hh"

namespace LibItsIvim__TestSystem {
  class UpperTesterPort;
}

namespace LibItsIvim__TypesAndValues {
  class UtIvimInitialize;
  class UtIvimChangePosition;
  class UtIvimTrigger;
}

class UpperTesterIvimLayer : public TLayer<LibItsIvim__TestSystem::UpperTesterPort> {
  Params _params;
  UpperTesterIvimCodec _codec;
  
public:
  UpperTesterIvimLayer() : TLayer<LibItsIvim__TestSystem::UpperTesterPort>(), _params(), _codec() {};
  UpperTesterIvimLayer(const std::string & p_type, const std::string & param);
  virtual ~UpperTesterIvimLayer() {};

  void sendMsg(const LibItsIvim__TypesAndValues::UtIvimInitialize& send_par, Params& params);
  void sendMsg(const LibItsIvim__TypesAndValues::UtIvimChangePosition& send_par, Params& params);
  void sendMsg(const LibItsIvim__TypesAndValues::UtIvimTrigger& send_par, Params& params);
  
  virtual void sendData(OCTETSTRING& data, Params& params);
  virtual void receiveData(OCTETSTRING& data, Params& info);
};

#endif
Loading