Тестовым модулям разрешено "ждать" во время симуляции.
Всем другим узлам или функциям не разрешено ждать, потому что это заблокирует симуляцию.По сути, симуляция вызывает CAPL-функцию и ожидает возврата функций.События на шине не обрабатываются до тех пор, пока функция не вернется.
Существует обработчик событий, который вызывается, когда диагностический запрос был успешно отправлен.Таким образом, вам придется разбить код на отправку запроса с помощью
diagSendRequest(req)
и отреагировать на успешную отправку с помощью
on diagRequestSent <service>
{
...
}
Для ответа на запрос, не заданный успешноВы можете использовать таймер и установить глобальную переменную соответственно, или, возможно, системную переменную.
Должно быть что-то похожее на следующее.
variables
{
timer requestTimer;
int sentSuccessfully;
}
void sendRequest()
{
....
sentSuccessfully = 0;
diagSendRequest(req);
setTimer(requestTimer, <timeout>);
}
on diagRequestSent ....
{
sentSuccessfully = 1;
cancelTimer(requestTimer);
}
on requestTimer
{
sentSuccessfully = -1;
}