|
EPONImplementationforOMNet++
0.8Beta
|
A class to handle simTime and convert it to nanoseconds clock 32 bit with 16ns granularity. More...
#include <MPCPTools.h>
Public Member Functions | |
| MPCPTools () | |
| virtual | ~MPCPTools () |
Static Public Member Functions | |
| static void | setGateLen (MPCPGate &gate, uint8_t len) |
| static uint64_t | simTimeToNS16 () |
| static uint64_t | simTimeToNS16 (uint64_t time) |
| static uint64_t | ns16ToSimTime (uint64_t time) |
| static uint64_t | nsToSimTime (uint64_t time) |
| static uint64_t | bitsToNS16 (uint64_t bits, uint8_t gigRate) |
| Convert bits to ns16. | |
| static uint64_t | bytesToNS16 (uint64_t bytes, uint8_t gigRate) |
| Convert bytes to ns16. | |
| static uint64_t | ns16ToBits (uint64_t ns16, uint8_t gigRate) |
| Convert ns16 to bits. | |
| static uint64_t | ns16ToBytes (uint64_t ns16, uint8_t gigRate) |
| Convert ns16 to Bytes. | |
A class to handle simTime and convert it to nanoseconds clock 32 bit with 16ns granularity.
NOTE: DO NEVER COMPARE IN SIM TIME WHEN YOU ARE USING THE ns16ToSimTime... NEVER. DO THE OPPOSITE COMPARE IN DEVICE TIME USING simTimeToNS16(). (<- Now I don't remember why... but I should be right...)
{
// TODO Auto-generated constructor stub
}
| MPCPTools::~MPCPTools | ( | ) | [virtual] |
{
// TODO Auto-generated destructor stub
}
| uint64_t MPCPTools::bitsToNS16 | ( | uint64_t | bits, |
| uint8_t | gigRate | ||
| ) | [static] |
Convert bits to ns16.
Uses the line rate given in Gbps
{
uint64_t rate = gigRate * pow(10,9);
// tx time in seconds
double txtime = ((double)bits)/rate;
// tx time in ns
txtime*=pow(10,9);
// ns16
return (txtime/16);
}
| uint64_t MPCPTools::bytesToNS16 | ( | uint64_t | bytes, |
| uint8_t | gigRate | ||
| ) | [static] |
| uint64_t MPCPTools::ns16ToBits | ( | uint64_t | ns16, |
| uint8_t | gigRate | ||
| ) | [static] |
Convert ns16 to bits.
Uses the line rate given in Gbps
{
uint64_t rate = gigRate * pow(10,9);
// ns
uint64_t bits = 16*ns16;
// sec
double seconds = ((double)bits)/pow(10,9);
// bits
bits = seconds*rate;
return bits;
}
| uint64_t MPCPTools::ns16ToBytes | ( | uint64_t | ns16, |
| uint8_t | gigRate | ||
| ) | [static] |
| uint64_t MPCPTools::ns16ToSimTime | ( | uint64_t | time | ) | [static] |
{
int scale= (-9 -simTime().getScaleExp())/3;
// Clock Granularity is 16ns
return time * (scale*1000*16);
}
| uint64_t MPCPTools::nsToSimTime | ( | uint64_t | time | ) | [static] |
{
int scale= (-9 -simTime().getScaleExp())/3;
// Clock Granularity is 16ns
return time * (scale*1000);
}
| void MPCPTools::setGateLen | ( | MPCPGate & | gate, |
| uint8_t | len | ||
| ) | [static] |
{
gate.setListLen(len);
gate.setStartTimeArraySize(len);
gate.setDurationArraySize(len);
}
| uint64_t MPCPTools::simTimeToNS16 | ( | ) | [static] |
{
// NOTE: You can add skew here...
int scale= (-9 -simTime().getScaleExp())/3;
// Clock Granularity is 16ns
return (simTime().raw()/(scale*1000*16))%MPCP_CLOCK_MAX;
}
| uint64_t MPCPTools::simTimeToNS16 | ( | uint64_t | time | ) | [static] |
{
int scale= (-9 -simTime().getScaleExp())/3;
// Clock Granularity is 16ns
return (time/(scale*1000*16))%MPCP_CLOCK_MAX;
}