#ifndef _CALLBACKS_H_
#define _CALLBACKS_H_

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/csma-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv4-global-routing-helper.h"
#include "ns3/netanim-module.h"
#include "ns3/node.h"
#include "ns3/names.h"
#include "ns3/packet.h"
#include "ns3/ipv4-header.h"
#include "_callback.h"
#include "ns3/gnuplot.h"

using namespace ns3;
using namespace std;

struct RTT_t {
	double n0;
	double s;
	double n2;
	double n3;
	double n4;
};

struct packetCount_t {
	int n0;
	int s;
	int n2;
	int n3;
	int n4;
};

struct simulationTime_t {
	double n0;
	double s;
	double n2;
	double n3;
	double n4;
};

struct datasets_t {
	Gnuplot2dDataset n0;
	Gnuplot2dDataset s;
	Gnuplot2dDataset n2;
	Gnuplot2dDataset n3;
	Gnuplot2dDataset n4;
};

void n0_tx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n0_rx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void s_tx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void s_rx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n2_tx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n2_rx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n3_tx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n3_rx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n4_tx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);
void n4_rx(string path, Ptr<Packet const> packet, Ptr<Ipv4> ipv4, unsigned int a);


#endif
