Может быть, я ошибаюсь, но я заметил, что функция getSenderPos () была удалена / перемещена из WaveShortMessage в BasicSafetyMessage в версиях 4.5+
С версией 4.4 — я использовал getSenderPos () для вычисления расстояния между двумя узлами, но мне было интересно, что будет лучшим подходом с версией 4.6+?
Должен ли я переписать код, написанный для обменов WSM, в моем приложении VEINS, чтобы вместо этого выполнять обмен BSM, или я что-то упустил?
Спасибо за помощь.
Вы правы: по сравнению с более ранними версиями, Veins 4.6 требует гораздо меньше набор полей для передачи из приложений на уровень MAC. Базовый тип, реализующий этот набор полей, называется (несколько странно) WaveShortMessage
, Не стесняйтесь расширять набор полей, наследуя базовый тип по своему усмотрению, а затем приведите полученное сообщение к вашему типу в onWSM
метод.
Для быстрого экспериментирования, пример прикладного уровня BaseWaveApplLayer
который поставляется вместе с Veins, уже реализует сообщения для имитации WSA и BSM, но, скорее всего, вы все равно захотите использовать совершенно новый тип сообщений, поэтому я бы не советовал использовать эти типы сообщений для чего-либо, кроме самых простых исследований (и даже тогда, чтобы убедиться, что вы устанавливаете параметры, такие как длина сообщения, соответственно).
Других решений пока нет …