Как объявить набор параметров в omnetpp.ini - PullRequest
0 голосов
/ 28 марта 2019

У меня есть хосты двух типов: wirelessHostA[0..N], wirelessHostB[0..N].Я хочу объявить каждый из хостов wirelessHostA[0..N] для отправки сообщений на соответствующие wirelessHostB[0..N].Пример: A[0] sends to B[0], A[10] sends to B[10].По выражению у меня есть что-то вроде этого:

*.wirelessHostA[0..${N}].app[ * ].destAddresses = "wirelessHostB[0..${N}]"

, хотя это не правильно.Я немного не уверен в том, как объявить переменную, которая может повторяться во время выполнения, а не значение для каждого запуска.

1 Ответ

1 голос
/ 28 марта 2019

Вы не должны видеть строки в файле INI как назначения, где вы можете создавать процедурные конструкции, такие как циклы и т. Д. Вместо этого думайте о них как о правилах сопоставления с образцом. Когда модуль нуждается в параметре, он сканирует INI-файл от начала, строка за строкой и пытается сопоставить первую часть (то есть часть перед =) с текущим путем модуля. Если он совпадает, он назначает вторую часть параметру. Если нет, то продолжается со следующей строки в файле INI.

Итак, сначала напишите шаблонное правило, затем значение, которое можно оценить в этом контексте. Когда вы указываете значение, вы можете ссылаться на другие параметры (которые доступны в контексте модуля) или можете ссылаться на другую дополнительную контекстную информацию, такую ​​как индекс соответствующего подмодуля (если он является частью вектора). Существуют и другие функции для доступа к индексу родителя и т. Д.

В этом случае у нас есть субмодуль-вектор хостов, где каждый содержит субмодуль-вектор приложений. Оператор index будет возвращать индекс текущего контекстного модуля (который является позицией в векторе приложения), но нам фактически нужен индекс родителя вектора приложения (который является вектором хоста). Для этого тоже есть функция NED, которая называется parentIndex(). Таким образом, решение будет выглядеть так:

*.wirelessHostA[*].app[*].destAddresses = "wirelessHostB[" + string(parentIndex()) + "]"

Подробнее см. https://doc.omnetpp.org/omnetpp/manual/#sec:ned-functions:category-ned.

...