Позволяет приложению предоставлять данные блоков управления для UDS-выгрузок в Diagnostic Management.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e2e1ae703412ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет приложению предоставлять данные блоков управления для UDS-выгрузок в Diagnostic Management.
Класс ara::diag::UploadService служит сервисным интерфейсом на стороне приложения для предоставления данных блоков управления для внешних диагностических выгрузок согласно UDS [SWS_DM_00797]. После успешной активации через Offer() обработчик асинхронно обрабатывает последовательные запросы на инициацию выгрузки, передачу блоков данных и завершение передачи [SWS_DM_00802]. Некопируемый экземпляр службы при этом поддерживает как поблочную передачу данных, так и досрочное прерывание через обработчик отмены. Некорректные запросы обработчик подтверждает отрицательными кодами возврата UDS внутри асинхронных future ответа.
Контекст
Класс ara::diag::UploadService определяет центральный сервисный интерфейс для операций диагностической выгрузки в рамках AUTOSAR Adaptive Platform [SWS_DM_00797]. Он функционирует как обработчик на стороне приложения для считывания и предоставления внутриавтомобильных данных внешним диагностическим приборам согласно диагностическому стандарту UDS (ISO 14229-1) [SWS_DM_00799].
В системной архитектуре ara::diag::UploadService взаимодействует главным образом с двумя партнерами: внешним диагностическим клиентом (тестером) и платформенным диагностическим демоном Diagnostic Management (DM) [SWS_DM_00799], [SWS_DM_00802]. DM принимает входящие запросы служб UDS, такие как RequestUpload, TransferData и RequestTransferExit, на уровне протокола, валидирует их и перенаправляет предметные запросы зарегистрированному обработчику приложения [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. Экземпляр приложения реализует виртуальные методы интерфейса для считывания фактических блоков данных из памяти и их возврата [SWS_DM_00800].
Контекстная диаграмма: интеграция службы выгрузки между диагностическим клиентом, Diagnostic Management и обработчиком приложения. Источники: [SWS_DM_00797], [SWS_DM_00799], [SWS_DM_00802].
Жизненный цикл
Экземпляр ara::diag::UploadService конструируется с указанием ara::core::InstanceSpecifier, а также поведения при параллелизме concurrencyType[SWS_DM_00797]. Спецификатор связывает экземпляр со смоделированным прототипом порта типа DiagnosticUploadInterface[SWS_DM_00797]. Конструктор специфицирован как безопасный по отношению к исключениям и потокобезопасный [SWS_DM_00797]. Чтобы гарантировать однозначное сопоставление экземпляра службы, конструкторы копирования и перемещения, а также операторы присваивания явно удалены [SWS_DM_01671], [SWS_DM_01672], [SWS_DM_01673], [SWS_DM_01674].
После инстанцирования служба изначально находится в неактивном состоянии; DM еще не перенаправляет запросы. Перенаправление активируется только явным вызовом Offer()[SWS_DM_00802]. С помощью StopOffer() перенаправление запросов может быть в любой момент снова прекращено [SWS_DM_00803]. Как Offer(), так и StopOffer() определены как непотокобезопасные и требуют внешней синхронизации при вызовах из нескольких потоков [SWS_DM_00802], [SWS_DM_00803].
Уничтожение осуществляется через виртуальный деструктор ~UploadService(), который также не является потокобезопасным [SWS_DM_00798]. Поэтому перед освобождением объекта служба должна быть надлежащим образом дерегистрирована через StopOffer()[SWS_DM_00803]. Должны ли виртуальные методы обработки выполняться внутренне потокобезопасно, определяется сконфигурированным при конструировании ConcurrencyType (kConcurrent или kNotConcurrent) [SWS_DM_00797], [SWS_DM_00799].
Путь использования
Штатный ход сеанса выгрузки осуществляется в несколько последовательных шагов:
Предоставление службы: приложение инициализирует обработчик и вызывает Offer(), чтобы принимать входящие диагностические запросы от DM [SWS_DM_00802].
Запрос выгрузки (RequestUpload): при поступлении UDS-запроса на инициацию выгрузки DM вызывает метод RequestUpload()[SWS_DM_00799]. Обработчик проверяет формат данных, формат адресации, а также адрес и длину памяти (memoryAddressAndSize). Переданная область памяти остается действительной до тех пор, пока возвращенный ara::core::Future<void> не будет выполнен или операция не будет прервана [SWS_DM_00799].
Передача блоков данных (UploadData): после успешной инициации тестер отправляет UDS-запросы TransferData. После этого DM повторно вызывает UploadData()[SWS_DM_00800]. Приложение считывает запрошенный блок данных и возвращает его через ara::core::Future<OperationOutput>; байты в OperationOutput.responseData помещаются в положительном ответе после счетчика блоков [SWS_DM_00800]. Интерпретация: ограничение буфера numBytesToReturn, вероятно, выступает при этом в качестве максимального размера фрагмента (chunk) для внутренней буферизации DM, так что более обширные области памяти сегментируются последовательно через последующие вызовы. Вопрос Q-6ede2e3041d99294 (открытый)
Завершение передачи (RequestUploadExit): в завершение DM вызывает RequestUploadExit() и передает специфичные для производителя параметры передачи в transferRequestParameterRecord[SWS_DM_00801]. Обработчик валидирует завершение и возвращает опциональные возвращаемые параметры в OperationOutput[SWS_DM_00801].
Деактивация службы: после завершения всех транзакций загрузки или при завершении работы приложение прекращает пересылку с помощью StopOffer()[SWS_DM_00803].
На протяжении всей передачи данных обработчик получает объект CancellationHandler. Через него можно активно опрашивать статус отмены с помощью IsCanceled() или зарегистрировать функцию обратного вызова через SetNotifier() на случай, если тестер преждевременно прервет диалог [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801].
Состояния ошибок могут возникать при конструировании, во время активации, а также при непосредственной обработке данных:
Нарушения модели и конфигурации: если конфигурация не совпадает с моделью ARXML, при вызове конструктора возникают нарушения [SWS_DM_00797]. К ним относятся InstanceSpecifierMappingIntegrityViolation (спецификатор не ссылается на PortPrototype), PortInterfaceMappingViolation (отсутствие связывания через DiagnosticServiceGenericMapping), ProcessMappingViolation (несоответствие смоделированному процессу), а также InstanceSpecifierAlreadyInUseViolation (многократное использование одного и того же спецификатора в рамках одного процесса) [SWS_DM_00797].
Многократная активация службы: если Offer() вызывается, когда служба уже предлагается, вызов завершается неудачно и возвращает код ошибки DiagOfferErrc::kAlreadyOffered в ara::core::Result<void>[SWS_DM_00802].
Ошибочные ответы UDS (Negative Response): если обработчик не может функционально обслужить запрос в RequestUpload(), UploadData() или RequestUploadExit() (например, из-за недопустимых адресов памяти, ошибок формата или некорректных счетчиков последовательности), он сигнализирует об этом предоставлением кода ошибки из DiagUdsNrcErrc в возвращаемом Future[SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. После этого DM формирует стандартный отрицательный ответ UDS (NRC) для внешнего диагностического тестера [SWS_DM_00799].
Это руководство основано исключительно на спецификации AUTOSAR Adaptive Platform Release R25-11.
This Offer will enable the DM to forward request messages to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: dce89cbe34efПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и семантика
Синхронная функция-член Offer класса ara::diag::UploadService ([SWS_DM_00802]) активирует пересылку диагностических запросов через Diagnostic Management (DM) зарегистрированному обработчику. Вызов не принимает параметров и декларирует безопасность исключений noexcept ([SWS_DM_00802]). В качестве возвращаемого типа выступает ara::core::Result<void>, через который отражается успешное предоставление или возникшая ошибка ([SWS_DM_00802]).
Обработка ошибок и параллелизм
Коды ошибок: Если служба уже предлагалась ранее, выполнение завершается неудачно с кодом ошибки DiagOfferErrc::kAlreadyOffered ([SWS_DM_00802]); при этом действует семантика отката.
Потокобезопасность: Функция явно специфицирована как not thread-safe ([SWS_DM_00802]). Параллельные вызовы на одном и том же экземпляре службы должны синхронизироваться со стороны приложения.
Взаимодействие в диагностической подсистеме
Операция вписывается в единообразный шаблон предоставления адаптивных диагностических обработчиков, как он применяется, среди прочего, в DownloadService ([SWS_DM_00792]) или GenericUDSService ([SWS_DM_00619]). Пока предоставление не выполнено, DM не пересылает входящие диагностические сообщения обработчику (ср. аналогичное поведение в [SWS_DM_01525]). Интерпретация: вызов Offer, вероятно, обычно выполняется во время фазы инициализации приложения до приема диагностического трафика. Вопрос Q-aba091d233b5e45b (открытый)
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
dataFormatIdentifier и addressAndLengthFormatIdentifier: идентификаторы формата UDS для данных, адреса памяти и указания длины.
memoryAddressAndSize: ara::core::Span с адресом и размером памяти, достоверность которого гарантируется до выполнения обещания (Promise) или отмены обработки.
metaInfo: метаинформация о диагностическом запросе.
cancellationHandler: служит для опроса состояния отмены через cancellationHandler.IsCanceled и регистрации функций уведомления посредством cancellationHandler.SetNotifier.
Обработка выполняется асинхронно с возвращаемым типом ara::core::Future<void>[SWS_DM_00799].
Обработка ошибок
В случае ошибки ara::core::Future предоставляет подходящий код ошибки UDS-NRC согласно ISO 14229-1 через DiagUdsNrcErrc, после чего выдаётся отрицательный ответ [SWS_DM_00799]. При положительном ответе Diagnostic Manager сообщает о событии безопасности SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL в IdsM [SWS_DM_02031], при отрицательном ответе — о событии SEV_UDS_REQUEST_UP_DOWNLOAD_FAILED[SWS_DM_02033].
Параллелизм и взаимодействие
Функция объявлена как noexcept и безопасна к исключениям. Требуется ли потокобезопасная реализация метода, является условным и определяется через ConcurrencyType, переданный в конструкторе [SWS_DM_00799].
После успешного подтверждения RequestUpload фактическая передача данных выгрузки продолжается при последующих запросах UDS-сервиса 0x36 (TransferData) через UploadData[SWS_DM_00800][SWS_DM_01096].
Это указание по использованию было сгенерировано искусственным интеллектом на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataFormatIdentifier
UDS dataFormat Identifier
addressAndLengthFormatIdentifier
UDS addressAndLengthFormatIdentifier
memoryAddressAndSize
memoryAddress and memorySize part of the request. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c83d03772031ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
transferRequestParameterRecord: содержит специфичные для производителя параметры для поддержки передачи в формате ara::core::Span<const std::uint8_t>. Данные остаются действительными до тех пор, пока соответствующее обещание (Promise) не будет выполнено или обработка не будет отменена. Интерпретация: оценка этих параметров, вероятно, в первую очередь служит для специфичных для производителя валидаций при завершении выгрузки. Вопрос Q-d3989837f58761d7 (открытый)
cancellationHandler: позволяет опрашивать состояние отмены через cancellationHandler.IsCanceled() или регистрировать функцию обратного вызова для уведомления посредством cancellationHandler.SetNotifier().
Возвращаемые значения и обработка ошибок
Выполнение происходит асинхронно и возвращает ara::core::Future<OperationOutput>[SWS_DM_00801]. В случае успеха Future выполняется с экземпляром OperationOutput. Переданные в нём данные из responseData вставляются в положительный диагностический ответ после идентификатора сервиса как transferResponseParameterRecord[SWS_DM_00796], [SWS_DM_00801]. В случае ошибки Future должен быть укомплектован подходящим кодом ошибки из DiagUdsNrcErrc согласно ISO 14229-1 [SWS_DM_00801].
Параллелизм и ограничения
Метод специфицирован как noexcept[SWS_DM_00801]. Требование к потокобезопасности является условным: должна ли функция выполняться потокобезопасно, определяется через ConcurrencyType, переданный в конструкторе UploadService[SWS_DM_00801].
Это указание по применению основано на спецификациях в AUTOSAR AP SWS Diagnostics R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
transferRequestParameterRecord
This parameter record contains parameter(s), which are required by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.responseData will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e7cdc33ba5c7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод StopOffer() класса ara::diag::UploadService ([SWS_DM_00803], объявлен в #include "ara/diag/upload.h") отключает перенаправление входящих диагностических запросов из Diagnostic Management (DM) сервису выгрузки. Функция имеет сигнатуру void StopOffer() noexcept;, не принимает параметров и не возвращает значения. Вызов выполняется синхронно и немедленно прекращает перенаправление запросов.
Обработка ошибок
Операция специфицирована как безопасная относительно исключений (exception safe) и объявлена с идентификатором noexcept[SWS_DM_00803]. Исключения C++ при этом не генерируются. Специфические коды ошибок или сообщения об ошибках для этого вызова не предусмотрены.
Параллелизм и ограничения
Согласно спецификации StopOffer() не является потокобезопасным (not thread-safe) [SWS_DM_00803]. Поэтому вызывающее приложение Adaptive Application должно самостоятельно обеспечивать, чтобы вызовы для одного и того же экземпляра не выполнялись конкурентно из нескольких потоков без внешней синхронизации. Что касается очередности, метод обычно должен вызываться только после предшествующего предложения сервиса, чтобы контролируемо отменить его регистрацию. Вопрос Q-90ce659f307f54ca (открытый)
Взаимодействие
Интерфейс встраивается в единый шаблон предоставления адаптивной диагностики AUTOSAR, который предусматривает для экземпляров сервисов раздельные методы для активации и деактивации AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». Метод образует функциональный аналог для ara::diag::DownloadService::StopOffer ([SWS_DM_00793]), подчиняющегося тем же требованиям вышестоящего уровня (upstream). Аналогичные функции деактивации существуют также для других компонентов диагностики, таких как универсальные подпрограммы ([SWS_DM_00558]), сервисы UDS ([SWS_DM_00620]) и интерфейсы аутентификации ([SWS_DM_01131]).
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Called for TransferData following a previous RequestUpload.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0748aa4db498ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
numBytesToReturn: указывает количество байтов, которое Diagnostic Manager (DM) может максимально принять для этого блока данных на основании своего внутреннего размера буфера ([SWS_DM_00800]). Интерпретация: приложение, вероятно, строго ограничивает размер блока этим предельным значением. Вопрос Q-89de95e70e1e6223 (открытый)
metaInfo: предоставляет метаинформацию о входящем диагностическом запросе ([SWS_DM_00800]).
cancellationHandler: служит для мониторинга текущих сеансов связи через cancellationHandler.IsCanceled(), а также для регистрации уведомлений через cancellationHandler.SetNotifier() в случае отмены ([SWS_DM_00800]).
Возврат осуществляется асинхронно через ara::core::Future<OperationOutput> ([SWS_DM_00800]). В случае успеха полезные данные ([SWS_DM_00796]), предоставленные в OperationOutput.responseData, помещаются в положительном ответе непосредственно после счетчика blockSequenceCounter в виде transferResponseParameterRecord ([SWS_DM_00800]).
Обработка ошибок и валидация
В случае ошибки Future разрешается с подходящим кодом ошибки (NRC) согласно ISO 14229-1 из DiagUdsNrcErrc ([SWS_DM_00800]). За исключением базовых проверок NRC согласно [SWS_DM_00101] и [SWS_DM_00103], Diagnostic Manager не выполняет никакой дальнейшей валидации службы; все остальные требуемые проверки NRC должны быть реализованы самим вызываемым приложением ([SWS_DM_01096]).
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
numBytesToReturn
number of bytes DM accepts (due to its internal buffer) for this chunk.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in OperationOutput.responseData will be placed after block SequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticUploadInterface needs to be referenced by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticUploadInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал