В венах я пытаюсь смоделировать сценарий VANET, в котором, если дорога заблокирована, то по прошествии определенного времени автомобиль транслирует сообщение, включая идентификатор заблокированной дороги и количество транспортных средств вокруг его 100 метров.
В приложении TraCIDemo11p, когда автомобиль останавливается более чем на 10 секунд, он меняет цвет узла на красный (чтобы показать аварию) и отправляет другим автомобилям сообщение, содержащее идентификатор заблокированной дороги, все это делается в механизме handlePositionUpdate:
findHost()->getDisplayString().updateWith("r=16,red");
sentMessage = true;
WaveShortMessage* wsm = new WaveShortMessage();
populateWSM(wsm);
wsm->setWsmData(mobility->getRoadId().c_str());
//host is standing still due to crash
if (dataOnSch) {
startService(Channels::SCH2, 42, "Traffic Information Service");
//started service and server advertising, schedule message to self to send later
scheduleAt(computeAsynchronousSendingTime(1,type_SCH),wsm);
}
else {
//send right away on CCH, because channel switching is disabled
sendDown(wsm);
}
Предел в 100 м можно установить, обновив значение maxInterfDist в файле .ini.
*.connectionManager.maxInterfDist = 100m
Теперь у меня есть проблема, как получить количество транспортных средств и 100 м площади. У меня есть идея, что это будет сделано с помощью TraCI и, скорее всего, с помощью getJamLengthVehicle от LaneAreaDetector, но я не понимаю, как это будет сделано в венах, есть ли их эквивалентный метод или я смотрю в неправильном направлении?