Служит для возврата полезных данных положительного диагностического ответа без идентификатора сервиса при операциях загрузки.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c06f480862f4ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для возврата полезных данных положительного диагностического ответа без идентификатора сервиса при операциях загрузки.
Структура данных ara::diag::DownloadService::OperationOutput служит транспортным контейнером для полезных данных положительных диагностических ответов при сервисах загрузки ([SWS_DM_00785]). При этом адаптивное приложение заполняет поле responseData результирующими байтами и передает структуру в Diagnostic Management ([SWS_DM_00786]). Существенным граничным условием является то, что responseData обязательно должно содержать полезные данные без идентификатора сервиса, и в зависимости от операции, такой как DownloadData или RequestDownloadExit, ожидается различное содержимое ([SWS_DM_00786]).
Контекст
Структура ara::diag::DownloadService::OperationOutput является специализированным типом данных модуля диагностики в составе AUTOSAR Adaptive Platform и предоставляется через заголовочный файл ara/diag/download.h ([SWS_DM_00785]). Ее основная роль состоит в инкапсуляции полезных данных сообщения положительного диагностического ответа для сервисов загрузки (AUTOSAR_AP_SWS_Diagnostics §8.14.2 «Struct: OperationOutput»). В рамках диагностической архитектуры структура функционирует как контейнер транспортировки данных между конкретной реализацией сервиса в адаптивном приложении и лежащей в основе диагностической средой выполнения (ara::diag), которая, в свою очередь, взаимодействует с внешним диагностическим клиентом (тестером) (AUTOSAR_AP_SWS_Diagnostics §7 «API Specification»).
Единственным содержащимся элементом является открытое поле responseData типа ara::core::Vector<std::uint8_t> ([SWS_DM_00786]). Оно транспортирует чистые полезные байты, которые должны быть отправлены обратно диагностическому тестеру при успешной обработке операции загрузки.
Жизненный цикл
Являясь чистой структурой данных (struct), OperationOutput не имеет внутренних конечных автоматов или собственных методов ([SWS_DM_00785]). Ее жизненный цикл кратковременен и напрямую привязан к синхронной или асинхронной обработке отдельного диагностического запроса:
Создание: структура инстанцируется приложением, как только операция загрузки успешно завершена и доступны данные ответа. Создание, по-видимому, обычно происходит на стеке либо внутри цепочки обратных вызовов или future. Вопрос (открытый)
Заполнение и передача: приложение заполняет вектор responseData вычисленными байтами ([SWS_DM_00786]). С возвратом в Diagnostic Management ответственность за данные переходит к платформе.
Уничтожение: как только уровень платформы сериализует данные и отправит UDS-кадр, экземпляр освобождается.
Что касается параллелизма, следует учитывать, что OperationOutput как пассивный объект-значение не является потокобезопасным. Если операции обрабатываются в параллельных рабочих потоках приложения, необходимо обеспечить отсутствие конкурирующего доступа к responseData до того, как объект будет передан в ara::diag.
Путь использования
Типичное использование OperationOutput происходит в рамках обработки диагностических запросов на загрузку. Внешний диагностический тестер отправляет запрос автомобилю, который принимается платформой и перенаправляется в подходящий метод интерфейса DownloadService в адаптивном приложении (AUTOSAR_AP_SWS_Diagnostics §7 «API Specification»). После успешной внутренней обработки приложение создает экземпляр OperationOutput и передает данные ответа.
При заполнении responseData необходимо учитывать, что полезные данные должны предоставляться без идентификатора сервиса (SID) ([SWS_DM_00786]). Платформа самостоятельно добавляет протокольно-специфичный SID, а также возможную информацию заголовка. Кроме того, точная структура содержимого зависит от вызванной операции: в случае DownloadData или RequestDownloadExit семантические ожидания относительно начала и структуры данных ответа в векторе различаются ([SWS_DM_00786]).
Сценарии ошибок
Поскольку OperationOutput явно специфицирован для сообщений положительного ответа (AUTOSAR_AP_SWS_Diagnostics §8.14.2 «Struct: OperationOutput»), внутри структуры данных отсутствуют поля для кодов ошибок или отрицательных откликов. Если при выполнении операции загрузки возникает ошибка (например, недопустимые диапазоны адресов, неверный порядок блоков или прерванные передачи), OperationOutput, вероятно, не обрабатывается; вместо этого приложение сигнализирует о сбое через каналы ошибок платформы, после чего генерируется отрицательный код ответа (NRC). Вопрос (открытый)
Ошибка со стороны приложения при использовании OperationOutput возникает в том случае, если идентификатор сервиса ошибочно вставляется в responseData. Это противоречит спецификации [SWS_DM_00786] и, вероятно, приведет к некорректному форматированию кадра. Вопрос (открытый) Аналогично, неверный порядок байтов или неполный объем данных приводят, в зависимости от конкретной операции, к протокольным ошибкам на стороне тестера ([SWS_DM_00786]).
Данное руководство основано на спецификации AUTOSAR Adaptive Platform Release R25-11 и было создано автоматически.
UML-диаграмма классов
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
Content of positive response message (without SID) Depending on the operation (e.g.: DownloadData, RequestDownloadExit) the expectation, what responseData shall contain (where it starts in the positive response) might differ. See doc of corresponding operation.
Content of positive response message (without SID) Depending on the operation (e.g.: DownloadData, RequestDownloadExit) the expectation, what responseData shall contain (where it starts in the positive response) might differ. See doc of corresponding operation.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал