RENEWLab  1.1.0
RENEW project
scheduler.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2018-2021
3  RENEW OPEN SOURCE LICENSE: http://renew-wireless.org/license
4 
5 ----------------------------------------------------------------------
6  Record received frames from massive-mimo base station in HDF5 format
7 ---------------------------------------------------------------------
8 */
9 #ifndef SOUNDER_SCHEDULER_H_
10 #define SOUNDER_SCHEDULER_H_
11 
12 #include "hdf5_reader.h"
13 #include "receiver.h"
14 #include "recorder_thread.h"
15 
16 namespace Sounder {
17 
18 class Scheduler {
19  public:
20  Scheduler(Config* in_cfg, unsigned int core_start = 0u);
21  ~Scheduler();
22 
23  void do_it();
24  int getRecordedFrameNum();
25  std::string getTraceFileName() { return this->cfg_->trace_file(); }
26 
27  private:
28  void gc(void);
29 
30  // dequeue bulk size, used to reduce the overhead of dequeue in main thread
31  static const int KDequeueBulkSize;
32 
34  std::unique_ptr<Receiver> receiver_;
41 
42  //RecorderWorker worker_;
43  std::vector<Sounder::RecorderThread*> recorders_;
44  std::vector<Sounder::Hdf5Reader*> readers_;
46 
47  moodycamel::ConcurrentQueue<Event_data> message_queue_;
48  std::vector<moodycamel::ConcurrentQueue<Event_data>*> tx_queue_;
49  std::vector<moodycamel::ProducerToken*> tx_ptoks_ptr_;
50  std::vector<moodycamel::ConcurrentQueue<Event_data>*> cl_tx_queue_;
51  std::vector<moodycamel::ProducerToken*> cl_tx_ptoks_ptr_;
52 
53  /* Core assignment start variables */
54  const unsigned int kMainDispatchCore;
55  const unsigned int kSchedulerCore;
56  const unsigned int kRecvCore;
57 }; /* class Scheduler */
58 }; // namespace Sounder
59 #endif /* SOUNDER_SCHEDULER_H_ */
Sounder::Scheduler::kRecvCore
const unsigned int kRecvCore
Definition: scheduler.h:56
Sounder::Scheduler::tx_ptoks_ptr_
std::vector< moodycamel::ProducerToken * > tx_ptoks_ptr_
Definition: scheduler.h:49
Sounder::Scheduler::bs_tx_buffer_
SampleBuffer * bs_tx_buffer_
Definition: scheduler.h:37
Sounder::Scheduler::cl_tx_buffer_
SampleBuffer * cl_tx_buffer_
Definition: scheduler.h:39
Sounder::Scheduler::recorders_
std::vector< Sounder::RecorderThread * > recorders_
Definition: scheduler.h:43
Sounder::Scheduler::do_it
void do_it()
Definition: scheduler.cc:122
Sounder::Scheduler::bs_tx_thread_buff_size_
size_t bs_tx_thread_buff_size_
Definition: scheduler.h:38
Sounder::Scheduler::~Scheduler
~Scheduler()
Definition: scheduler.cc:120
Sounder::Scheduler::cl_tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > cl_tx_queue_
Definition: scheduler.h:50
Sounder::Scheduler::getRecordedFrameNum
int getRecordedFrameNum()
Definition: scheduler.cc:307
Sounder::Scheduler::cl_tx_thread_buff_size_
size_t cl_tx_thread_buff_size_
Definition: scheduler.h:40
Sounder::Scheduler::receiver_
std::unique_ptr< Receiver > receiver_
Definition: scheduler.h:34
Sounder::Scheduler::Scheduler
Scheduler(Config *in_cfg, unsigned int core_start=0u)
Definition: scheduler.cc:24
Sounder::Scheduler::cl_tx_ptoks_ptr_
std::vector< moodycamel::ProducerToken * > cl_tx_ptoks_ptr_
Definition: scheduler.h:51
Sounder::Scheduler::kSchedulerCore
const unsigned int kSchedulerCore
Definition: scheduler.h:55
Sounder
Definition: hdf5_lib.cc:20
Sounder::Scheduler::rx_buffer_
SampleBuffer * rx_buffer_
Definition: scheduler.h:35
Sounder::Scheduler::rx_thread_buff_size_
size_t rx_thread_buff_size_
Definition: scheduler.h:36
Sounder::Scheduler::max_frame_number_
size_t max_frame_number_
Definition: scheduler.h:45
Config
Definition: config.h:20
Sounder::Scheduler
Definition: scheduler.h:18
recorder_thread.h
Sounder::Scheduler::cfg_
Config * cfg_
Definition: scheduler.h:33
Sounder::Scheduler::kMainDispatchCore
const unsigned int kMainDispatchCore
Definition: scheduler.h:54
receiver.h
Sounder::Scheduler::getTraceFileName
std::string getTraceFileName()
Definition: scheduler.h:25
Sounder::Scheduler::KDequeueBulkSize
static const int KDequeueBulkSize
Definition: scheduler.h:31
Sounder::Scheduler::readers_
std::vector< Sounder::Hdf5Reader * > readers_
Definition: scheduler.h:44
Sounder::Scheduler::tx_queue_
std::vector< moodycamel::ConcurrentQueue< Event_data > * > tx_queue_
Definition: scheduler.h:48
SampleBuffer
Definition: macros.h:47
hdf5_reader.h
Config::trace_file
const std::string & trace_file(void) const
Definition: config.h:105
Sounder::Scheduler::gc
void gc(void)
Definition: scheduler.cc:109
Sounder::Scheduler::message_queue_
moodycamel::ConcurrentQueue< Event_data > message_queue_
Definition: scheduler.h:47