Ошибка в модуле (Mac1609_4) Ошибка модели: ASSERT: условие useSCH false в функции handleUpperMsg

Я использую Veins-4a2 и я изменил сценарий демонстрационного примера. Я добавил новый wsm, который является ACK, когда узел получает сообщение, он отправляет сообщение ACK на исходный узел. Я добавил эту строку в функцию onData():

sendWSM(prepareWSM("ack", ackLengthBits, type_SCH, ackPriority, sourcenode.idNode, 2));

и я, конечно, изменил функции prepareWSM и handleLowerMsg() в BaseWaveApplLayer.cc, но когда я запускаю симуляцию, она вылетает через 10 секунд. Это сообщение об ошибке:

Ошибка в модуле (Mac1609_4) RSUExampleScenario.node[2].nic.mac1609_4 (id=240) в событии #1196, t=9.210177776741: Ошибка модели: ASSERT: условие useSCH false в функции handleUpperMsg, veins/modules/mac /ieee80211p/Mac1609_4.cc строка 259.

Разве я не имею права повторно использовать канал SCH для сообщения ACK? Как я могу исправить эту проблему, пожалуйста?


person Fariha    schedule 11.07.2016    source источник


Ответы (1)


Уровень MAC 1609.4 Veins 4a2 может использоваться в одном из двух режимов работы: одноканальном и многоканальном. Поведение можно настроить, установив этот параметр файла .ned:

// cycle between an SCH and the CCH (or stay on CCH all the time)
bool useServiceChannel = default(true);

Из сообщения об ошибке, которое вы публикуете, видно, что вы установили для этого параметра значение false, что означает, что вы хотите, чтобы радио всегда оставалось на канале управления (CCH). В то же время код, который вы разместили, запрашивает сообщение, которое должно быть передано по сервисному каналу (SCH).

Таким образом, вы требуете взаимоисключающего поведения.

Вены правильно определили это и прервали вашу симуляцию.

person Christoph Sommer    schedule 11.07.2016
comment
Большое спасибо, сэр, я решил проблему! - person Fariha; 11.07.2016