First release
[sim/ns3-o-ran-e2.git] / helper / mmwave-indication-message-helper.h
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2022 Northeastern University
4  * Copyright (c) 2022 Sapienza, University of Rome
5  * Copyright (c) 2022 University of Padova
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation;
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * Author: Andrea Lacava <thecave003@gmail.com>
21  *                 Tommaso Zugno <tommasozugno@gmail.com>
22  *                 Michele Polese <michele.polese@gmail.com>
23  */
24
25 #ifndef MMWAVE_INDICATION_MESSAGE_HELPER_H
26 #define MMWAVE_INDICATION_MESSAGE_HELPER_H
27
28 #include <ns3/indication-message-helper.h>
29
30 namespace ns3 {
31
32 class MmWaveIndicationMessageHelper : public IndicationMessageHelper
33 {
34 public:
35   MmWaveIndicationMessageHelper (IndicationMessageType type, bool isOffline, bool reducedPmValues);
36
37   ~MmWaveIndicationMessageHelper ();
38
39   void FillCuUpValues (std::string plmId);
40
41   void AddCuUpUePmItem (std::string ueImsiComplete, long txPdcpPduBytesNrRlc, long txPdcpPduNrRlc);
42
43   void FillCuCpValues (uint16_t numActiveUes);
44   
45   void FillDuValues (std::string cellObjectId);
46
47   void AddDuUePmItem (std::string ueImsiComplete, long macPduUe, long macPduInitialUe, long macQpsk,
48                       long mac16Qam, long mac64Qam, long macRetx, long macVolume, long macPrb,
49                       long macMac04, long macMac59, long macMac1014, long macMac1519,
50                       long macMac2024, long macMac2529, long macSinrBin1, long macSinrBin2,
51                       long macSinrBin3, long macSinrBin4, long macSinrBin5, long macSinrBin6,
52                       long macSinrBin7, long rlcBufferOccup, double drbThrDlUeid);
53
54   void AddDuCellPmItem (
55       long macPduCellSpecific, long macPduInitialCellSpecific, long macQpskCellSpecific,
56       long mac16QamCellSpecific, long mac64QamCellSpecific, double prbUtilizationDl,
57       long macRetxCellSpecific, long macVolumeCellSpecific, long macMac04CellSpecific,
58       long macMac59CellSpecific, long macMac1014CellSpecific, long macMac1519CellSpecific,
59       long macMac2024CellSpecific, long macMac2529CellSpecific, long macSinrBin1CellSpecific,
60       long macSinrBin2CellSpecific, long macSinrBin3CellSpecific, long macSinrBin4CellSpecific,
61       long macSinrBin5CellSpecific, long macSinrBin6CellSpecific, long macSinrBin7CellSpecific,
62       long rlcBufferOccupCellSpecific, long activeUeDl);
63   void AddDuCellResRepPmItem (Ptr<CellResourceReport> cellResRep);
64   void AddCuCpUePmItem (std::string ueImsiComplete, long numDrb, long drbRelAct,
65                         Ptr<L3RrcMeasurements> l3RrcMeasurementServing,
66                         Ptr<L3RrcMeasurements> l3RrcMeasurementNeigh);
67
68 private:
69 };
70
71 } // namespace ns3
72
73 #endif /* MMWAVE_INDICATION_MESSAGE_HELPER_H */