44class D2dAmc :
public Base,
public ID2dAmc,
public cListener
48 D2dAmcHelper d2dHelper_;
51 inet::ModuleRefByPar<D2dBinder> d2dBinder_;
53 void initialize(
int stage)
override
55 Base::initialize(stage);
56 if (stage == inet::INITSTAGE_LOCAL)
57 d2dBinder_.reference(
this,
"d2dBinderModule",
true);
58 else if (stage == INITSTAGE_SIMU5G_BINDER_ACCESS) {
59 d2dHelper_.initD2D(d2dBinder_.get());
67 void receiveSignal(cComponent *source, simsignal_t signalID,
long nodeId, cObject *details)
override
70 d2dHelper_.purgeDepartedNode(MacNodeId(nodeId));
74 AmcPilot *createAmcPilot(
const char *amcMode)
override
76 if (strcmp(amcMode,
"D2D") == 0) {
77 EV <<
"Creating Amc pilot " << amcMode << endl;
80 return Base::createAmcPilot(amcMode);
84 void printTxParamsForDirection(Direction dir, GHz carrierFrequency)
override
87 d2dHelper_.printTxParamsD2D(carrierFrequency);
89 Base::printTxParamsForDirection(dir, carrierFrequency);
92 bool existTxParamsForDirection(MacNodeId
id, Direction dir, GHz carrierFrequency)
override
95 return d2dHelper_.existTxParamsD2D(
id, carrierFrequency);
96 return Base::existTxParamsForDirection(
id, dir, carrierFrequency);
99 const UserTxParams& setTxParamsForDirection(MacNodeId
id, Direction dir, UserTxParams& info, GHz carrierFrequency)
override
102 return d2dHelper_.setTxParamsD2D(
id, info, carrierFrequency);
103 return Base::setTxParamsForDirection(
id, dir, info, carrierFrequency);
106 const UserTxParams& getTxParamsForDirection(MacNodeId
id, Direction dir, GHz carrierFrequency)
override
109 return d2dHelper_.getTxParamsD2D(
id, carrierFrequency);
110 return Base::getTxParamsForDirection(
id, dir, carrierFrequency);
113 McsTable *getMcsTableForDirection(Direction dir)
override
115 if (dir == D2D || dir == D2D_MULTI)
116 return &this->ulMcsTable_;
117 return Base::getMcsTableForDirection(dir);
120 void rescaleMcsForDirection(
double rePerRb, Direction dir)
override
123 d2dHelper_.rescaleD2D(rePerRb);
125 Base::rescaleMcsForDirection(rePerRb, dir);
128 void detachUserForDirection(MacNodeId nodeId, Direction dir)
override
131 d2dHelper_.detachUserD2D(nodeId);
133 Base::detachUserForDirection(nodeId, dir);
136 void attachUserForDirection(MacNodeId nodeId, Direction dir)
override
139 d2dHelper_.attachUserD2D(nodeId);
141 Base::attachUserForDirection(nodeId, dir);
144 void testUeForDirection(MacNodeId nodeId, Direction dir)
override
147 d2dHelper_.testUeD2D(nodeId);
149 Base::testUeForDirection(nodeId, dir);
153 D2dAmc() : d2dHelper_(
this) {}
156 void pushFeedbackD2D(MacNodeId
id,
LteFeedback fb, MacNodeId peerId, GHz carrierFrequency)
override
158 d2dHelper_.pushFeedbackD2D(
id, fb, peerId, carrierFrequency);
161 const LteSummaryFeedback& getFeedbackD2D(MacNodeId
id, Remote antenna, TxMode txMode, MacNodeId peerId, GHz carrierFrequency)
override
163 return d2dHelper_.getFeedbackD2D(
id, antenna, txMode, peerId, carrierFrequency);