Index: ns-3.13/error-models.patch |
diff --git a/ns-3.13/error-models.patch b/ns-3.13/error-models.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6a8dfb95db95dda14c81ab5d49b6ad0d39f51e9c |
--- /dev/null |
+++ b/ns-3.13/error-models.patch |
@@ -0,0 +1,9576 @@ |
+diff -uprNB ns-3.13/scratch/error-model-test.cc b/scratch/error-model-test.cc |
+--- ns-3.13/scratch/error-model-test.cc 1970-01-01 01:00:00.000000000 +0100 |
++++ b/scratch/error-model-test.cc 2012-04-17 11:35:07.000000000 +0200 |
+@@ -0,0 +1,1047 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#include "ns3/core-module.h" |
++#include "ns3/mobility-module.h" |
++#include "ns3/applications-module.h" |
++ |
++#include "ns3/wifi-helper.h" |
++#include "ns3/yans-wifi-helper.h" |
++#include "ns3/inet-socket-address.h" |
++#include "ns3/internet-stack-helper.h" |
++#include "ns3/ipv4-address-helper.h" |
++#include "ns3/wifi-module.h" |
++#include "ns3/propagation-loss-model.h" |
++ |
++#include "ns3/aodv-routing-protocol.h" |
++ |
++#include "ns3/ar-model.h" |
++#include "ns3/hidden-markov-error-model.h" |
++ |
++#include "ns3/socket.h" |
++#include <ns3/node-list.h> |
++ |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++#include "ns3/udp-header.h" |
++ |
++#include <iostream> |
++#include <fstream> |
++#include <vector> |
++#include <string> |
++#include <stdio.h> |
++ |
++#include "scratch-logging.h" |
++//#include "experiment.h" |
++ |
++NS_LOG_COMPONENT_DEFINE("TcpErrorModelTest"); |
++ |
++using namespace std; |
++using namespace ns3; |
++ |
++std::string ConvertMacToString(Mac48Address mac); |
++std::string getcwd(); |
++ |
++enum ChannelMode_t { |
++ HIDDEN_MARKOV_ERROR_MODEL, |
++ BURSTY_ERROR_AUTO_REGRESSIVE_MODEL, |
++ NIST_ERROR_RATE_MODEL |
++}; |
++ |
++enum TransportProtocol_t { |
++ TCP_PROTOCOL, |
++ UDP_PROTOCOL |
++}; |
++ |
++class Experiment { |
++public: |
++ Experiment (); |
++ ~Experiment (); |
++ |
++ u_int32_t GetPacketCounter() const; |
++ void SetPacketCounter(u_int32_t packetCounter); |
++ u_int32_t GetPktsCorrect() const; |
++ void SetPktsCorrect(u_int32_t pktsCorrect); |
++ u_int32_t GetPktsReceived() const; |
++ void SetPktsReceived(u_int32_t pktsReceived); |
++ u_int32_t GetPktsTransmitted () const; |
++ |
++ void SetTransportProtocol (TransportProtocol_t protocol); |
++ TransportProtocol_t GetTransportProtocol () const; |
++ |
++ Ptr<Socket> SetupPacketReceive(Ptr<Node> node); |
++ void GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval); |
++ //Tracing |
++ void PhyRxOkTrace (std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble); |
++ void PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr); |
++ |
++ //BEAR Callback integration |
++ void HmmRxTrace (Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state); |
++ void BearRxTrace (Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading); |
++ |
++ //Upper Layer parser |
++ packetInfo_t ParsePacket (Ptr<const Packet> packet); |
++ |
++ void OpenTraceFile (string fileName, ChannelMode_t channelModel); |
++ void CloseTraceFile (); |
++ |
++ void TraceToFile (string line); |
++ |
++ |
++private: |
++ fstream m_file; |
++ |
++ void ReceivePacket(Ptr<Socket> socket); |
++ void SetPosition(Ptr<Node> node, Vector position); |
++ Vector GetPosition(Ptr<Node> node); |
++ u_int32_t m_pktsReceived; |
++ u_int32_t m_pktsCorrect; |
++ u_int32_t m_packetCounter; |
++ |
++ u_int32_t m_packetsTransmitted; |
++ |
++ TransportProtocol_t m_protocol; |
++}; |
++ |
++ |
++Experiment::Experiment(): m_pktsReceived (0), |
++ m_pktsCorrect (0), |
++ m_packetCounter (0), |
++ m_packetsTransmitted (0) |
++{} |
++ |
++Experiment::~Experiment() |
++{} |
++ |
++ |
++void Experiment::SetPosition(Ptr<Node> node, Vector position) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ mobility->SetPosition(position); |
++} |
++Vector Experiment::GetPosition(Ptr<Node> node) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ return mobility->GetPosition(); |
++} |
++void Experiment::ReceivePacket(Ptr<Socket> socket) { |
++ Ptr<Packet> packet; |
++ while (packet = socket->Recv()) { |
++ // m_pktsReceived++; |
++ } |
++} |
++ |
++Ptr<Socket> Experiment::SetupPacketReceive(Ptr<Node> node) { |
++ |
++ TypeId tid = TypeId::LookupByName("ns3::TcpSocketFactory"); |
++ |
++ if (m_protocol == UDP_PROTOCOL) |
++ tid = TypeId::LookupByName("ns3::UdpSocketFactory"); |
++ Ptr<Socket> sink = Socket::CreateSocket(node, tid); |
++ InetSocketAddress local = InetSocketAddress(Ipv4Address::GetAny(), 80); |
++ sink->Bind(local); |
++ sink->SetRecvCallback(MakeCallback(&Experiment::ReceivePacket, this)); |
++ return sink; |
++} |
++void Experiment::GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval) { |
++ m_packetCounter --; |
++ if (m_packetCounter > 0) { |
++ socket->Send(Create<Packet>(pktSize)); |
++ Simulator::Schedule(pktInterval, &Experiment::GenerateTraffic, this, |
++ socket, pktSize, pktCount - 1, pktInterval); |
++ } else { |
++ socket->Close(); |
++ } |
++ m_packetsTransmitted ++; |
++} |
++ |
++u_int32_t Experiment::GetPacketCounter () const |
++{ |
++ return m_packetCounter; |
++} |
++ |
++void Experiment::SetPacketCounter (u_int32_t packetCounter) |
++{ |
++ this->m_packetCounter = packetCounter; |
++} |
++ |
++u_int32_t Experiment::GetPktsCorrect () const |
++{ |
++ return m_pktsCorrect; |
++} |
++ |
++void Experiment::SetPktsCorrect (u_int32_t pktsCorrect) |
++{ |
++ this->m_pktsCorrect = pktsCorrect; |
++} |
++ |
++u_int32_t Experiment::GetPktsReceived () const |
++{ |
++ return m_pktsReceived; |
++} |
++ |
++void Experiment::SetPktsReceived(u_int32_t pktsReceived) |
++{ |
++ this->m_pktsReceived = pktsReceived; |
++} |
++ |
++u_int32_t Experiment::GetPktsTransmitted() const |
++{ |
++ return m_packetsTransmitted; |
++} |
++ |
++void Experiment::SetTransportProtocol(TransportProtocol_t protocol) |
++{ |
++ m_protocol = protocol; |
++} |
++ |
++TransportProtocol_t Experiment::GetTransportProtocol () const |
++{ |
++ return m_protocol; |
++} |
++ |
++//// Trace data frames and their corresponding ACKs |
++ |
++void Experiment::PhyRxOkTrace(std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble) |
++{ |
++ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), true, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ true, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++void Experiment::PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr) |
++{ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), false, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ false, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsReceived ++; |
++ TraceToFile(line); |
++ |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++packetInfo_t Experiment::ParsePacket (Ptr<const Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(packet); |
++ |
++ packetInfo_t packetInfo; |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
++ pktCopy->RemoveHeader(packetInfo.wifiHdr); |
++ |
++ if (packetInfo.wifiHdr.IsData()) |
++ { |
++ pktCopy->RemoveHeader(packetInfo.llcHdr); |
++ switch (packetInfo.llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ packetInfo.type = ARP_PACKET; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(packetInfo.ipv4Hdr); |
++ switch (packetInfo.ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(packetInfo.tcpHdr); |
++ packetInfo.type = TCP_DATA; |
++ |
++ break; |
++ case 17: //UDP |
++ pktCopy->RemoveHeader(packetInfo.udpHdr); |
++ packetInfo.type = UDP_DATA; |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ else if (packetInfo.wifiHdr.IsAck()) |
++ { |
++ packetInfo.type = IEEE_80211_ACK; |
++ } |
++ else // 802.11 Control/Management frame |
++ { |
++ packetInfo.type = IEEE_80211_NODATA; |
++ } |
++ |
++ packetInfo.payloadLength = pktCopy->GetSize() - 4; //Last four bytes are used for tagging |
++ |
++ return packetInfo; |
++} |
++ |
++void Experiment::BearRxTrace(Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ propagation + slowFading + fastFading); |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) // |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %12f %12f %12f", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ propagation, \ |
++ slowFading, \ |
++ fastFading \ |
++ ); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ |
++} |
++ |
++void Experiment::HmmRxTrace(Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16d", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %8d", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++} |
++ |
++ |
++void Experiment::OpenTraceFile (string fileName, ChannelMode_t channelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL) |
++{ |
++ string path = getcwd() + "/traces/" + fileName; |
++ char title [255]; |
++ string lastField; //Channel Model Dependent field (trace field) |
++ NS_LOG_DEBUG(path); |
++ m_file.open(path.c_str(), fstream::out); |
++ |
++ //Split into TCP and UDP simulations |
++ switch (m_protocol) |
++ { |
++ case TCP_PROTOCOL: |
++ if (channelModel == HIDDEN_MARKOV_ERROR_MODEL) |
++ lastField = "State"; |
++ else |
++ lastField = "SNR (dB)"; |
++ |
++ sprintf (title, "%16s %16s %20s %20s %16s %16s %16s %16s %16s %16s", \ |
++ "Time", "CRC", "Source", "Destination", "802.11 RETX", \ |
++ "Length","SeqNum", "TCP SeqNum", "TCP AckNum", \ |
++ lastField.c_str()); |
++ break; |
++ |
++ case UDP_PROTOCOL: |
++ switch (channelModel) |
++ { |
++ case BURSTY_ERROR_AUTO_REGRESSIVE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %12s %12s %12s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "Propagation","Slow Fading", "Fast Fading"); |
++ break; |
++ case HIDDEN_MARKOV_ERROR_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %8s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "State"); |
++ break; |
++ case NIST_ERROR_RATE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %10s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", "SNR (dB)"); |
++ break; |
++ } |
++ |
++ break; |
++ default: |
++ NS_LOG_ERROR("Cannot open a trace file because transport protocol is not correct"); |
++ } |
++ |
++ m_file << title << endl; |
++} |
++ |
++void Experiment::CloseTraceFile() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ if (m_file.is_open()) |
++ m_file.close(); |
++ else |
++ NS_LOG_ERROR("Open file not found"); |
++} |
++ |
++void Experiment::TraceToFile(string line) |
++{ |
++ NS_LOG_DEBUG(line); |
++ m_file << line << endl; |
++} |
++ |
++ |
++ |
++std::string getcwd() { |
++ char buf[FILENAME_MAX]; |
++ char* succ = getcwd(buf, FILENAME_MAX); |
++ if (succ) |
++ return std::string(succ); |
++ return ""; // raise a flag, throw an exception, ... |
++} |
++ |
++std::string ConvertMacToString(Mac48Address mac) |
++{ |
++ NS_LOG_FUNCTION(mac); |
++ u_int8_t temp[6]; |
++ char result[24]; |
++ mac.CopyTo(temp); |
++ |
++ sprintf(result,"%02X:%02X:%02X:%02X:%02X:%02X", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5] ); |
++ |
++ return std::string(result); |
++} |
++ |
++//////////////////////////////////////////////////////////////////////////////////// |
++/////////////////////////////// MAIN /////////////////////////////////////// |
++//////////////////////////////////////////////////////////////////////////////////// |
++ |
++int main (int argc, char *argv[]) |
++{ |
++ //Logging |
++ EnableLogging(); |
++ |
++ |
++ //Variable initialization |
++ // Hidden Markov Model Coefficient file |
++ string transitionFileHmm = "HMM_4states/HMM_03_TR_1.txt" ; |
++ string emissionFileHmm = "HMM_4states/HMM_03_EMIS_1.txt" ; |
++ |
++ string hmmChannel = "Good"; |
++ |
++ //BEAR model Coefficients file |
++ string arModelCoefficientsFile = "coefsAR.cfg"; |
++ |
++ //Parameter to switch among the different channel models |
++ string channelModel = "Bear"; |
++ |
++ //Transport protocol |
++ string transportProtocol = "TCP"; |
++ TransportProtocol_t protocol; |
++ |
++ //Random variable generation (Random seed) |
++ SeedManager::SetSeed(1); |
++ |
++ //Trace file name |
++ u_int16_t scenario = 1; //Scenario number --> Used for trace file naming (see documentation to get the model particular parameters) |
++ string outputChannelTypeFileName; |
++ string outputFileName = "TCP"; |
++ ChannelMode_t enumChannelModel; |
++ |
++ //Simulation parameters |
++ float distance = 20; //Distance between nodes |
++ |
++ |
++ u_int32_t numPackets = 10000; |
++ u_int32_t packetLength = 1460; |
++ uint64_t interPacketTime = 1000000; |
++ u_int32_t run = 1; |
++ u_int32_t runCounter; |
++ u_int32_t runOffset = 0; |
++ |
++ //Command parsing |
++ CommandLine cmd; |
++ |
++ //Error model parameters |
++ cmd.AddValue ("ChannelModel", "Channel model to insert into the nodes", channelModel ); |
++ //BEAR model |
++ cmd.AddValue ("ArModelCoefficientFile", "File name which contains the AR model coefficients", arModelCoefficientsFile); |
++ |
++ //Hidden Markov Error Model parameters |
++ cmd.AddValue ("HmmChannel", "Type of HMM channel: Good, Average or bad", hmmChannel); |
++ cmd.AddValue ("TransitionFileHmm", "HMM transition file name (from configs file)", transitionFileHmm); |
++ cmd.AddValue ("EmissionFileHmm", "HMM emission file name (from configs file)", emissionFileHmm); |
++ |
++ //Simulation-related parameters |
++ cmd.AddValue ("Run", "Number of simulations to run", run); |
++ cmd.AddValue ("RunOffset", "Offset introduced at the SeedManager and the file naming counter", runOffset); |
++ cmd.AddValue ("Scenario", "Type of analysis (channel model coefficients and conditions)", scenario); |
++ cmd.AddValue ("NumPackets", "Total number of packets sent in the simulation", numPackets); |
++ cmd.AddValue ("PacketLength", "Number of bytes in each packet", packetLength); |
++ cmd.AddValue ("InterPacketTime", "Time (in microseconds) between two consecutive packets (application level)", interPacketTime); |
++ cmd.AddValue ("OutputChannelTypeFileName", "File name to store the output trace", outputChannelTypeFileName); |
++ cmd.AddValue ("Distance", "Distance (in meters) between nodes", distance); |
++ cmd.AddValue ("TransportProtocol", "TCP or UDP" , transportProtocol); |
++ |
++ cmd.Parse (argc, argv); |
++ |
++ //Default attributes initialization |
++ //Wifi attributes |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",StringValue ("DsssRate2Mbps")); |
++ // Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200")); //Disable RTS/CTS transmission |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200")); //Disable fragmentation |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::DataMode", StringValue ("DsssRate11Mbps")); |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::ControlMode", StringValue ("DsssRate11Mbps")); //WiFi Buffer Size |
++ Config::SetDefault ("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue (900000000)); |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue (4)); |
++ Config::SetDefault ("ns3::WifiNetDevice::Mtu", UintegerValue (1512)); |
++ |
++ //HiddenErrorMarkov model attributes |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::TransitionMatrixFileName", StringValue (transitionFileHmm)); |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::EmissionMatrixFileName", StringValue (emissionFileHmm)); |
++ |
++ GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true)); |
++ |
++ if (transportProtocol == "TCP") |
++ protocol = TCP_PROTOCOL; |
++ else if (transportProtocol == "UDP") |
++ protocol = UDP_PROTOCOL; |
++ else |
++ NS_LOG_ERROR("Transport Protocol undefined"); |
++ |
++ if (channelModel == "SWEEP") |
++ distance = 72; |
++ |
++ if ((scenario < 1) || (scenario > 6)) |
++ { |
++ NS_LOG_ERROR("HMM configuration et not supported"); |
++ return -1; |
++ } |
++ |
++ /////////-----------------------MAIN LOOP-----------------------///////// |
++ |
++ for (runCounter = 1; runCounter <= run; runCounter ++) |
++ { |
++ Experiment exp_; |
++ exp_.SetTransportProtocol(protocol); |
++ //Create the nodes |
++ NodeContainer wifiNodes; |
++ wifiNodes.Create(2); |
++ |
++ //Prepare the Wifi NetDevices |
++ YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default(); //Don't remove (Necessary at YansWifiPhy::EndReceive) |
++ YansWifiChannelHelper wifiChannel; |
++ |
++ //Change the seed for each simulation run |
++ SeedManager::SetRun(runCounter + runOffset); |
++ |
++ //Channel model initialization |
++ // BEAR model = ArModel (Propagation Loss Model) + BurstyErrorModel (Error Model) |
++ |
++ if (channelModel == "Bear") |
++ { |
++ outputChannelTypeFileName = "Bear"; |
++ enumChannelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::ArModel"); |
++ Ptr<ArModel> arBaseModel = CreateObject<ArModel> (); |
++ wifiChannel.AddPropagationLoss(arBaseModel); |
++ //Set the error model |
++ Ptr<BurstyErrorModel> errorModel = CreateObject<BurstyErrorModel> (); //Manual BEAR model instance |
++ wifiPhy.SetErrorModel(errorModel); |
++ arBaseModel->SetErrorModel(errorModel); // Bursty error model is closely linked to the AR propagation loss model |
++ |
++ //Callback |
++ errorModel->SetRxCallback (MakeCallback (&Experiment::BearRxTrace, &exp_)); |
++ } |
++ |
++ // HiddenMarkovErrorModel --> Does not take into account the SNR, hence the propagation loss model is not relevant |
++ else if (channelModel == "HMM") |
++ { |
++ //Prepare the coefficients files according to the channel type |
++ if (hmmChannel == "Good") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_12_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_12_EMIS_%1d.txt", scenario); |
++ |
++ } |
++ else if (hmmChannel == "Average") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_09_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_09_EMIS_%1d.txt", scenario); |
++ } |
++ else if (hmmChannel == "Bad") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_05_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_05_EMIS_%1d.txt", scenario); |
++ } |
++ else |
++ { |
++ NS_LOG_UNCOND ("HMM Channel Model not valid... Exiting"); |
++ return -1; |
++ } |
++ |
++ outputChannelTypeFileName = "HMM_" + hmmChannel; |
++ enumChannelModel = HIDDEN_MARKOV_ERROR_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss ("ns3::SimplePropagationLossModel", "MaxDistance", DoubleValue(200.0)); |
++ |
++ //Set the error model |
++ Ptr<HiddenMarkovErrorModel> errorModel = CreateObject<HiddenMarkovErrorModel> (); |
++ errorModel->SetTransitionMatrixFileName(transitionFileHmm); |
++ errorModel->SetEmissionMatrixFileName(emissionFileHmm); |
++ errorModel->GetCoefficients(); |
++ |
++ wifiPhy.SetErrorModel(errorModel); |
++ |
++ //Callback |
++ errorModel->SetRxCallback(MakeCallback(&Experiment::HmmRxTrace, &exp_)); |
++ } |
++ |
++ //NS-3 Legacy error decision model --> LogDistancePropagationLossModel + NistErrorRateModel |
++ else if (channelModel == "NIST") |
++ { |
++ outputChannelTypeFileName = "NIST"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++// distance = 89.6; //Distance value which FER yields approximately 0.5 |
++ distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++ wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ } |
++ |
++ //Make a sweep in order to fully characterize the throughput vs FER curve shape in a memoryless channel |
++ else if (channelModel == "SWEEP") |
++ { |
++ if ((int) runCounter % 5 == 0) |
++ distance += 0.5 ; |
++ |
++ outputChannelTypeFileName = "SWEEP"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++ // distance = 89.6; //Distance value which FER yields approximately 0.5 |
++// distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++// wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ |
++ } |
++ |
++ wifiPhy.SetChannel (wifiChannel.Create()); |
++ WifiHelper wifi = WifiHelper::Default(); |
++ wifi.SetStandard (WIFI_PHY_STANDARD_80211b); |
++ wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager"); |
++ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default(); |
++ |
++ NetDeviceContainer wifiDevices = wifi.Install(wifiPhy, wifiMac, wifiNodes); |
++ |
++ //Node mobility configuration |
++ MobilityHelper mobility; |
++ Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator>(); |
++ positionAlloc->Add(Vector(0.0, 0.0, 0.0)); |
++ positionAlloc->Add(Vector(distance, 0.0, 0.0)); |
++ mobility.SetPositionAllocator(positionAlloc); |
++ mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel"); |
++ mobility.Install (wifiNodes); |
++ |
++ //Set the upper layers (default configuration) |
++ InternetStackHelper internet; |
++ |
++ // Sysctl option configuration |
++ if (transportProtocol == "TCP") |
++ { |
++ internet.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue ("liblinux2.6.26.so")); |
++ Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.inet.tcp.mssdflt", StringValue ("1460")); |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_sack", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_timestamps", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_window_scaling", StringValue ("0")); |
++ |
++ //TCP parameter set |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ Config::SetDefault ("ns3::TcpSocket::RcvBufSize", UintegerValue (90000000)); |
++ Config::SetDefault ("ns3::TcpSocket::SndBufSize", UintegerValue (90000000)); |
++ |
++ outputFileName= "TCP"; |
++ |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpNewReno")); |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpReno")); |
++ } |
++ else if (transportProtocol == "UDP") |
++ { |
++ outputFileName = "UDP"; |
++ Config::SetDefault ("ns3::UdpSocket::RcvBufSize", UintegerValue (90000000)); |
++ } |
++ |
++ internet.Install (wifiNodes); |
++ |
++ //New TCP simulation model (Application changes) |
++ //Define IP level |
++ Ipv4AddressHelper ipv4; |
++ NS_LOG_INFO("Assign IP Addresses."); |
++ ipv4.SetBase("10.1.1.0", "255.255.255.0"); |
++ Ipv4InterfaceContainer ipInterfaceContainer = ipv4.Assign(wifiDevices); |
++ |
++ |
++ uint16_t port = 50000; // Server Port |
++ |
++ OnOffHelper onoff ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address ("10.1.1.1"), port))); //OnOffHelper instance |
++ |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ onoff.SetAttribute("Protocol", StringValue ("ns3::UdpSocketFactory")); |
++ |
++ onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1))); |
++ onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0))); |
++ onoff.SetAttribute ("DataRate", StringValue ("11Mbps")); |
++ onoff.SetAttribute ("PacketSize", UintegerValue (packetLength)); |
++ onoff.SetAttribute ("MaxBytes", UintegerValue (packetLength * numPackets)); |
++ // onoff.SetAttribute ("Tx", MakeTraceSourceAccessor (&OnOffApplication::m_txTrace)); |
++ |
++ ApplicationContainer app = onoff.Install (wifiNodes.Get(1)); //install the onoff aplication in the AP node |
++ // Start the application |
++ app.Start (Seconds (1.0)); |
++ app.Stop (Seconds (10000.0)); |
++ |
++ // Create a packet sink to receive these packets in the Station node |
++ PacketSinkHelper sink ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address::GetAny (), port))); |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ sink.SetAttribute("Protocol", StringValue("ns3::UdpSocketFactory")); |
++ |
++ app = sink.Install (wifiNodes.Get(0)); |
++ app.Start (Seconds (0.0)); |
++ app.Stop (Seconds (11000.0)); |
++ |
++ //End new simulation scheme |
++ //////////////////// |
++ |
++ //Tracing connectors |
++ if (enumChannelModel == NIST_ERROR_RATE_MODEL) //Frame reception tracing for |
++ { |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxOk", MakeCallback (&Experiment::PhyRxOkTrace, &exp_)); |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxError", MakeCallback (&Experiment::PhyRxErrorTrace, &exp_)); |
++ } |
++ |
++ //Connect to the error models |
++ wifiPhy.EnablePcap (outputChannelTypeFileName, wifiNodes, true); |
++ wifiPhy.EnableAscii("Prueba", wifiNodes); |
++ |
++ |
++ //TCP trace file |
++ char temp[128]; |
++ sprintf(temp,"%s_%s_%02d_%03d.tr", outputFileName.c_str(), outputChannelTypeFileName.c_str(), scenario, runCounter + runOffset); |
++ exp_.OpenTraceFile(temp, enumChannelModel); |
++ |
++ Simulator::Stop(Seconds(11010)); |
++ |
++ Simulator::Run(); |
++ Simulator::Destroy(); |
++ |
++ //Print statistics |
++ NS_LOG_UNCOND("Run " << runCounter + runOffset << " FER = " << exp_.GetPktsReceived() - exp_.GetPktsCorrect() << "/" \ |
++ << exp_.GetPktsReceived() << " = " << \ |
++ ((double) exp_.GetPktsReceived() - (double) exp_.GetPktsCorrect())/(double)exp_.GetPktsReceived()); |
++ exp_.CloseTraceFile(); |
++ } |
++} |
++ |
+diff -uprNB ns-3.13/scratch/scratch-logging.h b/scratch/scratch-logging.h |
+--- ns-3.13/scratch/scratch-logging.h 1970-01-01 01:00:00.000000000 +0100 |
++++ b/scratch/scratch-logging.h 2012-04-16 11:50:12.000000000 +0200 |
+@@ -0,0 +1,88 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#ifndef SCRATCH_LOGGING_H_ |
++#define SCRATCH_LOGGING_H_ |
++ |
++ |
++namespace ns3 { |
++ |
++void EnableLogging () { |
++// LOGGING --> Uncomment desired files to show log messages |
++// -- Physical layer |
++// LogComponentEnable("WifiPhy", LOG_ALL); |
++// LogComponentEnable("YansWifiPhy",LOG_DEBUG); |
++// LogComponentEnable("YansWifiChannel", LOG_DEBUG); |
++// LogComponentEnable("YansWifiHelper", LOG_ALL); |
++// LogComponentEnable("PropagationLossModel", LOG_DEBUG); |
++// LogComponentEnable("WifiPhyStateHelper", LOG_LEVEL); |
++// LogComponentEnable("HiddenMarkovErrorModel", LOG_LOGIC); |
++// -- Link Level |
++// LogComponentEnable("MacLow", LOG_FUNCTION); |
++// LogComponentEnable("WifiMacQueue", LOG_FUNCTION); |
++// LogComponentEnable("WifiMacQueue", LOG_ALL); |
++// LogComponentEnable("DcaTxop", LOG_FUNCTION); |
++// LogComponentEnable("DcfManager", LOG_FUNCTION); |
++// LogComponentEnable("RegularWifiMac",LOG_FUNCTION); |
++// LogComponentEnable("RegularWifiMac",LOG_ALL); |
++// LogComponentEnable("StaWifiMac",LOG_FUNCTION); |
++// LogComponentEnable("AdhocWifiMac",LOG_ALL); |
++// LogComponentEnable("WifiNetDevice", LOG_ALL); |
++// -- Network layer |
++// LogComponentEnable("Ipv4L3Protocol", LOG_LOGIC); |
++// -- Transport layer |
++// LogComponentEnable("UdpSocket", LOG_ALL); |
++// LogComponentEnable("UdpSocketImpl", LOG_ALL); |
++// -- Propagation Loss Models |
++// LogComponentEnable("PropagationLossModel", LOG_ALL); |
++// -- Error Models |
++// LogComponentEnable("ErrorModel", LOG_DEBUG); |
++// LogComponentEnable("HiddenMarkovErrorModel", LOG_INFO); |
++// LogComponentEnable("ArModel", LOG_ALL); |
++// LogComponentEnable("ArModel", LOG_LOGIC); |
++// -- Test unit |
++// LogComponentEnable("Experiment", LOG_DEBUG); |
++ |
++// -- Other levels |
++// LogComponentEnable("Socket", LOG_ALL); |
++// LogComponentEnable("PacketSocket", LOG_ALL); |
++// LogComponentEnable("UdpSocketImpl", LOG_ALL); |
++// LogComponentEnable("TcpSocketBase", LOG_ALL); |
++// LogComponentEnable("TcpReno", LOG_ALL); |
++// LogComponentEnable("TcpNewReno", LOG_ALL); |
++// LogComponentEnable("UdpSocketImpl", LOG_LOGIC); |
++ |
++// -- Routing |
++// LogComponentEnable("Ipv4StaticRouting", LOG_ALL); |
++ |
++// --Application |
++// LogComponentEnable ("TcpSocket", LOG_ALL); |
++// LogComponentEnable ("OnOffApplication", LOG_ALL); |
++// LogComponentEnable ("PacketSink", LOG_ALL); |
++// LogComponentEnable ("TcpL4Protocol", LOG_ALL); |
++// LogComponentEnable ("UdpL4Protocol", LOG_ALL); |
++// LogComponentEnable ("Ipv4L3Protocol", LOG_ALL); |
++ |
++} |
++ |
++ |
++} //namespace ns3 |
++#endif /* SCRATCH_LOGGING_H_ */ |
+diff -uprNB ns-3.13/scratch/wscript b/scratch/wscript |
+--- ns-3.13/scratch/wscript 1970-01-01 01:00:00.000000000 +0100 |
++++ b/scratch/wscript 2012-04-17 09:07:35.000000000 +0200 |
+@@ -0,0 +1,12 @@ |
++## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
++ |
++def build(bld): |
++ env = bld.env_of_name('default') |
++ if not env['ENABLE_EXAMPLES']: |
++ return; |
++ |
++ obj = bld.create_ns3_program('error-model-test', ['core', 'mobility', 'wifi', 'applications', 'config-store', 'tools', 'visualizer']) |
++ obj.source = 'error-model-test.cc' |
++ |
++ |
++ |
+Binary files ns-3.13/src/aodv/bindings/callbacks_list.pyc and b/src/aodv/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/aodv/bindings/modulegen__gcc_LP64.pyc and b/src/aodv/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/applications/bindings/callbacks_list.pyc and b/src/applications/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/applications/bindings/modulegen_customizations.pyc and b/src/applications/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/applications/bindings/modulegen__gcc_LP64.pyc and b/src/applications/bindings/modulegen__gcc_LP64.pyc differ |
+diff -uprNB ns-3.13/src/ar-model/configs/coefsAR.cfg b/src/ar-model/configs/coefsAR.cfg |
+--- ns-3.13/src/ar-model/configs/coefsAR.cfg 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/configs/coefsAR.cfg 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,10 @@ |
++1 1.000000 -0.999648 |
++2 1.000000 -1.121964 0.122359 |
++3 1.000000 -1.106437 -0.020017 0.126898 |
++4 1.000000 -1.093542 -0.022050 0.014469 0.101614 |
++5 1.000000 -1.082369 -0.020460 0.012044 -0.018622 0.109951 |
++6 1.000000 -1.074329 -0.021821 0.012925 -0.020118 0.030797 0.073131 |
++7 1.000000 -1.068405 -0.019327 0.011296 -0.019072 0.029029 -0.013886 0.080996 |
++8 1.000000 -1.063919 -0.020096 0.012904 -0.020128 0.029655 -0.014956 0.021812 0.055395 |
++9 1.000000 -1.060767 -0.018855 0.012053 -0.018441 0.028510 -0.014222 0.020669 -0.005139 0.056897 |
++10 1.000000 -1.057755 -0.019127 0.013147 -0.019194 0.030019 -0.015198 0.021307 -0.006137 0.000750 0.052930 |
+diff -uprNB ns-3.13/src/ar-model/examples/error-model-test.cc b/src/ar-model/examples/error-model-test.cc |
+--- ns-3.13/src/ar-model/examples/error-model-test.cc 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/examples/error-model-test.cc 2012-04-12 10:29:47.000000000 +0200 |
+@@ -0,0 +1,1051 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#include "ns3/core-module.h" |
++#include "ns3/mobility-module.h" |
++#include "ns3/applications-module.h" |
++ |
++#include "ns3/wifi-helper.h" |
++#include "ns3/yans-wifi-helper.h" |
++#include "ns3/inet-socket-address.h" |
++#include "ns3/internet-stack-helper.h" |
++#include "ns3/ipv4-address-helper.h" |
++#include "ns3/wifi-module.h" |
++#include "ns3/propagation-loss-model.h" |
++ |
++#include "ns3/aodv-routing-protocol.h" |
++ |
++#include "ns3/ar-model.h" |
++#include "ns3/hidden-markov-error-model.h" |
++ |
++#include "ns3/socket.h" |
++#include <ns3/node-list.h> |
++ |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++#include "ns3/udp-header.h" |
++ |
++#include <iostream> |
++#include <fstream> |
++#include <vector> |
++#include <string> |
++#include <stdio.h> |
++ |
++#include "scratch-logging.h" |
++//#include "experiment.h" |
++ |
++ |
++NS_LOG_COMPONENT_DEFINE("TcpErrorModelTest"); |
++ |
++using namespace std; |
++using namespace ns3; |
++ |
++std::string ConvertMacToString(Mac48Address mac); |
++std::string getcwd(); |
++ |
++enum ChannelMode_t { |
++ HIDDEN_MARKOV_ERROR_MODEL, |
++ BURSTY_ERROR_AUTO_REGRESSIVE_MODEL, |
++ NIST_ERROR_RATE_MODEL |
++}; |
++ |
++enum TransportProtocol_t { |
++ TCP_PROTOCOL, |
++ UDP_PROTOCOL |
++}; |
++ |
++ |
++class Experiment { |
++public: |
++ Experiment (); |
++ ~Experiment (); |
++ |
++ u_int32_t GetPacketCounter() const; |
++ void SetPacketCounter(u_int32_t packetCounter); |
++ u_int32_t GetPktsCorrect() const; |
++ void SetPktsCorrect(u_int32_t pktsCorrect); |
++ u_int32_t GetPktsReceived() const; |
++ void SetPktsReceived(u_int32_t pktsReceived); |
++ u_int32_t GetPktsTransmitted () const; |
++ |
++ void SetTransportProtocol (TransportProtocol_t protocol); |
++ TransportProtocol_t GetTransportProtocol () const; |
++ |
++ Ptr<Socket> SetupPacketReceive(Ptr<Node> node); |
++ void GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval); |
++ //Tracing |
++ void PhyRxOkTrace (std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble); |
++ void PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr); |
++ |
++ //BEAR Callback integration |
++ void HmmRxTrace (Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state); |
++ void BearRxTrace (Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading); |
++ |
++ //Upper Layer parser |
++ packetInfo_t ParsePacket (Ptr<const Packet> packet); |
++ |
++ void OpenTraceFile (string fileName, ChannelMode_t channelModel); |
++ void CloseTraceFile (); |
++ |
++ void TraceToFile (string line); |
++ |
++ |
++private: |
++ fstream m_file; |
++ |
++ void ReceivePacket(Ptr<Socket> socket); |
++ void SetPosition(Ptr<Node> node, Vector position); |
++ Vector GetPosition(Ptr<Node> node); |
++ u_int32_t m_pktsReceived; |
++ u_int32_t m_pktsCorrect; |
++ u_int32_t m_packetCounter; |
++ |
++ u_int32_t m_packetsTransmitted; |
++ |
++ TransportProtocol_t m_protocol; |
++}; |
++ |
++ |
++Experiment::Experiment(): m_pktsReceived (0), |
++ m_pktsCorrect (0), |
++ m_packetCounter (0), |
++ m_packetsTransmitted (0) |
++{} |
++ |
++Experiment::~Experiment() |
++{} |
++ |
++ |
++void Experiment::SetPosition(Ptr<Node> node, Vector position) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ mobility->SetPosition(position); |
++} |
++Vector Experiment::GetPosition(Ptr<Node> node) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ return mobility->GetPosition(); |
++} |
++void Experiment::ReceivePacket(Ptr<Socket> socket) { |
++ Ptr<Packet> packet; |
++ while (packet = socket->Recv()) { |
++ // m_pktsReceived++; |
++ } |
++} |
++ |
++Ptr<Socket> Experiment::SetupPacketReceive(Ptr<Node> node) { |
++ |
++ TypeId tid = TypeId::LookupByName("ns3::TcpSocketFactory"); |
++ |
++ if (m_protocol == UDP_PROTOCOL) |
++ tid = TypeId::LookupByName("ns3::UdpSocketFactory"); |
++ Ptr<Socket> sink = Socket::CreateSocket(node, tid); |
++ InetSocketAddress local = InetSocketAddress(Ipv4Address::GetAny(), 80); |
++ sink->Bind(local); |
++ sink->SetRecvCallback(MakeCallback(&Experiment::ReceivePacket, this)); |
++ return sink; |
++} |
++void Experiment::GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval) { |
++ m_packetCounter --; |
++ if (m_packetCounter > 0) { |
++ socket->Send(Create<Packet>(pktSize)); |
++ Simulator::Schedule(pktInterval, &Experiment::GenerateTraffic, this, |
++ socket, pktSize, pktCount - 1, pktInterval); |
++ } else { |
++ socket->Close(); |
++ } |
++ m_packetsTransmitted ++; |
++} |
++ |
++u_int32_t Experiment::GetPacketCounter () const |
++{ |
++ return m_packetCounter; |
++} |
++ |
++void Experiment::SetPacketCounter (u_int32_t packetCounter) |
++{ |
++ this->m_packetCounter = packetCounter; |
++} |
++ |
++u_int32_t Experiment::GetPktsCorrect () const |
++{ |
++ return m_pktsCorrect; |
++} |
++ |
++void Experiment::SetPktsCorrect (u_int32_t pktsCorrect) |
++{ |
++ this->m_pktsCorrect = pktsCorrect; |
++} |
++ |
++u_int32_t Experiment::GetPktsReceived () const |
++{ |
++ return m_pktsReceived; |
++} |
++ |
++void Experiment::SetPktsReceived(u_int32_t pktsReceived) |
++{ |
++ this->m_pktsReceived = pktsReceived; |
++} |
++ |
++u_int32_t Experiment::GetPktsTransmitted() const |
++{ |
++ return m_packetsTransmitted; |
++} |
++ |
++void Experiment::SetTransportProtocol(TransportProtocol_t protocol) |
++{ |
++ m_protocol = protocol; |
++} |
++ |
++TransportProtocol_t Experiment::GetTransportProtocol () const |
++{ |
++ return m_protocol; |
++} |
++ |
++//// Trace data frames and their corresponding ACKs |
++ |
++void Experiment::PhyRxOkTrace(std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble) |
++{ |
++ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), true, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ true, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++void Experiment::PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr) |
++{ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), false, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ false, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsReceived ++; |
++ TraceToFile(line); |
++ |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++packetInfo_t Experiment::ParsePacket (Ptr<const Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(packet); |
++ |
++ packetInfo_t packetInfo; |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
++ pktCopy->RemoveHeader(packetInfo.wifiHdr); |
++ |
++ if (packetInfo.wifiHdr.IsData()) |
++ { |
++ pktCopy->RemoveHeader(packetInfo.llcHdr); |
++ switch (packetInfo.llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ packetInfo.type = ARP_PACKET; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(packetInfo.ipv4Hdr); |
++ switch (packetInfo.ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(packetInfo.tcpHdr); |
++ packetInfo.type = TCP_DATA; |
++ |
++ break; |
++ case 17: //UDP |
++ pktCopy->RemoveHeader(packetInfo.udpHdr); |
++ packetInfo.type = UDP_DATA; |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ else if (packetInfo.wifiHdr.IsAck()) |
++ { |
++ packetInfo.type = IEEE_80211_ACK; |
++ } |
++ else // 802.11 Control/Management frame |
++ { |
++ packetInfo.type = IEEE_80211_NODATA; |
++ } |
++ |
++ packetInfo.payloadLength = pktCopy->GetSize() - 4; //Last four bytes are used for tagging |
++ |
++ return packetInfo; |
++} |
++ |
++void Experiment::BearRxTrace(Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ propagation + slowFading + fastFading); |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) // |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %12f %12f %12f", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ propagation, \ |
++ slowFading, \ |
++ fastFading \ |
++ ); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ |
++} |
++ |
++void Experiment::HmmRxTrace(Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16d", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %8d", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++} |
++ |
++ |
++void Experiment::OpenTraceFile (string fileName, ChannelMode_t channelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL) |
++{ |
++ string path = getcwd() + "/traces/" + fileName; |
++ char title [255]; |
++ string lastField; //Channel Model Dependent field (trace field) |
++ NS_LOG_DEBUG(path); |
++ m_file.open(path.c_str(), fstream::out); |
++ |
++ //Split into TCP and UDP simulations |
++ switch (m_protocol) |
++ { |
++ case TCP_PROTOCOL: |
++ if (channelModel == HIDDEN_MARKOV_ERROR_MODEL) |
++ lastField = "State"; |
++ else |
++ lastField = "SNR (dB)"; |
++ |
++ sprintf (title, "%16s %16s %20s %20s %16s %16s %16s %16s %16s %16s", \ |
++ "Time", "CRC", "Source", "Destination", "802.11 RETX", \ |
++ "Length","SeqNum", "TCP SeqNum", "TCP AckNum", \ |
++ lastField.c_str()); |
++ break; |
++ |
++ case UDP_PROTOCOL: |
++ switch (channelModel) |
++ { |
++ case BURSTY_ERROR_AUTO_REGRESSIVE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %12s %12s %12s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "Propagation","Slow Fading", "Fast Fading"); |
++ break; |
++ case HIDDEN_MARKOV_ERROR_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %8s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "State"); |
++ break; |
++ case NIST_ERROR_RATE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %10s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", "SNR (dB)"); |
++ break; |
++ } |
++ |
++ break; |
++ default: |
++ NS_LOG_ERROR("Cannot open a trace file because transport protocol is not correct"); |
++ } |
++ |
++ m_file << title << endl; |
++} |
++ |
++void Experiment::CloseTraceFile() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ if (m_file.is_open()) |
++ m_file.close(); |
++ else |
++ NS_LOG_ERROR("Open file not found"); |
++} |
++ |
++void Experiment::TraceToFile(string line) |
++{ |
++ NS_LOG_DEBUG(line); |
++ m_file << line << endl; |
++} |
++ |
++ |
++ |
++std::string getcwd() { |
++ char buf[FILENAME_MAX]; |
++ char* succ = getcwd(buf, FILENAME_MAX); |
++ if (succ) |
++ return std::string(succ); |
++ return ""; // raise a flag, throw an exception, ... |
++} |
++ |
++std::string ConvertMacToString(Mac48Address mac) |
++{ |
++ NS_LOG_FUNCTION(mac); |
++ u_int8_t temp[6]; |
++ char result[24]; |
++ mac.CopyTo(temp); |
++ |
++ sprintf(result,"%02X:%02X:%02X:%02X:%02X:%02X", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5] ); |
++ |
++ return std::string(result); |
++} |
++ |
++//////////////////////////////////////////////////////////////////////////////////// |
++/////////////////////////////// MAIN /////////////////////////////////////// |
++//////////////////////////////////////////////////////////////////////////////////// |
++ |
++int main (int argc, char *argv[]) |
++{ |
++ //Logging |
++ EnableLogging(); |
++ |
++ |
++ //Variable initialization |
++ // Hidden Markov Model Coefficient file |
++ string transitionFileHmm = "HMM_4states/HMM_03_TR_1.txt" ; |
++ string emissionFileHmm = "HMM_4states/HMM_03_EMIS_1.txt" ; |
++ |
++ string hmmChannel = "Good"; |
++ |
++ //BEAR model Coefficients file |
++ string arModelCoefficientsFile = "coefsAR.cfg"; |
++ |
++ //Parameter to switch among the different channel models |
++ string channelModel = "Bear"; |
++ |
++ //Transport protocol |
++ string transportProtocol = "TCP"; |
++ TransportProtocol_t protocol; |
++ |
++ //Random variable generation (Random seed) |
++ SeedManager::SetSeed(1); |
++ |
++ //Trace file name |
++ u_int16_t scenario = 1; //Scenario number --> Used for trace file naming (see documentation to get the model particular parameters) |
++ string outputChannelTypeFileName; |
++ string outputFileName = "TCP"; |
++ ChannelMode_t enumChannelModel; |
++ |
++ //Simulation parameters |
++ float distance = 20; //Distance between nodes |
++ |
++ |
++ u_int32_t numPackets = 10000; |
++ u_int32_t packetLength = 1460; |
++ uint64_t interPacketTime = 1000000; |
++ u_int32_t run = 1; |
++ u_int32_t runCounter; |
++ u_int32_t runOffset = 0; |
++ |
++ //Command parsing |
++ CommandLine cmd; |
++ |
++ //Error model parameters |
++ cmd.AddValue ("ChannelModel", "Channel model to insert into the nodes", channelModel ); |
++ //BEAR model |
++ cmd.AddValue ("ArModelCoefficientFile", "File name which contains the AR model coefficients", arModelCoefficientsFile); |
++ |
++ //Hidden Markov Error Model parameters |
++ cmd.AddValue ("HmmChannel", "Type of HMM channel: Good, Average or bad", hmmChannel); |
++ cmd.AddValue ("TransitionFileHmm", "HMM transition file name (from configs file)", transitionFileHmm); |
++ cmd.AddValue ("EmissionFileHmm", "HMM emission file name (from configs file)", emissionFileHmm); |
++ |
++ //Simulation-related parameters |
++ cmd.AddValue ("Run", "Number of simulations to run", run); |
++ cmd.AddValue ("RunOffset", "Offset introduced at the SeedManager and the file naming counter", runOffset); |
++ cmd.AddValue ("Scenario", "Type of analysis (channel model coefficients and conditions)", scenario); |
++ cmd.AddValue ("NumPackets", "Total number of packets sent in the simulation", numPackets); |
++ cmd.AddValue ("PacketLength", "Number of bytes in each packet", packetLength); |
++ cmd.AddValue ("InterPacketTime", "Time (in microseconds) between two consecutive packets (application level)", interPacketTime); |
++ cmd.AddValue ("OutputChannelTypeFileName", "File name to store the output trace", outputChannelTypeFileName); |
++ cmd.AddValue ("Distance", "Distance (in meters) between nodes", distance); |
++ cmd.AddValue ("TransportProtocol", "TCP or UDP" , transportProtocol); |
++ |
++ cmd.Parse (argc, argv); |
++ |
++ //Default attributes initialization |
++ //Wifi attributes |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",StringValue ("DsssRate2Mbps")); |
++ // Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200")); //Disable RTS/CTS transmission |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200")); //Disable fragmentation |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::DataMode", StringValue ("DsssRate11Mbps")); |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::ControlMode", StringValue ("DsssRate11Mbps")); //WiFi Buffer Size |
++ Config::SetDefault ("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue (900000000)); |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue (4)); |
++ Config::SetDefault ("ns3::WifiNetDevice::Mtu", UintegerValue (1512)); |
++ |
++ //HiddenErrorMarkov model attributes |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::TransitionMatrixFileName", StringValue (transitionFileHmm)); |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::EmissionMatrixFileName", StringValue (emissionFileHmm)); |
++ |
++ GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true)); |
++ |
++ if (transportProtocol == "TCP") |
++ protocol = TCP_PROTOCOL; |
++ else if (transportProtocol == "UDP") |
++ protocol = UDP_PROTOCOL; |
++ else |
++ NS_LOG_ERROR("Transport Protocol undefined"); |
++ |
++ if (channelModel == "SWEEP") |
++ distance = 72; |
++ |
++ if ((scenario < 1) || (scenario > 6)) |
++ { |
++ NS_LOG_ERROR("HMM configuration et not supported"); |
++ return -1; |
++ } |
++ |
++ /////////-----------------------MAIN LOOP-----------------------///////// |
++ |
++ for (runCounter = 1; runCounter <= run; runCounter ++) |
++ { |
++ Experiment exp_; |
++ exp_.SetTransportProtocol(protocol); |
++ //Create the nodes |
++ NodeContainer wifiNodes; |
++ wifiNodes.Create(2); |
++ |
++ //Prepare the Wifi NetDevices |
++ YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default(); //Don't remove (Necessary at YansWifiPhy::EndReceive) |
++ YansWifiChannelHelper wifiChannel; |
++ |
++ //Change the seed for each simulation run |
++ SeedManager::SetRun(runCounter + runOffset); |
++ |
++ //Channel model initialization |
++ // BEAR model = ArModel (Propagation Loss Model) + BurstyErrorModel (Error Model) |
++ |
++ if (channelModel == "Bear") |
++ { |
++ outputChannelTypeFileName = "Bear"; |
++ enumChannelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::ArModel"); |
++ Ptr<ArModel> arBaseModel = CreateObject<ArModel> (); |
++ wifiChannel.AddPropagationLoss(arBaseModel); |
++ //Set the error model |
++ Ptr<BurstyErrorModel> errorModel = CreateObject<BurstyErrorModel> (); //Manual BEAR model instance |
++ wifiPhy.SetErrorModel(errorModel); |
++ arBaseModel->SetErrorModel(errorModel); // Bursty error model is closely linked to the AR propagation loss model |
++ |
++ //Callback |
++ errorModel->SetRxCallback (MakeCallback (&Experiment::BearRxTrace, &exp_)); |
++ } |
++ |
++ // HiddenMarkovErrorModel --> Does not take into account the SNR, hence the propagation loss model is not relevant |
++ else if (channelModel == "HMM") |
++ { |
++ //Prepare the coefficients files according to the channel type |
++ if (hmmChannel == "Good") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_12_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_12_EMIS_%1d.txt", scenario); |
++ |
++ } |
++ else if (hmmChannel == "Average") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_09_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_09_EMIS_%1d.txt", scenario); |
++ } |
++ else if (hmmChannel == "Bad") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_05_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_05_EMIS_%1d.txt", scenario); |
++ } |
++ else |
++ { |
++ NS_LOG_UNCOND ("HMM Channel Model not valid... Exiting"); |
++ return -1; |
++ } |
++ |
++ outputChannelTypeFileName = "HMM_" + hmmChannel; |
++ enumChannelModel = HIDDEN_MARKOV_ERROR_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss ("ns3::SimplePropagationLossModel", "MaxDistance", DoubleValue(200.0)); |
++ |
++ //Set the error model |
++ Ptr<HiddenMarkovErrorModel> errorModel = CreateObject<HiddenMarkovErrorModel> (); |
++ errorModel->SetTransitionMatrixFileName(transitionFileHmm); |
++ errorModel->SetEmissionMatrixFileName(emissionFileHmm); |
++ errorModel->GetCoefficients(); |
++ |
++ wifiPhy.SetErrorModel(errorModel); |
++ |
++ //Callback |
++ errorModel->SetRxCallback(MakeCallback(&Experiment::HmmRxTrace, &exp_)); |
++ } |
++ |
++ //NS-3 Legacy error decision model --> LogDistancePropagationLossModel + NistErrorRateModel |
++ else if (channelModel == "NIST") |
++ { |
++ outputChannelTypeFileName = "NIST"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++// distance = 89.6; //Distance value which FER yields approximately 0.5 |
++ distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++ wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ } |
++ |
++ //Make a sweep in order to fully characterize the throughput vs FER curve shape in a memoryless channel |
++ else if (channelModel == "SWEEP") |
++ { |
++ if ((int) runCounter % 5 == 0) |
++ distance += 0.5 ; |
++ |
++ outputChannelTypeFileName = "SWEEP"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++ // distance = 89.6; //Distance value which FER yields approximately 0.5 |
++// distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++// wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ |
++ } |
++ |
++ wifiPhy.SetChannel (wifiChannel.Create()); |
++ WifiHelper wifi = WifiHelper::Default(); |
++ wifi.SetStandard (WIFI_PHY_STANDARD_80211b); |
++ wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager"); |
++ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default(); |
++ |
++ NetDeviceContainer wifiDevices = wifi.Install(wifiPhy, wifiMac, wifiNodes); |
++ |
++ //Node mobility configuration |
++ MobilityHelper mobility; |
++ Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator>(); |
++ positionAlloc->Add(Vector(0.0, 0.0, 0.0)); |
++ positionAlloc->Add(Vector(distance, 0.0, 0.0)); |
++ mobility.SetPositionAllocator(positionAlloc); |
++ mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel"); |
++ mobility.Install (wifiNodes); |
++ |
++ //Set the upper layers (default configuration) |
++ InternetStackHelper internet; |
++ |
++ // Sysctl option configuration |
++ if (transportProtocol == "TCP") |
++ { |
++ internet.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue ("liblinux2.6.26.so")); |
++ Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.inet.tcp.mssdflt", StringValue ("1460")); |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_sack", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_timestamps", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_window_scaling", StringValue ("0")); |
++ |
++ //TCP parameter set |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ Config::SetDefault ("ns3::TcpSocket::RcvBufSize", UintegerValue (90000000)); |
++ Config::SetDefault ("ns3::TcpSocket::SndBufSize", UintegerValue (90000000)); |
++ |
++ outputFileName= "TCP"; |
++ |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpNewReno")); |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpReno")); |
++ } |
++ else if (transportProtocol == "UDP") |
++ { |
++ outputFileName = "UDP"; |
++ Config::SetDefault ("ns3::UdpSocket::RcvBufSize", UintegerValue (90000000)); |
++ } |
++ |
++ internet.Install (wifiNodes); |
++ |
++ //New TCP simulation model (Application changes) |
++ //Define IP level |
++ Ipv4AddressHelper ipv4; |
++ NS_LOG_INFO("Assign IP Addresses."); |
++ ipv4.SetBase("10.1.1.0", "255.255.255.0"); |
++ Ipv4InterfaceContainer ipInterfaceContainer = ipv4.Assign(wifiDevices); |
++ |
++ |
++ uint16_t port = 50000; // Server Port |
++ |
++ OnOffHelper onoff ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address ("10.1.1.1"), port))); //OnOffHelper instance |
++ |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ onoff.SetAttribute("Protocol", StringValue ("ns3::UdpSocketFactory")); |
++ |
++ onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1))); |
++ onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0))); |
++ onoff.SetAttribute ("DataRate", StringValue ("11Mbps")); |
++ onoff.SetAttribute ("PacketSize", UintegerValue (packetLength)); |
++ onoff.SetAttribute ("MaxBytes", UintegerValue (packetLength * numPackets)); |
++ // onoff.SetAttribute ("Tx", MakeTraceSourceAccessor (&OnOffApplication::m_txTrace)); |
++ |
++ ApplicationContainer app = onoff.Install (wifiNodes.Get(1)); //install the onoff aplication in the AP node |
++ // Start the application |
++ app.Start (Seconds (1.0)); |
++ app.Stop (Seconds (10000.0)); |
++ |
++ // Create a packet sink to receive these packets in the Station node |
++ PacketSinkHelper sink ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address::GetAny (), port))); |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ sink.SetAttribute("Protocol", StringValue("ns3::UdpSocketFactory")); |
++ |
++ |
++ |
++ app = sink.Install (wifiNodes.Get(0)); |
++ app.Start (Seconds (0.0)); |
++ app.Stop (Seconds (11000.0)); |
++ |
++ //End new simulation scheme |
++ //////////////////// |
++ |
++ //Tracing connectors |
++ if (enumChannelModel == NIST_ERROR_RATE_MODEL) //Frame reception tracing for |
++ { |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxOk", MakeCallback (&Experiment::PhyRxOkTrace, &exp_)); |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxError", MakeCallback (&Experiment::PhyRxErrorTrace, &exp_)); |
++ } |
++ |
++ //Connect to the error models |
++ wifiPhy.EnablePcap (outputChannelTypeFileName, wifiNodes, true); |
++ wifiPhy.EnableAscii("Prueba", wifiNodes); |
++ |
++ |
++ //TCP trace file |
++ char temp[128]; |
++ sprintf(temp,"%s_%s_%02d_%03d.tr", outputFileName.c_str(), outputChannelTypeFileName.c_str(), scenario, runCounter + runOffset); |
++ exp_.OpenTraceFile(temp, enumChannelModel); |
++ |
++ Simulator::Stop(Seconds(11010)); |
++ |
++ Simulator::Run(); |
++ Simulator::Destroy(); |
++ |
++ //Print statistics |
++ NS_LOG_UNCOND("Run " << runCounter + runOffset << " FER = " << exp_.GetPktsReceived() - exp_.GetPktsCorrect() << "/" \ |
++ << exp_.GetPktsReceived() << " = " << \ |
++ ((double) exp_.GetPktsReceived() - (double) exp_.GetPktsCorrect())/(double)exp_.GetPktsReceived()); |
++ exp_.CloseTraceFile(); |
++ } |
++} |
++ |
+diff -uprNB ns-3.13/src/ar-model/model/ar-model.cc b/src/ar-model/model/ar-model.cc |
+--- ns-3.13/src/ar-model/model/ar-model.cc 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/model/ar-model.cc 2012-04-16 11:50:12.000000000 +0200 |
+@@ -0,0 +1,955 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#include <math.h> |
++#include <fstream> |
++#include <stdio.h> |
++ |
++#include <ns3/node.h> |
++#include <ns3/node-list.h> |
++#include "ns3/simulator.h" |
++#include "ns3/packet.h" |
++#include "ns3/assert.h" |
++#include "ns3/log.h" |
++#include "ns3/boolean.h" |
++#include "ns3/enum.h" |
++#include "ns3/double.h" |
++#include "ns3/integer.h" |
++#include "ns3/string.h" |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/yans-wifi-phy.h" |
++#include "ns3/trace-source-accessor.h" |
++ |
++#include "ar-model.h" |
++ |
++const bool g_debug = false; //Temporal solution (only for debugging) |
++ |
++using namespace std; |
++using namespace ns3; |
++ |
++NS_LOG_COMPONENT_DEFINE ("ArModel"); |
++ |
++u_int32_t ChannelKey::GetRx () const |
++{ |
++ return m_rx; |
++} |
++ |
++u_int32_t ChannelKey::GetTx () const |
++{ |
++ return m_tx; |
++} |
++ |
++void ChannelKey::SetRx (u_int32_t rx) |
++{ |
++ m_rx = rx; |
++} |
++ |
++void ChannelKey::SetTx (u_int32_t tx) |
++{ |
++ m_tx = tx; |
++} |
++ |
++ |
++NS_OBJECT_ENSURE_REGISTERED (ArChannelEntry); |
++ |
++ArChannelEntry::ArChannelEntry() |
++{ |
++ NS_LOG_FUNCTION (this); |
++} |
++ |
++ArChannelEntry::ArChannelEntry(int order, double coherenceTime): m_order (order), m_coherenceTime (coherenceTime) |
++{ |
++ NS_LOG_FUNCTION ("AR filter order " << order << " -- Coherence Time" << coherenceTime); |
++} |
++ |
++ArChannelEntry::~ArChannelEntry() |
++{ |
++ NS_LOG_FUNCTION (this); |
++} |
++ |
++u_int32_t ArChannelEntry::GetRx () const |
++{ |
++ return m_rx; |
++} |
++ |
++u_int32_t ArChannelEntry::GetTx () const |
++{ |
++ return m_tx; |
++} |
++ |
++void ArChannelEntry::SetRx (u_int32_t rx) |
++{ |
++ m_rx = rx; |
++} |
++ |
++void ArChannelEntry::SetTx (u_int32_t tx) |
++{ |
++ m_tx = tx; |
++} |
++ |
++void ArChannelEntry::UpdateSnr (double snr) |
++{ |
++ NS_LOG_FUNCTION (this); |
++ |
++ struct prevValues_t newSample; |
++ double newTimeout; |
++ newSample.time = Simulator::Now(); |
++ |
++ //If the vector is empty, set the timer with the arrival of the first frame |
++ if (!m_previousSnr.size()) |
++ { |
++ m_coherenceTimeout = Simulator::Schedule(MilliSeconds(m_coherenceTime), &ArChannelEntry::HandleCoherenceTimeout, this); |
++ NS_LOG_DEBUG("Timeout established at " << Simulator::Now().GetSeconds() + m_coherenceTime/1e3); |
++ } |
++ //If the vector is full (already holds AR model order values), we do erase the oldest one (the first one), and push back the newest one |
++ //at the end of the vector. It is worth highlighting, that if there is an active timer |
++ if(m_previousSnr.size() && m_previousSnr.size() == ((unsigned) m_order)) { |
++ m_previousSnr.erase(m_previousSnr.begin()); |
++ if (m_coherenceTimeout.IsRunning()) |
++ { |
++ m_coherenceTimeout.Cancel(); |
++ //Update the new timer |
++ newTimeout = GetNextTimeout(); |
++ m_coherenceTimeout = Simulator::Schedule(MilliSeconds(newTimeout), &ArChannelEntry::HandleCoherenceTimeout, this); |
++ } |
++ |
++ //Option not tested yet |
++// else |
++// { |
++// newTimeout = GetNextTimeout(); |
++// m_coherenceTimeout = Simulator::Schedule(MilliSeconds(newTimeout), &ArChannelEntry::HandleCoherenceTimeout, this); |
++// } |
++ } |
++ |
++ newSample.snr = snr; |
++ |
++ m_previousSnr.push_back(newSample); |
++ DisplaySnrQueue(); |
++} |
++ |
++int ArChannelEntry::GetPreviousSnr(vector<double> &previousSnr) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ int i; |
++ |
++ for(i = 0 ; i < (int) m_previousSnr.size() ; i++) { |
++ previousSnr.push_back(m_previousSnr[i].snr); |
++ } |
++ |
++ return ((int) m_previousSnr.size()); |
++} |
++ |
++double ArChannelEntry::GetNextTimeout() |
++{ |
++ NS_LOG_FUNCTION(this); |
++ double timeout, currentTime, firstArrival; |
++ |
++ if(m_previousSnr.size()) |
++ { |
++ firstArrival = m_previousSnr[0].time.GetMilliSeconds(); |
++ currentTime = Simulator::Now().GetMilliSeconds(); |
++ timeout = m_coherenceTime - (currentTime - firstArrival); |
++ |
++ NS_LOG_DEBUG ("Getting next timeout = " << m_coherenceTime << " - " << "(" \ |
++ << currentTime << " - " << firstArrival << ") = " << timeout << " --> " << Simulator::Now().GetSeconds() + timeout/1e3); |
++ //Maximum precision 1 msec |
++ if(timeout < 1) |
++ timeout = 1; |
++ |
++ } else { |
++ timeout = 0.0; |
++ } |
++ |
++ NS_LOG_DEBUG("Introducing a new timeout in " << timeout << " milliseconds"); |
++ |
++ return timeout; |
++} |
++ |
++void ArChannelEntry::HandleCoherenceTimeout() |
++{ |
++ NS_LOG_FUNCTION(Simulator::Now().GetSeconds()); |
++ |
++// DisplaySnrQueue(); |
++ |
++ if(m_previousSnr.size()) |
++ { |
++ m_previousSnr.erase(m_previousSnr.begin()); |
++ m_coherenceTimeout = Simulator::Schedule(MilliSeconds(GetNextTimeout()), &ArChannelEntry::HandleCoherenceTimeout, this); |
++ } |
++ else |
++ NS_LOG_ERROR("There are not buffered samples"); |
++ |
++// DisplaySnrQueue(); |
++} |
++ |
++void ArChannelEntry::DisplaySnrQueue() |
++{ |
++ NS_LOG_FUNCTION(Simulator::Now().GetSeconds()); |
++ u_int8_t i; |
++ char message[256]; |
++ |
++ for (i=0; i < m_previousSnr.size(); i++) |
++ { |
++ sprintf(message, "%3d SNR = %2.6f Time = %4.5f", i, m_previousSnr[i].snr, m_previousSnr[i].time.GetSeconds()); |
++ NS_LOG_DEBUG(message); |
++ } |
++} |
++ |
++NS_OBJECT_ENSURE_REGISTERED (ArModel); |
++ |
++TypeId |
++ArModel::GetTypeId(void) { |
++ static TypeId tid = TypeId ("ns3::ArModel") |
++ .SetParent<PropagationLossModel> () |
++ .AddConstructor<ArModel> () |
++ .AddAttribute ("RanVar", |
++ "Random variable which determine a packet to be successfully received or not", |
++ RandomVariableValue (UniformVariable (0.0, 1.0)), |
++ MakeRandomVariableAccessor (&ArModel::m_ranvar), |
++ MakeRandomVariableChecker ()) |
++ .AddAttribute("ArFilterOrder", |
++ "Order of the Auto Regressive Filter", |
++ IntegerValue(4), |
++ MakeIntegerAccessor (&ArModel::m_order), |
++ MakeIntegerChecker<int> ()) |
++ .AddAttribute("NoiseLevel", |
++ "Total noise power level (W)", |
++ DoubleValue(1.082e-6), |
++ MakeDoubleAccessor(&ArModel::m_noise), |
++ MakeDoubleChecker<double> ()) |
++ .AddAttribute("ArFilterVariance", |
++ "AR model variance", |
++ DoubleValue(0.005), |
++ MakeDoubleAccessor(&ArModel::m_variance), |
++ MakeDoubleChecker <double> ()) |
++ .AddAttribute("StandardDeviation", |
++ "AR model standard deviation (dB)", |
++ DoubleValue(2.6), |
++ MakeDoubleAccessor(&ArModel::m_stdDevDb), |
++ MakeDoubleChecker<double> ()) |
++ .AddAttribute("FastFadingVariance", |
++ "Variance that model the Gaussian model inherent to Fast Fading", |
++ DoubleValue(2.8), |
++// DoubleValue (1.67), |
++ MakeDoubleAccessor(&ArModel::m_ffVariance), |
++ MakeDoubleChecker<double> ()) |
++ .AddAttribute("CoherenceTime", |
++ "Channel propagation coherence time (in milliseconds)", |
++ DoubleValue(5000.0), |
++ MakeDoubleAccessor(&ArModel::m_coherenceTime), |
++ MakeDoubleChecker<double> ()) |
++ .AddAttribute("CoefficientsFile", |
++ "Name of the file that contains the AR model coefficients", |
++ StringValue("coefsAR.cfg"), |
++ MakeStringAccessor (&ArModel::m_coefficientsFile), |
++ MakeStringChecker ()) |
++ ; |
++ return tid; |
++} |
++ |
++ArModel::ArModel() : m_order (3), |
++ m_variance(0.005), |
++ m_ffVariance (2.8), |
++// m_ffVariance (1.67), |
++ m_stdDevDb (2.6), |
++ m_ranvar (UniformVariable (0.0, 1.0)) |
++{ |
++ NS_LOG_FUNCTION(m_noise); |
++ GetCoefficients("coefsAR.cfg"); |
++ |
++ int totalNodes; |
++ int i, j; |
++ |
++ ChannelKey key(0,0); |
++ ChannelKey keyAux(0,0); |
++ Ptr<ArChannelEntry> channel; |
++ |
++ channelSetIter_t iter; |
++ |
++ //Private variable initialization |
++ m_symmetry = true; |
++ m_coherenceTime = 10000.0; |
++ |
++ //// Input noise value |
++ // m_noise = 1.082e-6; //SNR = 10 dB @ 10 meters between nodes |
++ // m_noise = 5.42338e-7; //SNR = 13 dB @ 10 meters between nodes |
++ // m_noise = 9.14617e-9; //SNR = 15 dB @ 10 meters between nodes |
++ // m_noise = 1.082e-9; //SNR = 20 dB @ 10 meters between node |
++ |
++ //Default Propagation Loss |
++ Ptr<FriisPropagationLossModel> aux = CreateObject <FriisPropagationLossModel>(); |
++ m_propagationLoss = aux; |
++ |
++ |
++ //Create the map which contains the scenario snapshot |
++ totalNodes = NodeList().GetNNodes(); |
++ |
++ for( i = 0 ; i < totalNodes ; i ++ ) { |
++ for( j = 0; j < totalNodes ; j ++) { |
++ if( j != i ) { |
++ key.SetTx(i); |
++ key.SetRx(j); |
++ |
++ if(m_symmetry == 1) { |
++ if(i < j) { |
++ channel = CreateObject<ArChannelEntry> (m_order, m_coherenceTime); |
++ channel->SetTx(i); |
++ channel->SetRx(j); |
++ |
++ } else { |
++ keyAux.SetTx(j); |
++ keyAux.SetRx(i); |
++ iter = m_channelSetMap.find(keyAux); |
++ if(iter != m_channelSetMap.end()) |
++ channel = iter->second; |
++ } |
++ } |
++ else { |
++ channel = CreateObject<ArChannelEntry> (m_order, m_coherenceTime); |
++ channel->SetTx(i); |
++ channel->SetRx(j); |
++ |
++ } |
++ //Timer handling -- Work in progress (Port from Ramon's Timer class) |
++ m_channelSetMap.insert(pair<ChannelKey, Ptr<ArChannelEntry> > (key, channel)); |
++ } |
++ } |
++ } |
++} |
++ |
++ArModel::~ArModel () |
++{ |
++ NS_LOG_FUNCTION(this); |
++ if (m_arCoefficientsMap.size() > 0) |
++ m_arCoefficientsMap.clear(); |
++ if (m_channelSetMap.size() > 0) |
++ m_channelSetMap.clear(); |
++} |
++ |
++void ArModel::SetPropagationLoss (std::string type, |
++ std::string n0, const AttributeValue &v0, |
++ std::string n1, const AttributeValue &v1, |
++ std::string n2, const AttributeValue &v2, |
++ std::string n3, const AttributeValue &v3, |
++ std::string n4, const AttributeValue &v4, |
++ std::string n5, const AttributeValue &v5, |
++ std::string n6, const AttributeValue &v6, |
++ std::string n7, const AttributeValue &v7) |
++{ |
++ NS_LOG_FUNCTION(this); |
++ ObjectFactory factory; |
++ factory.SetTypeId (type); |
++ factory.Set (n0, v0); |
++ factory.Set (n1, v1); |
++ factory.Set (n2, v2); |
++ factory.Set (n3, v3); |
++ factory.Set (n4, v4); |
++ factory.Set (n5, v5); |
++ factory.Set (n6, v6); |
++ factory.Set (n7, v7); |
++ m_propagationLoss = factory.Create<PropagationLossModel> (); |
++} |
++ |
++void ArModel::SetPropagationLoss (Ptr<PropagationLossModel> loss) |
++{ |
++ NS_LOG_FUNCTION(this); |
++ m_propagationLoss = loss; |
++} |
++ |
++void ArModel::SetErrorModel(Ptr<BurstyErrorModel> error) |
++{ |
++ NS_LOG_FUNCTION(this); |
++ m_errorModel= error; |
++} |
++ |
++Ptr<BurstyErrorModel> ArModel::GetErrorModel() |
++{ |
++ NS_LOG_FUNCTION(this); |
++ return m_errorModel; |
++} |
++ |
++bool ArModel::GetCoefficients (string fileName) |
++{ |
++ NS_LOG_FUNCTION (fileName); |
++ |
++ fstream arCoefficientsFile; |
++ int currentCoefficientNumber, i, j; |
++ char line[256]; |
++ double arCurrentCoefficient; |
++ string arCoefficientFilePath; |
++ vector<double> arCoefficientsVector; |
++ |
++ coefSetIter_t iter; //Only for debugging |
++ |
++ //File handling |
++ arCoefficientFilePath = GetCwd() + "/src/network/utils/configs/" + fileName; |
++ arCoefficientsFile.open((const char *) arCoefficientFilePath.c_str(), ios::in); |
++ |
++ if (arCoefficientsFile) |
++ { |
++ while(arCoefficientsFile.getline(line, 256)) { |
++ currentCoefficientNumber = atoi(line); // This is the current number of coeficients |
++ j = 0; |
++ for( i=0 ; i <= currentCoefficientNumber ; i++) { |
++ // We need to go to the next coefficient |
++ while(line[j] != ' ' && line[j] != '\t') { |
++ j++; |
++ } |
++ while(line[j] == ' ' || line[j] == '\t') { |
++ j++; |
++ } |
++ arCurrentCoefficient = atof(line + j); |
++ arCoefficientsVector.push_back(arCurrentCoefficient); |
++ } |
++ |
++ m_arCoefficientsMap.insert(pair<int,vector<double> > (currentCoefficientNumber,arCoefficientsVector)); |
++ arCoefficientsVector.clear(); |
++ } |
++ } |
++ else |
++ { |
++ NS_LOG_ERROR("File (AR model) " << arCoefficientFilePath << " not found: Please fix"); |
++ return false; |
++ } |
++ |
++ //DEBUGGING |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ { |
++ //Print the m_transitionMatrix map |
++ printf ("---AR Coefficients Vector---\n"); |
++ for (iter = m_arCoefficientsMap.begin(); iter != m_arCoefficientsMap.end(); iter ++ ) |
++ { |
++ printf ("KEY %2d - ", iter->first); |
++ for (i = 0; i < (int) (iter->second).size(); i++) |
++ { |
++ printf ("%1.8f ", (iter->second)[i]); |
++ } |
++ printf ("\n"); |
++ } |
++ } |
++ |
++ #endif //NS3_LOG_ENABLE |
++ |
++ arCoefficientsFile.close(); |
++ |
++ return true; |
++} |
++ |
++double ArModel::DoCalcRxPower (double txPowerDbm, Ptr<MobilityModel> a, Ptr<MobilityModel> b) const |
++{ |
++ NS_LOG_FUNCTION("---------NEW PACKET---------" << Simulator::Now().GetSeconds()); |
++ double rxPowerDbm; |
++ double arOutput; |
++ double fastFadingRandomValue; |
++ double snr; |
++ NormalVariable fastFading (0.0, m_ffVariance); |
++ |
++ rxPowerDbm = m_propagationLoss->CalcRxPower(txPowerDbm, a, b); |
++ |
++ //Calculate the SNR |
++// snr = rxPowerDbm - 10 * log10(m_noise); |
++ //Force the channel to get a fixed SNR |
++ snr = 10.0; |
++ |
++ /* Then we calculate the AR model output */ |
++ arOutput = GetCurrentArValue (a, b); |
++ |
++ /* We also calculate the fast fading value */ |
++ if(m_order) { |
++ fastFadingRandomValue = fastFading.GetValue(); |
++ } else { |
++ fastFadingRandomValue = 0; |
++ } |
++ |
++ NS_LOG_DEBUG("Received packet (SNR = " << snr << " dB) : TX power (" << txPowerDbm << " dBm) RX power (" << rxPowerDbm << \ |
++ " dBm) + AR Output (" << arOutput << ") + Fast Fading (" << fastFadingRandomValue << ")"); |
++ |
++ if (m_errorModel) |
++ { |
++ m_errorModel->SetUnwrappedSnr(snr, arOutput, fastFadingRandomValue); |
++ } |
++ else |
++ NS_LOG_WARN("No Bursty Error Model found"); |
++ |
++ return rxPowerDbm; |
++} |
++ |
++double ArModel::GetArCoefficient(int key, int vectorPosition) const |
++{ |
++ |
++ double arCoefficient; |
++ coefSetIter_t iter = m_arCoefficientsMap.find(key); |
++ if(iter != m_arCoefficientsMap.end()) |
++ { |
++ if (vectorPosition < (signed) iter->second.size()) |
++ arCoefficient = (iter->second) [vectorPosition]; |
++ } |
++ else { |
++ NS_LOG_ERROR ("AR coefficient not found"); |
++ arCoefficient = 0.0; |
++ } |
++ |
++// NS_LOG_FUNCTION(key << vectorPosition << arCoefficient); |
++ |
++ return arCoefficient; |
++} |
++ |
++ |
++double ArModel::GetCurrentArValue (Ptr<MobilityModel> sender, Ptr<MobilityModel> receiver) const |
++{ |
++ |
++ bool txFound = false; |
++ bool rxFound = false; |
++ ChannelKey key; |
++ channelSetIter_t channelKeyIter; |
++ Ptr<ArChannelEntry> channel; |
++ u_int32_t i; |
++ int currentSize; |
++ double currentSnr; |
++ vector<double> previousSNR; |
++ NormalVariable randomArNoise (0.0, pow(m_stdDevDb,2)); |
++ NormalVariable randomNoise (0.0, m_variance); |
++ |
++ //We need to get the transmitter and the receiver -- Pending work --> Search a smart solution |
++ for (i=0;i < NodeList().GetNNodes(); i ++) |
++ { |
++ Ptr<MobilityModel> temp = (NodeList().GetNode(i))->GetObject<MobilityModel> (); |
++ if ((temp == sender) && (txFound == false)) |
++ { |
++ txFound = true; |
++ key.SetTx (i); |
++ } |
++ if ((temp == receiver) && (rxFound == false)) |
++ { |
++ rxFound = true; |
++ key.SetRx (i); |
++ } |
++ } |
++ |
++ NS_LOG_FUNCTION (key.GetTx() << key.GetRx()); |
++ |
++ channelKeyIter = m_channelSetMap.find(key); |
++ |
++ if (channelKeyIter != m_channelSetMap.end()) |
++ channel = channelKeyIter->second; |
++ else |
++ channel = 0; |
++ |
++ //If there is a channel defined, get the current SNR value |
++ if (channel != 0) |
++ { |
++ currentSize = channel->GetPreviousSnr(previousSNR); |
++ //If we have any packet buffered, use the Yule-Walker expression |
++ if (currentSize && m_order) |
++ { |
++ currentSnr = randomNoise.GetValue(); |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ { |
++ printf("Slow fading: SV[i] = "); |
++ } |
++ #endif //NS3_LOG_ENABLE |
++ if (currentSize < m_order) |
++ { |
++ |
++ for (i=0; i < (unsigned) currentSize; i++) |
++ { |
++ currentSnr -= previousSNR[i] * GetArCoefficient(currentSize, currentSize -i); |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ { |
++ printf("a [%d,%d] (%f) * SV [i-%d] (%f) ", currentSize , currentSize - i, GetArCoefficient(currentSize, currentSize -i), \ |
++ currentSize - i, previousSNR[i] ); |
++ if ( i != (unsigned) currentSize - 1) |
++ printf("+ "); |
++ } |
++ #endif //NS3_LOG_ENABLE |
++ |
++ } |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ printf(" = %f\n", currentSnr); |
++ #endif //NS3_LOG_ENABLE |
++ } |
++ else |
++ { |
++ for (i=0; i < (unsigned) currentSize; i++) |
++ { |
++ currentSnr -= previousSNR[i] * GetArCoefficient(m_order, currentSize -i); |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ { |
++ printf("a [%d,%d] (%f) * SV [i-%d] (%f) ", m_order , currentSize - i, GetArCoefficient(m_order, currentSize -i), \ |
++ currentSize - i, previousSNR[i] ); |
++ if ( i != (unsigned) currentSize - 1) |
++ printf("+ "); |
++ } |
++ #endif //NS3_LOG_ENABLE |
++ |
++ } |
++ #ifdef NS3_LOG_ENABLE |
++ if (g_debug) |
++ printf(" = %f\n", currentSnr); |
++ #endif //NS3_LOG_ENABLE |
++ } |
++ } |
++ |
++ |
++ //When we have an empty queue (currentSize == 0) -> We set the Slow Varying value |
++ //as a random number (Normal Variable with average centered at 0.0 and a variance |
++ //equal to m_stdDevDb |
++ else |
++ { |
++ currentSnr = randomArNoise.GetValue(); |
++ if (g_debug) |
++ printf("Slow fading: SV[i] = %f\n", currentSnr); |
++ } |
++ |
++ if (m_order) |
++ channel->UpdateSnr(currentSnr); |
++ } |
++ else |
++ NS_LOG_ERROR("AR propagation loss model does not know the current tx/rx pair" << key.GetTx() << "/" << key.GetRx() ); |
++ |
++ return currentSnr; |
++} |
++ |
++ |
++std::string ArModel::GetCwd () { |
++ NS_LOG_FUNCTION_NOARGS(); |
++ char buf[FILENAME_MAX]; |
++ char* succ = getcwd(buf, FILENAME_MAX); |
++ if (succ) |
++ return std::string(succ); |
++ return ""; // raise a flag, throw an exception, ... |
++} |
++ |
++NS_OBJECT_ENSURE_REGISTERED (BurstyErrorModel); |
++ |
++TypeId |
++BurstyErrorModel::GetTypeId(void) { |
++ static TypeId tid = TypeId ("ns3::BurstyErrorModel") |
++ .SetParent<ErrorModel> () |
++ .AddConstructor<BurstyErrorModel> () |
++ .AddAttribute("BearModel", |
++ "Flag to decide the error model decider to use", |
++ EnumValue(BEAR_MODEL), |
++ MakeEnumAccessor(&BurstyErrorModel::m_arModel), |
++ MakeEnumChecker(NO_ERROR_MODEL, "NO_ERROR_MODEL", |
++ BEAR_MODEL, "BEAR_MODEL", |
++ SHADOWING_MODEL, "SHADOWING_MODEL")) |
++ .AddAttribute ("RanVar", |
++ "Random variable which determine a packet to be successfully received or not", |
++ RandomVariableValue (UniformVariable (0.0, 1.0)), |
++ MakeRandomVariableAccessor (&BurstyErrorModel::m_ranvar), |
++ MakeRandomVariableChecker ()) |
++ .AddTraceSource ("BearRxTrace", |
++ "Packet tracing", |
++ MakeTraceSourceAccessor (&BurstyErrorModel::m_rxTrace)) |
++ ; |
++ return tid; |
++} |
++ |
++BurstyErrorModel::BurstyErrorModel() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ |
++ m_arModel = BEAR_MODEL; |
++ |
++ burstyErrorModelParams_t dataLogParams = {1.24, 0.366, 6.88, 3, 16}; |
++ burstyErrorModelParams_t ackLogParams = {1.00, 0.886, 6.88, 0, 13}; |
++ burstyErrorModelParams_t bcastCtrlLogParams = {1.9, 0.6, 0.0, 0, 10}; |
++ m_dataLogParams = dataLogParams; |
++ m_ackLogParams = ackLogParams; |
++ m_bcastCtrlLogParams = bcastCtrlLogParams; |
++} |
++ |
++BurstyErrorModel::~BurstyErrorModel() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++} |
++ |
++void BurstyErrorModel::SetRxCallback(BearRxCallback_t callback) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ m_rxCallback = callback; |
++} |
++ |
++bool BurstyErrorModel::DoCorrupt(Ptr<Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(m_unwrappedSnr.totalSnr); |
++ |
++ bool rxError; |
++ packetInfo_t packetInfo = ParsePacket(packet); |
++ |
++ //Decide whether the frame is correct or not according to the frame type (data, TCP or broadcast/control) |
++ if ((packetInfo.type == UDP_DATA || packetInfo.type == TCP_DATA) && (packetInfo.payloadLength > 4)) //Discard ACKs TCP |
++ { |
++ rxError = CorruptDataFrame(packet); |
++ } |
++ else if (packetInfo.type == TCP_DATA && packetInfo.payloadLength < 4 \ |
++ && (!(packetInfo.tcpHdr.GetFlags() & 0x02) && !(packetInfo.tcpHdr.GetFlags() & 0x01))) //TCP ACK particular logistic function |
++ { |
++ rxError = CorruptAckFrame(packet); |
++ |
++ } |
++ else if (packetInfo.wifiHdr.IsCtl() || packetInfo.wifiHdr.IsMgt() || \ |
++ (packetInfo.wifiHdr.GetAddr1()).IsBroadcast() || \ |
++ packetInfo.ipv4Hdr.GetDestination().IsBroadcast()) |
++ rxError = CorruptBcastCtrlFrame(packet); |
++ else |
++ rxError = false; |
++ |
++ //Tracing and callbacks |
++ m_rxTrace (packet, Simulator::Now(), rxError, m_unwrappedSnr.propagationSnr, m_unwrappedSnr.slowFading, m_unwrappedSnr.fastFading); |
++ |
++ if (!m_rxCallback.IsNull ()) |
++ { |
++ m_rxCallback (packet, Simulator::Now(), rxError, m_unwrappedSnr.propagationSnr, m_unwrappedSnr.slowFading, m_unwrappedSnr.fastFading); |
++ } |
++ return rxError; |
++} |
++ |
++bool BurstyErrorModel::CorruptDataFrame(Ptr<Packet>) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ double fer; |
++ double value; |
++ bool error; |
++ |
++ //Reception decision |
++ switch (m_arModel) { |
++ |
++ case NO_ERROR_MODEL: |
++ fer = 0.0; |
++ break; |
++ case BEAR_MODEL: |
++ fer = GetBearFer(&m_dataLogParams); |
++ break; |
++ case SHADOWING_MODEL: |
++ if (m_unwrappedSnr.totalSnr < 9) |
++ fer = 1.0; |
++ else |
++ fer = 0.0; |
++ break; |
++ |
++ default: |
++ NS_LOG_ERROR("Error model not found... Please fix"); |
++ fer = 0.0; |
++ break; |
++ } |
++ //Use a random value to decide if the frame is received correctly |
++ value = m_ranvar.GetValue(); |
++ NS_LOG_DEBUG ("Random value (" << value << ") < FER (" << fer << ")"); |
++ if (value < fer) |
++ { |
++ NS_LOG_LOGIC("CORRUPT!!"); |
++ error = true; |
++ } |
++ else |
++ { |
++ NS_LOG_LOGIC("CORRECT!!"); |
++ error = false; |
++ } |
++ return error; |
++} |
++ |
++bool BurstyErrorModel::CorruptAckFrame(Ptr<Packet>) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ double fer; |
++// double value; |
++ bool error; |
++ |
++ //Reception decision |
++ switch (m_arModel) { |
++ |
++ case NO_ERROR_MODEL: |
++ fer = 0.0; |
++ break; |
++ case BEAR_MODEL: |
++// fer = GetBearFer(&m_ackLogParams); |
++ fer = 0.0; //Test version --> All ACK (TCP) are received correctly |
++ |
++ break; |
++ case SHADOWING_MODEL: |
++ if (m_unwrappedSnr.totalSnr < 8) |
++ fer = 1.0; |
++ else |
++ fer = 0.0; |
++ break; |
++ |
++ default: |
++ NS_LOG_ERROR("Error model not found... Please fix"); |
++ fer = 0.0; |
++ break; |
++ } |
++ //Use a random value to decide if the frame is received correctly |
++// value = m_ranvar.GetValue(); |
++// NS_LOG_UNCOND ("Random value (" << value << ") < FER (" << fer << ")"); |
++ |
++ //Force ACK to be correct |
++// return false; |
++ |
++ if (m_ranvar.GetValue() < fer) |
++ error = true; |
++ else |
++ error = false; |
++ |
++ return error; |
++} |
++ |
++bool BurstyErrorModel::CorruptBcastCtrlFrame(Ptr<Packet>) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ double fer; |
++ double value; |
++ bool error; |
++ //Reception decision |
++ switch (m_arModel) { |
++ |
++ case NO_ERROR_MODEL: |
++ fer = 0.0; |
++ break; |
++ case BEAR_MODEL: |
++ fer = GetBearFer(&m_bcastCtrlLogParams); |
++ break; |
++ case SHADOWING_MODEL: |
++ if (m_unwrappedSnr.totalSnr < 1.7) |
++ fer = 1.0; |
++ else |
++ fer = 0.0; |
++ break; |
++ |
++ default: |
++ NS_LOG_ERROR("Error model not found... Please fix"); |
++ fer = 0.0; |
++ break; |
++ } |
++ //Use a random value to decide if the frame is received correctly |
++ value = m_ranvar.GetValue(); |
++ NS_LOG_DEBUG ("Random value (" << value << ") < FER (" << fer << ")"); |
++ |
++ //// In order not to get an ARP message lost which cut the measurement out, force the broadcast frames to be correct |
++ return false; |
++ |
++ if (m_ranvar.GetValue() < fer) |
++ error = true; |
++ else |
++ error = false; |
++ |
++ return error; |
++} |
++ |
++double BurstyErrorModel::GetBearFer(burstyErrorModelParams_t *params) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ double fer; |
++ |
++ if (m_unwrappedSnr.totalSnr < params->lowThreshold) |
++ fer = 1; |
++ else if (m_unwrappedSnr.totalSnr < params->highThreshold) |
++ { |
++ fer = params->a / (1 + exp(params->b * (m_unwrappedSnr.totalSnr - params->c))); |
++ NS_LOG_DEBUG ("FER = " << params->a << " / (1 + e^(" << params->b << "* (" << m_unwrappedSnr.totalSnr << \ |
++ " - " << params->c << "))) = " << fer); |
++ } |
++ else |
++ fer = 0; |
++ return fer; |
++} |
++ |
++void BurstyErrorModel::DoReset() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++} |
++ |
++void BurstyErrorModel::SetUnwrappedSnr(double propagationSnr, double slowFadingComponent, double fastFadingComponent) |
++{ |
++ NS_LOG_FUNCTION(propagationSnr << slowFadingComponent << fastFadingComponent); |
++ m_unwrappedSnr.propagationSnr = propagationSnr; |
++ m_unwrappedSnr.slowFading = slowFadingComponent; |
++ m_unwrappedSnr.fastFading = fastFadingComponent; |
++ |
++ m_unwrappedSnr.totalSnr = propagationSnr + slowFadingComponent + fastFadingComponent; |
++ //Do not allow non-positive SNRs |
++ if (m_unwrappedSnr.totalSnr < 0) |
++ m_unwrappedSnr.totalSnr = 0; |
++} |
++ |
++packetInfo_t BurstyErrorModel::ParsePacket (Ptr<Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(packet); |
++ |
++ packetInfo_t packetInfo; |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
++ pktCopy->RemoveHeader(packetInfo.wifiHdr); |
++ |
++ if (packetInfo.wifiHdr.IsData()) |
++ { |
++ pktCopy->RemoveHeader(packetInfo.llcHdr); |
++ switch (packetInfo.llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ packetInfo.type = ARP_PACKET; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(packetInfo.ipv4Hdr); |
++ switch (packetInfo.ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(packetInfo.tcpHdr); |
++ packetInfo.type = TCP_DATA; |
++ break; |
++ case 17: //UDP |
++ pktCopy->RemoveHeader(packetInfo.udpHdr); |
++ packetInfo.type = UDP_DATA; |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP header) --> " << packetInfo.ipv4Hdr.GetProtocol()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC header) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ else if (packetInfo.wifiHdr.IsAck()) |
++ { |
++ packetInfo.type = IEEE_80211_ACK; |
++ } |
++ else // 802.11 Control/Management frame |
++ { |
++ packetInfo.type = IEEE_80211_NODATA; |
++ } |
++ |
++ packetInfo.payloadLength = pktCopy->GetSize() - 4; //Last four bytes are used for tagging |
++ |
++ return packetInfo; |
++} |
++ |
++ |
++ |
++ |
++ |
+diff -uprNB ns-3.13/src/ar-model/model/ar-model.h b/src/ar-model/model/ar-model.h |
+--- ns-3.13/src/ar-model/model/ar-model.h 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/model/ar-model.h 2012-04-16 11:50:12.000000000 +0200 |
+@@ -0,0 +1,433 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#ifndef AR_MODEL_H_ |
++#define AR_MODEL_H_ |
++ |
++#include <string> |
++#include <vector> |
++#include <map> |
++#include <unistd.h> |
++ |
++#include "ns3/object.h" |
++#include "ns3/random-variable.h" |
++ |
++//AR model will play the role as the derived classes of both Error and Propagation Loss models |
++#include "ns3/error-model.h" |
++#include "ns3/mobility-model.h" |
++#include "ns3/propagation-loss-model.h" |
++ |
++#include "ns3/event-id.h" |
++ |
++//Needed to parse the packet content (BurstyErrorModel::ParsePacket) |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++#include "ns3/udp-header.h" |
++ |
++//Tracing |
++#include "ns3/traced-value.h" |
++#include "ns3/traced-callback.h" |
++ |
++using namespace std; |
++namespace ns3 { |
++ |
++class Packet; |
++class BurstyErrorModel; |
++typedef int32_t nsaddr_t; |
++ |
++struct prevValues_t { |
++ double snr; |
++ Time time; |
++}; |
++ |
++typedef struct { |
++ double propagationSnr; |
++ double slowFading; |
++ double fastFading; |
++ double totalSnr; |
++} snrComposition_t; |
++ |
++class ChannelKey { |
++public: |
++ ChannelKey() {} |
++ ChannelKey (nsaddr_t tx, nsaddr_t rx) : m_tx(tx), m_rx(rx) {} |
++ virtual ~ChannelKey () {} |
++ |
++ bool operator < (const ChannelKey& key) const { |
++ if(m_tx < key.m_tx) { |
++ return true; |
++ } else if(m_tx == key.m_tx) { |
++ return(m_rx < key.m_rx); |
++ } else { |
++ return false; |
++ } |
++ } |
++ |
++ u_int32_t GetRx () const; |
++ u_int32_t GetTx () const; |
++ void SetRx (u_int32_t rx); |
++ void SetTx (u_int32_t tx); |
++ |
++private: |
++ int m_tx; |
++ int m_rx; |
++}; |
++ |
++class ArChannelEntry: public Object { |
++public: |
++ /** |
++ * Constructor |
++ */ |
++ ArChannelEntry (); |
++ /** |
++ * \param order Auto Regressive filter order |
++ * \ |
++ */ |
++ ArChannelEntry (int order, double coherenceTime); |
++ |
++ /** |
++ * Destructor |
++ */ |
++ ~ArChannelEntry (); |
++ /** |
++ * When a new frame arrives, we need to update the vector that contains the AR order previous frames information; furthermore, we must |
++ * update the ArChannelEntry oldest received frame timeout |
++ * \param snr SNR read from the physical layer |
++ * \param order Order of the AR filter |
++ */ |
++ void UpdateSnr (double snr); |
++ |
++ /** |
++ * \param previousSnr Vector which will hold the SNR values (window) |
++ * \returns The size of the input vector |
++ */ |
++ int GetPreviousSnr (vector<double> &previousSnr); |
++ |
++ /** |
++ * \param coherenceTime Channel coherence |
++ * \returns The instant the next timeout should be invoked |
++ */ |
++ double GetNextTimeout(); |
++ /** |
++ * \brief Handle the timeout event when the coherence timer expires |
++ */ |
++ void HandleCoherenceTimeout (); |
++ |
++ u_int32_t GetRx () const; |
++ u_int32_t GetTx () const; |
++ void SetRx (u_int32_t rx); |
++ void SetTx (u_int32_t tx); |
++ |
++ /** |
++ * \brief Print the captured packet queue (AR model window) |
++ */ |
++ void DisplaySnrQueue (void); |
++ |
++private: |
++ |
++ u_int32_t m_tx; |
++ u_int32_t m_rx; |
++ |
++ //Vector that stores the SNR and the timestamp of the overheard packets (Size set by the AR filter order) |
++ vector<struct prevValues_t> m_previousSnr; |
++ |
++ //One timer per ChannelEntry object |
++ EventId m_coherenceTimeout; |
++ |
++ int m_order; |
++ double m_coherenceTime; |
++}; |
++ |
++ |
++class ArModel: public PropagationLossModel |
++{ |
++public: |
++ /** |
++ * Attribute handler |
++ */ |
++ static TypeId GetTypeId (void); |
++ /** |
++ * Default constructor |
++ */ |
++ ArModel (); |
++ |
++ /** |
++ * Default destructor |
++ */ |
++ virtual ~ArModel (); |
++ |
++ /** |
++ * \param name the name of the model to set |
++ * \param n0 the name of the attribute to set |
++ * \param v0 the value of the attribute to set |
++ * \param n1 the name of the attribute to set |
++ * \param v1 the value of the attribute to set |
++ * \param n2 the name of the attribute to set |
++ * \param v2 the value of the attribute to set |
++ * \param n3 the name of the attribute to set |
++ * \param v3 the value of the attribute to set |
++ * \param n4 the name of the attribute to set |
++ * \param v4 the value of the attribute to set |
++ * \param n5 the name of the attribute to set |
++ * \param v5 the value of the attribute to set |
++ * \param n6 the name of the attribute to set |
++ * \param v6 the value of the attribute to set |
++ * \param n7 the name of the attribute to set |
++ * \param v7 the value of the attribute to set |
++ * |
++ * Configure a propagation delay for this channel. |
++ */ |
++ void SetPropagationLoss (std::string name, |
++ std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), |
++ std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), |
++ std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), |
++ std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), |
++ std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), |
++ std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), |
++ std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), |
++ std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); |
++ |
++ /** |
++ * \brief Set the propagation loss model |
++ * \param loss Pointer to the propagation loss model to set |
++ */ |
++ void SetPropagationLoss (Ptr<PropagationLossModel> loss); |
++ |
++ /** |
++ * \brief Set the error model |
++ * \param error Pointer to the error model to set |
++ */ |
++ void SetErrorModel (Ptr<BurstyErrorModel> error); |
++ |
++ /** |
++ * \returns The Bursty error model linked to this class |
++ */ |
++ Ptr<BurstyErrorModel> GetErrorModel (); |
++ /** |
++ * \param fileName Name of the file which holds the AR filter coefficient |
++ */ |
++ bool GetCoefficients (string fileName); |
++ |
++ /** |
++ * \param key AR coefficient set map key value |
++ * \param vectorPosition The position in which stays the desired coefficient |
++ * \returns AR coefficient |
++ */ |
++ double GetArCoefficient (int key, int vectorPosition) const; |
++ |
++ /** |
++ * \brief |
++ * \param tx Transmitter index |
++ * \param rx Reveiver index |
++ * \returns Auto Regressive filter obtained value (dB) |
++ */ |
++ double GetCurrentArValue (Ptr<MobilityModel> sender, Ptr<MobilityModel> receiver) const; |
++ |
++private: |
++ |
++ |
++ //PropagationLossModel virtual (abstract) method --> Equivalent to ns-2 arModel::Pr (PacketStamp *t_, PacketStamp *r_, WirelessPhy *ifp_) |
++ virtual double DoCalcRxPower (double txPowerDbm, |
++ Ptr<MobilityModel> a, |
++ Ptr<MobilityModel> b) const; |
++ |
++ /* AR mode parameters */ |
++ int m_order; /* Order of the AR filter */ |
++ double m_variance; /* Input noise variance */ |
++ |
++ double m_ffVariance; /* Fast Fading variance */ |
++ |
++ double m_coherenceTime; /* Coherence time */ |
++ bool m_symmetry; /* Am I using symmetry? */ |
++ |
++ /* Other parameters of the channel */ |
++ double m_pathLossExp; /* path loss exponent */ |
++ double m_stdDevDb; /* standard deviation (dB) */ |
++ |
++ double m_noise; /* Noise Power used to model the SNR */ |
++ |
++ RandomVariable m_ranvar; |
++ |
++ /* All the channels (one per tx/rx pair) */ |
++ typedef map<ChannelKey, Ptr <ArChannelEntry> > channelSet_t; |
++ typedef channelSet_t::const_iterator channelSetIter_t; |
++ |
++ channelSet_t m_channelSetMap; |
++ |
++ /* The coeficients of the AR model */ |
++ typedef map<int, vector<double> > coefSet_t; |
++ typedef coefSet_t::const_iterator coefSetIter_t; |
++ |
++ coefSet_t m_arCoefficientsMap; |
++ |
++ //Generic propagation model |
++ Ptr<PropagationLossModel> m_propagationLoss; |
++ |
++ //BEAR model |
++ Ptr<BurstyErrorModel> m_errorModel; |
++ |
++ //Coefficient file name |
++ string m_coefficientsFile; |
++ |
++protected: |
++ /** |
++ * \return The current path (in string format) |
++ */ |
++ static std::string GetCwd (); |
++ |
++}; |
++ |
++//Error model selection |
++typedef enum { |
++ NO_ERROR_MODEL, |
++ BEAR_MODEL, |
++ SHADOWING_MODEL |
++} errorModelOption_t; |
++ |
++//Parameter to carry out the error decision |
++typedef struct { |
++ double a; |
++ double b; |
++ double c; |
++ int lowThreshold; |
++ int highThreshold; |
++} burstyErrorModelParams_t; |
++ |
++enum PacketType{ |
++ IEEE_80211_ACK, |
++ IEEE_80211_NODATA, |
++ ARP_PACKET, |
++ UDP_DATA, |
++ TCP_DATA |
++}; |
++ |
++typedef struct { |
++ WifiMacHeader wifiHdr; |
++ LlcSnapHeader llcHdr; |
++ Ipv4Header ipv4Hdr; |
++ TcpHeader tcpHdr; |
++ UdpHeader udpHdr; |
++ u_int16_t payloadLength; |
++ PacketType type; |
++ |
++} packetInfo_t; |
++ |
++class BurstyErrorModel: public ErrorModel |
++{ |
++public: |
++ /** |
++ * arg1: packet received successfully |
++ * arg2: packet timestamp |
++ * arg3: Boolean that represents whether a packet has been succesfully received or not |
++ * arg4: snr (global) of packet |
++ * arg5: snr due to the AR model (Slow fading) |
++ * arg6: Fast Fading related SNR |
++ */ |
++ typedef Callback<void,Ptr<Packet>, Time, bool, double, double, double> BearRxCallback_t; |
++ |
++ /** |
++ * Attribute handler |
++ */ |
++ static TypeId GetTypeId (void); |
++ /** |
++ * Default constructor |
++ */ |
++ BurstyErrorModel (); |
++ /** |
++ * Default destructor |
++ */ |
++ virtual ~BurstyErrorModel (); |
++ /** |
++ * \brief Apply a logistic function to decide whether a data frame is correct or not |
++ * \param packet The packet received |
++ * \returns True if the packet is corrupted |
++ */ |
++ bool CorruptDataFrame (Ptr<Packet> packet); |
++ /** |
++ * \brief Apply a logistic function to decide whether an ack (TCP) frame is correct or not |
++ * \param packet The packet received |
++ * \returns True if the packet is corrupted |
++ */ |
++ bool CorruptAckFrame (Ptr<Packet> packet); |
++ /** |
++ * \brief Apply a logistic function to decide whether a broadcast/control/management frame is correct or not |
++ * \param packet The packet received |
++ * \returns True if the packet is corrupted |
++ */ |
++ bool CorruptBcastCtrlFrame (Ptr<Packet> packet); |
++ |
++ /** |
++ * \brief Use the logistic function to obtain the FER |
++ * \param params Struct that holds the logistic function parameters |
++ * \returns The FER value |
++ */ |
++ double GetBearFer (burstyErrorModelParams_t *params); |
++ |
++ /** |
++ * \param rxComponent Value obtained from the propagation loss model |
++ * \param slowFadingComponent Auto regressive component that tries to emulate the Slow Fading wireless channel behaviour |
++ * \param fastFadingComponent Random value which represent Fast Fading |
++ */ |
++ void SetUnwrappedSnr (double propagationSnr, double slowFadingComponent, double fastFadingComponent); |
++ |
++ //Callback invoked when a packet is received by the error model object |
++ void SetRxCallback (BearRxCallback_t callback); |
++ |
++ /** |
++ * \param packet Packet received by the node |
++ * \returns Struct which contains the info relative to the packet |
++ */ |
++ packetInfo_t ParsePacket (Ptr<Packet> packet); |
++ |
++private: |
++ //ErrorModel virtual (abstract) methods |
++ virtual bool DoCorrupt (Ptr<Packet>); |
++ virtual void DoReset (void); |
++ |
++ RandomVariable m_ranvar; |
++ |
++ //Logistic function configuration parameters |
++ burstyErrorModelParams_t m_dataLogParams; |
++ burstyErrorModelParams_t m_ackLogParams; |
++ burstyErrorModelParams_t m_bcastCtrlLogParams; |
++ |
++ //Choose among the different options (0- No model, 1- BEAR model, 2- Shadowing model) |
++ errorModelOption_t m_arModel; |
++ |
++ snrComposition_t m_unwrappedSnr; |
++ |
++ // Tracing |
++ /** |
++ * The trace source fired when a packet ends the reception process from |
++ * the medium. |
++ * |
++ * \see class CallBackTraceSource |
++ */ |
++ TracedCallback<Ptr<const Packet>, Time, bool, double, double, double> m_rxTrace; |
++ BearRxCallback_t m_rxCallback; |
++ |
++}; |
++ |
++ |
++} //namespace ns3 |
++#endif /* AR_MODEL_H_ */ |
+diff -uprNB ns-3.13/src/ar-model/waf b/src/ar-model/waf |
+--- ns-3.13/src/ar-model/waf 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/waf 2011-12-23 22:09:34.000000000 +0100 |
+@@ -0,0 +1 @@ |
++exec "`dirname "$0"`"/../../waf "$@" |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/ar-model/wscript b/src/ar-model/wscript |
+--- ns-3.13/src/ar-model/wscript 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/ar-model/wscript 2012-04-30 19:02:04.000000000 +0200 |
+@@ -0,0 +1,28 @@ |
++## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
++ |
++def build(bld): |
++ obj = bld.create_ns3_module('ar-model', ['core','wifi','network','internet','propagation']) |
++ obj.source = [ |
++ 'model/ar-model.cc' |
++ ] |
++ |
++ obj_test = bld.create_ns3_module_test_library('ar-model') |
++ obj_test.source = [ |
++ ] |
++ |
++ headers = bld.new_task_gen(features=['ns3header']) |
++ headers.module = 'ar-model' |
++ headers.source = [ |
++ 'model/ar-model.h' |
++ ] |
++ |
++#if bld.env['ENABLE_GSL']: |
++# obj.use.extend(['GSL', 'GSLCBLAS', 'M']) |
++# obj_test.use.extend(['GSL', 'GSLCBLAS', 'M']) |
++ |
++#if (bld.env['ENABLE_EXAMPLES']): |
++# bld.add_subdirs('examples') |
++ |
++#bld.ns3_python_bindings() |
++ |
++ |
+Binary files ns-3.13/src/bridge/bindings/callbacks_list.pyc and b/src/bridge/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/bridge/bindings/modulegen__gcc_LP64.pyc and b/src/bridge/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/config-store/bindings/callbacks_list.pyc and b/src/config-store/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/config-store/bindings/modulegen_customizations.pyc and b/src/config-store/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/config-store/bindings/modulegen__gcc_LP64.pyc and b/src/config-store/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/core/bindings/callbacks_list.pyc and b/src/core/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/core/bindings/modulegen_customizations.pyc and b/src/core/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/core/bindings/modulegen__gcc_LP64.pyc and b/src/core/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/csma/bindings/callbacks_list.pyc and b/src/csma/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/csma/bindings/modulegen__gcc_LP64.pyc and b/src/csma/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/dsdv/bindings/callbacks_list.pyc and b/src/dsdv/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/dsdv/bindings/modulegen__gcc_LP64.pyc and b/src/dsdv/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/emu/bindings/callbacks_list.pyc and b/src/emu/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/emu/bindings/modulegen_customizations.pyc and b/src/emu/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/emu/bindings/modulegen__gcc_LP64.pyc and b/src/emu/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/energy/bindings/callbacks_list.pyc and b/src/energy/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/energy/bindings/modulegen__gcc_LP64.pyc and b/src/energy/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/flow-monitor/bindings/callbacks_list.pyc and b/src/flow-monitor/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/flow-monitor/bindings/modulegen__gcc_LP64.pyc and b/src/flow-monitor/bindings/modulegen__gcc_LP64.pyc differ |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,16 @@ |
++1.000000 0.000000 |
++0.907866 0.092134 |
++0.949584 0.050416 |
++0.991529 0.008471 |
++0.952190 0.047810 |
++0.757302 0.242698 |
++0.865381 0.134619 |
++0.511230 0.488770 |
++0.000000 1.000000 |
++0.123017 0.876983 |
++0.028815 0.971185 |
++0.000000 1.000000 |
++0.001688 0.998312 |
++0.057188 0.942812 |
++0.001049 0.998951 |
++0.001638 0.998362 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_05_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,17 @@ |
++16 |
++0.986590 0.013410 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.405460 0.000002 0.594538 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.204189 0.008364 0.787446 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.105633 0.830920 0.063447 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.159663 0.061536 0.778801 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.471413 0.399575 0.129012 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.380004 0.001163 0.618833 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.156345 0.398559 0.445096 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.762173 0.079143 0.158684 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.074751 0.727129 0.198120 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.621902 0.308740 0.069359 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.048405 0.791386 0.160209 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.310899 0.672090 0.017011 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.008608 0.990207 0.001184 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.005832 0.687207 0.306961 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.125996 0.874004 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,16 @@ |
++1.000000 0.000000 |
++0.000403 0.999597 |
++1.000000 0.000000 |
++1.000000 0.000000 |
++0.998944 0.001056 |
++0.642183 0.357817 |
++0.608924 0.391076 |
++0.365539 0.634461 |
++0.297332 0.702668 |
++0.202242 0.797758 |
++0.182143 0.817857 |
++0.153194 0.846806 |
++0.123824 0.876176 |
++0.172356 0.827644 |
++0.069549 0.930451 |
++0.000783 0.999217 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_07_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,17 @@ |
++16 |
++0.647274 0.352726 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.237512 0.223270 0.539218 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.002989 0.979007 0.018004 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.029215 0.721750 0.249035 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.234171 0.169896 0.595933 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.337136 0.601506 0.061358 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.052692 0.359510 0.587798 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.330470 0.541741 0.127788 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.319827 0.398819 0.281355 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.168587 0.712203 0.119210 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.298236 0.489778 0.211986 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.077230 0.751234 0.171536 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.390421 0.559013 0.050565 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.061582 0.487140 0.451278 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.121439 0.606898 0.271663 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.200574 0.799426 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,16 @@ |
++1.000000 0.000000 |
++0.905258 0.094742 |
++0.726755 0.273245 |
++1.000000 0.000000 |
++0.995205 0.004795 |
++0.361380 0.638620 |
++0.997753 0.002247 |
++0.445821 0.554179 |
++0.000000 1.000000 |
++0.999940 0.000060 |
++0.000000 1.000000 |
++0.169432 0.830568 |
++0.000483 0.999517 |
++0.000000 1.000000 |
++0.000004 0.999996 |
++0.009604 0.990396 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_09_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,17 @@ |
++16 |
++0.932777 0.067223 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.749783 0.000009 0.250208 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.194541 0.000157 0.805303 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.370826 0.137560 0.491614 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.628274 0.090475 0.281251 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.336381 0.431350 0.232269 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.365050 0.091726 0.543224 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.242807 0.465648 0.291545 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.573958 0.177507 0.248535 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.175650 0.634713 0.189637 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.050319 0.214913 0.734768 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.318928 0.524213 0.156859 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.592322 0.291818 0.115860 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.056726 0.771544 0.171730 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.112821 0.683063 0.204116 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.168550 0.831450 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,16 @@ |
++1.000000 0.000000 |
++0.340218 0.659782 |
++0.648892 0.351108 |
++0.878008 0.121992 |
++0.231267 0.768733 |
++0.000362 0.999638 |
++0.581619 0.418381 |
++0.000001 0.999999 |
++0.481435 0.518565 |
++0.054215 0.945785 |
++0.000000 1.000000 |
++0.016029 0.983971 |
++0.011953 0.988047 |
++0.000000 1.000000 |
++0.000880 0.999120 |
++0.002111 0.997889 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_12_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,17 @@ |
++16 |
++0.967694 0.032306 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.575550 0.000000 0.424450 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.073443 0.000110 0.926448 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.167472 0.706125 0.126404 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.778885 0.000000 0.221115 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.203018 0.100047 0.696935 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.114997 0.644634 0.240369 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.585812 0.322129 0.092058 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.080460 0.002351 0.917189 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.156829 0.814422 0.028749 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.250701 0.285288 0.464011 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.042496 0.781932 0.175572 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.208301 0.790529 0.001169 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.038112 0.782506 0.179381 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.008524 0.697452 0.294024 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.140410 0.859590 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_EMIS.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_EMIS.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_EMIS.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_EMIS.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,68 @@ |
++1.000000 0.000000 |
++0.907866 0.092134 |
++0.949584 0.050416 |
++0.991529 0.008471 |
++0.952190 0.047810 |
++0.757302 0.242698 |
++0.865381 0.134619 |
++0.511230 0.488770 |
++0.000000 1.000000 |
++0.123017 0.876983 |
++0.028815 0.971185 |
++0.000000 1.000000 |
++0.001688 0.998312 |
++0.057188 0.942812 |
++0.001049 0.998951 |
++0.001638 0.998362 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++1.000000 0.000000 |
++0.000403 0.999597 |
++1.000000 0.000000 |
++1.000000 0.000000 |
++0.998944 0.001056 |
++0.642183 0.357817 |
++0.608924 0.391076 |
++0.365539 0.634461 |
++0.297332 0.702668 |
++0.202242 0.797758 |
++0.182143 0.817857 |
++0.153194 0.846806 |
++0.123824 0.876176 |
++0.172356 0.827644 |
++0.069549 0.930451 |
++0.000783 0.999217 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++1.000000 0.000000 |
++0.905258 0.094742 |
++0.726755 0.273245 |
++1.000000 0.000000 |
++0.995205 0.004795 |
++0.361380 0.638620 |
++0.997753 0.002247 |
++0.445821 0.554179 |
++0.000000 1.000000 |
++0.999940 0.000060 |
++0.000000 1.000000 |
++0.169432 0.830568 |
++0.000483 0.999517 |
++0.000000 1.000000 |
++0.000004 0.999996 |
++0.009604 0.990396 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++1.000000 0.000000 |
++0.340218 0.659782 |
++0.648892 0.351108 |
++0.878008 0.121992 |
++0.231267 0.768733 |
++0.000362 0.999638 |
++0.581619 0.418381 |
++0.000001 0.999999 |
++0.481435 0.518565 |
++0.054215 0.945785 |
++0.000000 1.000000 |
++0.016029 0.983971 |
++0.011953 0.988047 |
++0.000000 1.000000 |
++0.000880 0.999120 |
++0.002111 0.997889 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_TR.txt b/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_TR.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_TR.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_16states/HMM_all_TR.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,68 @@ |
++0.986590 0.013410 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.405460 0.000002 0.594538 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.204189 0.008364 0.787446 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.105633 0.830920 0.063447 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.159663 0.061536 0.778801 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.471413 0.399575 0.129012 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.380004 0.001163 0.618833 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.156345 0.398559 0.445096 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.762173 0.079143 0.158684 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.074751 0.727129 0.198120 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.621902 0.308740 0.069359 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.048405 0.791386 0.160209 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.310899 0.672090 0.017011 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.008608 0.990207 0.001184 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.005832 0.687207 0.306961 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.125996 0.874004 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.647274 0.352726 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.237512 0.223270 0.539218 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.002989 0.979007 0.018004 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.029215 0.721750 0.249035 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.234171 0.169896 0.595933 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.337136 0.601506 0.061358 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.052692 0.359510 0.587798 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.330470 0.541741 0.127788 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.319827 0.398819 0.281355 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.168587 0.712203 0.119210 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.298236 0.489778 0.211986 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.077230 0.751234 0.171536 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.390421 0.559013 0.050565 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.061582 0.487140 0.451278 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.121439 0.606898 0.271663 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.200574 0.799426 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.932777 0.067223 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.749783 0.000009 0.250208 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.194541 0.000157 0.805303 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.370826 0.137560 0.491614 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.628274 0.090475 0.281251 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.336381 0.431350 0.232269 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.365050 0.091726 0.543224 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.242807 0.465648 0.291545 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.573958 0.177507 0.248535 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.175650 0.634713 0.189637 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.050319 0.214913 0.734768 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.318928 0.524213 0.156859 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.592322 0.291818 0.115860 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.056726 0.771544 0.171730 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.112821 0.683063 0.204116 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.168550 0.831450 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.967694 0.032306 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.575550 0.000000 0.424450 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.073443 0.000110 0.926448 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.167472 0.706125 0.126404 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.778885 0.000000 0.221115 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.203018 0.100047 0.696935 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.114997 0.644634 0.240369 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.585812 0.322129 0.092058 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.080460 0.002351 0.917189 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.156829 0.814422 0.028749 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.250701 0.285288 0.464011 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.042496 0.781932 0.175572 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.208301 0.790529 0.001169 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.038112 0.782506 0.179381 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.008524 0.697452 0.294024 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.140410 0.859590 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.990911 0.009089 |
++0.628239 0.371761 |
++0.061126 0.938874 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.990911 0.009089 |
++0.628239 0.371761 |
++0.061126 0.938874 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.642084 0.357916 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.642084 0.357916 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.996310 0.003690 0.000000 |
++0.014602 0.976775 0.008623 |
++0.000000 0.012377 0.987623 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.996310 0.003690 0.000000 |
++0.014602 0.976775 0.008623 |
++0.000000 0.012377 0.987623 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.989342 0.010658 0.000000 |
++0.031859 0.941837 0.026303 |
++0.000000 0.055371 0.944629 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_01_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.989342 0.010658 0.000000 |
++0.031859 0.941837 0.026304 |
++0.000000 0.055371 0.944629 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.973790 0.026210 |
++0.717441 0.282559 |
++0.218268 0.781732 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.973790 0.026210 |
++0.717441 0.282559 |
++0.218269 0.781731 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.636816 0.363184 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.636816 0.363184 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.994945 0.005055 0.000000 |
++0.005880 0.989451 0.004668 |
++0.000000 0.006901 0.993099 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.994945 0.005055 0.000000 |
++0.005880 0.989451 0.004668 |
++0.000000 0.006901 0.993099 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.965212 0.034788 0.000000 |
++0.029234 0.936945 0.033820 |
++0.000000 0.137831 0.862169 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_02_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.965212 0.034788 0.000000 |
++0.029234 0.936946 0.033820 |
++0.000000 0.137831 0.862169 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.988660 0.011340 |
++0.657350 0.342650 |
++0.110296 0.889704 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.988846 0.011154 |
++0.656305 0.343695 |
++0.108690 0.891310 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.579857 0.420143 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.579857 0.420143 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.989083 0.010552 0.000365 |
++0.017212 0.971639 0.011149 |
++0.000851 0.012259 0.986890 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.988834 0.011166 0.000000 |
++0.018226 0.969790 0.011984 |
++0.000000 0.013544 0.986456 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.974639 0.025361 0.000000 |
++0.033856 0.925457 0.040686 |
++0.000000 0.081142 0.918858 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_03_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.974639 0.025361 0.000000 |
++0.033856 0.925457 0.040686 |
++0.000000 0.081142 0.918858 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.992461 0.007539 |
++0.679821 0.320179 |
++0.175179 0.824821 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.992461 0.007539 |
++0.679822 0.320178 |
++0.175179 0.824821 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.550594 0.449406 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.550594 0.449406 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.997768 0.002232 0.000000 |
++0.000852 0.994363 0.004785 |
++0.000000 0.004660 0.995340 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.997768 0.002232 0.000000 |
++0.000852 0.994363 0.004785 |
++0.000000 0.004660 0.995340 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.967921 0.032079 0.000000 |
++0.013193 0.934539 0.052269 |
++0.000000 0.128428 0.871572 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_04_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.967921 0.032079 0.000000 |
++0.013192 0.934539 0.052269 |
++0.000000 0.128428 0.871572 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.974580 0.025420 |
++0.447547 0.552453 |
++0.051359 0.948641 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.976548 0.023452 |
++0.448245 0.551755 |
++0.048922 0.951078 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.417564 0.582436 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.417564 0.582436 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986960 0.011111 0.001929 |
++0.021356 0.956045 0.022599 |
++0.002461 0.012202 0.985337 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.985815 0.014185 0.000000 |
++0.026747 0.944854 0.028399 |
++0.000000 0.016571 0.983429 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.967996 0.032004 0.000000 |
++0.039632 0.908572 0.051797 |
++0.000000 0.053471 0.946529 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_05_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.967996 0.032004 0.000000 |
++0.039632 0.908572 0.051796 |
++0.000000 0.053471 0.946529 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.954706 0.045294 |
++0.565102 0.434898 |
++0.165550 0.834450 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.954170 0.045830 |
++0.562041 0.437959 |
++0.164162 0.835838 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.467294 0.532706 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.467294 0.532706 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986421 0.012770 0.000809 |
++0.008484 0.977286 0.014230 |
++0.000000 0.010544 0.989456 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986187 0.013813 0.000000 |
++0.008621 0.976536 0.014843 |
++0.000000 0.010766 0.989234 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.949172 0.050828 0.000000 |
++0.017156 0.930517 0.052327 |
++0.000000 0.131579 0.868421 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_06_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.949172 0.050828 0.000000 |
++0.017156 0.930517 0.052327 |
++0.000000 0.131578 0.868422 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.921924 0.078076 |
++0.368743 0.631257 |
++0.062447 0.937553 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.922140 0.077860 |
++0.368706 0.631294 |
++0.062396 0.937604 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.363165 0.636835 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.363166 0.636834 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.979900 0.019785 0.000315 |
++0.009122 0.982647 0.008231 |
++0.000000 0.007079 0.992921 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.979789 0.020211 0.000000 |
++0.009163 0.982421 0.008416 |
++0.000000 0.007120 0.992880 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.932439 0.067561 0.000000 |
++0.019030 0.938524 0.042446 |
++0.000000 0.063233 0.936767 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_07_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.932439 0.067561 0.000000 |
++0.019030 0.938523 0.042446 |
++0.000000 0.063233 0.936767 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.922048 0.077952 |
++0.403322 0.596678 |
++0.027489 0.972511 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.922117 0.077883 |
++0.403127 0.596873 |
++0.027459 0.972541 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.415443 0.584557 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.415443 0.584557 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.987452 0.012548 0.000000 |
++0.008914 0.983970 0.007116 |
++0.000069 0.003241 0.996690 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.987364 0.012636 0.000000 |
++0.009119 0.983738 0.007142 |
++0.000000 0.003325 0.996675 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.940206 0.059794 0.000000 |
++0.025264 0.936326 0.038410 |
++0.000000 0.027894 0.972106 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_08_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.940206 0.059794 0.000000 |
++0.025264 0.936326 0.038410 |
++0.000000 0.027894 0.972106 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.972535 0.027465 |
++0.502620 0.497380 |
++0.035681 0.964319 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.972535 0.027465 |
++0.502620 0.497380 |
++0.035681 0.964319 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.304348 0.695652 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.304348 0.695652 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.987897 0.012103 0.000000 |
++0.018910 0.951249 0.029841 |
++0.000000 0.005931 0.994069 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.987897 0.012103 0.000000 |
++0.018910 0.951249 0.029841 |
++0.000000 0.005931 0.994069 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.955146 0.044854 0.000000 |
++0.036119 0.914600 0.049281 |
++0.000000 0.025299 0.974701 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_09_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.955146 0.044854 0.000000 |
++0.036119 0.914600 0.049281 |
++0.000000 0.025299 0.974701 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.948522 0.051478 |
++0.421207 0.578793 |
++0.042250 0.957750 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.948653 0.051347 |
++0.421104 0.578896 |
++0.042224 0.957776 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.364514 0.635486 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.364514 0.635486 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.982743 0.017257 0.000000 |
++0.006646 0.985366 0.007988 |
++0.000062 0.004002 0.995936 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.982564 0.017436 0.000000 |
++0.006838 0.985129 0.008033 |
++0.000000 0.004088 0.995912 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.939128 0.060872 0.000000 |
++0.016663 0.942919 0.040418 |
++0.000000 0.036082 0.963918 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_10_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.939128 0.060872 0.000000 |
++0.016663 0.942919 0.040418 |
++0.000000 0.036082 0.963918 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.985144 0.014856 |
++0.378924 0.621076 |
++0.021840 0.978160 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.985144 0.014856 |
++0.378923 0.621077 |
++0.021840 0.978160 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.349469 0.650531 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.349469 0.650531 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.980337 0.019663 0.000000 |
++0.008927 0.979374 0.011699 |
++0.000000 0.005991 0.994009 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.980337 0.019663 0.000000 |
++0.008927 0.979374 0.011699 |
++0.000000 0.005991 0.994009 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.969623 0.030377 0.000000 |
++0.010890 0.958489 0.030621 |
++0.000000 0.022207 0.977793 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_11_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.969623 0.030377 0.000000 |
++0.010890 0.958489 0.030621 |
++0.000000 0.022207 0.977793 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.861650 0.138350 |
++0.288541 0.711459 |
++0.015807 0.984193 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.861707 0.138293 |
++0.287841 0.712159 |
++0.015772 0.984228 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.292262 0.707738 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.292262 0.707738 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986907 0.012570 0.000523 |
++0.007934 0.979285 0.012781 |
++0.000000 0.003230 0.996770 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986757 0.013243 0.000000 |
++0.008025 0.978790 0.013185 |
++0.000000 0.003255 0.996745 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.895254 0.104746 0.000000 |
++0.031235 0.926214 0.042551 |
++0.000000 0.018005 0.981995 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_12_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.895254 0.104746 0.000000 |
++0.031235 0.926214 0.042551 |
++0.000000 0.018005 0.981995 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.986293 0.013707 |
++0.363488 0.636512 |
++0.011466 0.988534 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.986293 0.013707 |
++0.363488 0.636512 |
++0.011466 0.988534 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.201756 0.798244 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.201756 0.798244 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.949604 0.050396 0.000000 |
++0.052688 0.898749 0.048563 |
++0.000000 0.002072 0.997928 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.949604 0.050396 0.000000 |
++0.052688 0.898749 0.048563 |
++0.000000 0.002072 0.997928 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.933257 0.066743 0.000000 |
++0.026331 0.841862 0.131807 |
++0.000000 0.017806 0.982194 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_13_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.933257 0.066743 0.000000 |
++0.026331 0.841862 0.131807 |
++0.000000 0.017806 0.982194 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.703156 0.296844 |
++0.002900 0.997100 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.702773 0.297227 |
++0.002605 0.997395 |
++0.000004 0.999996 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.322135 0.677865 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.322136 0.677864 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.947536 0.051615 0.000850 |
++0.003402 0.501052 0.495547 |
++0.000041 0.173865 0.826094 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.947601 0.052399 0.000000 |
++0.003185 0.473131 0.523684 |
++0.000000 0.210623 0.789377 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.820026 0.179974 0.000000 |
++0.076076 0.845763 0.078161 |
++0.000000 0.001361 0.998639 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_14_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.820026 0.179974 0.000000 |
++0.076076 0.845763 0.078161 |
++0.000000 0.001361 0.998639 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.181287 0.818713 |
++0.008422 0.991578 |
++0.001430 0.998570 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++0.180868 0.819132 |
++0.006511 0.993489 |
++0.001917 0.998083 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.067790 0.932210 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++1.000000 0.000000 |
++0.067790 0.932210 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986413 0.004542 0.009044 |
++0.002155 0.481460 0.516385 |
++0.000173 0.181349 0.818478 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.986416 0.013584 0.000000 |
++0.002403 0.461981 0.535616 |
++0.000000 0.215417 0.784583 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.523453 0.476547 0.000000 |
++0.018706 0.955683 0.025612 |
++0.000000 0.003425 0.996575 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_15_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++3 |
++0.523454 0.476546 0.000000 |
++0.018706 0.955683 0.025612 |
++0.000000 0.003425 0.996575 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_EMIS.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_EMIS.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_EMIS.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_EMIS.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,61 @@ |
++ Caso 1 Caso 2 Caso 3 Caso 4 |
++ 0.990911 0.009089 # 0.990911 0.009089 # 1.000000 0.000000 # 1.000000 0.000000 |
++1 0.628239 0.371761 # 0.628239 0.371761 # 0.642084 0.357916 # 0.642084 0.357916 |
++ 0.061126 0.938874 # 0.061126 0.938874 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.973790 0.026210 # 0.973790 0.026210 # 1.000000 0.000000 # 1.000000 0.000000 |
++2 0.717441 0.282559 # 0.717441 0.282559 # 0.636816 0.363184 # 0.636816 0.363184 |
++ 0.218268 0.781732 # 0.218269 0.781731 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.988660 0.011340 # 0.988846 0.011154 # 1.000000 0.000000 # 1.000000 0.000000 |
++3 0.657350 0.342650 # 0.656305 0.343695 # 0.579857 0.420143 # 0.579857 0.420143 |
++ 0.110296 0.889704 # 0.108690 0.891310 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.992461 0.007539 # 0.992461 0.007539 # 1.000000 0.000000 # 1.000000 0.000000 |
++4 0.679821 0.320179 # 0.679822 0.320178 # 0.550594 0.449406 # 0.550594 0.449406 |
++ 0.175179 0.824821 # 0.175179 0.824821 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.974580 0.025420 # 0.976548 0.023452 # 1.000000 0.000000 # 1.000000 0.000000 |
++5 0.447547 0.552453 # 0.448245 0.551755 # 0.417564 0.582436 # 0.417564 0.582436 |
++ 0.051359 0.948641 # 0.048922 0.951078 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.954706 0.045294 # 0.954170 0.045830 # 1.000000 0.000000 # 1.000000 0.000000 |
++6 0.565102 0.434898 # 0.562041 0.437959 # 0.467294 0.532706 # 0.467294 0.532706 |
++ 0.165550 0.834450 # 0.164162 0.835838 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.921924 0.078076 # 0.922140 0.077860 # 1.000000 0.000000 # 1.000000 0.000000 |
++7 0.368743 0.631257 # 0.368706 0.631294 # 0.363165 0.636835 # 0.363166 0.636834 |
++ 0.062447 0.937553 # 0.062396 0.937604 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.922048 0.077952 # 0.922117 0.077883 # 1.000000 0.000000 # 1.000000 0.000000 |
++8 0.403322 0.596678 # 0.403127 0.596873 # 0.415443 0.584557 # 0.415443 0.584557 |
++ 0.027489 0.972511 # 0.027459 0.972541 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.972535 0.027465 # 0.972535 0.027465 # 1.000000 0.000000 # 1.000000 0.000000 |
++9 0.502620 0.497380 # 0.502620 0.497380 # 0.304348 0.695652 # 0.304348 0.695652 |
++ 0.035681 0.964319 # 0.035681 0.964319 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.948522 0.051478 # 0.948653 0.051347 # 1.000000 0.000000 # 1.000000 0.000000 |
++10 0.421207 0.578793 # 0.421104 0.578896 # 0.364514 0.635486 # 0.364514 0.635486 |
++ 0.042250 0.957750 # 0.042224 0.957776 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.985144 0.014856 # 0.985144 0.014856 # 1.000000 0.000000 # 1.000000 0.000000 |
++11 0.378924 0.621076 # 0.378923 0.621077 # 0.349469 0.650531 # 0.349469 0.650531 |
++ 0.021840 0.978160 # 0.021840 0.978160 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.861650 0.138350 # 0.861707 0.138293 # 1.000000 0.000000 # 1.000000 0.000000 |
++12 0.288541 0.711459 # 0.287841 0.712159 # 0.292262 0.707738 # 0.292262 0.707738 |
++ 0.015807 0.984193 # 0.015772 0.984228 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.986293 0.013707 # 0.986293 0.013707 # 1.000000 0.000000 # 1.000000 0.000000 |
++13 0.363488 0.636512 # 0.363488 0.636512 # 0.201756 0.798244 # 0.201756 0.798244 |
++ 0.011466 0.988534 # 0.011466 0.988534 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.703156 0.296844 # 0.702773 0.297227 # 1.000000 0.000000 # 1.000000 0.000000 |
++14 0.002900 0.997100 # 0.002605 0.997395 # 0.322135 0.677865 # 0.322136 0.677864 |
++ 0.000000 1.000000 # 0.000004 0.999996 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.181287 0.818713 # 0.180868 0.819132 # 1.000000 0.000000 # 1.000000 0.000000 |
++15 0.008422 0.991578 # 0.006511 0.993489 # 0.067790 0.932210 # 0.067790 0.932210 |
++ 0.001430 0.998570 # 0.001917 0.998083 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_TR.txt b/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_TR.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_TR.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/HMM_all_TR.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,61 @@ |
++ Caso 1 Caso 2 Caso 3 Caso 4 |
++ 0.996310 0.003690 0.000000 # 0.996310 0.003690 0.000000 # 0.989342 0.010658 0.000000 # 0.989342 0.010658 0.000000 |
++1 0.014602 0.976775 0.008623 # 0.014602 0.976775 0.008623 # 0.031859 0.941837 0.026303 # 0.031859 0.941837 0.026304 |
++ 0.000000 0.012377 0.987623 # 0.000000 0.012377 0.987623 # 0.000000 0.055371 0.944629 # 0.000000 0.055371 0.944629 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.994945 0.005055 0.000000 # 0.994945 0.005055 0.000000 # 0.965212 0.034788 0.000000 # 0.965212 0.034788 0.000000 |
++2 0.005880 0.989451 0.004668 # 0.005880 0.989451 0.004668 # 0.029234 0.936945 0.033820 # 0.029234 0.936946 0.033820 |
++ 0.000000 0.006901 0.993099 # 0.000000 0.006901 0.993099 # 0.000000 0.137831 0.862169 # 0.000000 0.137831 0.862169 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.989083 0.010552 0.000365 # 0.988834 0.011166 0.000000 # 0.974639 0.025361 0.000000 # 0.974639 0.025361 0.000000 |
++3 0.017212 0.971639 0.011149 # 0.018226 0.969790 0.011984 # 0.033856 0.925457 0.040686 # 0.033856 0.925457 0.040686 |
++ 0.000851 0.012259 0.986890 # 0.000000 0.013544 0.986456 # 0.000000 0.081142 0.918858 # 0.000000 0.081142 0.918858 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.997768 0.002232 0.000000 # 0.997768 0.002232 0.000000 # 0.967921 0.032079 0.000000 # 0.967921 0.032079 0.000000 |
++4 0.000852 0.994363 0.004785 # 0.000852 0.994363 0.004785 # 0.013193 0.934539 0.052269 # 0.013192 0.934539 0.052269 |
++ 0.000000 0.004660 0.995340 # 0.000000 0.004660 0.995340 # 0.000000 0.128428 0.871572 # 0.000000 0.128428 0.871572 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.986960 0.011111 0.001929 # 0.985815 0.014185 0.000000 # 0.967996 0.032004 0.000000 # 0.967996 0.032004 0.000000 |
++5 0.021356 0.956045 0.022599 # 0.026747 0.944854 0.028399 # 0.039632 0.908572 0.051797 # 0.039632 0.908572 0.051796 |
++ 0.002461 0.012202 0.985337 # 0.000000 0.016571 0.983429 # 0.000000 0.053471 0.946529 # 0.000000 0.053471 0.946529 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.986421 0.012770 0.000809 # 0.986187 0.013813 0.000000 # 0.949172 0.050828 0.000000 # 0.949172 0.050828 0.000000 |
++6 0.008484 0.977286 0.014230 # 0.008621 0.976536 0.014843 # 0.017156 0.930517 0.052327 # 0.017156 0.930517 0.052327 |
++ 0.000000 0.010544 0.989456 # 0.000000 0.010766 0.989234 # 0.000000 0.131579 0.868421 # 0.000000 0.131578 0.868422 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.979900 0.019785 0.000315 # 0.979789 0.020211 0.000000 # 0.932439 0.067561 0.000000 # 0.932439 0.067561 0.000000 |
++7 0.009122 0.982647 0.008231 # 0.009163 0.982421 0.008416 # 0.019030 0.938524 0.042446 # 0.019030 0.938523 0.042446 |
++ 0.000000 0.007079 0.992921 # 0.000000 0.007120 0.992880 # 0.000000 0.063233 0.936767 # 0.000000 0.063233 0.936767 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.987452 0.012548 0.000000 # 0.987364 0.012636 0.000000 # 0.940206 0.059794 0.000000 # 0.940206 0.059794 0.000000 |
++8 0.008914 0.983970 0.007116 # 0.009119 0.983738 0.007142 # 0.025264 0.936326 0.038410 # 0.025264 0.936326 0.038410 |
++ 0.000069 0.003241 0.996690 # 0.000000 0.003325 0.996675 # 0.000000 0.027894 0.972106 # 0.000000 0.027894 0.972106 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.987897 0.012103 0.000000 # 0.987897 0.012103 0.000000 # 0.955146 0.044854 0.000000 # 0.955146 0.044854 0.000000 |
++9 0.018910 0.951249 0.029841 # 0.018910 0.951249 0.029841 # 0.036119 0.914600 0.049281 # 0.036119 0.914600 0.049281 |
++ 0.000000 0.005931 0.994069 # 0.000000 0.005931 0.994069 # 0.000000 0.025299 0.974701 # 0.000000 0.025299 0.974701 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.982743 0.017257 0.000000 # 0.982564 0.017436 0.000000 # 0.939128 0.060872 0.000000 # 0.939128 0.060872 0.000000 |
++10 0.006646 0.985366 0.007988 # 0.006838 0.985129 0.008033 # 0.016663 0.942919 0.040418 # 0.016663 0.942919 0.040418 |
++ 0.000062 0.004002 0.995936 # 0.000000 0.004088 0.995912 # 0.000000 0.036082 0.963918 # 0.000000 0.036082 0.963918 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.980337 0.019663 0.000000 # 0.980337 0.019663 0.000000 # 0.969623 0.030377 0.000000 # 0.969623 0.030377 0.000000 |
++11 0.008927 0.979374 0.011699 # 0.008927 0.979374 0.011699 # 0.010890 0.958489 0.030621 # 0.010890 0.958489 0.030621 |
++ 0.000000 0.005991 0.994009 # 0.000000 0.005991 0.994009 # 0.000000 0.022207 0.977793 # 0.000000 0.022207 0.977793 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.986907 0.012570 0.000523 # 0.986757 0.013243 0.000000 # 0.895254 0.104746 0.000000 # 0.895254 0.104746 0.000000 |
++12 0.007934 0.979285 0.012781 # 0.008025 0.978790 0.013185 # 0.031235 0.926214 0.042551 # 0.031235 0.926214 0.042551 |
++ 0.000000 0.003230 0.996770 # 0.000000 0.003255 0.996745 # 0.000000 0.018005 0.981995 # 0.000000 0.018005 0.981995 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.949604 0.050396 0.000000 # 0.949604 0.050396 0.000000 # 0.933257 0.066743 0.000000 # 0.933257 0.066743 0.000000 |
++13 0.052688 0.898749 0.048563 # 0.052688 0.898749 0.048563 # 0.026331 0.841862 0.131807 # 0.026331 0.841862 0.131807 |
++ 0.000000 0.002072 0.997928 # 0.000000 0.002072 0.997928 # 0.000000 0.017806 0.982194 # 0.000000 0.017806 0.982194 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.947536 0.051615 0.000850 # 0.947601 0.052399 0.000000 # 0.820026 0.179974 0.000000 # 0.820026 0.179974 0.000000 |
++14 0.003402 0.501052 0.495547 # 0.003185 0.473131 0.523684 # 0.076076 0.845763 0.078161 # 0.076076 0.845763 0.078161 |
++ 0.000041 0.173865 0.826094 # 0.000000 0.210623 0.789377 # 0.000000 0.001361 0.998639 # 0.000000 0.001361 0.998639 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++ 0.986413 0.004542 0.009044 # 0.986416 0.013584 0.000000 # 0.523453 0.476547 0.000000 # 0.523454 0.476546 0.000000 |
++15 0.002155 0.481460 0.516385 # 0.002403 0.461981 0.535616 # 0.018706 0.955683 0.025612 # 0.018706 0.955683 0.025612 |
++ 0.000173 0.181349 0.818478 # 0.000000 0.215417 0.784583 # 0.000000 0.003425 0.996575 # 0.000000 0.003425 0.996575 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/README.txt b/src/hidden-markov-error-model/configs/HMM_3states/README.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_3states/README.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_3states/README.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++HMM_*_EMIS_1.txt && HMM_*_TR_1.txt ==> Libertad total |
++HMM_*_EMIS_2.txt && HMM_*_TR_2.txt ==> Nacimiento y muerte |
++HMM_*_EMIS_3.txt && HMM_*_TR_3.txt ==> Limitación en la decisión |
++HMM_*_EMIS_4.txt && HMM_*_TR_4.txt ==> Combinación |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.998042 0.001958 |
++0.874341 0.125659 |
++0.414555 0.585445 |
++0.026164 0.973836 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.998042 0.001958 |
++0.874341 0.125659 |
++0.414555 0.585445 |
++0.026164 0.973836 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.998041 0.001959 |
++0.873557 0.126443 |
++0.413547 0.586453 |
++0.026065 0.973935 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.867910 0.132090 |
++0.352773 0.647227 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.867910 0.132090 |
++0.352773 0.647227 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.867910 0.132090 |
++0.352772 0.647228 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995890 0.003984 0.000126 0.000000 |
++0.013525 0.972895 0.013581 0.000000 |
++0.000000 0.021509 0.969506 0.008985 |
++0.000000 0.000000 0.010866 0.989134 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995890 0.003984 0.000126 0.000000 |
++0.013525 0.972895 0.013581 0.000000 |
++0.000000 0.021509 0.969506 0.008985 |
++0.000000 0.000000 0.010866 0.989134 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995853 0.004147 0.000000 0.000000 |
++0.013633 0.972446 0.013921 0.000000 |
++0.000000 0.021477 0.969530 0.008992 |
++0.000000 0.000000 0.010854 0.989146 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.993854 0.006146 0.000000 0.000000 |
++0.017786 0.970203 0.012011 0.000000 |
++0.000000 0.018842 0.969656 0.011502 |
++0.000000 0.000000 0.019144 0.980856 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.993854 0.006146 0.000000 0.000000 |
++0.017786 0.970203 0.012011 0.000000 |
++0.000000 0.018842 0.969656 0.011502 |
++0.000000 0.000000 0.019144 0.980856 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_01_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.993854 0.006146 0.000000 0.000000 |
++0.017786 0.970203 0.012012 0.000000 |
++0.000000 0.018842 0.969656 0.011502 |
++0.000000 0.000000 0.019144 0.980856 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.987482 0.012518 |
++0.840788 0.159212 |
++0.551777 0.448223 |
++0.170548 0.829452 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.987482 0.012518 |
++0.840787 0.159213 |
++0.551777 0.448223 |
++0.170548 0.829452 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.987731 0.012269 |
++0.844548 0.155452 |
++0.556750 0.443250 |
++0.169916 0.830084 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.792679 0.207321 |
++0.343881 0.656119 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.792679 0.207321 |
++0.343881 0.656119 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.792679 0.207321 |
++0.343881 0.656119 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995926 0.003873 0.000202 0.000000 |
++0.004163 0.989694 0.005843 0.000299 |
++0.000126 0.007740 0.987142 0.004992 |
++0.000000 0.001349 0.004598 0.994053 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995926 0.003873 0.000202 0.000000 |
++0.004163 0.989694 0.005843 0.000299 |
++0.000126 0.007740 0.987142 0.004992 |
++0.000000 0.001349 0.004598 0.994053 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.995931 0.004069 0.000000 0.000000 |
++0.004078 0.989180 0.006578 0.000164 |
++0.000259 0.008947 0.985323 0.005470 |
++0.000000 0.000000 0.006456 0.993544 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983235 0.016765 0.000000 0.000000 |
++0.012130 0.984373 0.003497 0.000000 |
++0.000000 0.006229 0.974222 0.019548 |
++0.000000 0.000000 0.076845 0.923155 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983235 0.016765 0.000000 0.000000 |
++0.012130 0.984373 0.003497 0.000000 |
++0.000000 0.006229 0.974222 0.019548 |
++0.000000 0.000000 0.076844 0.923156 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_02_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983235 0.016765 0.000000 0.000000 |
++0.012130 0.984373 0.003497 0.000000 |
++0.000000 0.006229 0.974222 0.019548 |
++0.000000 0.000000 0.076845 0.923155 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_1.txt 2012-04-11 12:16:28.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++ 0.9981 0.0019 |
++ 0.8487 0.1513 |
++ 0.4031 0.5969 |
++ 0.0635 0.9365 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.997869 0.002131 |
++0.847321 0.152679 |
++0.414124 0.585876 |
++0.067332 0.932668 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.997984 0.002016 |
++0.846865 0.153135 |
++0.402769 0.597231 |
++0.063616 0.936384 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.798658 0.201342 |
++0.282286 0.717714 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.798657 0.201343 |
++0.282286 0.717714 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.798543 0.201457 |
++0.280281 0.719719 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_1.txt 2012-04-11 12:17:14.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9935 0.0065 0.0000 0.0000 |
++0.0082 0.9722 0.0195 0.0000 |
++0.0000 0.0296 0.9547 0.0156 |
++0.0000 0.0000 0.0151 0.9849 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.993664 0.005179 0.001157 0.000000 |
++0.007522 0.975453 0.016889 0.000136 |
++0.001114 0.025204 0.958373 0.015308 |
++0.000000 0.001628 0.012690 0.985682 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.993494 0.006506 0.000000 0.000000 |
++0.007769 0.973039 0.018866 0.000326 |
++0.000803 0.028362 0.955708 0.015127 |
++0.000000 0.000000 0.015016 0.984984 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.989283 0.009966 0.000751 0.000000 |
++0.012851 0.974998 0.012151 0.000000 |
++0.000411 0.018041 0.957214 0.024333 |
++0.000000 0.000000 0.046183 0.953817 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.989283 0.009966 0.000751 0.000000 |
++0.012851 0.974998 0.012151 0.000000 |
++0.000411 0.018041 0.957214 0.024334 |
++0.000000 0.000000 0.046183 0.953817 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_03_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.989225 0.010775 0.000000 0.000000 |
++0.012983 0.973653 0.013364 0.000000 |
++0.000204 0.018779 0.956872 0.024144 |
++0.000000 0.000000 0.045932 0.954068 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.994496 0.005504 |
++0.739671 0.260329 |
++0.390116 0.609884 |
++0.116046 0.883954 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.994496 0.005504 |
++0.739671 0.260329 |
++0.390116 0.609884 |
++0.116046 0.883954 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.994436 0.005564 |
++0.737707 0.262293 |
++0.388729 0.611271 |
++0.115935 0.884065 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.706417 0.293583 |
++0.254199 0.745801 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.706417 0.293583 |
++0.254200 0.745800 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.706417 0.293583 |
++0.254199 0.745801 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.997999 0.001406 0.000596 0.000000 |
++0.000931 0.993213 0.005856 0.000000 |
++0.000000 0.008393 0.988560 0.003046 |
++0.000000 0.000000 0.002283 0.997717 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.997999 0.001406 0.000596 0.000000 |
++0.000931 0.993213 0.005856 0.000000 |
++0.000000 0.008393 0.988560 0.003046 |
++0.000000 0.000000 0.002283 0.997717 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.997972 0.002028 0.000000 0.000000 |
++0.000939 0.993091 0.005970 0.000000 |
++0.000000 0.008233 0.988698 0.003070 |
++0.000000 0.000000 0.002281 0.997719 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.994840 0.005160 0.000000 0.000000 |
++0.002036 0.993518 0.004445 0.000000 |
++0.000000 0.004979 0.967285 0.027736 |
++0.000000 0.000000 0.093249 0.906751 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.994840 0.005160 0.000000 0.000000 |
++0.002036 0.993518 0.004445 0.000000 |
++0.000000 0.004979 0.967285 0.027736 |
++0.000000 0.000000 0.093249 0.906751 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_04_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.994840 0.005160 0.000000 0.000000 |
++0.002036 0.993518 0.004445 0.000000 |
++0.000000 0.004979 0.967285 0.027736 |
++0.000000 0.000000 0.093249 0.906751 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_1.txt 2012-04-11 13:15:53.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.0000 0.0000 |
++0.7949 0.2051 |
++0.2190 0.7810 |
++0.0000 1.0000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.994221 0.005779 |
++0.791285 0.208715 |
++0.259785 0.740215 |
++0.024869 0.975131 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.994479 0.005521 |
++0.792197 0.207803 |
++0.252393 0.747607 |
++0.022515 0.977485 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.785948 0.214052 |
++0.222132 0.777868 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.795611 0.204389 |
++0.222316 0.777684 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.793626 0.206374 |
++0.220239 0.779761 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_1.txt 2012-04-11 13:16:32.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9802 0.0198 0.0000 0.0000 |
++0.0332 0.9354 0.0314 0.0000 |
++0.0000 0.0196 0.9554 0.0250 |
++0.0000 0.0000 0.0336 0.9664 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.986315 0.012132 0.001553 0.000000 |
++0.025537 0.945272 0.023413 0.005777 |
++0.001443 0.015974 0.968606 0.013977 |
++0.000000 0.003701 0.011267 0.985033 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.985989 0.014011 0.000000 0.000000 |
++0.024382 0.941662 0.028433 0.005524 |
++0.002343 0.020057 0.963398 0.014202 |
++0.000000 0.000000 0.015953 0.984047 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.979504 0.019032 0.000001 0.001462 |
++0.033739 0.938752 0.027509 0.000000 |
++0.000951 0.016808 0.958272 0.023969 |
++0.000789 0.000000 0.032638 0.966572 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.980563 0.018361 0.001076 0.000000 |
++0.031675 0.939973 0.027078 0.001274 |
++0.000814 0.017785 0.956897 0.024505 |
++0.000000 0.000082 0.033501 0.966416 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_05_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.980239 0.019761 0.000000 0.000000 |
++0.032594 0.936713 0.028935 0.001758 |
++0.000482 0.018626 0.956979 0.023914 |
++0.000000 0.000000 0.033293 0.966707 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.984115 0.015885 |
++0.744450 0.255550 |
++0.348918 0.651082 |
++0.110405 0.889595 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.984226 0.015774 |
++0.746125 0.253875 |
++0.348906 0.651094 |
++0.109723 0.890277 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.985123 0.014877 |
++0.752346 0.247654 |
++0.353051 0.646949 |
++0.110518 0.889482 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.683686 0.316314 |
++0.255351 0.744649 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.683686 0.316314 |
++0.255351 0.744649 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.683775 0.316225 |
++0.255237 0.744763 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.988854 0.009481 0.000836 0.000829 |
++0.007578 0.973684 0.018738 0.000000 |
++0.000000 0.011064 0.983127 0.005809 |
++0.000000 0.000793 0.007130 0.992078 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.989091 0.009342 0.001567 0.000000 |
++0.007366 0.973631 0.019004 0.000000 |
++0.000000 0.011190 0.982608 0.006202 |
++0.000000 0.000706 0.007358 0.991936 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.989178 0.010822 0.000000 0.000000 |
++0.007150 0.972399 0.020448 0.000002 |
++0.000000 0.011932 0.981350 0.006718 |
++0.000000 0.000000 0.008604 0.991396 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973760 0.025883 0.000357 0.000000 |
++0.012927 0.971603 0.015470 0.000000 |
++0.000000 0.009794 0.974358 0.015848 |
++0.000000 0.000000 0.073705 0.926295 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973760 0.025883 0.000357 0.000000 |
++0.012927 0.971603 0.015470 0.000000 |
++0.000000 0.009794 0.974358 0.015848 |
++0.000000 0.000000 0.073705 0.926295 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_06_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973724 0.026276 0.000000 0.000000 |
++0.012925 0.971363 0.015711 0.000000 |
++0.000000 0.009842 0.974326 0.015832 |
++0.000000 0.000000 0.073670 0.926330 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_1.txt 2012-04-12 17:07:26.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++ 0.9863 0.0137 |
++ 0.6241 0.3759 |
++ 0.2490 0.7510 |
++ 0.0483 0.9517 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.986399 0.013601 |
++0.624707 0.375293 |
++0.249518 0.750482 |
++0.048400 0.951600 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.986399 0.013601 |
++0.624707 0.375293 |
++0.249518 0.750482 |
++0.048400 0.951600 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.513923 0.486077 |
++0.163501 0.836499 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.513698 0.486302 |
++0.163121 0.836879 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.513698 0.486302 |
++0.163121 0.836879 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_1.txt 2012-04-12 17:12:23.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9687 0.0313 0.0000 0.0000 |
++0.0199 0.9480 0.0321 0.0000 |
++0.0000 0.0165 0.9787 0.0048 |
++0.0000 0.0000 0.0044 0.9956 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.968648 0.031352 0.000000 0.000000 |
++0.019922 0.948024 0.031714 0.000340 |
++0.000000 0.016448 0.978987 0.004565 |
++0.000000 0.000000 0.004407 0.995593 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.968648 0.031352 0.000000 0.000000 |
++0.019922 0.948024 0.031714 0.000340 |
++0.000000 0.016448 0.978987 0.004565 |
++0.000000 0.000000 0.004407 0.995593 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.949802 0.050198 0.000000 0.000000 |
++0.021790 0.961174 0.017036 0.000000 |
++0.000000 0.011818 0.965631 0.022552 |
++0.000092 0.000000 0.043674 0.956234 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.949721 0.050279 0.000000 0.000000 |
++0.021878 0.961057 0.017064 0.000000 |
++0.000000 0.011886 0.965738 0.022376 |
++0.000000 0.000000 0.043589 0.956411 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_07_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.949721 0.050279 0.000000 0.000000 |
++0.021878 0.961057 0.017064 0.000000 |
++0.000000 0.011886 0.965738 0.022376 |
++0.000000 0.000000 0.043589 0.956411 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_1.txt 2012-04-13 10:24:18.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.9637 0.0363 |
++0.5701 0.4299 |
++0.1799 0.8201 |
++0.0148 0.9852 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.963087 0.036913 |
++0.565046 0.434954 |
++0.175517 0.824483 |
++0.014865 0.985135 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.963276 0.036724 |
++0.568927 0.431073 |
++0.183428 0.816572 |
++0.015065 0.984935 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.594628 0.405372 |
++0.141368 0.858632 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.593902 0.406098 |
++0.141195 0.858805 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.593902 0.406098 |
++0.141196 0.858804 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_1.txt 2012-04-13 11:00:30.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9865 0.0135 0.0000 0.0000 |
++0.0098 0.9801 0.0101 0.0000 |
++0.0000 0.0097 0.9853 0.0050 |
++0.0000 0.0000 0.0021 0.9979 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.986363 0.013637 0.000000 0.000000 |
++0.009785 0.980778 0.008638 0.000799 |
++0.000000 0.007836 0.988698 0.003466 |
++0.000000 0.000602 0.001139 0.998258 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.986474 0.013526 0.000000 0.000000 |
++0.009067 0.981430 0.008660 0.000843 |
++0.000808 0.008292 0.986702 0.004198 |
++0.000000 0.000000 0.002054 0.997946 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.966025 0.033975 0.000000 0.000000 |
++0.016354 0.975086 0.008560 0.000000 |
++0.000000 0.006997 0.968978 0.024025 |
++0.000184 0.000000 0.017514 0.982301 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.965607 0.034393 0.000000 0.000000 |
++0.016747 0.974626 0.008627 0.000000 |
++0.000124 0.007184 0.968430 0.024261 |
++0.000000 0.000000 0.017855 0.982145 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_08_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.965607 0.034393 0.000000 0.000000 |
++0.016747 0.974626 0.008627 0.000000 |
++0.000124 0.007184 0.968430 0.024261 |
++0.000000 0.000000 0.017855 0.982145 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_1.txt 2012-04-11 09:47:15.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.9820 0.0180 |
++0.6431 0.3569 |
++0.1219 0.8781 |
++0.0054 0.9946 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.981766 0.018234 |
++0.637950 0.362050 |
++0.122409 0.877591 |
++0.005951 0.994049 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.981938 0.018062 |
++0.641092 0.358908 |
++0.121998 0.878002 |
++0.005592 0.994408 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.678549 0.321451 |
++0.116320 0.883680 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.678550 0.321450 |
++0.116320 0.883680 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.678550 0.321450 |
++0.116320 0.883680 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_1.txt 2012-04-11 09:48:32.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9879 0.0121 0.0000 0.0000 |
++0.0206 0.9518 0.0276 0.0000 |
++0.0000 0.0109 0.9749 0.0142 |
++0.0000 0.0000 0.0090 0.9910 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.987950 0.012050 0.000000 0.000000 |
++0.020526 0.952590 0.023914 0.002970 |
++0.000000 0.009787 0.978082 0.012131 |
++0.000000 0.000697 0.007445 0.991857 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.987943 0.012057 0.000000 0.000000 |
++0.020565 0.952197 0.024648 0.002590 |
++0.000000 0.010837 0.976493 0.012669 |
++0.000000 0.000000 0.008581 0.991419 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973444 0.026556 0.000000 0.000000 |
++0.036048 0.940513 0.023439 0.000000 |
++0.000000 0.009273 0.972700 0.018028 |
++0.000000 0.000000 0.014422 0.985578 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973444 0.026556 0.000000 0.000000 |
++0.036048 0.940513 0.023438 0.000001 |
++0.000000 0.009273 0.972699 0.018028 |
++0.000000 0.000000 0.014422 0.985578 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_09_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.973444 0.026556 0.000000 0.000000 |
++0.036048 0.940513 0.023439 0.000000 |
++0.000000 0.009273 0.972699 0.018028 |
++0.000000 0.000000 0.014422 0.985578 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.980153 0.019847 |
++0.554091 0.445909 |
++0.207780 0.792220 |
++0.023396 0.976604 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.979364 0.020636 |
++0.550015 0.449985 |
++0.202525 0.797475 |
++0.023070 0.976930 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.979364 0.020636 |
++0.550015 0.449985 |
++0.202524 0.797476 |
++0.023070 0.976930 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.517759 0.482241 |
++0.123055 0.876945 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.516651 0.483349 |
++0.121851 0.878149 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.516651 0.483349 |
++0.121851 0.878149 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.980040 0.019960 0.000000 0.000000 |
++0.009361 0.979632 0.011007 0.000000 |
++0.000000 0.008546 0.981238 0.010216 |
++0.000159 0.000000 0.004893 0.994948 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.979815 0.020185 0.000000 0.000000 |
++0.009597 0.979440 0.010963 0.000000 |
++0.000171 0.008715 0.981153 0.009962 |
++0.000000 0.000000 0.005002 0.994998 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.979815 0.020185 0.000000 0.000000 |
++0.009597 0.979440 0.010963 0.000000 |
++0.000171 0.008715 0.981153 0.009962 |
++0.000000 0.000000 0.005002 0.994998 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.966883 0.033117 0.000000 0.000000 |
++0.011895 0.980390 0.007715 0.000000 |
++0.000000 0.004925 0.981967 0.013108 |
++0.000223 0.000000 0.015750 0.984028 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.966393 0.033607 0.000000 0.000000 |
++0.012180 0.980067 0.007753 0.000000 |
++0.000119 0.004997 0.982130 0.012754 |
++0.000000 0.000000 0.015748 0.984252 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_10_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.966393 0.033607 0.000000 0.000000 |
++0.012180 0.980067 0.007753 0.000000 |
++0.000119 0.004997 0.982130 0.012754 |
++0.000000 0.000000 0.015748 0.984252 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.993385 0.006615 |
++0.535542 0.464458 |
++0.145505 0.854495 |
++0.008291 0.991709 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.993385 0.006615 |
++0.535542 0.464458 |
++0.145505 0.854495 |
++0.008291 0.991709 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.993099 0.006901 |
++0.537868 0.462132 |
++0.148514 0.851486 |
++0.008378 0.991622 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.523164 0.476836 |
++0.116409 0.883591 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.523165 0.476835 |
++0.116409 0.883591 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.523164 0.476836 |
++0.116409 0.883591 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983183 0.016817 0.000000 0.000000 |
++0.011386 0.959825 0.028789 0.000000 |
++0.000000 0.020296 0.970255 0.009449 |
++0.000000 0.000000 0.005172 0.994828 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983183 0.016817 0.000000 0.000000 |
++0.011386 0.959825 0.028789 0.000000 |
++0.000000 0.020296 0.970255 0.009449 |
++0.000000 0.000000 0.005172 0.994828 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.983728 0.016272 0.000000 0.000000 |
++0.008868 0.963058 0.028074 0.000000 |
++0.001642 0.017698 0.971219 0.009441 |
++0.000000 0.000000 0.005179 0.994821 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.978772 0.021228 0.000000 0.000000 |
++0.012616 0.962855 0.024528 0.000000 |
++0.000000 0.015986 0.969384 0.014630 |
++0.000000 0.000000 0.011572 0.988428 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.978772 0.021228 0.000000 0.000000 |
++0.012616 0.962855 0.024528 0.000000 |
++0.000000 0.015986 0.969384 0.014630 |
++0.000000 0.000000 0.011572 0.988428 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_11_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.978772 0.021228 0.000000 0.000000 |
++0.012616 0.962855 0.024528 0.000000 |
++0.000000 0.015986 0.969384 0.014630 |
++0.000000 0.000000 0.011572 0.988428 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_1.txt 2012-04-11 10:29:02.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.8888 0.1112 |
++0.4100 0.5900 |
++0.0757 0.9243 |
++0.0044 0.9956 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.861761 0.138239 |
++0.288898 0.711102 |
++0.029434 0.970566 |
++0.011455 0.988545 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.862017 0.137983 |
++0.288797 0.711203 |
++0.037516 0.962484 |
++0.010802 0.989198 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.541908 0.458092 |
++0.089061 0.910939 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.541310 0.458690 |
++0.089430 0.910570 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.538096 0.461904 |
++0.088676 0.911324 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_1.txt 2012-04-11 10:28:21.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.9861 0.0139 0.0000 0.0000 |
++0.0112 0.9744 0.0144 0.0000 |
++0.0000 0.0057 0.9887 0.0056 |
++0.0000 0.0000 0.0031 0.9969 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.986896 0.012567 0.000537 0.000000 |
++0.007966 0.979055 0.012583 0.000396 |
++0.000000 0.012626 0.556373 0.431001 |
++0.000000 0.000106 0.145597 0.854298 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.986728 0.013272 0.000000 0.000000 |
++0.008096 0.978353 0.013444 0.000107 |
++0.000000 0.016492 0.597659 0.385849 |
++0.000000 0.000000 0.096958 0.903042 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.936349 0.062103 0.000000 0.001548 |
++0.026279 0.962904 0.010817 0.000000 |
++0.000000 0.004550 0.983471 0.011979 |
++0.000000 0.000000 0.008361 0.991639 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.935706 0.062076 0.002218 0.000000 |
++0.026763 0.962672 0.010565 0.000000 |
++0.000000 0.004562 0.982864 0.012574 |
++0.000000 0.000000 0.008545 0.991455 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_12_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.934619 0.065381 0.000000 0.000000 |
++0.027355 0.961030 0.011611 0.000004 |
++0.000000 0.004614 0.982922 0.012464 |
++0.000000 0.000000 0.008504 0.991496 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.986717 0.013283 |
++0.402670 0.597330 |
++0.015303 0.984697 |
++0.010372 0.989628 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.986720 0.013280 |
++0.402802 0.597198 |
++0.015920 0.984080 |
++0.010426 0.989574 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.986013 0.013987 |
++0.377978 0.622022 |
++0.017277 0.982723 |
++0.010220 0.989780 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.427649 0.572351 |
++0.038345 0.961655 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.427101 0.572899 |
++0.042474 0.957526 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.406127 0.593873 |
++0.053007 0.946993 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.953774 0.040055 0.001314 0.004857 |
++0.043320 0.916013 0.031897 0.008770 |
++0.000987 0.004140 0.550473 0.444401 |
++0.000013 0.000408 0.198552 0.801027 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.953780 0.039999 0.006220 0.000000 |
++0.043302 0.915980 0.032617 0.008100 |
++0.001175 0.004865 0.529543 0.464417 |
++0.000000 0.000350 0.170196 0.829454 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.952145 0.047855 0.000000 0.000000 |
++0.044060 0.908319 0.035418 0.012204 |
++0.001488 0.008084 0.497853 0.492575 |
++0.000000 0.000000 0.127563 0.872437 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.942532 0.050730 0.000000 0.006738 |
++0.054379 0.906873 0.038655 0.000093 |
++0.000848 0.004819 0.407234 0.587100 |
++0.000000 0.000007 0.274177 0.725815 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.942495 0.050806 0.006700 0.000000 |
++0.054416 0.906653 0.038812 0.000119 |
++0.000935 0.005353 0.346148 0.647564 |
++0.000000 0.000010 0.260991 0.738998 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_13_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.940781 0.059219 0.000000 0.000000 |
++0.055047 0.898755 0.022754 0.023444 |
++0.001108 0.007296 0.205563 0.786033 |
++0.000000 0.000000 0.230032 0.769968 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.758891 0.241109 |
++0.021746 0.978254 |
++0.000000 1.000000 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.758891 0.241109 |
++0.021746 0.978254 |
++0.000000 1.000000 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.752618 0.247382 |
++0.015569 0.984431 |
++0.000000 1.000000 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.337478 0.662522 |
++0.001447 0.998553 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.337479 0.662521 |
++0.001694 0.998306 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.336356 0.663644 |
++0.002284 0.997716 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.947108 0.035043 0.012111 0.005738 |
++0.012550 0.985315 0.001107 0.001028 |
++0.000000 0.000653 0.545651 0.453696 |
++0.000000 0.000266 0.199173 0.800561 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.947108 0.035037 0.017854 0.000000 |
++0.012550 0.985315 0.001067 0.001068 |
++0.000000 0.000727 0.520916 0.478357 |
++0.000000 0.000261 0.171750 0.827988 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.945044 0.054956 0.000000 0.000000 |
++0.010908 0.983701 0.002667 0.002723 |
++0.000000 0.002047 0.475427 0.522525 |
++0.000000 0.000000 0.130850 0.869150 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.820210 0.178628 0.000620 0.000542 |
++0.080110 0.860711 0.034629 0.024551 |
++0.000000 0.002264 0.486210 0.511526 |
++0.000000 0.000509 0.163119 0.836372 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.820195 0.178662 0.001143 0.000000 |
++0.080133 0.860644 0.034988 0.024235 |
++0.000000 0.002670 0.462064 0.535266 |
++0.000000 0.000481 0.139558 0.859961 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_14_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.819757 0.180243 0.000000 0.000000 |
++0.080574 0.859213 0.045173 0.015041 |
++0.000000 0.006099 0.424060 0.569841 |
++0.000000 0.000000 0.104208 0.895792 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.294028 0.705972 |
++0.024326 0.975674 |
++0.003311 0.996689 |
++0.000136 0.999864 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.294026 0.705974 |
++0.024318 0.975682 |
++0.003866 0.996134 |
++0.000115 0.999885 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++0.293442 0.706558 |
++0.022754 0.977246 |
++0.003851 0.996149 |
++0.000223 0.999777 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.087557 0.912443 |
++0.011134 0.988866 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.087050 0.912950 |
++0.012707 0.987293 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_EMIS_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,4 @@ |
++1.000000 0.000000 |
++0.084782 0.915218 |
++0.016305 0.983695 |
++0.000000 1.000000 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.977767 0.017013 0.002873 0.002347 |
++0.002561 0.994980 0.001569 0.000891 |
++0.000263 0.001055 0.550150 0.448533 |
++0.000015 0.000255 0.189445 0.810285 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_2.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_2.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_2.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_2.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.977766 0.017015 0.005219 0.000000 |
++0.002561 0.994984 0.001539 0.000916 |
++0.000345 0.001204 0.530769 0.467682 |
++0.000000 0.000244 0.162100 0.837656 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_3.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_3.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_3.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_3.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.977209 0.022791 0.000000 0.000000 |
++0.002530 0.994125 0.001545 0.001799 |
++0.000381 0.002931 0.486358 0.510329 |
++0.000000 0.000000 0.128671 0.871329 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_4.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_4.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_4.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_4.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.505631 0.476765 0.000000 0.017604 |
++0.037979 0.951250 0.008253 0.002518 |
++0.000000 0.002777 0.497578 0.499645 |
++0.000000 0.000014 0.169472 0.830515 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_5.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_5.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_5.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_5.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.505431 0.480847 0.013722 0.000000 |
++0.037918 0.950965 0.008590 0.002527 |
++0.000000 0.003222 0.477164 0.519613 |
++0.000000 0.000008 0.147810 0.852182 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_6.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_6.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_6.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_15_TR_6.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,5 @@ |
++4 |
++0.502365 0.497635 0.000000 0.000000 |
++0.038215 0.949488 0.009589 0.002708 |
++0.000000 0.004309 0.441494 0.554197 |
++0.000000 0.000000 0.114732 0.885268 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_EMIS.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_EMIS.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_EMIS.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_EMIS.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,76 @@ |
++ Caso 1 Caso 2A Caso 2B Caso 3 Caso 4 - 2A Caso 4 - 2B |
++1 0.998042 0.001958 # 0.998042 0.001958 # 0.998041 0.001959 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.874341 0.125659 # 0.874341 0.125659 # 0.873557 0.126443 # 0.867910 0.132090 # 0.867910 0.132090 # 0.867910 0.132090 |
++ 0.414555 0.585445 # 0.414555 0.585445 # 0.413547 0.586453 # 0.352773 0.647227 # 0.352773 0.647227 # 0.352772 0.647228 |
++ 0.026164 0.973836 # 0.026164 0.973836 # 0.026065 0.973935 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++2 0.987482 0.012518 # 0.987482 0.012518 # 0.987731 0.012269 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.840788 0.159212 # 0.840787 0.159213 # 0.844548 0.155452 # 0.792679 0.207321 # 0.792679 0.207321 # 0.792679 0.207321 |
++ 0.551777 0.448223 # 0.551777 0.448223 # 0.556750 0.443250 # 0.343881 0.656119 # 0.343881 0.656119 # 0.343881 0.656119 |
++ 0.170548 0.829452 # 0.170548 0.829452 # 0.169916 0.830084 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++3 0.997910 0.002090 # 0.997869 0.002131 # 0.997984 0.002016 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.849461 0.150539 # 0.847321 0.152679 # 0.846865 0.153135 # 0.798658 0.201342 # 0.798657 0.201343 # 0.798543 0.201457 |
++ 0.421274 0.578726 # 0.414124 0.585876 # 0.402769 0.597231 # 0.282286 0.717714 # 0.282286 0.717714 # 0.280281 0.719719 |
++ 0.070398 0.929602 # 0.067332 0.932668 # 0.063616 0.936384 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++4 0.994496 0.005504 # 0.994496 0.005504 # 0.994436 0.005564 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.739671 0.260329 # 0.739671 0.260329 # 0.737707 0.262293 # 0.706417 0.293583 # 0.706417 0.293583 # 0.706417 0.293583 |
++ 0.390116 0.609884 # 0.390116 0.609884 # 0.388729 0.611271 # 0.254199 0.745801 # 0.254200 0.745800 # 0.254199 0.745801 |
++ 0.116046 0.883954 # 0.116046 0.883954 # 0.115935 0.884065 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++5 0.993080 0.006920 # 0.994221 0.005779 # 0.994479 0.005521 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.772560 0.227440 # 0.791285 0.208715 # 0.792197 0.207803 # 0.785948 0.214052 # 0.795611 0.204389 # 0.793626 0.206374 |
++ 0.256170 0.743830 # 0.259785 0.740215 # 0.252393 0.747607 # 0.222132 0.777868 # 0.222316 0.777684 # 0.220239 0.779761 |
++ 0.024979 0.975021 # 0.024869 0.975131 # 0.022515 0.977485 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++6 0.984115 0.015885 # 0.984226 0.015774 # 0.985123 0.014877 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.744450 0.255550 # 0.746125 0.253875 # 0.752346 0.247654 # 0.683686 0.316314 # 0.683686 0.316314 # 0.683775 0.316225 |
++ 0.348918 0.651082 # 0.348906 0.651094 # 0.353051 0.646949 # 0.255351 0.744649 # 0.255351 0.744649 # 0.255237 0.744763 |
++ 0.110405 0.889595 # 0.109723 0.890277 # 0.110518 0.889482 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++7 0.986341 0.013659 # 0.986399 0.013601 # 0.986399 0.013601 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.624363 0.375637 # 0.624707 0.375293 # 0.624707 0.375293 # 0.513923 0.486077 # 0.513698 0.486302 # 0.513698 0.486302 |
++ 0.249070 0.750930 # 0.249518 0.750482 # 0.249518 0.750482 # 0.163501 0.836499 # 0.163121 0.836879 # 0.163121 0.836879 |
++ 0.048323 0.951677 # 0.048400 0.951600 # 0.048400 0.951600 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++8 0.963217 0.036783 # 0.963087 0.036913 # 0.963276 0.036724 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.566250 0.433750 # 0.565046 0.434954 # 0.568927 0.431073 # 0.594628 0.405372 # 0.593902 0.406098 # 0.593902 0.406098 |
++ 0.176231 0.823769 # 0.175517 0.824483 # 0.183428 0.816572 # 0.141368 0.858632 # 0.141195 0.858805 # 0.141196 0.858804 |
++ 0.014858 0.985142 # 0.014865 0.985135 # 0.015065 0.984935 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++9 0.981766 0.018234 # 0.981766 0.018234 # 0.981938 0.018062 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.637950 0.362050 # 0.637950 0.362050 # 0.641092 0.358908 # 0.678549 0.321451 # 0.678550 0.321450 # 0.678550 0.321450 |
++ 0.122409 0.877591 # 0.122409 0.877591 # 0.121998 0.878002 # 0.116320 0.883680 # 0.116320 0.883680 # 0.116320 0.883680 |
++ 0.005951 0.994049 # 0.005951 0.994049 # 0.005592 0.994408 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++10 0.980153 0.019847 # 0.979364 0.020636 # 0.979364 0.020636 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.554091 0.445909 # 0.550015 0.449985 # 0.550015 0.449985 # 0.517759 0.482241 # 0.516651 0.483349 # 0.516651 0.483349 |
++ 0.207780 0.792220 # 0.202525 0.797475 # 0.202524 0.797476 # 0.123055 0.876945 # 0.121851 0.878149 # 0.121851 0.878149 |
++ 0.023396 0.976604 # 0.023070 0.976930 # 0.023070 0.976930 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++11 0.993385 0.006615 # 0.993385 0.006615 # 0.993099 0.006901 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.535542 0.464458 # 0.535542 0.464458 # 0.537868 0.462132 # 0.523164 0.476836 # 0.523165 0.476835 # 0.523164 0.476836 |
++ 0.145505 0.854495 # 0.145505 0.854495 # 0.148514 0.851486 # 0.116409 0.883591 # 0.116409 0.883591 # 0.116409 0.883591 |
++ 0.008291 0.991709 # 0.008291 0.991709 # 0.008378 0.991622 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++12 0.861739 0.138261 # 0.861761 0.138239 # 0.862017 0.137983 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.288812 0.711188 # 0.288898 0.711102 # 0.288797 0.711203 # 0.541908 0.458092 # 0.541310 0.458690 # 0.538096 0.461904 |
++ 0.027587 0.972413 # 0.029434 0.970566 # 0.037516 0.962484 # 0.089061 0.910939 # 0.089430 0.910570 # 0.088676 0.911324 |
++ 0.011131 0.988869 # 0.011455 0.988545 # 0.010802 0.989198 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++13 0.986717 0.013283 # 0.986720 0.013280 # 0.986013 0.013987 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.402670 0.597330 # 0.402802 0.597198 # 0.377978 0.622022 # 0.427649 0.572351 # 0.427101 0.572899 # 0.406127 0.593873 |
++ 0.015303 0.984697 # 0.015920 0.984080 # 0.017277 0.982723 # 0.038345 0.961655 # 0.042474 0.957526 # 0.053007 0.946993 |
++ 0.010372 0.989628 # 0.010426 0.989574 # 0.010220 0.989780 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++14 0.758891 0.241109 # 0.758891 0.241109 # 0.752618 0.247382 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.021746 0.978254 # 0.021746 0.978254 # 0.015569 0.984431 # 0.337478 0.662522 # 0.337479 0.662521 # 0.336356 0.663644 |
++ 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 # 0.001447 0.998553 # 0.001694 0.998306 # 0.002284 0.997716 |
++ 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++15 0.294028 0.705972 # 0.294026 0.705974 # 0.293442 0.706558 # 1.000000 0.000000 # 1.000000 0.000000 # 1.000000 0.000000 |
++ 0.024326 0.975674 # 0.024318 0.975682 # 0.022754 0.977246 # 0.087557 0.912443 # 0.087050 0.912950 # 0.084782 0.915218 |
++ 0.003311 0.996689 # 0.003866 0.996134 # 0.003851 0.996149 # 0.011134 0.988866 # 0.012707 0.987293 # 0.016305 0.983695 |
++ 0.000136 0.999864 # 0.000115 0.999885 # 0.000223 0.999777 # 0.000000 1.000000 # 0.000000 1.000000 # 0.000000 1.000000 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_TR.txt b/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_TR.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_TR.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/HMM_all_TR.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,76 @@ |
++ Caso 1 Caso 2A Caso 2B Caso 3 Caso 4 - 2A Caso 4 - 2B |
++1 0.995890 0.003984 0.000126 0.000000 # 0.995890 0.003984 0.000126 0.000000 # 0.995853 0.004147 0.000000 0.000000 # 0.993854 0.006146 0.000000 0.000000 # 0.993854 0.006146 0.000000 0.000000 # 0.993854 0.006146 0.000000 0.000000 |
++ 0.013525 0.972895 0.013581 0.000000 # 0.013525 0.972895 0.013581 0.000000 # 0.013633 0.972446 0.013921 0.000000 # 0.017786 0.970203 0.012011 0.000000 # 0.017786 0.970203 0.012011 0.000000 # 0.017786 0.970203 0.012012 0.000000 |
++ 0.000000 0.021509 0.969506 0.008985 # 0.000000 0.021509 0.969506 0.008985 # 0.000000 0.021477 0.969530 0.008992 # 0.000000 0.018842 0.969656 0.011502 # 0.000000 0.018842 0.969656 0.011502 # 0.000000 0.018842 0.969656 0.011502 |
++ 0.000000 0.000000 0.010866 0.989134 # 0.000000 0.000000 0.010866 0.989134 # 0.000000 0.000000 0.010854 0.989146 # 0.000000 0.000000 0.019144 0.980856 # 0.000000 0.000000 0.019144 0.980856 # 0.000000 0.000000 0.019144 0.980856 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++2 0.995926 0.003873 0.000202 0.000000 # 0.995926 0.003873 0.000202 0.000000 # 0.995931 0.004069 0.000000 0.000000 # 0.983235 0.016765 0.000000 0.000000 # 0.983235 0.016765 0.000000 0.000000 # 0.983235 0.016765 0.000000 0.000000 |
++ 0.004163 0.989694 0.005843 0.000299 # 0.004163 0.989694 0.005843 0.000299 # 0.004078 0.989180 0.006578 0.000164 # 0.012130 0.984373 0.003497 0.000000 # 0.012130 0.984373 0.003497 0.000000 # 0.012130 0.984373 0.003497 0.000000 |
++ 0.000126 0.007740 0.987142 0.004992 # 0.000126 0.007740 0.987142 0.004992 # 0.000259 0.008947 0.985323 0.005470 # 0.000000 0.006229 0.974222 0.019548 # 0.000000 0.006229 0.974222 0.019548 # 0.000000 0.006229 0.974222 0.019548 |
++ 0.000000 0.001349 0.004598 0.994053 # 0.000000 0.001349 0.004598 0.994053 # 0.000000 0.000000 0.006456 0.993544 # 0.000000 0.000000 0.076845 0.923155 # 0.000000 0.000000 0.076844 0.923156 # 0.000000 0.000000 0.076845 0.923155 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++3 0.993699 0.005286 0.000649 0.000366 # 0.993664 0.005179 0.001157 0.000000 # 0.993494 0.006506 0.000000 0.000000 # 0.989283 0.009966 0.000751 0.000000 # 0.989283 0.009966 0.000751 0.000000 # 0.989225 0.010775 0.000000 0.000000 |
++ 0.007593 0.975150 0.017257 0.000000 # 0.007522 0.975453 0.016889 0.000136 # 0.007769 0.973039 0.018866 0.000326 # 0.012851 0.974998 0.012151 0.000000 # 0.012851 0.974998 0.012151 0.000000 # 0.012983 0.973653 0.013364 0.000000 |
++ 0.000003 0.025998 0.959316 0.014683 # 0.001114 0.025204 0.958373 0.015308 # 0.000803 0.028362 0.955708 0.015127 # 0.000411 0.018041 0.957214 0.024333 # 0.000411 0.018041 0.957214 0.024334 # 0.000204 0.018779 0.956872 0.024144 |
++ 0.000839 0.001288 0.011673 0.986200 # 0.000000 0.001628 0.012690 0.985682 # 0.000000 0.000000 0.015016 0.984984 # 0.000000 0.000000 0.046183 0.953817 # 0.000000 0.000000 0.046183 0.953817 # 0.000000 0.000000 0.045932 0.954068 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++4 0.997999 0.001406 0.000596 0.000000 # 0.997999 0.001406 0.000596 0.000000 # 0.997972 0.002028 0.000000 0.000000 # 0.994840 0.005160 0.000000 0.000000 # 0.994840 0.005160 0.000000 0.000000 # 0.994840 0.005160 0.000000 0.000000 |
++ 0.000931 0.993213 0.005856 0.000000 # 0.000931 0.993213 0.005856 0.000000 # 0.000939 0.993091 0.005970 0.000000 # 0.002036 0.993518 0.004445 0.000000 # 0.002036 0.993518 0.004445 0.000000 # 0.002036 0.993518 0.004445 0.000000 |
++ 0.000000 0.008393 0.988560 0.003046 # 0.000000 0.008393 0.988560 0.003046 # 0.000000 0.008233 0.988698 0.003070 # 0.000000 0.004979 0.967285 0.027736 # 0.000000 0.004979 0.967285 0.027736 # 0.000000 0.004979 0.967285 0.027736 |
++ 0.000000 0.000000 0.002283 0.997717 # 0.000000 0.000000 0.002283 0.997717 # 0.000000 0.000000 0.002281 0.997719 # 0.000000 0.000000 0.093249 0.906751 # 0.000000 0.000000 0.093249 0.906751 # 0.000000 0.000000 0.093249 0.906751 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++5 0.985814 0.011143 0.000460 0.002582 # 0.986315 0.012132 0.001553 0.000000 # 0.985989 0.014011 0.000000 0.000000 # 0.979504 0.019032 0.000001 0.001462 # 0.980563 0.018361 0.001076 0.000000 # 0.980239 0.019761 0.000000 0.000000 |
++ 0.024629 0.949383 0.025988 0.000000 # 0.025537 0.945272 0.023413 0.005777 # 0.024382 0.941662 0.028433 0.005524 # 0.033739 0.938752 0.027509 0.000000 # 0.031675 0.939973 0.027078 0.001274 # 0.032594 0.936713 0.028935 0.001758 |
++ 0.002508 0.014474 0.969050 0.013967 # 0.001443 0.015974 0.968606 0.013977 # 0.002343 0.020057 0.963398 0.014202 # 0.000951 0.016808 0.958272 0.023969 # 0.000814 0.017785 0.956897 0.024505 # 0.000482 0.018626 0.956979 0.023914 |
++ 0.001744 0.001473 0.011636 0.985146 # 0.000000 0.003701 0.011267 0.985033 # 0.000000 0.000000 0.015953 0.984047 # 0.000789 0.000000 0.032638 0.966572 # 0.000000 0.000082 0.033501 0.966416 # 0.000000 0.000000 0.033293 0.966707 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++6 0.988854 0.009481 0.000836 0.000829 # 0.989091 0.009342 0.001567 0.000000 # 0.989178 0.010822 0.000000 0.000000 # 0.973760 0.025883 0.000357 0.000000 # 0.973760 0.025883 0.000357 0.000000 # 0.973724 0.026276 0.000000 0.000000 |
++ 0.007578 0.973684 0.018738 0.000000 # 0.007366 0.973631 0.019004 0.000000 # 0.007150 0.972399 0.020448 0.000002 # 0.012927 0.971603 0.015470 0.000000 # 0.012927 0.971603 0.015470 0.000000 # 0.012925 0.971363 0.015711 0.000000 |
++ 0.000000 0.011064 0.983127 0.005809 # 0.000000 0.011190 0.982608 0.006202 # 0.000000 0.011932 0.981350 0.006718 # 0.000000 0.009794 0.974358 0.015848 # 0.000000 0.009794 0.974358 0.015848 # 0.000000 0.009842 0.974326 0.015832 |
++ 0.000000 0.000793 0.007130 0.992078 # 0.000000 0.000706 0.007358 0.991936 # 0.000000 0.000000 0.008604 0.991396 # 0.000000 0.000000 0.073705 0.926295 # 0.000000 0.000000 0.073705 0.926295 # 0.000000 0.000000 0.073670 0.926330 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++7 0.968653 0.031347 0.000000 0.000000 # 0.968648 0.031352 0.000000 0.000000 # 0.968648 0.031352 0.000000 0.000000 # 0.949802 0.050198 0.000000 0.000000 # 0.949721 0.050279 0.000000 0.000000 # 0.949721 0.050279 0.000000 0.000000 |
++ 0.019903 0.947939 0.032158 0.000000 # 0.019922 0.948024 0.031714 0.000340 # 0.019922 0.948024 0.031714 0.000340 # 0.021790 0.961174 0.017036 0.000000 # 0.021878 0.961057 0.017064 0.000000 # 0.021878 0.961057 0.017064 0.000000 |
++ 0.000000 0.016518 0.978722 0.004760 # 0.000000 0.016448 0.978987 0.004565 # 0.000000 0.016448 0.978987 0.004565 # 0.000000 0.011818 0.965631 0.022552 # 0.000000 0.011886 0.965738 0.022376 # 0.000000 0.011886 0.965738 0.022376 |
++ 0.000000 0.000000 0.004434 0.995566 # 0.000000 0.000000 0.004407 0.995593 # 0.000000 0.000000 0.004407 0.995593 # 0.000092 0.000000 0.043674 0.956234 # 0.000000 0.000000 0.043589 0.956411 # 0.000000 0.000000 0.043589 0.956411 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++8 0.986604 0.013396 0.000000 0.000000 # 0.986363 0.013637 0.000000 0.000000 # 0.986474 0.013526 0.000000 0.000000 # 0.966025 0.033975 0.000000 0.000000 # 0.965607 0.034393 0.000000 0.000000 # 0.965607 0.034393 0.000000 0.000000 |
++ 0.009233 0.981332 0.008644 0.000791 # 0.009785 0.980778 0.008638 0.000799 # 0.009067 0.981430 0.008660 0.000843 # 0.016354 0.975086 0.008560 0.000000 # 0.016747 0.974626 0.008627 0.000000 # 0.016747 0.974626 0.008627 0.000000 |
++ 0.000000 0.007959 0.988513 0.003529 # 0.000000 0.007836 0.988698 0.003466 # 0.000808 0.008292 0.986702 0.004198 # 0.000000 0.006997 0.968978 0.024025 # 0.000124 0.007184 0.968430 0.024261 # 0.000124 0.007184 0.968430 0.024261 |
++ 0.000164 0.000375 0.001228 0.998233 # 0.000000 0.000602 0.001139 0.998258 # 0.000000 0.000000 0.002054 0.997946 # 0.000184 0.000000 0.017514 0.982301 # 0.000000 0.000000 0.017855 0.982145 # 0.000000 0.000000 0.017855 0.982145 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++9 0.987950 0.012050 0.000000 0.000000 # 0.987950 0.012050 0.000000 0.000000 # 0.987943 0.012057 0.000000 0.000000 # 0.973444 0.026556 0.000000 0.000000 # 0.973444 0.026556 0.000000 0.000000 # 0.973444 0.026556 0.000000 0.000000 |
++ 0.020526 0.952590 0.023914 0.002970 # 0.020526 0.952590 0.023914 0.002970 # 0.020565 0.952197 0.024648 0.002590 # 0.036048 0.940513 0.023439 0.000000 # 0.036048 0.940513 0.023438 0.000001 # 0.036048 0.940513 0.023439 0.000000 |
++ 0.000000 0.009787 0.978082 0.012131 # 0.000000 0.009787 0.978082 0.012131 # 0.000000 0.010837 0.976493 0.012669 # 0.000000 0.009273 0.972700 0.018028 # 0.000000 0.009273 0.972699 0.018028 # 0.000000 0.009273 0.972699 0.018028 |
++ 0.000000 0.000697 0.007445 0.991857 # 0.000000 0.000697 0.007445 0.991857 # 0.000000 0.000000 0.008581 0.991419 # 0.000000 0.000000 0.014422 0.985578 # 0.000000 0.000000 0.014422 0.985578 # 0.000000 0.000000 0.014422 0.985578 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++10 0.980040 0.019960 0.000000 0.000000 # 0.979815 0.020185 0.000000 0.000000 # 0.979815 0.020185 0.000000 0.000000 # 0.966883 0.033117 0.000000 0.000000 # 0.966393 0.033607 0.000000 0.000000 # 0.966393 0.033607 0.000000 0.000000 |
++ 0.009361 0.979632 0.011007 0.000000 # 0.009597 0.979440 0.010963 0.000000 # 0.009597 0.979440 0.010963 0.000000 # 0.011895 0.980390 0.007715 0.000000 # 0.012180 0.980067 0.007753 0.000000 # 0.012180 0.980067 0.007753 0.000000 |
++ 0.000000 0.008546 0.981238 0.010216 # 0.000171 0.008715 0.981153 0.009962 # 0.000171 0.008715 0.981153 0.009962 # 0.000000 0.004925 0.981967 0.013108 # 0.000119 0.004997 0.982130 0.012754 # 0.000119 0.004997 0.982130 0.012754 |
++ 0.000159 0.000000 0.004893 0.994948 # 0.000000 0.000000 0.005002 0.994998 # 0.000000 0.000000 0.005002 0.994998 # 0.000223 0.000000 0.015750 0.984028 # 0.000000 0.000000 0.015748 0.984252 # 0.000000 0.000000 0.015748 0.984252 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++11 0.983183 0.016817 0.000000 0.000000 # 0.983183 0.016817 0.000000 0.000000 # 0.983728 0.016272 0.000000 0.000000 # 0.978772 0.021228 0.000000 0.000000 # 0.978772 0.021228 0.000000 0.000000 # 0.978772 0.021228 0.000000 0.000000 |
++ 0.011386 0.959825 0.028789 0.000000 # 0.011386 0.959825 0.028789 0.000000 # 0.008868 0.963058 0.028074 0.000000 # 0.012616 0.962855 0.024528 0.000000 # 0.012616 0.962855 0.024528 0.000000 # 0.012616 0.962855 0.024528 0.000000 |
++ 0.000000 0.020296 0.970255 0.009449 # 0.000000 0.020296 0.970255 0.009449 # 0.001642 0.017698 0.971219 0.009441 # 0.000000 0.015986 0.969384 0.014630 # 0.000000 0.015986 0.969384 0.014630 # 0.000000 0.015986 0.969384 0.014630 |
++ 0.000000 0.000000 0.005172 0.994828 # 0.000000 0.000000 0.005172 0.994828 # 0.000000 0.000000 0.005179 0.994821 # 0.000000 0.000000 0.011572 0.988428 # 0.000000 0.000000 0.011572 0.988428 # 0.000000 0.000000 0.011572 0.988428 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++12 0.986898 0.012572 0.000000 0.000530 # 0.986896 0.012567 0.000537 0.000000 # 0.986728 0.013272 0.000000 0.000000 # 0.936349 0.062103 0.000000 0.001548 # 0.935706 0.062076 0.002218 0.000000 # 0.934619 0.065381 0.000000 0.000000 |
++ 0.007959 0.979122 0.012315 0.000604 # 0.007966 0.979055 0.012583 0.000396 # 0.008096 0.978353 0.013444 0.000107 # 0.026279 0.962904 0.010817 0.000000 # 0.026763 0.962672 0.010565 0.000000 # 0.027355 0.961030 0.011611 0.000004 |
++ 0.000000 0.010681 0.563790 0.425529 # 0.000000 0.012626 0.556373 0.431001 # 0.000000 0.016492 0.597659 0.385849 # 0.000000 0.004550 0.983471 0.011979 # 0.000000 0.004562 0.982864 0.012574 # 0.000000 0.004614 0.982922 0.012464 |
++ 0.000000 0.000170 0.176835 0.822995 # 0.000000 0.000106 0.145597 0.854298 # 0.000000 0.000000 0.096958 0.903042 # 0.000000 0.000000 0.008361 0.991639 # 0.000000 0.000000 0.008545 0.991455 # 0.000000 0.000000 0.008504 0.991496 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++13 0.953774 0.040055 0.001314 0.004857 # 0.953780 0.039999 0.006220 0.000000 # 0.952145 0.047855 0.000000 0.000000 # 0.942532 0.050730 0.000000 0.006738 # 0.942495 0.050806 0.006700 0.000000 # 0.940781 0.059219 0.000000 0.000000 |
++ 0.043320 0.916013 0.031897 0.008770 # 0.043302 0.915980 0.032617 0.008100 # 0.044060 0.908319 0.035418 0.012204 # 0.054379 0.906873 0.038655 0.000093 # 0.054416 0.906653 0.038812 0.000119 # 0.055047 0.898755 0.022754 0.023444 |
++ 0.000987 0.004140 0.550473 0.444401 # 0.001175 0.004865 0.529543 0.464417 # 0.001488 0.008084 0.497853 0.492575 # 0.000848 0.004819 0.407234 0.587100 # 0.000935 0.005353 0.346148 0.647564 # 0.001108 0.007296 0.205563 0.786033 |
++ 0.000013 0.000408 0.198552 0.801027 # 0.000000 0.000350 0.170196 0.829454 # 0.000000 0.000000 0.127563 0.872437 # 0.000000 0.000007 0.274177 0.725815 # 0.000000 0.000010 0.260991 0.738998 # 0.000000 0.000000 0.230032 0.769968 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++14 0.947108 0.035043 0.012111 0.005738 # 0.947108 0.035037 0.017854 0.000000 # 0.945044 0.054956 0.000000 0.000000 # 0.820210 0.178628 0.000620 0.000542 # 0.820195 0.178662 0.001143 0.000000 # 0.819757 0.180243 0.000000 0.000000 |
++ 0.012550 0.985315 0.001107 0.001028 # 0.012550 0.985315 0.001067 0.001068 # 0.010908 0.983701 0.002667 0.002723 # 0.080110 0.860711 0.034629 0.024551 # 0.080133 0.860644 0.034988 0.024235 # 0.080574 0.859213 0.045173 0.015041 |
++ 0.000000 0.000653 0.545651 0.453696 # 0.000000 0.000727 0.520916 0.478357 # 0.000000 0.002047 0.475427 0.522525 # 0.000000 0.002264 0.486210 0.511526 # 0.000000 0.002670 0.462064 0.535266 # 0.000000 0.006099 0.424060 0.569841 |
++ 0.000000 0.000266 0.199173 0.800561 # 0.000000 0.000261 0.171750 0.827988 # 0.000000 0.000000 0.130850 0.869150 # 0.000000 0.000509 0.163119 0.836372 # 0.000000 0.000481 0.139558 0.859961 # 0.000000 0.000000 0.104208 0.895792 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++15 0.977767 0.017013 0.002873 0.002347 # 0.977766 0.017015 0.005219 0.000000 # 0.977209 0.022791 0.000000 0.000000 # 0.505631 0.476765 0.000000 0.017604 # 0.505431 0.480847 0.013722 0.000000 # 0.502365 0.497635 0.000000 0.000000 |
++ 0.002561 0.994980 0.001569 0.000891 # 0.002561 0.994984 0.001539 0.000916 # 0.002530 0.994125 0.001545 0.001799 # 0.037979 0.951250 0.008253 0.002518 # 0.037918 0.950965 0.008590 0.002527 # 0.038215 0.949488 0.009589 0.002708 |
++ 0.000263 0.001055 0.550150 0.448533 # 0.000345 0.001204 0.530769 0.467682 # 0.000381 0.002931 0.486358 0.510329 # 0.000000 0.002777 0.497578 0.499645 # 0.000000 0.003222 0.477164 0.519613 # 0.000000 0.004309 0.441494 0.554197 |
++ 0.000015 0.000255 0.189445 0.810285 # 0.000000 0.000244 0.162100 0.837656 # 0.000000 0.000000 0.128671 0.871329 # 0.000000 0.000014 0.169472 0.830515 # 0.000000 0.000008 0.147810 0.852182 # 0.000000 0.000000 0.114732 0.885268 |
++ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/README.txt b/src/hidden-markov-error-model/configs/HMM_4states/README.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_4states/README.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_4states/README.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,3 @@ |
++HMM_01_EMIS_1.txt && HMM_01_TR_1.txt --> Caso de libertad total |
++HMM_01_EMIS_2.txt && HMM_01_TR_2.txt --> Caso de libertad total |
++ |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,8 @@ |
++1.000000 0.000000 |
++0.778672 0.221328 |
++0.990820 0.009180 |
++0.801295 0.198705 |
++0.339537 0.660463 |
++0.076543 0.923457 |
++0.000012 0.999988 |
++0.006242 0.993758 |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_05_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,9 @@ |
++8 |
++0.989965 0.010035 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.276105 0.000000 0.723895 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.033085 0.917546 0.049369 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.052967 0.900295 0.046738 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.035086 0.926561 0.038353 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.030556 0.960626 0.008819 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.054714 0.695952 0.249334 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.089019 0.910981 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,8 @@ |
++0.997390 0.002610 |
++0.928653 0.071347 |
++0.658585 0.341415 |
++0.444537 0.555463 |
++0.202381 0.797619 |
++0.152999 0.847001 |
++0.130557 0.869443 |
++0.006989 0.993011 |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_07_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,9 @@ |
++8 |
++0.977116 0.022884 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.023341 0.819370 0.157289 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.172486 0.763738 0.063777 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.018291 0.941470 0.040239 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.058352 0.921761 0.019887 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.019525 0.967251 0.013224 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.020594 0.690303 0.289103 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.116809 0.883191 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,8 @@ |
++1.000000 0.000000 |
++0.529995 0.470005 |
++0.916067 0.083933 |
++0.577996 0.422004 |
++0.469006 0.530994 |
++0.103897 0.896103 |
++0.016017 0.983983 |
++0.000042 0.999958 |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_09_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,9 @@ |
++8 |
++0.973856 0.026144 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.475171 0.000001 0.524828 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.070352 0.861296 0.068352 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.085522 0.811393 0.103086 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.097063 0.822990 0.079947 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.014464 0.971163 0.014373 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.030500 0.673251 0.296249 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.134157 0.865843 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_EMIS_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_EMIS_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_EMIS_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_EMIS_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,8 @@ |
++0.987982 0.012018 |
++0.797022 0.202978 |
++0.430918 0.569082 |
++0.167089 0.832911 |
++0.035343 0.964657 |
++0.002521 0.997479 |
++0.001187 0.998813 |
++0.001983 0.998017 |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_TR_1.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_TR_1.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_TR_1.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_12_TR_1.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,9 @@ |
++8 |
++0.986006 0.013994 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.006170 0.975115 0.018715 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.014960 0.964312 0.020728 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.013713 0.961675 0.024612 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.010624 0.981400 0.007975 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.011279 0.988084 0.000638 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.001531 0.694920 0.303549 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.130666 0.869334 |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_EMIS.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_EMIS.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_EMIS.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_EMIS.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,36 @@ |
++1.000000 0.000000 |
++0.778672 0.221328 |
++0.990820 0.009180 |
++0.801295 0.198705 |
++0.339537 0.660463 |
++0.076543 0.923457 |
++0.000012 0.999988 |
++0.006242 0.993758 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.997390 0.002610 |
++0.928653 0.071347 |
++0.658585 0.341415 |
++0.444537 0.555463 |
++0.202381 0.797619 |
++0.152999 0.847001 |
++0.130557 0.869443 |
++0.006989 0.993011 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++1.000000 0.000000 |
++0.529995 0.470005 |
++0.916067 0.083933 |
++0.577996 0.422004 |
++0.469006 0.530994 |
++0.103897 0.896103 |
++0.016017 0.983983 |
++0.000042 0.999958 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.987982 0.012018 |
++0.797022 0.202978 |
++0.430918 0.569082 |
++0.167089 0.832911 |
++0.035343 0.964657 |
++0.002521 0.997479 |
++0.001187 0.998813 |
++0.001983 0.998017 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_TR.txt b/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_TR.txt |
+--- ns-3.13/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_TR.txt 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/configs/HMM_8states/HMM_all_TR.txt 2011-10-12 10:34:12.000000000 +0200 |
+@@ -0,0 +1,36 @@ |
++0.989965 0.010035 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.276105 0.000000 0.723895 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.033085 0.917546 0.049369 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.052967 0.900295 0.046738 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.035086 0.926561 0.038353 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.030556 0.960626 0.008819 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.054714 0.695952 0.249334 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.089019 0.910981 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.977116 0.022884 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.023341 0.819370 0.157289 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.172486 0.763738 0.063777 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.018291 0.941470 0.040239 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.058352 0.921761 0.019887 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.019525 0.967251 0.013224 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.020594 0.690303 0.289103 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.116809 0.883191 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.973856 0.026144 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.475171 0.000001 0.524828 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.070352 0.861296 0.068352 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.085522 0.811393 0.103086 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.097063 0.822990 0.079947 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.014464 0.971163 0.014373 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.030500 0.673251 0.296249 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.134157 0.865843 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
++0.986006 0.013994 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.006170 0.975115 0.018715 0.000000 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.014960 0.964312 0.020728 0.000000 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.013713 0.961675 0.024612 0.000000 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.010624 0.981400 0.007975 0.000000 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.011279 0.988084 0.000638 0.000000 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.001531 0.694920 0.303549 |
++0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.130666 0.869334 |
++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/examples/tcp-error-model-test.cc b/src/hidden-markov-error-model/examples/tcp-error-model-test.cc |
+--- ns-3.13/src/hidden-markov-error-model/examples/tcp-error-model-test.cc 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/examples/tcp-error-model-test.cc 2012-04-17 11:35:07.000000000 +0200 |
+@@ -0,0 +1,1047 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#include "ns3/core-module.h" |
++#include "ns3/mobility-module.h" |
++#include "ns3/applications-module.h" |
++ |
++#include "ns3/wifi-helper.h" |
++#include "ns3/yans-wifi-helper.h" |
++#include "ns3/inet-socket-address.h" |
++#include "ns3/internet-stack-helper.h" |
++#include "ns3/ipv4-address-helper.h" |
++#include "ns3/wifi-module.h" |
++#include "ns3/propagation-loss-model.h" |
++ |
++#include "ns3/aodv-routing-protocol.h" |
++ |
++#include "ns3/ar-model.h" |
++#include "ns3/hidden-markov-error-model.h" |
++ |
++#include "ns3/socket.h" |
++#include <ns3/node-list.h> |
++ |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++#include "ns3/udp-header.h" |
++ |
++#include <iostream> |
++#include <fstream> |
++#include <vector> |
++#include <string> |
++#include <stdio.h> |
++ |
++#include "scratch-logging.h" |
++//#include "experiment.h" |
++ |
++NS_LOG_COMPONENT_DEFINE("TcpErrorModelTest"); |
++ |
++using namespace std; |
++using namespace ns3; |
++ |
++std::string ConvertMacToString(Mac48Address mac); |
++std::string getcwd(); |
++ |
++enum ChannelMode_t { |
++ HIDDEN_MARKOV_ERROR_MODEL, |
++ BURSTY_ERROR_AUTO_REGRESSIVE_MODEL, |
++ NIST_ERROR_RATE_MODEL |
++}; |
++ |
++enum TransportProtocol_t { |
++ TCP_PROTOCOL, |
++ UDP_PROTOCOL |
++}; |
++ |
++class Experiment { |
++public: |
++ Experiment (); |
++ ~Experiment (); |
++ |
++ u_int32_t GetPacketCounter() const; |
++ void SetPacketCounter(u_int32_t packetCounter); |
++ u_int32_t GetPktsCorrect() const; |
++ void SetPktsCorrect(u_int32_t pktsCorrect); |
++ u_int32_t GetPktsReceived() const; |
++ void SetPktsReceived(u_int32_t pktsReceived); |
++ u_int32_t GetPktsTransmitted () const; |
++ |
++ void SetTransportProtocol (TransportProtocol_t protocol); |
++ TransportProtocol_t GetTransportProtocol () const; |
++ |
++ Ptr<Socket> SetupPacketReceive(Ptr<Node> node); |
++ void GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval); |
++ //Tracing |
++ void PhyRxOkTrace (std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble); |
++ void PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr); |
++ |
++ //BEAR Callback integration |
++ void HmmRxTrace (Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state); |
++ void BearRxTrace (Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading); |
++ |
++ //Upper Layer parser |
++ packetInfo_t ParsePacket (Ptr<const Packet> packet); |
++ |
++ void OpenTraceFile (string fileName, ChannelMode_t channelModel); |
++ void CloseTraceFile (); |
++ |
++ void TraceToFile (string line); |
++ |
++ |
++private: |
++ fstream m_file; |
++ |
++ void ReceivePacket(Ptr<Socket> socket); |
++ void SetPosition(Ptr<Node> node, Vector position); |
++ Vector GetPosition(Ptr<Node> node); |
++ u_int32_t m_pktsReceived; |
++ u_int32_t m_pktsCorrect; |
++ u_int32_t m_packetCounter; |
++ |
++ u_int32_t m_packetsTransmitted; |
++ |
++ TransportProtocol_t m_protocol; |
++}; |
++ |
++ |
++Experiment::Experiment(): m_pktsReceived (0), |
++ m_pktsCorrect (0), |
++ m_packetCounter (0), |
++ m_packetsTransmitted (0) |
++{} |
++ |
++Experiment::~Experiment() |
++{} |
++ |
++ |
++void Experiment::SetPosition(Ptr<Node> node, Vector position) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ mobility->SetPosition(position); |
++} |
++Vector Experiment::GetPosition(Ptr<Node> node) { |
++ Ptr<MobilityModel> mobility = node->GetObject<MobilityModel>(); |
++ return mobility->GetPosition(); |
++} |
++void Experiment::ReceivePacket(Ptr<Socket> socket) { |
++ Ptr<Packet> packet; |
++ while (packet = socket->Recv()) { |
++ // m_pktsReceived++; |
++ } |
++} |
++ |
++Ptr<Socket> Experiment::SetupPacketReceive(Ptr<Node> node) { |
++ |
++ TypeId tid = TypeId::LookupByName("ns3::TcpSocketFactory"); |
++ |
++ if (m_protocol == UDP_PROTOCOL) |
++ tid = TypeId::LookupByName("ns3::UdpSocketFactory"); |
++ Ptr<Socket> sink = Socket::CreateSocket(node, tid); |
++ InetSocketAddress local = InetSocketAddress(Ipv4Address::GetAny(), 80); |
++ sink->Bind(local); |
++ sink->SetRecvCallback(MakeCallback(&Experiment::ReceivePacket, this)); |
++ return sink; |
++} |
++void Experiment::GenerateTraffic(Ptr<Socket> socket, uint32_t pktSize, |
++ uint32_t pktCount, Time pktInterval) { |
++ m_packetCounter --; |
++ if (m_packetCounter > 0) { |
++ socket->Send(Create<Packet>(pktSize)); |
++ Simulator::Schedule(pktInterval, &Experiment::GenerateTraffic, this, |
++ socket, pktSize, pktCount - 1, pktInterval); |
++ } else { |
++ socket->Close(); |
++ } |
++ m_packetsTransmitted ++; |
++} |
++ |
++u_int32_t Experiment::GetPacketCounter () const |
++{ |
++ return m_packetCounter; |
++} |
++ |
++void Experiment::SetPacketCounter (u_int32_t packetCounter) |
++{ |
++ this->m_packetCounter = packetCounter; |
++} |
++ |
++u_int32_t Experiment::GetPktsCorrect () const |
++{ |
++ return m_pktsCorrect; |
++} |
++ |
++void Experiment::SetPktsCorrect (u_int32_t pktsCorrect) |
++{ |
++ this->m_pktsCorrect = pktsCorrect; |
++} |
++ |
++u_int32_t Experiment::GetPktsReceived () const |
++{ |
++ return m_pktsReceived; |
++} |
++ |
++void Experiment::SetPktsReceived(u_int32_t pktsReceived) |
++{ |
++ this->m_pktsReceived = pktsReceived; |
++} |
++ |
++u_int32_t Experiment::GetPktsTransmitted() const |
++{ |
++ return m_packetsTransmitted; |
++} |
++ |
++void Experiment::SetTransportProtocol(TransportProtocol_t protocol) |
++{ |
++ m_protocol = protocol; |
++} |
++ |
++TransportProtocol_t Experiment::GetTransportProtocol () const |
++{ |
++ return m_protocol; |
++} |
++ |
++//// Trace data frames and their corresponding ACKs |
++ |
++void Experiment::PhyRxOkTrace(std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble) |
++{ |
++ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), true, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ true, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++void Experiment::PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr) |
++{ |
++ /////////////////////////////////////////////////////// |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ m_pktsReceived ++; |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), false, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ snr); |
++ TraceToFile(line); |
++ } |
++ |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %10f", \ |
++ Simulator::Now().GetSeconds(), \ |
++ false, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ snr); |
++ m_pktsReceived ++; |
++ TraceToFile(line); |
++ |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ //////////////////////////////////// |
++ |
++} |
++ |
++packetInfo_t Experiment::ParsePacket (Ptr<const Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(packet); |
++ |
++ packetInfo_t packetInfo; |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
++ pktCopy->RemoveHeader(packetInfo.wifiHdr); |
++ |
++ if (packetInfo.wifiHdr.IsData()) |
++ { |
++ pktCopy->RemoveHeader(packetInfo.llcHdr); |
++ switch (packetInfo.llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ packetInfo.type = ARP_PACKET; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(packetInfo.ipv4Hdr); |
++ switch (packetInfo.ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(packetInfo.tcpHdr); |
++ packetInfo.type = TCP_DATA; |
++ |
++ break; |
++ case 17: //UDP |
++ pktCopy->RemoveHeader(packetInfo.udpHdr); |
++ packetInfo.type = UDP_DATA; |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC) --> " << packetInfo.llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ else if (packetInfo.wifiHdr.IsAck()) |
++ { |
++ packetInfo.type = IEEE_80211_ACK; |
++ } |
++ else // 802.11 Control/Management frame |
++ { |
++ packetInfo.type = IEEE_80211_NODATA; |
++ } |
++ |
++ packetInfo.payloadLength = pktCopy->GetSize() - 4; //Last four bytes are used for tagging |
++ |
++ return packetInfo; |
++} |
++ |
++void Experiment::BearRxTrace(Ptr<Packet> packet, Time timestamp, bool error, double propagation, double slowFading, double fastFading) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16f", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ propagation + slowFading + fastFading); |
++ |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) // |
++ dataOrAck = true; |
++ |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %12f %12f %12f", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ propagation, \ |
++ slowFading, \ |
++ fastFading \ |
++ ); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++ |
++} |
++ |
++void Experiment::HmmRxTrace(Ptr<Packet> packet, Time timestamp, bool error, u_int16_t state) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ WifiMacHeader hdr; |
++ packetInfo_t packetInfo; |
++ char line [255]; |
++ bool dataOrAck; //Value used for UDP tracing |
++ |
++ //Ip addresses variables needed for Ipv4Address to String conversion |
++ u_int8_t source [4]; |
++ u_int8_t destination [4]; |
++ char sourceChar [32]; |
++ char destChar [32]; |
++ |
++ packet->PeekHeader (hdr); //Don't forget to uncomment |
++ packetInfo = ParsePacket(packet); |
++ |
++ switch (packetInfo.type) |
++ { |
++ case TCP_DATA: |
++ if (m_protocol == TCP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ |
++ //Get the MAC and IP Addresses |
++ packetInfo.ipv4Hdr.GetSource().Serialize(source); //Get a string from Ipv4Address |
++ packetInfo.ipv4Hdr.GetDestination().Serialize(destination); |
++ sprintf(sourceChar, "%d.%d.%d.%d", source[0], source[1], source[2], source[3]); |
++ sprintf(destChar, "%d.%d.%d.%d", destination[0], destination[1], destination[2], destination[3]); |
++ |
++ sprintf (line, "%16f %16d %20s %20s %16d %16d %16d %16d %16d %16d", \ |
++ Simulator::Now().GetSeconds(), !error, sourceChar, \ |
++ destChar, packetInfo.wifiHdr.IsRetry(), \ |
++ packetInfo.payloadLength, \ |
++ packetInfo.wifiHdr.GetSequenceNumber(), \ |
++ packetInfo.tcpHdr.GetSequenceNumber().GetValue(), \ |
++ packetInfo.tcpHdr.GetAckNumber().GetValue(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ case UDP_DATA: |
++ if (m_protocol == UDP_PROTOCOL) |
++ { |
++ if (error == 0) |
++ { |
++ m_pktsCorrect ++; |
++ m_pktsReceived ++; |
++ } |
++ else |
++ { |
++ m_pktsReceived ++; |
++ } |
++ //Distinguish between data or ACK |
++ if (hdr.IsData()) |
++ dataOrAck = false; |
++ else if (hdr.IsAck()) |
++ dataOrAck = true; |
++ sprintf(line, "%10f %10d %20s %20s %10s %8d %8d %8d", \ |
++ timestamp.GetSeconds(), \ |
++ !error, \ |
++ ConvertMacToString(hdr.GetAddr2()).c_str(), \ |
++ ConvertMacToString(hdr.GetAddr1()).c_str(), \ |
++ dataOrAck ? "ACK" : "DATA", \ |
++ packet->GetSize(), \ |
++ hdr.GetSequenceNumber(), \ |
++ state); |
++ TraceToFile(line); |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR("Unknown packet type --> " << packetInfo.type); |
++ break; |
++ } |
++ |
++ |
++} |
++ |
++ |
++void Experiment::OpenTraceFile (string fileName, ChannelMode_t channelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL) |
++{ |
++ string path = getcwd() + "/traces/" + fileName; |
++ char title [255]; |
++ string lastField; //Channel Model Dependent field (trace field) |
++ NS_LOG_DEBUG(path); |
++ m_file.open(path.c_str(), fstream::out); |
++ |
++ //Split into TCP and UDP simulations |
++ switch (m_protocol) |
++ { |
++ case TCP_PROTOCOL: |
++ if (channelModel == HIDDEN_MARKOV_ERROR_MODEL) |
++ lastField = "State"; |
++ else |
++ lastField = "SNR (dB)"; |
++ |
++ sprintf (title, "%16s %16s %20s %20s %16s %16s %16s %16s %16s %16s", \ |
++ "Time", "CRC", "Source", "Destination", "802.11 RETX", \ |
++ "Length","SeqNum", "TCP SeqNum", "TCP AckNum", \ |
++ lastField.c_str()); |
++ break; |
++ |
++ case UDP_PROTOCOL: |
++ switch (channelModel) |
++ { |
++ case BURSTY_ERROR_AUTO_REGRESSIVE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %12s %12s %12s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "Propagation","Slow Fading", "Fast Fading"); |
++ break; |
++ case HIDDEN_MARKOV_ERROR_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %8s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", \ |
++ "State"); |
++ break; |
++ case NIST_ERROR_RATE_MODEL: |
++ sprintf(title, "%10s %10s %20s %20s %10s %8s %8s %10s", \ |
++ "Time", "CRC", "SRC", "DST", "DATA/ACK", "Length", "SeqNum", "SNR (dB)"); |
++ break; |
++ } |
++ |
++ break; |
++ default: |
++ NS_LOG_ERROR("Cannot open a trace file because transport protocol is not correct"); |
++ } |
++ |
++ m_file << title << endl; |
++} |
++ |
++void Experiment::CloseTraceFile() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ if (m_file.is_open()) |
++ m_file.close(); |
++ else |
++ NS_LOG_ERROR("Open file not found"); |
++} |
++ |
++void Experiment::TraceToFile(string line) |
++{ |
++ NS_LOG_DEBUG(line); |
++ m_file << line << endl; |
++} |
++ |
++ |
++ |
++std::string getcwd() { |
++ char buf[FILENAME_MAX]; |
++ char* succ = getcwd(buf, FILENAME_MAX); |
++ if (succ) |
++ return std::string(succ); |
++ return ""; // raise a flag, throw an exception, ... |
++} |
++ |
++std::string ConvertMacToString(Mac48Address mac) |
++{ |
++ NS_LOG_FUNCTION(mac); |
++ u_int8_t temp[6]; |
++ char result[24]; |
++ mac.CopyTo(temp); |
++ |
++ sprintf(result,"%02X:%02X:%02X:%02X:%02X:%02X", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5] ); |
++ |
++ return std::string(result); |
++} |
++ |
++//////////////////////////////////////////////////////////////////////////////////// |
++/////////////////////////////// MAIN /////////////////////////////////////// |
++//////////////////////////////////////////////////////////////////////////////////// |
++ |
++int main (int argc, char *argv[]) |
++{ |
++ //Logging |
++ EnableLogging(); |
++ |
++ |
++ //Variable initialization |
++ // Hidden Markov Model Coefficient file |
++ string transitionFileHmm = "HMM_4states/HMM_03_TR_1.txt" ; |
++ string emissionFileHmm = "HMM_4states/HMM_03_EMIS_1.txt" ; |
++ |
++ string hmmChannel = "Good"; |
++ |
++ //BEAR model Coefficients file |
++ string arModelCoefficientsFile = "coefsAR.cfg"; |
++ |
++ //Parameter to switch among the different channel models |
++ string channelModel = "Bear"; |
++ |
++ //Transport protocol |
++ string transportProtocol = "TCP"; |
++ TransportProtocol_t protocol; |
++ |
++ //Random variable generation (Random seed) |
++ SeedManager::SetSeed(1); |
++ |
++ //Trace file name |
++ u_int16_t scenario = 1; //Scenario number --> Used for trace file naming (see documentation to get the model particular parameters) |
++ string outputChannelTypeFileName; |
++ string outputFileName = "TCP"; |
++ ChannelMode_t enumChannelModel; |
++ |
++ //Simulation parameters |
++ float distance = 20; //Distance between nodes |
++ |
++ |
++ u_int32_t numPackets = 10000; |
++ u_int32_t packetLength = 1460; |
++ uint64_t interPacketTime = 1000000; |
++ u_int32_t run = 1; |
++ u_int32_t runCounter; |
++ u_int32_t runOffset = 0; |
++ |
++ //Command parsing |
++ CommandLine cmd; |
++ |
++ //Error model parameters |
++ cmd.AddValue ("ChannelModel", "Channel model to insert into the nodes", channelModel ); |
++ //BEAR model |
++ cmd.AddValue ("ArModelCoefficientFile", "File name which contains the AR model coefficients", arModelCoefficientsFile); |
++ |
++ //Hidden Markov Error Model parameters |
++ cmd.AddValue ("HmmChannel", "Type of HMM channel: Good, Average or bad", hmmChannel); |
++ cmd.AddValue ("TransitionFileHmm", "HMM transition file name (from configs file)", transitionFileHmm); |
++ cmd.AddValue ("EmissionFileHmm", "HMM emission file name (from configs file)", emissionFileHmm); |
++ |
++ //Simulation-related parameters |
++ cmd.AddValue ("Run", "Number of simulations to run", run); |
++ cmd.AddValue ("RunOffset", "Offset introduced at the SeedManager and the file naming counter", runOffset); |
++ cmd.AddValue ("Scenario", "Type of analysis (channel model coefficients and conditions)", scenario); |
++ cmd.AddValue ("NumPackets", "Total number of packets sent in the simulation", numPackets); |
++ cmd.AddValue ("PacketLength", "Number of bytes in each packet", packetLength); |
++ cmd.AddValue ("InterPacketTime", "Time (in microseconds) between two consecutive packets (application level)", interPacketTime); |
++ cmd.AddValue ("OutputChannelTypeFileName", "File name to store the output trace", outputChannelTypeFileName); |
++ cmd.AddValue ("Distance", "Distance (in meters) between nodes", distance); |
++ cmd.AddValue ("TransportProtocol", "TCP or UDP" , transportProtocol); |
++ |
++ cmd.Parse (argc, argv); |
++ |
++ //Default attributes initialization |
++ //Wifi attributes |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",StringValue ("DsssRate2Mbps")); |
++ // Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200")); //Disable RTS/CTS transmission |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200")); //Disable fragmentation |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::DataMode", StringValue ("DsssRate11Mbps")); |
++ Config::SetDefault ("ns3::ConstantRateWifiManager::ControlMode", StringValue ("DsssRate11Mbps")); //WiFi Buffer Size |
++ Config::SetDefault ("ns3::WifiMacQueue::MaxPacketNumber", UintegerValue (900000000)); |
++ Config::SetDefault ("ns3::WifiRemoteStationManager::MaxSlrc", UintegerValue (4)); |
++ Config::SetDefault ("ns3::WifiNetDevice::Mtu", UintegerValue (1512)); |
++ |
++ //HiddenErrorMarkov model attributes |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::TransitionMatrixFileName", StringValue (transitionFileHmm)); |
++ Config::SetDefault ("ns3::HiddenMarkovErrorModel::EmissionMatrixFileName", StringValue (emissionFileHmm)); |
++ |
++ GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true)); |
++ |
++ if (transportProtocol == "TCP") |
++ protocol = TCP_PROTOCOL; |
++ else if (transportProtocol == "UDP") |
++ protocol = UDP_PROTOCOL; |
++ else |
++ NS_LOG_ERROR("Transport Protocol undefined"); |
++ |
++ if (channelModel == "SWEEP") |
++ distance = 72; |
++ |
++ if ((scenario < 1) || (scenario > 6)) |
++ { |
++ NS_LOG_ERROR("HMM configuration et not supported"); |
++ return -1; |
++ } |
++ |
++ /////////-----------------------MAIN LOOP-----------------------///////// |
++ |
++ for (runCounter = 1; runCounter <= run; runCounter ++) |
++ { |
++ Experiment exp_; |
++ exp_.SetTransportProtocol(protocol); |
++ //Create the nodes |
++ NodeContainer wifiNodes; |
++ wifiNodes.Create(2); |
++ |
++ //Prepare the Wifi NetDevices |
++ YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default(); //Don't remove (Necessary at YansWifiPhy::EndReceive) |
++ YansWifiChannelHelper wifiChannel; |
++ |
++ //Change the seed for each simulation run |
++ SeedManager::SetRun(runCounter + runOffset); |
++ |
++ //Channel model initialization |
++ // BEAR model = ArModel (Propagation Loss Model) + BurstyErrorModel (Error Model) |
++ |
++ if (channelModel == "Bear") |
++ { |
++ outputChannelTypeFileName = "Bear"; |
++ enumChannelModel = BURSTY_ERROR_AUTO_REGRESSIVE_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::ArModel"); |
++ Ptr<ArModel> arBaseModel = CreateObject<ArModel> (); |
++ wifiChannel.AddPropagationLoss(arBaseModel); |
++ //Set the error model |
++ Ptr<BurstyErrorModel> errorModel = CreateObject<BurstyErrorModel> (); //Manual BEAR model instance |
++ wifiPhy.SetErrorModel(errorModel); |
++ arBaseModel->SetErrorModel(errorModel); // Bursty error model is closely linked to the AR propagation loss model |
++ |
++ //Callback |
++ errorModel->SetRxCallback (MakeCallback (&Experiment::BearRxTrace, &exp_)); |
++ } |
++ |
++ // HiddenMarkovErrorModel --> Does not take into account the SNR, hence the propagation loss model is not relevant |
++ else if (channelModel == "HMM") |
++ { |
++ //Prepare the coefficients files according to the channel type |
++ if (hmmChannel == "Good") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_12_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_12_EMIS_%1d.txt", scenario); |
++ |
++ } |
++ else if (hmmChannel == "Average") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_09_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_09_EMIS_%1d.txt", scenario); |
++ } |
++ else if (hmmChannel == "Bad") |
++ { |
++ sprintf((char *) transitionFileHmm.c_str(), "HMM_4states/HMM_05_TR_%1d.txt", scenario); |
++ sprintf((char *) emissionFileHmm.c_str(), "HMM_4states/HMM_05_EMIS_%1d.txt", scenario); |
++ } |
++ else |
++ { |
++ NS_LOG_UNCOND ("HMM Channel Model not valid... Exiting"); |
++ return -1; |
++ } |
++ |
++ outputChannelTypeFileName = "HMM_" + hmmChannel; |
++ enumChannelModel = HIDDEN_MARKOV_ERROR_MODEL; |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss ("ns3::SimplePropagationLossModel", "MaxDistance", DoubleValue(200.0)); |
++ |
++ //Set the error model |
++ Ptr<HiddenMarkovErrorModel> errorModel = CreateObject<HiddenMarkovErrorModel> (); |
++ errorModel->SetTransitionMatrixFileName(transitionFileHmm); |
++ errorModel->SetEmissionMatrixFileName(emissionFileHmm); |
++ errorModel->GetCoefficients(); |
++ |
++ wifiPhy.SetErrorModel(errorModel); |
++ |
++ //Callback |
++ errorModel->SetRxCallback(MakeCallback(&Experiment::HmmRxTrace, &exp_)); |
++ } |
++ |
++ //NS-3 Legacy error decision model --> LogDistancePropagationLossModel + NistErrorRateModel |
++ else if (channelModel == "NIST") |
++ { |
++ outputChannelTypeFileName = "NIST"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++// distance = 89.6; //Distance value which FER yields approximately 0.5 |
++ distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++ wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ } |
++ |
++ //Make a sweep in order to fully characterize the throughput vs FER curve shape in a memoryless channel |
++ else if (channelModel == "SWEEP") |
++ { |
++ if ((int) runCounter % 5 == 0) |
++ distance += 0.5 ; |
++ |
++ outputChannelTypeFileName = "SWEEP"; |
++ enumChannelModel = NIST_ERROR_RATE_MODEL; |
++ // distance = 89.6; //Distance value which FER yields approximately 0.5 |
++// distance = 80; //FER ~ 0.16 |
++ |
++ //Set the propagation delay model |
++ wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel"); |
++ //Set the propagation loss model |
++ wifiChannel.AddPropagationLoss("ns3::LogDistancePropagationLossModel"); |
++// wifiChannel.AddPropagationLoss("ns3::RandomPropagationLossModel", "Variable", RandomVariableValue (NormalVariable (0.0, 2.8))); |
++ wifiPhy.SetErrorRateModel("ns3::YansErrorRateModel"); |
++ |
++ } |
++ |
++ wifiPhy.SetChannel (wifiChannel.Create()); |
++ WifiHelper wifi = WifiHelper::Default(); |
++ wifi.SetStandard (WIFI_PHY_STANDARD_80211b); |
++ wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager"); |
++ NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default(); |
++ |
++ NetDeviceContainer wifiDevices = wifi.Install(wifiPhy, wifiMac, wifiNodes); |
++ |
++ //Node mobility configuration |
++ MobilityHelper mobility; |
++ Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator>(); |
++ positionAlloc->Add(Vector(0.0, 0.0, 0.0)); |
++ positionAlloc->Add(Vector(distance, 0.0, 0.0)); |
++ mobility.SetPositionAllocator(positionAlloc); |
++ mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel"); |
++ mobility.Install (wifiNodes); |
++ |
++ //Set the upper layers (default configuration) |
++ InternetStackHelper internet; |
++ |
++ // Sysctl option configuration |
++ if (transportProtocol == "TCP") |
++ { |
++ internet.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue ("liblinux2.6.26.so")); |
++ Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.inet.tcp.mssdflt", StringValue ("1460")); |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_sack", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_timestamps", StringValue ("0")); |
++ // Config::Set ("/NodeList/3/$ns3::Ns3NscStack<linux2.6.26>/net.ipv4.tcp_window_scaling", StringValue ("0")); |
++ |
++ //TCP parameter set |
++ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (1460)); |
++ Config::SetDefault ("ns3::TcpSocket::RcvBufSize", UintegerValue (90000000)); |
++ Config::SetDefault ("ns3::TcpSocket::SndBufSize", UintegerValue (90000000)); |
++ |
++ outputFileName= "TCP"; |
++ |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpNewReno")); |
++ // Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpReno")); |
++ } |
++ else if (transportProtocol == "UDP") |
++ { |
++ outputFileName = "UDP"; |
++ Config::SetDefault ("ns3::UdpSocket::RcvBufSize", UintegerValue (90000000)); |
++ } |
++ |
++ internet.Install (wifiNodes); |
++ |
++ //New TCP simulation model (Application changes) |
++ //Define IP level |
++ Ipv4AddressHelper ipv4; |
++ NS_LOG_INFO("Assign IP Addresses."); |
++ ipv4.SetBase("10.1.1.0", "255.255.255.0"); |
++ Ipv4InterfaceContainer ipInterfaceContainer = ipv4.Assign(wifiDevices); |
++ |
++ |
++ uint16_t port = 50000; // Server Port |
++ |
++ OnOffHelper onoff ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address ("10.1.1.1"), port))); //OnOffHelper instance |
++ |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ onoff.SetAttribute("Protocol", StringValue ("ns3::UdpSocketFactory")); |
++ |
++ onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1))); |
++ onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0))); |
++ onoff.SetAttribute ("DataRate", StringValue ("11Mbps")); |
++ onoff.SetAttribute ("PacketSize", UintegerValue (packetLength)); |
++ onoff.SetAttribute ("MaxBytes", UintegerValue (packetLength * numPackets)); |
++ // onoff.SetAttribute ("Tx", MakeTraceSourceAccessor (&OnOffApplication::m_txTrace)); |
++ |
++ ApplicationContainer app = onoff.Install (wifiNodes.Get(1)); //install the onoff aplication in the AP node |
++ // Start the application |
++ app.Start (Seconds (1.0)); |
++ app.Stop (Seconds (10000.0)); |
++ |
++ // Create a packet sink to receive these packets in the Station node |
++ PacketSinkHelper sink ("ns3::TcpSocketFactory", Address (InetSocketAddress (Ipv4Address::GetAny (), port))); |
++ //If UDP-based simulation, establish UDP at the OnOffHelper object |
++ if (transportProtocol == "UDP") |
++ sink.SetAttribute("Protocol", StringValue("ns3::UdpSocketFactory")); |
++ |
++ app = sink.Install (wifiNodes.Get(0)); |
++ app.Start (Seconds (0.0)); |
++ app.Stop (Seconds (11000.0)); |
++ |
++ //End new simulation scheme |
++ //////////////////// |
++ |
++ //Tracing connectors |
++ if (enumChannelModel == NIST_ERROR_RATE_MODEL) //Frame reception tracing for |
++ { |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxOk", MakeCallback (&Experiment::PhyRxOkTrace, &exp_)); |
++ Config::Connect ("/NodeList/*/DeviceList/*/Phy/State/RxError", MakeCallback (&Experiment::PhyRxErrorTrace, &exp_)); |
++ } |
++ |
++ //Connect to the error models |
++ wifiPhy.EnablePcap (outputChannelTypeFileName, wifiNodes, true); |
++ wifiPhy.EnableAscii("Prueba", wifiNodes); |
++ |
++ |
++ //TCP trace file |
++ char temp[128]; |
++ sprintf(temp,"%s_%s_%02d_%03d.tr", outputFileName.c_str(), outputChannelTypeFileName.c_str(), scenario, runCounter + runOffset); |
++ exp_.OpenTraceFile(temp, enumChannelModel); |
++ |
++ Simulator::Stop(Seconds(11010)); |
++ |
++ Simulator::Run(); |
++ Simulator::Destroy(); |
++ |
++ //Print statistics |
++ NS_LOG_UNCOND("Run " << runCounter + runOffset << " FER = " << exp_.GetPktsReceived() - exp_.GetPktsCorrect() << "/" \ |
++ << exp_.GetPktsReceived() << " = " << \ |
++ ((double) exp_.GetPktsReceived() - (double) exp_.GetPktsCorrect())/(double)exp_.GetPktsReceived()); |
++ exp_.CloseTraceFile(); |
++ } |
++} |
++ |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/model/hidden-markov-error-model.cc b/src/hidden-markov-error-model/model/hidden-markov-error-model.cc |
+--- ns-3.13/src/hidden-markov-error-model/model/hidden-markov-error-model.cc 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/model/hidden-markov-error-model.cc 2012-04-17 11:35:07.000000000 +0200 |
+@@ -0,0 +1,565 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#include <math.h> |
++#include <fstream> |
++ |
++#include "ns3/simulator.h" |
++#include "ns3/packet.h" |
++#include "ns3/assert.h" |
++#include "ns3/log.h" |
++#include "ns3/boolean.h" |
++#include "ns3/enum.h" |
++#include "ns3/double.h" |
++#include "ns3/integer.h" |
++#include "ns3/string.h" |
++ |
++#include "ns3/hidden-markov-error-model.h" |
++ |
++using namespace std; |
++using namespace ns3; |
++ |
++NS_LOG_COMPONENT_DEFINE("HiddenMarkovErrorModel"); |
++NS_OBJECT_ENSURE_REGISTERED (HiddenMarkovErrorModel); |
++ |
++const bool g_debug = false; //Temporal solution (only for debugging) |
++ |
++TypeId |
++HiddenMarkovErrorModel::GetTypeId(void) { |
++ static TypeId tid = TypeId ("ns3::HiddenMarkovErrorModel") |
++ .SetParent<ErrorModel> () |
++ .AddConstructor<HiddenMarkovErrorModel> () |
++ .AddAttribute ("RanVar", |
++ "Random variable which determine a packet to be successfully received or not", |
++ RandomVariableValue (UniformVariable (0.0, 1.0)), |
++ MakeRandomVariableAccessor (&HiddenMarkovErrorModel::m_ranvar), |
++ MakeRandomVariableChecker ()) |
++ .AddAttribute ("AverageFrameDuration", |
++ "Average time (in microseconds) between two consecutive frames (used to model the exponential interarrival process)", |
++ DoubleValue (2000.0), |
++ MakeDoubleAccessor (&HiddenMarkovErrorModel::m_averageInterFrameDuration), |
++ MakeDoubleChecker<double> ()) |
++ .AddAttribute("InitialState", |
++ "Initial simulation state (Default 0)", |
++ IntegerValue(0), |
++ MakeIntegerAccessor(&HiddenMarkovErrorModel::m_currentState), |
++ MakeIntegerChecker<int>()) |
++ .AddAttribute ("HiddenStates", |
++ "Number of hidden states at the Markov's chain", |
++ IntegerValue (2), |
++ MakeIntegerAccessor (&HiddenMarkovErrorModel::m_hiddenStates), |
++ MakeIntegerChecker<int> ()) |
++ .AddAttribute ("ErrorUnit", |
++ "Type of simulation (frames or time)", |
++ EnumValue (EU_TIME), |
++ MakeEnumAccessor (&HiddenMarkovErrorModel::m_unit), |
++ MakeEnumChecker (EU_BYTE, "EU_BYTE", |
++ EU_PKT, "EU_PKT", |
++ EU_BIT, "EU_BIT", |
++ EU_TIME, "EU_TIME")) |
++ .AddAttribute("TransitionMatrixFileName", |
++ "Name of the file which contains the transition matrix (proprietary format)", |
++ StringValue("HMM_16states/HMM_09_TR_1.txt"), |
++ MakeStringAccessor(&HiddenMarkovErrorModel::m_transitionMatrixFileName), |
++ MakeStringChecker()) |
++ .AddAttribute("EmissionMatrixFileName", |
++ "Name of the file which contains the emission matrix (proprietary format)", |
++ StringValue("HMM_16states/HMM_09_EMIS_1.txt"), |
++ MakeStringAccessor(&HiddenMarkovErrorModel::m_emissionMatrixFileName), |
++ MakeStringChecker()) |
++ .AddTraceSource ("HiddenMarkovErrorModelRxTrace", |
++ "Packet tracing", |
++ MakeTraceSourceAccessor (&HiddenMarkovErrorModel::m_rxTrace)) |
++ ; |
++ return tid; |
++} |
++ |
++HiddenMarkovErrorModel::HiddenMarkovErrorModel() : m_currentState (0), |
++ m_started(false) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++// m_hiddenStates = 2; |
++// m_unit = EU_TIME; |
++// m_averageInterFrameDuration = 2000; //Inter-frame average duration (microseconds) |
++// m_ranvar = UniformVariable(0.0, 1.0); |
++// |
++// m_transitionMatrixFileName = "HMM_16states/HMM_09_TR_1.txt"; |
++// m_emissionMatrixFileName = "HMM_16states/HMM_09_EMIS_1.txt"; |
++ //Read coefficients files and load the corresponding parameters |
++// GetCoefficients(); |
++} |
++ |
++HiddenMarkovErrorModel::~HiddenMarkovErrorModel() |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ if (m_transitionMatrix.size() > 0) |
++ m_transitionMatrix.clear(); |
++ if (m_emissionMatrix.size() > 0) |
++ m_emissionMatrix.clear(); |
++ if (m_meanDurationVector.size() > 0) |
++ m_meanDurationVector.clear(); |
++} |
++ |
++ |
++void HiddenMarkovErrorModel::SetTransitionMatrixFileName (string transitionMatrixFileName) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ m_transitionMatrixFileName = transitionMatrixFileName; |
++} |
++ |
++string HiddenMarkovErrorModel::GetTransitionMatrixFileName (void) const |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ return m_transitionMatrixFileName; |
++} |
++ |
++void HiddenMarkovErrorModel::SetEmissionMatrixFileName (string emissionMatrixFileName) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ m_emissionMatrixFileName = emissionMatrixFileName; |
++} |
++ |
++string HiddenMarkovErrorModel::GetEmissionMatrixFileName (void) const |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ return m_emissionMatrixFileName; |
++} |
++ |
++u_int8_t HiddenMarkovErrorModel::GetHiddenStates() const |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ return m_hiddenStates; |
++} |
++ |
++void HiddenMarkovErrorModel::SetHiddenStates(u_int8_t hiddenStates) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ this->m_hiddenStates = hiddenStates; |
++} |
++ |
++double HiddenMarkovErrorModel::GetAverageFrameDuration() const |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ return m_averageInterFrameDuration; |
++} |
++ |
++void HiddenMarkovErrorModel::SetAverageFrameDuration(double averageFrameDuration) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ this->m_averageInterFrameDuration = averageFrameDuration; |
++} |
++ |
++ErrorUnit HiddenMarkovErrorModel::GetUnit() const |
++{ |
++ return m_unit; |
++} |
++ |
++void HiddenMarkovErrorModel::SetUnit(ErrorUnit unit) |
++{ |
++ this->m_unit = unit; |
++} |
++ |
++int HiddenMarkovErrorModel::GetCurrentState() const |
++{ |
++ return m_currentState; |
++} |
++ |
++void HiddenMarkovErrorModel::SetCurrentState(int state) |
++{ |
++ this->m_currentState = state; |
++} |
++ |
++ |
++void HiddenMarkovErrorModel::Enable() |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ m_enable = true; |
++} |
++ |
++void HiddenMarkovErrorModel::Disable() |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ m_enable = false; |
++} |
++ |
++bool HiddenMarkovErrorModel::IsEnabled() const |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ return m_enable; |
++} |
++ |
++std::string HiddenMarkovErrorModel::GetCwd() { |
++ NS_LOG_FUNCTION_NOARGS(); |
++ char buf[FILENAME_MAX]; |
++ char* succ = getcwd(buf, FILENAME_MAX); |
++ if (succ) |
++ return std::string(succ); |
++ return ""; // raise a flag, throw an exception, ... |
++} |
++ |
++bool HiddenMarkovErrorModel::GetCoefficients () |
++{ |
++ NS_LOG_FUNCTION(m_transitionMatrixFileName << m_emissionMatrixFileName); |
++ |
++ string transitionMatrixPath; |
++ string emissionMatrixPath; |
++ |
++ fstream transitionMatrixFile; |
++ fstream emissionMatrixFile; |
++ char line[256]; |
++ |
++ int rowNumber,i,j; //Auxiliar counters |
++ double coefficient; |
++ vector<double> CoefficientsVector; |
++ |
++ //If invoked in a second time), flush the previous maps content |
++ if (m_transitionMatrix.size()) |
++ m_transitionMatrix.clear(); |
++ if (m_emissionMatrix.size()) |
++ m_emissionMatrix.clear(); |
++ if (m_meanDurationVector.size()) |
++ m_meanDurationVector.clear(); |
++ |
++ coefSetIter_t iter_; |
++ |
++ transitionMatrixPath = GetCwd() + "/src/hidden-markov-error-model/configs/" + m_transitionMatrixFileName; |
++ emissionMatrixPath = GetCwd() + "/src/hidden-markov-error-model/configs/" + m_emissionMatrixFileName; |
++ |
++ transitionMatrixFile.open((const char *) transitionMatrixPath.c_str(), ios::in); |
++ emissionMatrixFile.open((const char *) emissionMatrixPath.c_str(), ios::in); |
++ |
++ rowNumber = 0; |
++ |
++ if (transitionMatrixFile) { |
++ while (transitionMatrixFile.getline(line, 256)) { |
++ if (rowNumber == 0) { //First item in file--> Number of states in the Hidden Markov Chain |
++ m_states = atoi(line); |
++ } else { //Rest of values are the coefficient of the channel model |
++ j = 0; |
++ for (i = 0; i < m_states; i++) { |
++ //First value at position '0' |
++ if (i == 0) { |
++ coefficient = atof(line); |
++ CoefficientsVector.push_back(coefficient); |
++ j++; |
++ } else { |
++ while (line[j] != ' ' && line[j] != '\t') { //Look for "white" spaces between Coefficients |
++ j++; |
++ } |
++ coefficient = atof(line + j); |
++ j++; |
++ CoefficientsVector.push_back(coefficient); |
++ } |
++ } |
++ m_transitionMatrix.insert(pair<int, vector <double> > (rowNumber - 1, CoefficientsVector)); //rowNumber shifted 1 position |
++ CoefficientsVector.clear(); |
++ |
++ //As seen in the analytical studio, the probability to hold on the same state is calculated as follows: |
++ //N_i = 1 / (1 - a_ii) |
++ |
++ m_meanDurationVector.push_back (1 / (1 - (m_transitionMatrix[rowNumber - 1][rowNumber -1 ]))); |
++ } |
++ rowNumber++; |
++ } |
++ } |
++ |
++ else { |
++ NS_LOG_ERROR("File (HMM)" << transitionMatrixPath << " not found: Please fix"); |
++ return false; |
++ } |
++ |
++ //Reset the rowNumber counter |
++ rowNumber = 0; |
++ |
++ if (emissionMatrixFile) { |
++ while (emissionMatrixFile.getline(line, 256)) { |
++ j = 0; |
++ for (i = 0; i < m_hiddenStates; i++) { |
++ //First value at position '0' |
++ if (i == 0) { |
++ coefficient = atof(line); |
++ CoefficientsVector.push_back(coefficient); |
++ j++; |
++ } else { |
++ while (line[j] != ' ' && line[j] != '\t') { //Look for "white" spaces between Coefficients |
++ j++; |
++ } |
++ coefficient = atof(line + j); |
++ j++; |
++ CoefficientsVector.push_back(coefficient); |
++ } |
++ } |
++ m_emissionMatrix.insert(pair<int, vector <double> > ((int) rowNumber, CoefficientsVector)); |
++ CoefficientsVector.clear(); |
++ rowNumber ++; |
++ |
++ } |
++ } else { |
++ NS_LOG_ERROR("File (HMM)" << emissionMatrixPath << " not found: Please fix"); |
++ return false; |
++ } |
++ |
++ //DEBUGGING |
++#ifdef NS3_LOG_ENABLE |
++ if(g_debug) |
++ { |
++ |
++ //Print the m_transitionMatrix map |
++ printf("---Transition Matrix---\n"); |
++ for (iter_ = m_transitionMatrix.begin(); iter_ != m_transitionMatrix.end(); iter_ ++ ) |
++ { |
++ for (i = 0; i < (int) (iter_->second).size(); i++) |
++ { |
++ printf("%f ", (iter_->second)[i]); |
++ } |
++ printf("\n"); |
++ } |
++ |
++ //Print the m_emissionMatrix map |
++ printf("---Emission Matrix---\n"); |
++ for (iter_ = m_emissionMatrix.begin(); iter_ != m_emissionMatrix.end(); |
++ iter_++) { |
++ for (i = 0; i < (int) (iter_->second).size(); i++) { |
++ printf("%f ", (iter_->second)[i]); |
++ } |
++ printf("\n"); |
++ } |
++ |
++ |
++ //Print the m_meanDurationVector |
++ printf("---Mean Duration within each state (in frames)---\n"); |
++ for (j = 0; j < (int) m_meanDurationVector.size(); j++ ) |
++ { |
++ printf("%f\n", m_meanDurationVector[j]); |
++ } |
++ } |
++ |
++#endif //NS3_LOG_ENABLE |
++ |
++ transitionMatrixFile.close(); |
++ emissionMatrixFile.close(); |
++ |
++ return true; |
++} |
++ |
++bool HiddenMarkovErrorModel::DoCorrupt(Ptr<Packet> packet) |
++{ |
++ NS_LOG_FUNCTION(this); |
++ bool corruptedPacket; |
++ WifiMacHeader hdr; |
++ LlcSnapHeader llcHdr; |
++ Ipv4Header ipv4Hdr; |
++ UdpHeader udpHdr; |
++ TcpHeader tcpHdr; |
++ |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
++ pktCopy->RemoveHeader(hdr); |
++ |
++ //In a time-based simulation, start the timers with the first reception |
++ if (m_started == false && m_unit == EU_TIME) |
++ { |
++ m_started = true; |
++ InitializeTimer(); |
++ NS_LOG_DEBUG("Timer initialized"); |
++ } |
++ |
++ //Decide whether the frame is correct or not according to the frame type (data, TCP or broadcast/control) |
++ //Force packet with length < 128 to be always correct |
++ if (hdr.IsData() && !hdr.GetAddr1().IsBroadcast()) |
++ { |
++ //We have split the packet decision into the following three conditions: |
++ // - ARP frames --> Always correct |
++ // - TCP ACK --> Always correct |
++ // - Data frames --> Legacy HMM decision process |
++ pktCopy->RemoveHeader(llcHdr); |
++ |
++ switch (llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ corruptedPacket = false; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(ipv4Hdr); |
++ switch (ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(tcpHdr); |
++ |
++ //Data segments --> To be errored |
++ if (pktCopy->GetSize() > 4) |
++ corruptedPacket = Decide (); |
++ else |
++ corruptedPacket = false; |
++ break; |
++ case 17: //UDP |
++ corruptedPacket = Decide(); |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP) --> " << ipv4Hdr.GetProtocol()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC) --> " << llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ |
++ //Force 802.11 ACKs, broadcast and control/management frames to be correct |
++ else if (hdr.IsAck()) |
++ { |
++ corruptedPacket = false; |
++ |
++ } |
++ else if (hdr.IsCtl() || hdr.IsMgt() || (hdr.GetAddr1()).IsBroadcast()) |
++ { |
++ corruptedPacket = false; |
++ } |
++ else |
++ { |
++ corruptedPacket = false; |
++ } |
++ |
++ //Packet-based simulation--> Change state attempt |
++ if (m_unit != EU_TIME) |
++ ChangeState(); |
++ |
++ //Tracing and callbacks |
++ m_rxTrace (packet, Simulator::Now(),corruptedPacket, m_currentState); |
++ if (!m_rxCallback.IsNull()) |
++ m_rxCallback (packet, Simulator::Now(),corruptedPacket, m_currentState); |
++ |
++ return corruptedPacket; |
++} |
++ |
++bool HiddenMarkovErrorModel::Decide () |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ bool corruptedPacket; |
++ //Two posibilities: |
++ //Time --> Check into the emission matrix (current state) |
++ //Frames --> The same criteria as the time-based one and a possible state change |
++ if (m_ranvar.GetValue() < (m_emissionMatrix[m_currentState])[0]) //First column in emission matrix --> Error probability (state i) |
++ { |
++ NS_LOG_LOGIC("CORRUPT! (" << this << ") (" << Simulator::Now().GetSeconds() << ") State: " << m_currentState); |
++ corruptedPacket = true; //Frame received with errors |
++ } |
++ else |
++ { |
++ NS_LOG_LOGIC("CORRECT! (" << this << ") (" << Simulator::Now().GetSeconds() << ") State: " << m_currentState); |
++ corruptedPacket = false; //Frame received successfully |
++ } |
++ |
++ return corruptedPacket; |
++} |
++ |
++void HiddenMarkovErrorModel::DoReset (void) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ m_currentState = 0; |
++} |
++ |
++bool HiddenMarkovErrorModel::ChangeState(void) { |
++ NS_LOG_FUNCTION("Object" << this << "State" << m_currentState << "Time" << Simulator::Now().GetSeconds()); |
++ u_int16_t i, maxState; |
++ double transitionProbability, max; |
++ max = -1; |
++ for (i = 0; (int) i < (m_transitionMatrix[m_currentState]).size(); i++) { |
++ transitionProbability = (m_transitionMatrix[m_currentState])[i] * m_ranvar.GetValue(); |
++ //Different possibilities, depending on the type of simulation chosen: |
++ //EU_TIME: One call to this method brings about necessarily a state change (called after every average state stay duration) |
++ //Otherwise: As called at each frame reception, it may hold the same state |
++ if (m_unit == EU_TIME) //&& (transitionProbability > max) && (i != m_currentState)) //Time-based --> MUST change state |
++ { |
++ if ((transitionProbability > max) && (i != m_currentState)) { |
++ max = transitionProbability; |
++ maxState = i; |
++ } |
++ } else { |
++ if (transitionProbability > max) { |
++ max = transitionProbability; |
++ maxState = i; |
++ } |
++ } |
++ } |
++ //Did actually make a state change?? |
++ if (m_currentState != maxState) { |
++ NS_LOG_DEBUG( "(" << m_currentState << ") --> (" << maxState << ") (" << this << ")" ); |
++ m_currentState = maxState; |
++ return true; |
++ } |
++ return false; |
++} |
++ |
++void HiddenMarkovErrorModel::InitializeTimer() |
++{ |
++ NS_LOG_FUNCTION(this); |
++ double nextTimeout; |
++ double nextTimeoutMeanValue; |
++ |
++ //Set the next timeout |
++ nextTimeoutMeanValue = m_meanDurationVector[m_currentState] * m_averageInterFrameDuration; |
++ ExponentialVariable expVar(nextTimeoutMeanValue); |
++ nextTimeout = expVar.GetValue(); |
++ |
++ NS_LOG_INFO("(" << Simulator::Now().GetSeconds() << ") - Next timeout " << nextTimeoutMeanValue \ |
++ << " --> " << nextTimeout << " (" << m_currentState << ")"); |
++ Simulator::Schedule(MicroSeconds(nextTimeout),&HiddenMarkovErrorModel::TimerHandler, this); |
++} |
++ |
++void HiddenMarkovErrorModel::TimerHandler() |
++{ |
++ NS_LOG_FUNCTION(this << Simulator::Now().GetSeconds()); |
++ double nextTimeout; |
++ double nextTimeoutMeanValue; |
++ |
++ //Once the timeout is reached, check if the states changes |
++ |
++ //Set the next timeout |
++ nextTimeoutMeanValue = m_meanDurationVector[m_currentState] * m_averageInterFrameDuration; |
++ ExponentialVariable expVar(nextTimeoutMeanValue); |
++ nextTimeout = expVar.GetValue(); |
++ |
++ ChangeState(); |
++ NS_LOG_INFO("(" << Simulator::Now().GetSeconds() << ") - Next timeout " << nextTimeoutMeanValue \ |
++ << " --> " << nextTimeout << " (" << m_currentState << ")"); |
++ Simulator::Schedule(MicroSeconds(nextTimeout),&HiddenMarkovErrorModel::TimerHandler, this); |
++} |
++ |
++void HiddenMarkovErrorModel::SetRxCallback(HiddenMarkovErrorModelRxCallback_t callback) |
++{ |
++ NS_LOG_FUNCTION_NOARGS(); |
++ m_rxCallback = callback; |
++} |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
++ |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/model/hidden-markov-error-model.h b/src/hidden-markov-error-model/model/hidden-markov-error-model.h |
+--- ns-3.13/src/hidden-markov-error-model/model/hidden-markov-error-model.h 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/model/hidden-markov-error-model.h 2012-04-16 11:50:12.000000000 +0200 |
+@@ -0,0 +1,204 @@ |
++/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
++/* |
++ * Copyright (c) 2011 Universidad de Cantabria |
++ * |
++ * This program is free software; you can redistribute it and/or modify |
++ * it under the terms of the GNU General Public License version 2 as |
++ * published by the Free Software Foundation; |
++ * |
++ * This program is distributed in the hope that it will be useful, |
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
++ * GNU General Public License for more details. |
++ * |
++ * You should have received a copy of the GNU General Public License |
++ * along with this program; if not, write to the Free Software |
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
++ * |
++ * Author: David Gómez Fernández <dgomez@tlmat.unican.es> |
++ * Ramón Agüero Calvo <ramon@tlmat.unican.es> |
++ */ |
++ |
++#ifndef HIDDEN_MARKOV_ERROR_MODEL_H_ |
++#define HIDDEN_MARKOV_ERROR_MODEL_H_ |
++ |
++#include "ns3/object.h" |
++#include "ns3/random-variable.h" |
++#include "ns3/error-model.h" |
++#include <map> |
++#include <unistd.h> |
++ |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++#include "ns3/udp-header.h" |
++ |
++//Tracing |
++#include "ns3/traced-value.h" |
++#include "ns3/traced-callback.h" |
++ |
++ |
++using namespace std; |
++ |
++namespace ns3 { |
++ |
++class Packet; |
++ |
++/** |
++ * \brief Error model based on a Hidden Markov Chain, with N states and M observables. This model can work in either frames |
++ * or time simulations |
++ * |
++ */ |
++ |
++class HiddenMarkovErrorModel: public ErrorModel { |
++public: |
++ /** |
++ * arg1: packet received successfully |
++ * arg2: packet timestamp |
++ * arg3: Boolean that represents whether a packet has been succesfully received or not |
++ * arg4: snr (global) of packet |
++ * arg5: snr due to the AR model (Slow fading) |
++ * arg6: Fast Fading related SNR |
++ */ |
++ typedef Callback<void,Ptr<Packet>, Time, bool, u_int16_t> HiddenMarkovErrorModelRxCallback_t; |
++ /** |
++ * Attribute handler |
++ */ |
++ static TypeId GetTypeId (void); |
++ /** |
++ * Default constructor |
++ */ |
++ HiddenMarkovErrorModel (); |
++ /** |
++ * Default destructor |
++ */ |
++ virtual ~HiddenMarkovErrorModel (); |
++ /** |
++ * \returns The number of hidden states in the Markov Chain |
++ */ |
++ u_int8_t GetHiddenStates () const; |
++ /** |
++ * \param hiddenStates The number of observables within each state at the Markov chain |
++ */ |
++ void SetHiddenStates (u_int8_t hiddenStates); |
++ |
++ double GetAverageFrameDuration () const; |
++ void SetAverageFrameDuration (double averageFrameDuration); |
++ |
++ /** |
++ * \returns The simulation unit (Time or frames) |
++ */ |
++ ErrorUnit GetUnit () const; |
++ /** |
++ * \param unit Enum value that represent the type of simulation to be run |
++ */ |
++ void SetUnit (ErrorUnit unit); |
++ /** |
++ * \returns The current state at the Markov chain |
++ */ |
++ int GetCurrentState () const; |
++ /** |
++ * \params state Desired state to set up into the model |
++ */ |
++ void SetCurrentState (int state); |
++ /** |
++ * \params Transition matrix file name (default path not necessary) |
++ */ |
++ void SetTransitionMatrixFileName (string transitionMatrixFileName); |
++ /** |
++ * \returns The name of the file which holds the transition matrix |
++ */ |
++ string GetTransitionMatrixFileName (void) const; |
++ /** |
++ * \params Transition matrix file name (default path not necessary) |
++ */ |
++ void SetEmissionMatrixFileName (string emissionMatrixFileName); |
++ /** |
++ * \returns The name of the file which holds the transition matrix |
++ */ |
++ string GetEmissionMatrixFileName (void) const; |
++ /** |
++ * Enable the error model |
++ */ |
++ void Enable (void); |
++ /** |
++ * Disable the error model |
++ */ |
++ void Disable (void); |
++ /** |
++ * \returns true if error model is enabled; false otherwise |
++ */ |
++ bool IsEnabled (void) const; |
++ /** |
++ * \returns true if the state is actually changed after the execution of the method |
++ */ |
++ bool ChangeState (void); |
++ /** |
++ * Methods that handles the timers (only in time-based simulations); |
++ */ |
++ void InitializeTimer (void); |
++ void TimerHandler (void); |
++ |
++ //Callback invoked when a packet is received by the error model object |
++ void SetRxCallback (HiddenMarkovErrorModelRxCallback_t callback); |
++ |
++ /** |
++ * \returns -1 if an error happened during the file extraction, 0 otherwise |
++ * \params |
++ */ |
++ bool GetCoefficients (); |
++ |
++ /** |
++ * \returns Whether a frame is received correctly or not |
++ */ |
++ bool Decide(); |
++ |
++private: |
++ |
++ virtual bool DoCorrupt (Ptr<Packet>); |
++ virtual void DoReset (void); |
++ |
++ RandomVariable m_ranvar; //Decide whether the error model is enabled |
++ double m_averageInterFrameDuration; //Average time between two consecutive frames (depends on the physical layer) |
++ ErrorUnit m_unit; //Time/frames based simulations |
++ |
++ int m_currentState; //Current position into the chain model |
++ double m_transitionStateTimer; //When time-based simulation, this value handles the scheduler timing |
++ int m_states; //N |
++ int m_hiddenStates; //M (Typically, M=2: 0- Correct reception, 1- Error) |
++ |
++ bool m_enable; //Flag to allow the error model execution |
++ bool m_started; //For time-based simulation, starts when the node receives its first packet |
++ |
++ /* The Coefficients of the HiddenMarkovErrorModel */ |
++ typedef map<int, vector<double> > coefSet_t; |
++ typedef coefSet_t::iterator coefSetIter_t; |
++ |
++ coefSet_t m_transitionMatrix; //Transition probabilities among the states (NxN) |
++ coefSet_t m_emissionMatrix; //Output observables (Errored, correct) (NxM) |
++ vector <double> m_meanDurationVector; //Mean duration (in frames) within each state (Nx1) |
++ |
++ string m_transitionMatrixFileName; |
++ string m_emissionMatrixFileName; |
++ |
++ // Tracing |
++ /** |
++ * The trace source fired when a packet ends the reception process from |
++ * the medium. |
++ * |
++ * \see class CallBackTraceSource |
++ */ |
++ TracedCallback<Ptr<const Packet>, Time, bool, u_int16_t> m_rxTrace; |
++ HiddenMarkovErrorModelRxCallback_t m_rxCallback; |
++ |
++protected: |
++ /** |
++ * \return The current path (in string format) |
++ */ |
++ static std::string GetCwd (); |
++ |
++}; |
++ |
++} ////namespace ns3 |
++#endif /* HIDDEN_MARKOV_ERROR_MODEL_H_ */ |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/waf b/src/hidden-markov-error-model/waf |
+--- ns-3.13/src/hidden-markov-error-model/waf 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/waf 2011-12-23 22:09:34.000000000 +0100 |
+@@ -0,0 +1 @@ |
++exec "`dirname "$0"`"/../../waf "$@" |
+\ No newline at end of file |
+diff -uprNB ns-3.13/src/hidden-markov-error-model/wscript b/src/hidden-markov-error-model/wscript |
+--- ns-3.13/src/hidden-markov-error-model/wscript 1970-01-01 01:00:00.000000000 +0100 |
++++ b/src/hidden-markov-error-model/wscript 2012-04-30 19:02:18.000000000 +0200 |
+@@ -0,0 +1,29 @@ |
++## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
++ |
++def build(bld): |
++ obj = bld.create_ns3_module('hidden-markov-error-model', ['core','wifi','network','internet','propagation']) |
++ obj.source = [ |
++ 'model/hidden-markov-error-model.cc' |
++ ] |
++ |
++ obj_test = bld.create_ns3_module_test_library('hidden-markov-error-model') |
++ obj_test.source = [ |
++ ] |
++ |
++ |
++ headers = bld.new_task_gen(features=['ns3header']) |
++ headers.module = 'hidden-markov-error-model' |
++ headers.source = [ |
++ 'model/hidden-markov-error-model.h' |
++ ] |
++ |
++ |
++ |
++#if bld.env['ENABLE_GSL']: |
++# obj.use.extend(['GSL', 'GSLCBLAS', 'M']) |
++# obj_test.use.extend(['GSL', 'GSLCBLAS', 'M']) |
++ |
++#if (bld.env['ENABLE_EXAMPLES']): |
++# bld.add_subdirs('examples') |
++ |
++#bld.ns3_python_bindings() |
+Binary files ns-3.13/src/internet/bindings/callbacks_list.pyc and b/src/internet/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/internet/bindings/modulegen__gcc_LP64.pyc and b/src/internet/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/lte/bindings/callbacks_list.pyc and b/src/lte/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/lte/bindings/modulegen__gcc_LP64.pyc and b/src/lte/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/mesh/bindings/callbacks_list.pyc and b/src/mesh/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/mesh/bindings/modulegen__gcc_LP64.pyc and b/src/mesh/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/mobility/bindings/callbacks_list.pyc and b/src/mobility/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/mobility/bindings/modulegen__gcc_LP64.pyc and b/src/mobility/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/mpi/bindings/callbacks_list.pyc and b/src/mpi/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/mpi/bindings/modulegen__gcc_LP64.pyc and b/src/mpi/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/netanim/bindings/callbacks_list.pyc and b/src/netanim/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/netanim/bindings/modulegen__gcc_LP64.pyc and b/src/netanim/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/network/bindings/callbacks_list.pyc and b/src/network/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/network/bindings/modulegen__gcc_LP64.pyc and b/src/network/bindings/modulegen__gcc_LP64.pyc differ |
+diff -uprNB ns-3.13/src/network/utils/error-model.cc b/src/network/utils/error-model.cc |
+--- ns-3.13/src/network/utils/error-model.cc 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/network/utils/error-model.cc 2012-04-30 18:06:02.000000000 +0200 |
+@@ -19,6 +19,9 @@ |
+ * This code has been ported from ns-2 (queue/errmodel.{cc,h} |
+ */ |
+ |
++ |
++#include <stdio.h> |
++ |
+ #include <math.h> |
+ |
+ #include "error-model.h" |
+diff -uprNB ns-3.13/src/network/utils/error-model.h b/src/network/utils/error-model.h |
+--- ns-3.13/src/network/utils/error-model.h 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/network/utils/error-model.h 2012-03-11 23:20:30.000000000 +0100 |
+@@ -116,7 +116,8 @@ enum ErrorUnit |
+ { |
+ EU_BIT, |
+ EU_BYTE, |
+- EU_PKT |
++ EU_PKT, |
++ EU_TIME |
+ }; |
+ |
+ /** |
+diff -uprNB ns-3.13/src/network/wscript b/src/network/wscript |
+--- ns-3.13/src/network/wscript 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/network/wscript 2012-04-30 19:01:35.000000000 +0200 |
+@@ -67,7 +67,7 @@ def build(bld): |
+ 'test/sequence-number-test-suite.cc', |
+ ] |
+ |
+- headers = bld.new_task_gen(features=['ns3header']) |
++ headers = bld.new_task_gen(features=['ns3header']) |
+ headers.module = 'network' |
+ headers.source = [ |
+ 'model/address.h', |
+Binary files ns-3.13/src/nix-vector-routing/bindings/callbacks_list.pyc and b/src/nix-vector-routing/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/nix-vector-routing/bindings/modulegen__gcc_LP64.pyc and b/src/nix-vector-routing/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/olsr/bindings/callbacks_list.pyc and b/src/olsr/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/olsr/bindings/modulegen__gcc_LP64.pyc and b/src/olsr/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/point-to-point/bindings/callbacks_list.pyc and b/src/point-to-point/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/point-to-point/bindings/modulegen_customizations.pyc and b/src/point-to-point/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/point-to-point/bindings/modulegen__gcc_LP64.pyc and b/src/point-to-point/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/point-to-point-layout/bindings/callbacks_list.pyc and b/src/point-to-point-layout/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/point-to-point-layout/bindings/modulegen__gcc_LP64.pyc and b/src/point-to-point-layout/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/propagation/bindings/callbacks_list.pyc and b/src/propagation/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/propagation/bindings/modulegen_customizations.pyc and b/src/propagation/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/propagation/bindings/modulegen__gcc_LP64.pyc and b/src/propagation/bindings/modulegen__gcc_LP64.pyc differ |
+diff -uprNB ns-3.13/src/propagation/model/propagation-loss-model.cc b/src/propagation/model/propagation-loss-model.cc |
+--- ns-3.13/src/propagation/model/propagation-loss-model.cc 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/propagation/model/propagation-loss-model.cc 2012-04-30 19:03:03.000000000 +0200 |
+@@ -834,6 +834,121 @@ RangePropagationLossModel::DoCalcRxPower |
+ } |
+ } |
+ |
+-// ------------------------------------------------------------------------- // |
++//////////////// SimplePropagationLossModel (authors: David Gómez Fernández / Ramón Agüero Calvo) ////////////////// |
+ |
++ |
++NS_OBJECT_ENSURE_REGISTERED (SimplePropagationLossModel); |
++ |
++TypeId |
++SimplePropagationLossModel::GetTypeId(void) { |
++ static TypeId tid = TypeId ("ns3::SimplePropagationLossModel") |
++ .SetParent<PropagationLossModel> () |
++ .AddConstructor<SimplePropagationLossModel> () |
++ |
++ .AddAttribute("MaxDistance", |
++ "The distance from which all packets will be errored (FER = 1)", |
++ DoubleValue(15.0), |
++ MakeDoubleAccessor(&SimplePropagationLossModel::m_maxDistance), |
++ MakeDoubleChecker<double> ()) |
++ |
++ .AddAttribute("Alpha", "Determines the distance (in meters) from which the transmission is set over an error-prone channel", |
++ DoubleValue(0.5), |
++ MakeDoubleAccessor(&SimplePropagationLossModel::m_alpha), |
++ MakeDoubleChecker<double> ()) |
++ |
++ .AddAttribute("Beta", "Exponential parameter (1 for a linear behavior)", |
++ DoubleValue(1.0), |
++ MakeDoubleAccessor(&SimplePropagationLossModel::m_beta), |
++ MakeDoubleChecker<double> ()) |
++ |
++ .AddAttribute ("RanVar", "Random variable which determine a packet to be successfully received or not.", |
++ RandomVariableValue (UniformVariable (0.0, 1.0)), |
++ MakeRandomVariableAccessor (&SimplePropagationLossModel::m_ranvar), |
++ MakeRandomVariableChecker ()) |
++ |
++ ; |
++ return tid; |
++} |
++ |
++SimplePropagationLossModel::SimplePropagationLossModel () |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++} |
++ |
++SimplePropagationLossModel::~SimplePropagationLossModel () |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++} |
++ |
++float SimplePropagationLossModel::GetAlpha() const |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ return m_alpha; |
++} |
++ |
++void SimplePropagationLossModel::SetAlpha(float alpha) |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ m_alpha = alpha; |
++} |
++ |
++float SimplePropagationLossModel::GetBeta() const |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ return m_beta; |
++} |
++ |
++void SimplePropagationLossModel::SetBeta(float beta) |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ m_beta = beta; |
++} |
++ |
++float SimplePropagationLossModel::GetMaxDistance(void) const |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ return m_maxDistance; |
++} |
++ |
++void SimplePropagationLossModel::SetMaxDistance(float maxDistance) |
++{ |
++ NS_LOG_FUNCTION_NOARGS (); |
++ m_maxDistance = maxDistance; |
++} |
++ |
++double SimplePropagationLossModel::DoCalcRxPower(double txPowerDbm, Ptr<MobilityModel> a, |
++ Ptr<MobilityModel> b) const |
++{ |
++ NS_LOG_FUNCTION(this); |
++ double distance = a->GetDistanceFrom (b); |
++ double fer; |
++ |
++ NS_ASSERT (distance >= 0); |
++ if (distance < m_alpha * m_maxDistance) |
++ { |
++ fer = 0; |
++ } |
++ else if (distance < m_maxDistance) |
++ { |
++ fer = 1 - ((1 - pow((distance / m_maxDistance), m_beta))/ (1 - pow(m_alpha, m_beta))); |
++ } |
++ else |
++ { |
++ fer = 1; |
++ } |
++ |
++ NS_ASSERT(fer<=1); |
++ NS_LOG_DEBUG ("FER =" << fer << " Distance = " << distance << " Max_distance = " << m_maxDistance << " Alpha = " << m_alpha << " Beta = " << m_beta); |
++ |
++ if(m_ranvar.GetValue() <= fer) |
++ { |
++ NS_LOG_DEBUG("Frame error"); |
++ return -10000; |
++ } |
++ else |
++ { |
++ NS_LOG_DEBUG("Frame OK"); |
++ return txPowerDbm; |
++ } |
++} |
+ } // namespace ns3 |
+diff -uprNB ns-3.13/src/propagation/model/propagation-loss-model.h b/src/propagation/model/propagation-loss-model.h |
+--- ns-3.13/src/propagation/model/propagation-loss-model.h 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/propagation/model/propagation-loss-model.h 2012-04-30 19:03:14.000000000 +0200 |
+@@ -563,6 +563,82 @@ private: |
+ double m_range; |
+ }; |
+ |
++ |
++////////////////// SimplePropagationLossModel (authors: David Gómez Fernández / Ramón Agüero Calvo) ////////////////// |
++ |
++/** |
++ * \brief Naive propagation model which depends exclusively on the distance between the source and the destination |
++ * (shortest distance - linear path). |
++ * |
++ * This model corresponds with a deterministic channel model behavior, where all packets arrive |
++ * correctly to the receiver if the distance between the two nodes are smaller than a preset value. |
++ * Once this value is reached, the error rate begins to increase (following a beta-dependent decreasing |
++ * factor), according to the following expression: |
++ * |
++ * / 1, if 0 <= x < alpha * d_max |
++ * | |
++ * | 1 - (x/(d_max))^beta |
++ * 1 - FER = < ------------------------ , if alpha * d_max <= x <= d_max |
++ * | 1 - alpha^beta |
++ * | |
++ * \ 0, if d_max < x |
++ * |
++ * Receivers beyond MaxRange receive at power -1000 dBm (effectively zero). |
++ * |
++ * |
++ */ |
++ |
++class SimplePropagationLossModel: public PropagationLossModel |
++{ |
++public: |
++ static TypeId GetTypeId(void); |
++ |
++ SimplePropagationLossModel(); |
++ virtual ~SimplePropagationLossModel(); |
++ |
++ |
++ /** |
++ * \param alpha the exponential parameter applied in the expression |
++ */ |
++ void SetAlpha(float alpha); |
++ /** |
++ * \returns the exponential parameter (alpha) to be used in the model |
++ */ |
++ float GetAlpha(void) const; |
++ /** |
++ * \param beta the exponential parameter applied in the expression |
++ */ |
++ void SetBeta(float beta); |
++ /** |
++ * \returns the exponential parameter (beta) to be used in the model |
++ */ |
++ float GetBeta(void) const; |
++ /** |
++ * \param alpha the exponential parameter applied in the expression |
++ */ |
++ void SetMaxDistance(float maxDistance); |
++ /** |
++ * \returns the maximum distance for a wireless transmission in the model. From this distance, FER = 1 |
++ */ |
++ float GetMaxDistance(void) const; |
++ |
++ |
++ |
++private: |
++ SimplePropagationLossModel (const SimplePropagationLossModel& o); |
++ SimplePropagationLossModel & operator=(const SimplePropagationLossModel& o); |
++ virtual double DoCalcRxPower(double txPowerDbm, Ptr<MobilityModel> a, |
++ Ptr<MobilityModel> b) const; |
++ |
++ //class specific parameters |
++ float m_maxDistance; |
++ float m_alpha; |
++ float m_beta; |
++ RandomVariable m_ranvar; |
++ |
++}; |
++ |
++ |
+ } // namespace ns3 |
+ |
+ #endif /* PROPAGATION_LOSS_MODEL_H */ |
+Binary files ns-3.13/src/spectrum/bindings/callbacks_list.pyc and b/src/spectrum/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/spectrum/bindings/modulegen__gcc_LP64.pyc and b/src/spectrum/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/stats/bindings/callbacks_list.pyc and b/src/stats/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/stats/bindings/modulegen_customizations.pyc and b/src/stats/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/stats/bindings/modulegen__gcc_LP64.pyc and b/src/stats/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/tap-bridge/bindings/callbacks_list.pyc and b/src/tap-bridge/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/tap-bridge/bindings/modulegen_customizations.pyc and b/src/tap-bridge/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/tap-bridge/bindings/modulegen__gcc_LP64.pyc and b/src/tap-bridge/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/tools/bindings/callbacks_list.pyc and b/src/tools/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/tools/bindings/modulegen__gcc_LP64.pyc and b/src/tools/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/topology-read/bindings/callbacks_list.pyc and b/src/topology-read/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/topology-read/bindings/modulegen__gcc_LP64.pyc and b/src/topology-read/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/uan/bindings/callbacks_list.pyc and b/src/uan/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/uan/bindings/modulegen__gcc_LP64.pyc and b/src/uan/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/visualizer/bindings/callbacks_list.pyc and b/src/visualizer/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/visualizer/bindings/modulegen__gcc_LP64.pyc and b/src/visualizer/bindings/modulegen__gcc_LP64.pyc differ |
+Binary files ns-3.13/src/wifi/bindings/callbacks_list.pyc and b/src/wifi/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/wifi/bindings/modulegen_customizations.pyc and b/src/wifi/bindings/modulegen_customizations.pyc differ |
+Binary files ns-3.13/src/wifi/bindings/modulegen__gcc_LP64.pyc and b/src/wifi/bindings/modulegen__gcc_LP64.pyc differ |
+diff -uprNB ns-3.13/src/wifi/helper/yans-wifi-helper.cc b/src/wifi/helper/yans-wifi-helper.cc |
+--- ns-3.13/src/wifi/helper/yans-wifi-helper.cc 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/wifi/helper/yans-wifi-helper.cc 2012-04-30 19:11:27.000000000 +0200 |
+@@ -34,6 +34,10 @@ |
+ #include "ns3/abort.h" |
+ #include "ns3/log.h" |
+ |
++#include <stdio.h> |
++#include <ns3/error-model.h> |
++ |
++ |
+ NS_LOG_COMPONENT_DEFINE ("YansWifiHelper"); |
+ |
+ namespace ns3 { |
+@@ -125,6 +129,14 @@ YansWifiChannelHelper::AddPropagationLos |
+ m_propagationLoss.push_back (factory); |
+ } |
+ |
++ |
++void YansWifiChannelHelper::AddPropagationLoss(Ptr<PropagationLossModel> loss) |
++{ |
++ m_propagationLossModelVector.push_back(loss); |
++ |
++} |
++ |
++ |
+ void |
+ YansWifiChannelHelper::SetPropagationDelay (std::string type, |
+ std::string n0, const AttributeValue &v0, |
+@@ -154,6 +166,23 @@ YansWifiChannelHelper::Create (void) con |
+ { |
+ Ptr<YansWifiChannel> channel = CreateObject<YansWifiChannel> (); |
+ Ptr<PropagationLossModel> prev = 0; |
++ |
++ if (m_propagationLossModelVector.size()) |
++ { |
++ Ptr<PropagationLossModel> prev = 0; |
++ for(std::vector<Ptr <PropagationLossModel> >::const_iterator i = m_propagationLossModelVector.begin(); i != m_propagationLossModelVector.end();++i) |
++ { |
++ if (prev != 0) |
++ prev->SetNext(*i); |
++ if (m_propagationLossModelVector.begin() == i) |
++ channel->SetPropagationLossModel(*i); |
++ prev = *i; |
++ } |
++ } |
++ else |
++ { |
++ |
++ |
+ for (std::vector<ObjectFactory>::const_iterator i = m_propagationLoss.begin (); i != m_propagationLoss.end (); ++i) |
+ { |
+ Ptr<PropagationLossModel> cur = (*i).Create<PropagationLossModel> (); |
+@@ -167,6 +196,9 @@ YansWifiChannelHelper::Create (void) con |
+ } |
+ prev = cur; |
+ } |
++ |
++ } |
++ |
+ Ptr<PropagationDelayModel> delay = m_propagationDelay.Create<PropagationDelayModel> (); |
+ channel->SetPropagationDelayModel (delay); |
+ return channel; |
+@@ -178,6 +210,9 @@ YansWifiPhyHelper::YansWifiPhyHelper () |
+ m_pcapDlt (PcapHelper::DLT_IEEE802_11) |
+ { |
+ m_phy.SetTypeId ("ns3::YansWifiPhy"); |
++ |
++ m_errorModel = 0; |
++ |
+ } |
+ |
+ YansWifiPhyHelper |
+@@ -228,12 +263,45 @@ YansWifiPhyHelper::SetErrorRateModel (st |
+ m_errorRateModel.Set (n7, v7); |
+ } |
+ |
++ void YansWifiPhyHelper::SetErrorModel(std::string name, std::string n0, const AttributeValue & v0, std::string n1, const AttributeValue & v1, std::string n2, const AttributeValue & v2, std::string n3, const AttributeValue & v3, std::string n4, const AttributeValue & v4, std::string n5, const AttributeValue & v5, std::string n6, const AttributeValue & v6, std::string n7, const AttributeValue & v7) |
++ { |
++ ; |
++ m_errorModelFactory = ObjectFactory(); |
++ m_errorModelFactory.SetTypeId(name); |
++ m_errorModelFactory.Set(n0, v0); |
++ m_errorModelFactory.Set(n1, v1); |
++ m_errorModelFactory.Set(n2, v2); |
++ m_errorModelFactory.Set(n3, v3); |
++ m_errorModelFactory.Set(n4, v4); |
++ m_errorModelFactory.Set(n5, v5); |
++ m_errorModelFactory.Set(n6, v6); |
++ m_errorModelFactory.Set(n7, v7); |
++ } |
++ |
++ Ptr<ErrorModel> YansWifiPhyHelper::GetErrorModel() const |
++ { |
++ return m_errorModel; |
++ } |
++ |
++ void YansWifiPhyHelper::SetErrorModel(Ptr<ErrorModel> errorModel) |
++ { |
++ this->m_errorModel = errorModel; |
++ } |
++ |
++ |
+ Ptr<WifiPhy> |
+ YansWifiPhyHelper::Create (Ptr<Node> node, Ptr<WifiNetDevice> device) const |
+ { |
+ Ptr<YansWifiPhy> phy = m_phy.Create<YansWifiPhy> (); |
+ Ptr<ErrorRateModel> error = m_errorRateModel.Create<ErrorRateModel> (); |
+ phy->SetErrorRateModel (error); |
++ |
++ |
++ //If declared error model, set it as attribute |
++ if (m_errorModel ) |
++ phy->SetErrorModel(m_errorModel); |
++ |
++ |
+ phy->SetChannel (m_channel); |
+ phy->SetMobility (node); |
+ phy->SetDevice (device); |
+diff -uprNB ns-3.13/src/wifi/helper/yans-wifi-helper.h b/src/wifi/helper/yans-wifi-helper.h |
+--- ns-3.13/src/wifi/helper/yans-wifi-helper.h 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/wifi/helper/yans-wifi-helper.h 2012-04-30 19:04:44.000000000 +0200 |
+@@ -25,6 +25,9 @@ |
+ #include "ns3/yans-wifi-channel.h" |
+ #include "ns3/deprecated.h" |
+ |
++#include "ns3/propagation-loss-model.h" |
++#include "ns3/error-model.h" |
++ |
+ namespace ns3 { |
+ |
+ /** |
+@@ -88,6 +91,21 @@ public: |
+ std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), |
+ std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), |
+ std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); |
++ |
++ |
++ /** Add a propagation loss model to the set of currently-configured loss models. |
++ * This method is additive to allow you to construct complex propagation loss models |
++ * such as a log distance + jakes model, etc. |
++ * |
++ * The order in which PropagationLossModels are added may be significant. Some |
++ * propagation models are dependent of the "txPower" (eg. Nakagami model), and |
++ * are therefore not commutative. The final receive power (excluding receiver |
++ * gains) are calculated in the order the models are added. |
++ */ |
++ void AddPropagationLoss (Ptr<PropagationLossModel> loss); |
++ |
++ |
++ |
+ /** |
+ * \param name the name of the model to set |
+ * \param n0 the name of the attribute to set |
+@@ -129,6 +147,10 @@ public: |
+ private: |
+ std::vector<ObjectFactory> m_propagationLoss; |
+ ObjectFactory m_propagationDelay; |
++ |
++ std::vector<Ptr <PropagationLossModel> > m_propagationLossModelVector; |
++ |
++ |
+ }; |
+ |
+ /** |
+@@ -208,6 +230,42 @@ public: |
+ std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); |
+ |
+ /** |
++ * \param name the name of the error rate model to set. |
++ * \param n0 the name of the attribute to set |
++ * \param v0 the value of the attribute to set |
++ * \param n1 the name of the attribute to set |
++ * \param v1 the value of the attribute to set |
++ * \param n2 the name of the attribute to set |
++ * \param v2 the value of the attribute to set |
++ * \param n3 the name of the attribute to set |
++ * \param v3 the value of the attribute to set |
++ * \param n4 the name of the attribute to set |
++ * \param v4 the value of the attribute to set |
++ * \param n5 the name of the attribute to set |
++ * \param v5 the value of the attribute to set |
++ * \param n6 the name of the attribute to set |
++ * \param v6 the value of the attribute to set |
++ * \param n7 the name of the attribute to set |
++ * \param v7 the value of the attribute to set |
++ * |
++ * Set the error model and its attributes to use when Install is called. |
++ */ |
++ void SetErrorModel (std::string name, |
++ std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (), |
++ std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (), |
++ std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (), |
++ std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (), |
++ std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (), |
++ std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (), |
++ std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (), |
++ std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ()); |
++ |
++ Ptr<ErrorModel> GetErrorModel() const; |
++ |
++ void SetErrorModel(Ptr<ErrorModel> errorModel); |
++ |
++ |
++ /** |
+ * An enumeration of the pcap data link types (DLTs) which this helper |
+ * supports. See http://wiki.wireshark.org/Development/LibpcapFileFormat |
+ * for more information on these formats. |
+@@ -274,6 +332,12 @@ private: |
+ |
+ ObjectFactory m_phy; |
+ ObjectFactory m_errorRateModel; |
++ |
++ |
++ ObjectFactory m_errorModelFactory; |
++ Ptr<ErrorModel> m_errorModel; |
++ |
++ |
+ Ptr<YansWifiChannel> m_channel; |
+ uint32_t m_pcapDlt; |
+ }; |
+diff -uprNB ns-3.13/src/wifi/model/yans-wifi-phy.cc b/src/wifi/model/yans-wifi-phy.cc |
+--- ns-3.13/src/wifi/model/yans-wifi-phy.cc 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/wifi/model/yans-wifi-phy.cc 2012-04-30 19:15:10.000000000 +0200 |
+@@ -37,6 +37,13 @@ |
+ #include "ns3/trace-source-accessor.h" |
+ #include <math.h> |
+ |
++#include "ns3/error-model.h" |
++//YansWifiPhy::EndReceive headers parser |
++#include "ns3/wifi-mac-header.h" |
++#include "ns3/llc-snap-header.h" |
++#include "ns3/ipv4-header.h" |
++#include "ns3/tcp-header.h" |
++ |
+ NS_LOG_COMPONENT_DEFINE ("YansWifiPhy"); |
+ |
+ namespace ns3 { |
+@@ -121,6 +128,14 @@ YansWifiPhy::GetTypeId (void) |
+ &YansWifiPhy::GetChannelNumber), |
+ MakeUintegerChecker<uint16_t> ()) |
+ |
++ |
++ .AddAttribute ("ErrorModel", |
++ "The receiver error model used to simulate packet loss", |
++ PointerValue(), |
++ MakePointerAccessor (&YansWifiPhy::m_errorModel), |
++ MakePointerChecker<ErrorModel>()) |
++ |
++ |
+ ; |
+ return tid; |
+ } |
+@@ -129,7 +144,11 @@ YansWifiPhy::YansWifiPhy () |
+ : m_channelNumber (1), |
+ m_endRxEvent (), |
+ m_random (0.0, 1.0), |
+- m_channelStartingFrequency (0) |
++ m_channelStartingFrequency (0), |
++ |
++ m_ranvar (0.0, 1.0), |
++ m_errorModel (0) |
++ |
+ { |
+ NS_LOG_FUNCTION (this); |
+ m_state = CreateObject<WifiPhyStateHelper> (); |
+@@ -149,6 +168,8 @@ YansWifiPhy::DoDispose (void) |
+ m_device = 0; |
+ m_mobility = 0; |
+ m_state = 0; |
++ |
++ m_errorModel = 0; |
+ } |
+ |
+ void |
+@@ -241,6 +262,12 @@ YansWifiPhy::SetErrorRateModel (Ptr<Erro |
+ { |
+ m_interference.SetErrorRateModel (rate); |
+ } |
++ |
++void YansWifiPhy::SetErrorModel(Ptr<ErrorModel> errorModel) |
++{ |
++ m_errorModel = errorModel; |
++} |
++ |
+ void |
+ YansWifiPhy::SetDevice (Ptr<Object> device) |
+ { |
+@@ -295,6 +322,13 @@ YansWifiPhy::GetErrorRateModel (void) co |
+ { |
+ return m_interference.GetErrorRateModel (); |
+ } |
++ |
++Ptr<ErrorModel> YansWifiPhy::GetErrorModel (void) const |
++{ |
++ return m_errorModel; |
++} |
++ |
++ |
+ Ptr<Object> |
+ YansWifiPhy::GetDevice (void) const |
+ { |
+@@ -774,27 +808,125 @@ YansWifiPhy::EndReceive (Ptr<Packet> pac |
+ NS_ASSERT (IsStateRx ()); |
+ NS_ASSERT (event->GetEndTime () == Simulator::Now ()); |
+ |
++ WifiMacHeader hdr; |
++ LlcSnapHeader llcHdr; |
++ Ipv4Header ipv4Hdr; |
++ TcpHeader tcpHdr; |
++ Ptr<Packet> pktCopy = packet->Copy(); |
++ |
+ struct InterferenceHelper::SnrPer snrPer; |
+ snrPer = m_interference.CalculateSnrPer (event); |
+ m_interference.NotifyRxEnd (); |
+ |
+ NS_LOG_DEBUG ("mode=" << (event->GetPayloadMode ().GetDataRate ()) << |
+ ", snr=" << snrPer.snr << ", per=" << snrPer.per << ", size=" << packet->GetSize ()); |
+- if (m_random.GetValue () > snrPer.per) |
+- { |
+- NotifyRxEnd (packet); |
+- uint32_t dataRate500KbpsUnits = event->GetPayloadMode ().GetDataRate () / 500000; |
+- bool isShortPreamble = (WIFI_PREAMBLE_SHORT == event->GetPreambleType ()); |
+- double signalDbm = RatioToDb (event->GetRxPowerW ()) + 30; |
+- double noiseDbm = RatioToDb (event->GetRxPowerW () / snrPer.snr) - GetRxNoiseFigure () + 30; |
+- NotifyMonitorSniffRx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm); |
+- m_state->SwitchFromRxEndOk (packet, snrPer.snr, event->GetPayloadMode (), event->GetPreambleType ()); |
+- } |
+- else |
+- { |
+- /* failure. */ |
+- NotifyRxDrop (packet); |
+- m_state->SwitchFromRxEndError (packet, snrPer.snr); |
+- } |
++ |
++ if (m_errorModel) |
++ { |
++ if (m_errorModel->IsEnabled()) |
++ { |
++ if (m_errorModel && m_errorModel->IsCorrupt(packet)) //Error |
++ { |
++ NS_LOG_LOGIC("CORRUPT!!! Dropping pkt due to error model (" << this <<")"); |
++ NotifyRxDrop (packet); |
++ m_state->SwitchFromRxEndError (packet, snrPer.snr); |
++ return; |
++ } |
++ else //Correct reception |
++ { |
++ NS_LOG_LOGIC("CORRECT!!! (" << this <<")"); |
++ NotifyRxEnd (packet); |
++ uint32_t dataRate500KbpsUnits = event->GetPayloadMode ().GetDataRate () / 500000; |
++ bool isShortPreamble = (WIFI_PREAMBLE_SHORT == event->GetPreambleType ()); |
++ double signalDbm = RatioToDb (event->GetRxPowerW ()) + 30; |
++ double noiseDbm = RatioToDb (event->GetRxPowerW () / snrPer.snr) - GetRxNoiseFigure () + 30; |
++ NotifyMonitorSniffRx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm); |
++ m_state->SwitchFromRxEndOk (packet, snrPer.snr, event->GetPayloadMode (), event->GetPreambleType ()); |
++ return; |
++ } |
++ } |
++ } |
++ |
++ |
++ |
++ else //For NS-3 default error rate model (NIST/YANS) |
++ { |
++ //Force the IEEE 802.11 ACK frames and all broadcast/control/management messages to be correct |
++ pktCopy->RemoveHeader(hdr); |
++ //Decide whether the frame is correct or not according to the frame type (data, TCP or broadcast/control) |
++ if (hdr.IsData() && !hdr.GetAddr1().IsBroadcast()) |
++ { |
++ //We have split the packet decision into the following three conditions: |
++ // - ARP frames --> Always correct |
++ // - TCP ACK --> Always correct |
++ // - Data frames --> Legacy HMM decision process |
++ |
++ pktCopy->RemoveHeader(llcHdr); |
++ |
++ switch (llcHdr.GetType()) |
++ { |
++ case 0x0806: //ARP |
++ snrPer.per = snrPer.per; |
++ break; |
++ case 0x0800: //IP packet |
++ pktCopy->RemoveHeader(ipv4Hdr); |
++ switch (ipv4Hdr.GetProtocol()) |
++ { |
++ case 6: //TCP |
++ pktCopy->RemoveHeader(tcpHdr); |
++ //Data segments --> To be errored |
++ if (pktCopy->GetSize() > 4) |
++ snrPer.per = snrPer.per; |
++ else |
++ snrPer.per = 0; |
++ break; |
++ case 17: //UDP |
++ snrPer.per = snrPer.per; |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (IP) --> " << ipv4Hdr.GetProtocol()); |
++ break; |
++ } |
++ break; |
++ default: |
++ NS_LOG_ERROR ("Protocol not implemented yet (LLC) --> " << llcHdr.GetType()); |
++ break; |
++ } |
++ } |
++ else if (hdr.IsAck()) |
++ snrPer.per = 0; |
++ else if (hdr.IsCtl() || hdr.IsMgt() || (hdr.GetAddr1()).IsBroadcast()) |
++ snrPer.per = 0; |
++ else |
++ snrPer.per = 0; |
++ |
++ NS_LOG_DEBUG("SNR = " << 10*log10 (snrPer.snr) << " dB | PER = " << snrPer.per << " | Packet length =" << packet->GetSize()); |
++ |
++ |
++ ////////////////////LEGACY NS-3 Code////////////// |
++ if (m_ranvar.GetValue () > snrPer.per) |
++ { |
++ NotifyRxEnd (packet); |
++ uint32_t dataRate500KbpsUnits = event->GetPayloadMode ().GetDataRate () / 500000; |
++ bool isShortPreamble = (WIFI_PREAMBLE_SHORT == event->GetPreambleType ()); |
++ double signalDbm = RatioToDb (event->GetRxPowerW ()) + 30; |
++ double noiseDbm = RatioToDb (event->GetRxPowerW () / snrPer.snr) - GetRxNoiseFigure () + 30; |
++ NotifyMonitorSniffRx (packet, (uint16_t)GetChannelFrequencyMhz (), GetChannelNumber (), dataRate500KbpsUnits, isShortPreamble, signalDbm, noiseDbm); |
++ m_state->SwitchFromRxEndOk (packet, snrPer.snr, event->GetPayloadMode (), event->GetPreambleType ()); |
++ } |
++ else |
++ { |
++ /* failure. */ |
++ NotifyRxDrop (packet); |
++ m_state->SwitchFromRxEndError (packet, snrPer.snr); |
++ } |
++ ////////////////////LEGACY NS-3 Code////////////// |
++ |
++ |
++ } |
++ |
++ |
++ |
++ |
+ } |
+ } // namespace ns3 |
+diff -uprNB ns-3.13/src/wifi/model/yans-wifi-phy.h b/src/wifi/model/yans-wifi-phy.h |
+--- ns-3.13/src/wifi/model/yans-wifi-phy.h 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/wifi/model/yans-wifi-phy.h 2012-04-30 19:16:22.000000000 +0200 |
+@@ -36,6 +36,8 @@ |
+ #include "wifi-phy-standard.h" |
+ #include "interference-helper.h" |
+ |
++#include "ns3/error-model.h" |
++ |
+ |
+ namespace ns3 { |
+ |
+@@ -105,6 +107,9 @@ public: |
+ void SetEdThreshold (double threshold); |
+ void SetCcaMode1Threshold (double threshold); |
+ void SetErrorRateModel (Ptr<ErrorRateModel> rate); |
++ |
++ void SetErrorModel (Ptr<ErrorModel> errorModel); |
++ |
+ void SetDevice (Ptr<Object> device); |
+ void SetMobility (Ptr<Object> mobility); |
+ double GetRxNoiseFigure (void) const; |
+@@ -113,6 +118,7 @@ public: |
+ double GetEdThreshold (void) const; |
+ double GetCcaMode1Threshold (void) const; |
+ Ptr<ErrorRateModel> GetErrorRateModel (void) const; |
++ Ptr<ErrorModel> GetErrorModel (void) const; |
+ Ptr<Object> GetDevice (void) const; |
+ Ptr<Object> GetMobility (void); |
+ |
+@@ -220,6 +223,10 @@ private: |
+ InterferenceHelper m_interference; |
+ Time m_channelSwitchDelay; |
+ |
++ UniformVariable m_ranvar; |
++ Ptr<ErrorModel> m_errorModel; |
++ |
++ |
+ }; |
+ |
+ } // namespace ns3 |
+diff -uprNB ns-3.13/src/wifi/wscript b/src/wifi/wscript |
+--- ns-3.13/src/wifi/wscript 2011-12-23 22:09:34.000000000 +0100 |
++++ b/src/wifi/wscript 2012-04-30 19:12:46.000000000 +0200 |
+@@ -1,7 +1,7 @@ |
+ ## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
+ |
+ def build(bld): |
+- obj = bld.create_ns3_module('wifi', ['network', 'propagation']) |
++ obj = bld.create_ns3_module('wifi', ['network', 'propagation', 'internet']) |
+ obj.source = [ |
+ 'model/wifi-information-element.cc', |
+ 'model/wifi-information-element-vector.cc', |
+Binary files ns-3.13/src/wimax/bindings/callbacks_list.pyc and b/src/wimax/bindings/callbacks_list.pyc differ |
+Binary files ns-3.13/src/wimax/bindings/modulegen__gcc_LP64.pyc and b/src/wimax/bindings/modulegen__gcc_LP64.pyc differ |