-
Notifications
You must be signed in to change notification settings - Fork 1
/
GBT.cpp
80 lines (71 loc) · 2.09 KB
/
GBT.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "GBT.h"
void GBT::t_sink(void)
{
while(true)
{
wait(constants::GBT_WAIT_TIME + 1, SC_NS);
for(int i = 0; i < constants::NUMBER_OF_CHANNELS_BETWEEN_GBT_AND_CRU; i++)
{
while(!buffer_for_incoming_packets.empty() && porter_GBT_to_CRU[i]->num_free() > 0)
{
porter_GBT_to_CRU[i]->nb_write(buffer_for_incoming_packets.front());
buffer_for_incoming_packets.pop();
if(this->output){
write_log_to_file_sink(buffer_for_incoming_packets.front(), i);
}
}
}
}
}
void GBT::t_source(void) {
Packet val;
numberOfSamplesReceived = 0;
int packetsReceived = 0;
int timeWindow = 0;
int currentTimeWindow = 0;
while(true)
{
//for(int i = 0; i < constants::NUMBER_OF_CHANNELS_BETWEEN_SAMPA_AND_GBT && packetsReceived < constants::NUMBER_OF_PACKETS_TO_SEND; i++)
for(int i = 0; i < constants::GBT_NUMBER_INPUT_PORTS; i++)
{
while (porter_SAMPA_to_GBT[i]->nb_read(val))
{
if(this->output){
write_log_to_file_source(val, i);
}
if(val.timeWindow > currentTimeWindow){
currentTimeWindow = val.timeWindow;
}
buffer_for_incoming_packets.push(val);
//std::cout << "Number of samples: " << numberOfSamplesReceived << "\t";
numberOfSamplesReceived += val.numberOfSamples;
}
}
wait(constants::GBT_WAIT_TIME, SC_NS);
}
}
void GBT::write_log_to_file_source(Packet _currentPacket, int _portnr)
{
if (constants::GBT_GENERATE_OUTPUT)
{
std::ofstream outputFile;
outputFile.open(constants::OUTPUT_FILE_NAME, std::ios_base::app);
outputFile << sc_time_stamp()
<< ": " << name() << " Received "
<< _currentPacket.numberOfSamples << " samples, on port " << _portnr
<< std::endl;
outputFile.close();
}
}
void GBT::write_log_to_file_sink(Packet _currentPacket, int _portnr)
{
if (constants::GBT_GENERATE_OUTPUT)
{
std::ofstream outputFile;
outputFile.open(constants::OUTPUT_FILE_NAME, std::ios_base::app);
outputFile << sc_time_stamp() << ": " << name() << " Sent packet with "
<< _currentPacket.numberOfSamples << " samples, to port " << _portnr
<< std::endl;
outputFile.close();
}
}