LteSchedulerUeUl.h Source File

Simu5G: LteSchedulerUeUl.h Source File
Simu5G
LteSchedulerUeUl.h
1//
2// Simu5G
3//
4// Copyright (C) 2012-2021 Giovanni Nardini, Giovanni Stea, Antonio Virdis et al. (University of Pisa)
5// Copyright (C) 2022-2026 Giovanni Nardini, Giovanni Stea et al. (University of Pisa)
6//
7// This file is part of a software released under the license included in file
8// "license.pdf". Please read LICENSE and README files before using it.
9// The above files and the present reference are part of the software itself,
10// and cannot be removed from it.
11//
12
13#ifndef _LTE_LTE_SCHEDULER_UE_UL_H_
14#define _LTE_LTE_SCHEDULER_UE_UL_H_
15
16#include "simu5g/common/LteCommon.h"
17
18#include "simu5g/stack/mac/LteMacUe.h"
19#include "simu5g/stack/mac/scheduler/LcgScheduler.h"
20
21namespace simu5g {
22
23using namespace omnetpp;
24
25class LteMacUe;
26class LcgScheduler;
27
31class LteSchedulerUeUl
32{
33 protected:
34
35 // MAC module, queried for parameters
36 opp_component_ptr<LteMacUe> mac_;
37
38 // Schedule List
39 LteMacScheduleList scheduleList_;
40
41 // Scheduled Bytes List
42 LteMacScheduleList scheduledBytesList_;
43
44 // Inner Scheduler - created via LteMacUe::createLcgScheduler()
45 LcgScheduler *lcgScheduler_ = nullptr;
46
47 // Carrier frequency handled by this scheduler
48 GHz carrierFrequency_;
49
50 public:
51
52 /* Performs the standard LCG scheduling algorithm
53 * @returns reference to scheduling list
54 */
55 virtual LteMacScheduleList *schedule();
56
57 /* After the scheduling, returns the amount of bytes
58 * scheduled for each connection
59 */
60 virtual LteMacScheduleList *getScheduledBytesList();
61
62 /* After scheduling, returns the per-PDU payload sizes planned for an NR-SO
63 * connection (one SDU request per entry), or nullptr for LTE-FI connections.
64 */
65 const std::vector<unsigned int> *getScheduledSoPduSizes(MacCid cid) { return lcgScheduler_->getScheduledSoPduSizes(cid); }
66
67 /*
68 * Constructor
69 */
70 LteSchedulerUeUl(LteMacUe *mac, GHz carrierFrequency);
71
72 LteSchedulerUeUl(const LteSchedulerUeUl& other) = delete;
73 LteSchedulerUeUl& operator=(const LteSchedulerUeUl& other) = delete;
74
75 /*
76 * Destructor
77 */
78 virtual ~LteSchedulerUeUl();
79};
80
81} //namespace
82
83#endif // _LTE_LTE_SCHEDULER_UE_UL_H_
84
Definition LcgScheduler.h:43
Definition LteTypes.h:153
Definition AlertReceiver.h:24
std::map< std::pair< MacCid, Codeword >, unsigned int > LteMacScheduleList
Definition LteCommon.h:344