Регистрирует статус, процент выполнения и код ошибки подсущности при обновлениях программного обеспечения на основе SOVD.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 86b478c2c357ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Регистрирует статус, процент выполнения и код ошибки подсущности при обновлениях программного обеспечения на основе SOVD.
Структура ara::diag::SovdSwUpdate::SubProgress инкапсулирует текущий ход выполнения, статус и возможные ошибки конкретной сущности во время обновления программного обеспечения на основе SOVD ([SWS_DM_01896]). Процедуры обновления фиксируют в ней обновляемый компонент, корректируют процент выполнения и передают общее состояние в модуль управления диагностикой. В случае сбоя обновления поле error указывает возникший код ошибки, тогда как при штатном ходе выполнения оно игнорируется ([SWS_DM_01901]). Поскольку SubProgress представляет собой чисто значимый тип данных без внутренней синхронизации, параллельная модификация требует защиты со стороны приложения.
Контекст
Структура ara::diag::SovdSwUpdate::SubProgress входит в состав интерфейса C++ для обновлений программного обеспечения на базе SOVD в модуле diag (Diagnostics) AUTOSAR Adaptive Platform ([SWS_DM_01896], AUTOSAR_AP_SWS_Diagnostics §8.58.3 «Struct: SubProgress»). В рамках Service-Oriented Vehicle Diagnostics (SOVD) процессы обновления могут состоять из нескольких параллельных или последовательных подэтапов. SubProgress отвечает за отображение состояния обработки конкретного подкомпонента в процессе обновления. К взаимодействующим сторонам относятся внутридиагностические процедуры обновления, выполняющие частичные обновления, а также вышестоящие контролирующие инстанции, координирующие общий ход обновления и сообщающие о нем во внешние диагностические инструменты.
entity: ara::core::String, указывающий сущность, которая в данный момент обновляется ([SWS_DM_01898]).
status: значение типа SovdUpdateStatus, представляющее текущий статус обновления ([SWS_DM_01899]).
progress: опциональное значение типа ara::core::Optional<std::uint8_t> для прогресса в процентах ([SWS_DM_01900]).
error: код ошибки типа ara::core::ErrorCode для указания возникших ошибок в случае сбоя ([SWS_DM_01901]).
Жизненный цикл
Спроектированная как struct, SubProgress обладает семантикой значений (AUTOSAR_AP_SWS_Diagnostics §8.58.3.1 «Public Member Variables»). Экземпляр обычно создается на стеке или внутри вышестоящего контейнера состояний, как только начинается новый подэтап обработки обновления. Управляющий компонент в начале присваивает экземпляру идентификатор целевой сущности через entity ([SWS_DM_01898]) и устанавливает начальный статус в status ([SWS_DM_01899]).
В ходе выполнения процентный прогресс и изменения статуса непрерывно обновляются в структуре. После завершения или отмены частичного обновления структура передается или считывается и, наконец, автоматически уничтожается при выходе из области видимости. Поскольку спецификация не определяет собственных методов или примитивов синхронизации, структура, вероятно, функционирует как простой держатель данных без собственной потокобезопасности (интерпретация). Вопрос Q-92b3fcc698f7bab8 (открытый) Поэтому параллельный доступ из нескольких потоков требует синхронизации на уровне приложения.
Путь использования
Штатная процедура сообщения о ходе выполнения делится на фиксированную последовательность шагов:
Сначала исполняющая логика обновления инстанцирует объект типа SubProgress и помещает идентификатор соответствующей сущности в entity ([SWS_DM_01898]). Одновременно устанавливается начальное значение для status, например, для сигнализации о начале обработки ([SWS_DM_01899]). При непрерывных шагах логика периодически записывает прогресс в процентах в поле progress ([SWS_DM_01900], AUTOSAR_AP_SWS_Diagnostics §8.58.3.1.3 «progress»). Поскольку progress объявлено как ara::core::Optional, поле остается пустым до тех пор, пока прогресс еще не определен. Наконец, структура передается в центральный интерфейс SovdSwUpdate, чтобы внешние клиенты SOVD могли запросить статус ([SWS_DM_01896]).
В случае сбоев или ошибок при обработке подсущности задействуется сценарий обработки ошибок структуры. При возникновении ошибки значение в status переходит в состояние ошибки ([SWS_DM_01899]). Согласно [SWS_DM_01901] переменная error задает точный код ошибки только в том случае, если статус является сбойным («Specifies the error if status is failed»). Это представляет собой обязательную логическую связь между status и error: получатели структуры могут оценивать поле error как значимое только в том случае, если status действительно сообщает о сбойном состоянии; в противном случае содержимое, предположительно, игнорируется или представляет собой значение по умолчанию (интерпретация). Вопрос Q-3caa7622672dcb8e (открытый)
Другой сценарий обработки ошибок касается неопределенного прогресса: если обрабатывающая сущность не может определить конкретное процентное значение или вычисление прерывается преждевременно, опциональное поле progress остается без значения (ara::core::nullopt), что предотвращает ошибочную интерпретацию недопустимых числовых значений как процентных показателей ([SWS_DM_01900]).
Данное руководство основано на спецификации AUTOSAR Adaptive Platform выпуска R25-11 и обобщает требования к структуре ara::diag::SovdSwUpdate::SubProgress.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал