У меня есть сценарий, который включает в себя один автомобильный узел и один узел RSU. машина посылает сообщение маяка каждые 1 с. когда RSU получает сообщение маяка, он должен ответить отправителю (автомобилю) коротким волнообразным сообщением.
Я создаю WSM, как только RSU получает BSM, и я устанавливаю идентификатор получателя в качестве идентификатора отправителя bsm (так как я хочу, чтобы RSU отправлял сообщение только определенному узлу). проблема в том, что wsm никогда не принимается автомобилем (функция onWSM никогда не вызывается).
вот код:
void RSUApp::onBSM(BasicSafetyMessage* bsm)
{
/*this fn is called when rsu receives a beacon*/
/*after receiving beacon, send the value of the current speed*/
WaveShortMessage* msg= new WaveShortMessage("speed");
msg->setSenderAddress(this->myId);
msg->setWsmData(std::to_string(this->currentSpeed).c_str());
int Id = bsm->getSenderAddress();
populateWSM(msg,Id,0);
sendDown(msg);
}
когда я заменяю идентификатор получателя на -1 (отправляю широковещательное сообщение вместо отправки на определенный узел), автомобильное приложение может без проблем обработать WSM.
populateWSM(msg,-1,0);
Я использую вены 4.7, и это содержимое ini-файла:
*.rsu[0].mobility.x = 500
*.rsu[0].mobility.y = 50
*.rsu[0].mobility.z = 3
*.rsu[*].applType = "iteration6.src.RSUApp"
*.rsu[*].appl.headerLength = 80 bit
*.rsu[*].appl.sendBeacons = false
*.rsu[*].appl.dataOnSch = false
*.connectionManager.sendDirect = true
*.connectionManager.maxInterfDist = 2600m
*.connectionManager.drawMaxIntfDist = true
*.**.nic.mac1609_4.useServiceChannel = false
*.**.nic.mac1609_4.txPower = 20mW
*.**.nic.mac1609_4.bitrate = 6Mbps
*.**.nic.phy80211p.sensitivity = -89dBm
*.**.nic.phy80211p.useThermalNoise = true
*.**.nic.phy80211p.thermalNoise = -110dBm
*.**.nic.phy80211p.decider = xmldoc("config.xml")
*.**.nic.phy80211p.analogueModels = xmldoc("config.xml")
*.**.nic.phy80211p.usePropagationDelay = true
*.node[*].applType = "iteration6.src.carApp"
*.node[*].appl.headerLength = 80 bit
*.node[*].appl.sendBeacons = true
*.node[*].appl.dataOnSch = false
*.node[*].appl.beaconInterval = 1s
Может кто-нибудь помочь мне с этой проблемой?