Hi Florian I really appreciate for your help I made some modifications in DecisionMaker files but still have some enquires,
1) So first step is to modify the DecisionMaker.ned file:
package org.car2x.veins.modules.lte;
import org.car2x.veins.base.modules.IBaseApplLayer;
simple ExampleDecisionMaker like IBaseApplLayer {
parameters:
@class(ExampleDecisionMaker);
@signal[DSRCMessagesSent](type="long");
@statistic[DSRCMessagesSent](title="DSRCMessagesSent"; source="DSRCMessagesSent"; record=vector, stats, histogram);
@signal[lteMessagesSent](type="long");
@statistic[lteMessagesSent](title="lteMessagesSent"; source="lteMessagesSent"; record=vector, stats, histogram);
@signal[dontCareMessagesSent](type="long");
@statistic[dontCareMessagesSent](title="dontCareMessagesSent"; source="dontCareMessagesSent"; record=vector, stats, histogram);
@signal[DSRCMessagesReceived](type="long");
@statistic[DSRCMessagesReceived](title="DSRCMessagesReceived"; source="DSRCMessagesReceived"; record=vector, stats, histogram);
@signal[lteMessagesReceived](type="long");
@statistic[lteMessagesReceived](title="lteMessagesReceived"; source="lteMessagesReceived"; record=vector, stats, histogram);
@signal[delay](type="float");
@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
int headerLength = default(88bit) @unit(bit);
double maxOffset = default(0s) @unit(s);
gates:
input fromApplication;
output toApplication;
input fromLte;
output toLte;
input lowerLayerIn;
output lowerLayerOut;
input lowerControlIn;
output lowerControlOut;
}
So I just added the @signal[delay](type="float");
@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
But does this delay statistic refers to the lte-802.11p network? , if I want it for all 3 cases LTE, 802.11p and LTE-802.11p
what sort of modifications should I do in order to have also individual DSRC and LTE and Both delay as well?
2) Second Step:
Then in my BasicDecisionMaker.h I should add only
simsignal_t delaySignal
as shown below:
// statistic collection
simsignal_t DSRCMessagesSent;
simsignal_t lteMessagesSent;
simsignal_t dontCareMessagesSent;
simsignal_t DSRCMessagesReceived;
simsignal_t lteMessagesReceived;
simsignal_t delaySignal
3) at the ExampleDecisionMaker.cc
I should add only delaySignal = registerSignal("delay");
as shown:
BasicDecisionMaker::BasicDecisionMaker(){
// Empty
}
BasicDecisionMaker::~BasicDecisionMaker(){
// Empty
}
void BasicDecisionMaker::initialize(int stage) {
BaseApplLayer::initialize(stage);
if (stage == 0) {
delaySignal = registerSignal("delay");
DSRCMessagesSent = registerSignal("DSRCMessagesSent");
lteMessagesSent = registerSignal("lteMessagesSent");
dontCareMessagesSent = registerSignal("dontCareMessagesSent");
DSRCMessagesReceived = registerSignal("DSRCMessagesReceived");
lteMessagesReceived = registerSignal("lteMessagesReceived");
fromApplication = findGate("fromApplication");
toApplication = findGate("toApplication");
fromLte = findGate("fromLte");
toLte = findGate("toLte");
fromDSRC = findGate("lowerLayerIn");
toDSRC = findGate("lowerLayerOut");
cModule *tmpMobility = getParentModule()->getSubmodule("veinsmobility");
Veins::TraCIMobility* mobility = dynamic_cast<Veins::TraCIMobility *>(tmpMobility);
ASSERT(mobility);
id = mobility->getExternalId();
maxOffset = par("maxOffset").doubleValue();
individualOffset = dblrand() * maxOffset;
findHost()->subscribe(mobilityStateChangedSignal, this);
}
}
but how can I add in DecisionMaker.cc
emit(delaySignal, delay);
should I do it for DSRC and LTE individual?
If I want both LTE-DSRC delay?
void BasicDecisionMaker::handleMessage(cMessage* msg){
int arrivalGate = msg->getArrivalGateId();
if (arrivalGate == fromApplication) {
HeterogeneousMessage *heterogeneousMessage =
dynamic_cast<HeterogeneousMessage *>(msg);
if (!heterogeneousMessage) {
std::cout << "Message " << msg->getFullName()
<< " is not a HeterogeneousMessage, but a "
<< msg->getClassName() << std::endl;
delete msg;
return;
}
switch (heterogeneousMessage->getNetworkType()) {
case DONTCARE:
emit(dontCareMessagesSent, 1);
sendDontCareMessage(heterogeneousMessage);
break;
case LTE:
emit(lteMessagesSent, 1);
sendLteMessage(heterogeneousMessage);
break;
case DSRC:
emit(DSRCMessagesSent, 1);
sendDSRCMessage(heterogeneousMessage);
break;
Thanks
Tomas
DecisionMaker