Служит интерфейсом для приложений для проверки и выполнения сбросов ЭБУ по UDS в Diagnostic Management.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5b921e2dd86fПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит интерфейсом для приложений для проверки и выполнения сбросов ЭБУ по UDS в Diagnostic Management.
Класс ara::diag::EcuResetRequest представляет интерфейс приложения для обработки служб сброса UDS (Service 0x11) в Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1. После активации с помощью Offer() он принимает запросы на проверку и выполнение перезапусков, а также на управление Rapid Shutdown ([SWS_DM_01016], [SWS_DM_01013], [SWS_DM_01014]). Экземпляры не поддерживают ни копирование, ни перемещение, и все методы специфицированы как непотокобезопасные ([SWS_DM_01010], [SWS_DM_01621]).
Контекст
Интерфейсный класс ara::diag::EcuResetRequest служит для обработки службы UDS ECUReset (Service 0x11) в AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 «Service 0x11 – ECUReset – RapidPowerShutdown sub function». Он позволяет приложению выступать в качестве обработчика запросов на сброс от Diagnostic Management (DM). К задачам относятся активация или деактивация быстрого завершения работы ([SWS_DM_01012]), проверка входящих запросов на сброс ([SWS_DM_01013]), а также фактическое выполнение перезапуска ([SWS_DM_01014]). Участвующими сторонами взаимодействия являются внешний диагностический тестер, экземпляр Diagnostic Management (DM или Diagnostic Server) и реализация EcuResetRequest на стороне приложения.
Экземпляр EcuResetRequest создается с помощью явного конструктора с указанием ara::core::InstanceSpecifier, ссылающегося на PortPrototype элемента DiagnosticEcuResetInterface ([SWS_DM_01010]). Согласно проектным требованиям, класс не поддерживает ни копирование, ни перемещение; конструкторы копирования и перемещения ([SWS_DM_01621], [SWS_DM_01622]), а также соответствующие операторы присваивания ([SWS_DM_01619], [SWS_DM_01620]) явно удалены (=delete). Все методы интерфейса, а также деструктор ([SWS_DM_01011]) специфицированы как not thread-safe ([SWS_DM_01010], [SWS_DM_01016], [SWS_DM_01017]). После инициализации обработчик сначала находится в состоянии, в котором пересылка запросов не происходит, пока регистрация не будет явно активирована с помощью Offer() ([SWS_DM_01016]). Вызовом StopOffer() пересылка запросов снова деактивируется ([SWS_DM_01017]), прежде чем объект может быть уничтожен ([SWS_DM_01011]).
Типичный сценарий использования делится на инициализацию, включение и последующую обработку диагностических запросов:
Инстанцирование и включение: приложение инстанцирует производный класс с подходящим InstanceSpecifier ([SWS_DM_01010]) и вызывает Offer(), чтобы позволить DM пересылать запросы ([SWS_DM_01016]).
Управление Rapid Shutdown: если DM получает запрос UDS для EnableRapidPowerShutdown или DisableRapidPowerShutdown, он вызывает EnableRapidShutdown(enable, metaInfo, cancellationHandler) ([SWS_DM_01020], [SWS_DM_01021], [SWS_DM_01012]). При положительном подтверждении DM подставляет сконфигурированное значение времени отключения в ответ (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 [SWS_DM_01092]).
Запрос на сброс: для всех остальных подфункций сброса UDS DM вызывает метод RequestReset(resetType, id, metaInfo, cancellationHandler) ([SWS_DM_01013]). Инстанцирующий процесс должен тщательно проверить, допустим ли перезапуск частей машины или всей машины в целом ([SWS_DM_01013]). Через cancellationHandler можно запросить статус отмены или зарегистрировать нотификатор ([SWS_DM_01013]).
Выполнение сброса: если запрос принят и сконфигурирована отправка положительного ответа до сброса (respondBeforeReset или отсутствует), Diagnostic Server отправляет положительный ответ UDS и затем вызывает ExecuteReset(metaInfo) (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023], [SWS_DM_01014]). Если вместо этого было сконфигурировано respondAfterReset, положительный ответ отправляется обратно только после перезапуска, при условии, что RequestReset() не сообщил об ошибке (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_00360]).
Отмена регистрации службы: для прекращения пересылки службы приложение вызывает StopOffer() ([SWS_DM_01017]).
В случае ошибки при различных вызовах необходимо учитывать следующие аспекты:
Нарушения в конструкторе: при создании могут возникать нарушения модели, в частности, если InstanceSpecifier не может быть разрешен в модели (InstanceSpecifierMappingIntegrityViolation), ссылается на неверный элемент модели, отсутствует привязка к порту (PortInterfaceMappingViolation), отсутствует связь с процессом (ProcessMappingViolation) или идентификатор уже используется в процессе (InstanceSpecifierAlreadyInUseViolation) ([SWS_DM_01010]).
Ошибки регистрации: если Offer() вызывается, когда служба уже предлагается, метод возвращает ara::core::Result с кодом ошибки DiagOfferErrc::kAlreadyOffered ([SWS_DM_01016]).
Диагностические коды ошибок (NRC): если EnableRapidShutdown, RequestReset или ExecuteReset не могут быть успешно завершены, возвращаемые ими Future возвращают ошибку с соответствующим кодом отрицательного ответа ISO 14229-1 (NRC) через DiagUdsNrcErrc ([SWS_DM_01012], [SWS_DM_01013], [SWS_DM_01014]). Следует учитывать: если respondToReset установлено в respondBeforeReset или не сконфигурировано, ошибка в ExecuteReset() больше не влияет на диагностический ответ, поскольку положительное подтверждение уже было отправлено тестеру ранее ([SWS_DM_01014], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023]).
Настоящее руководство основано исключительно на спецификациях AUTOSAR Adaptive Platform R25-11.
Called for any EcuReset subFunction, except En-/DisableRapidShutdown. The process, which is instantiating this interface, needs to evaluate carefully if the request to restart parts or the whole machine. Once the request to reset is accepted, the process, which is instantiating this interface, has to rely on this decision for the ExecuteReset() trigger.
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 DiagnosticEcuResetInterface 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 DiagnosticEcuResetInterface.
Request a governed re-review of this record. The record is not changed immediately.
Interface for subFunction En-/DisableRapidShutdown.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 64d1feb19eceПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и контекст вызова
Чисто виртуальный метод EnableRapidShutdown класса ara::diag::EcuResetRequest служит интерфейсом для обработки субфункций UDS для быстрого завершения работы ([SWS_DM_01012]). При входящих диагностических запросах службы 0x11 (ECUReset) Diagnostic Manager (DM) вызывает эту функцию: для EnableRapidPowerShutdown с аргументом enable = true ([SWS_DM_01020]), а для DisableRapidPowerShutdown — с enable = false ([SWS_DM_01021]). Это отличает обе эти субфункции от всех остальных служб ECUReset, которые вместо этого инициируют RequestReset ([SWS_DM_00235]).
enable: активирует быстрое завершение работы при true и деактивирует его при false.
metaInfo: передает метаинформацию о диагностическом запросе.
cancellationHandler: служит для контроля статуса отмены через cancellationHandler.IsCanceled() или регистрации нотификатора через cancellationHandler.SetNotifier() на случай прерывания текущей диагностической сессии.
Семантика, обработка ошибок и параллелизм
Интерфейс возвращает ara::core::Future<void>; таким образом, фактическая обработка, предположительно, выполняется асинхронно в фоновом режиме ([SWS_DM_01012]). Вопрос Q-ee781913ae88fabb (открытый) В случае успеха future не возвращает значения. В случае ошибки необходимо установить подходящий Negative Response Code (NRC) согласно ISO 14229-1 с помощью DiagUdsNrcErrc (AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.1 «EnableRapidShutdown»). Функция специфицирована как noexcept и безопасная относительно исключений (exception safe), однако считается непотокобезопасной (not thread-safe), из-за чего параллельных вызовов на одном и том же экземпляре необходимо избегать на стороне приложения ([SWS_DM_01012]).
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
When enable is set to true the rapid shutdown will be enabled, setting enable to false will disable rapid shutdown.
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.
process which is instantiating this interface, has to execute the requested reset.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5a6dac3995bcПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ExecuteReset интерфейса ara::diag::EcuResetRequest вызывается Diagnostic Server (DM), чтобы фактически инициировать в реализующем процессе сброс ECU, ранее принятый через [SWS_DM_01013][SWS_DM_01014]. В качестве параметра передается metaInfo запроса. Функция специфицирована как непотокобезопасная (not thread-safe), однако безопасная относительно исключений (exception safe) [SWS_DM_01014].
Момент вызова сервером Diagnostic Server зависит от конфигурационного параметра DiagnosticEcuResetClass.respondToReset:
Если параметр отсутствует или установлен в respondBeforeReset, Diagnostic Server вызывает ExecuteReset только после отправки положительного ответа UDS [SWS_DM_01023].
Если сконфигурирован respondAfterReset, вызов ExecuteReset выполняется напрямую и без предварительной отправки положительного ответа [SWS_DM_01090].
Функция возвращает ara::core::Future<void>[SWS_DM_01014]. Если входящие UDS-запросы были заблокированы после принятия сброса [SWS_DM_01022], Diagnostic Server снова снимает эту блокировку, как только возвращенный методом ExecuteResetFuture завершится [SWS_DM_01309]. Возможные ошибки сигнализируются через NRC стандарта ISO 14229-1 с помощью DiagUdsNrcErrc в Future; однако при конфигурации respondBeforeReset переданная ошибка не имеет действия [SWS_DM_01014].
Этот текст создан ИИ и основан на AUTOSAR Release R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Return nothing or an error. In case the parameter DiagnosticEcu ResetClass.respondToReset is either not present or present and set to respondBeforeReset, a given error has no effect.
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 Offer will enable the DM to forward request messages to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c497a60736afПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
С помощью метода ara::diag::EcuResetRequest::Offer ([SWS_DM_01016]) Adaptive Application сигнализирует Diagnostic Management (DM) о готовности принимать входящие диагностические запросы на сброс ECU. Синхронным вызовом DM авторизуется на пересылку соответствующих сообщений запроса этому обработчику ([SWS_DM_01016]). Вызов, как правило, должен выполняться на этапе инициализации приложения до того, как диагностические запросы должны обрабатываться DM. Вопрос Q-93d794e6b1dba23e (открытый)
Вызов и обработка ошибок
Функция не имеет входных параметров, объявлена как noexcept и гарантирует безопасность исключений ([SWS_DM_01016]). В качестве возвращаемого значения служит ara::core::Result<void>. Если предоставление не удается, поскольку служба уже была предложена ранее, метод возвращает код ошибки DiagOfferErrc::kAlreadyOffered с семантикой отката ([SWS_DM_01016]).
Параллелизм и взаимодействие
Согласно спецификации функция классифицирована как not thread-safe ([SWS_DM_01016]). Поэтому вызовы на одном и том же экземпляре ara::diag::EcuResetRequest должны синхронизироваться на стороне приложения. Паттерн предоставления соответствует единообразному дизайну интерфейсов в Adaptive Diagnostic Management, аналогично тому, как это определено для других обработчиков, таких как ara::diag::GenericUDSService::Offer ([SWS_DM_00619]), ara::diag::GenericRoutine::Offer ([SWS_DM_00557]) или ara::diag::CommunicationControl::Offer ([SWS_DM_00809]). Хотя наименование ориентировано на ara::com, речь идет о независимой реализации Diagnostic Management (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
Это указание по использованию создано автоматически и опирается на спецификацию AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Called for any EcuReset subFunction, except En-/DisableRapidShutdown. The process, which is instantiating this interface, needs to evaluate carefully if the request to restart parts or the whole machine. Once the request to reset is accepted, the process, which is instantiating this interface, has to rely on this decision for the ExecuteReset() trigger.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4ec2f9bf44c2Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ara::diag::EcuResetRequest::RequestReset (#include "ara/diag/ecu_reset_request.h") вызывается диагностическим сервером, как только принимается UDS-запрос для службы 0x11 (ECUReset) ([SWS_DM_00235], SWS Diagnostics §7.3.2.8.5.2 «Service 0x11 – ECUReset – all other sub functions»). Это применимо ко всем подфункциям сброса, за исключением EnableRapidPowerShutdown и DisableRapidPowerShutdown ([SWS_DM_01013]). Инстанцирующее приложение перед подтверждением должно тщательно проверить, допускается ли выполнение перезапуска частей или всей машины ([SWS_DM_01013]).
Параметры и асинхронный интерфейс
Вызов передает тип сброса resetType, опциональный идентификатор id (обрабатывается только в том случае, если resetType установлено в custom), метаданные metaInfo, а также cancellationHandler ([SWS_DM_01013]). Через cancellationHandler приложение может с помощью IsCanceled определить статус отмены или посредством SetNotifier зарегистрировать функцию обратного вызова для событий отмены ([SWS_DM_01013]). Результат предоставляется асинхронно через ara::core::Future<void> ([SWS_DM_01013]).
Обработка ошибок, управление последовательностью операций и параллелизм
Если сброс не может быть принят, в Future необходимо вернуть подходящий код ошибки NRC через DiagUdsNrcErrc согласно ISO 14229-1 ([SWS_DM_01013]); кроме того, учитывается отправка ApApplicationError ([SWS_DM_00360]). Если запрос принят, это решение является обязательным для последующего триггера ExecuteReset ([SWS_DM_01013]), и диагностический сервер игнорирует последующие входящие UDS-запросы ([SWS_DM_01022]) до тех пор, пока блокировка не будет снята после завершения ExecuteReset ([SWS_DM_01309]). Фактическое выполнение сброса происходит в зависимости от DiagnosticEcuResetClass.respondToReset либо после отправки положительного UDS-ответа ([SWS_DM_01023]), либо непосредственно перед перезапуском ([SWS_DM_01090]). Функция специфицирована как exception safe, однако явно как not thread-safe ([SWS_DM_01013]).
Это указание по использованию основано на спецификации AUTOSAR Adaptive Platform Release R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
id of the custom reset type. Will only be evaluated when resetType is "custom".
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.
This StopOffer will disable the forwarding of request messages from DM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b9e940cd3ae2ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод ara::diag::EcuResetRequest::StopOffer завершает предоставление сервиса сброса и деактивирует пересылку входящих сообщений-запросов от Diagnostic Management (DM) в приложение ([SWS_DM_01017], AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.5 «StopOffer»). Функция имеет сигнатуру void StopOffer() noexcept, не ожидает параметров и не возвращает значения.
Обработка ошибок и поведение при исключениях
Операция объявлена как noexcept и по спецификации классифицирована как исключениебезопасная (exception safe) ([SWS_DM_01017]). Вызывающей стороне не возвращаются ни исключения, ни специфические коды ошибок.
Параллелизм и ограничения
Метод явно классифицирован как непотокобезопасный (not thread-safe) ([SWS_DM_01017]). Вызывающие стороны должны синхронизировать конкурирующие обращения к одному и тому же экземпляру ara::diag::EcuResetRequest на стороне приложения. С прикладной точки зрения вызов, вероятно, предусмотрен только после предварительного предложения обработчика, чтобы упорядоченно остановить приём дальнейших запросов на сброс. Вопрос Q-25f37b77dc8cf80f (открытый)
Взаимодействие
Деактивация пересылки через StopOffer следует единому интерфейсному паттерну функциональных диагностических обработчиков в Adaptive AUTOSAR, аналогично тому, как это определено и для других сервисов, таких как CommunicationControl ([SWS_DM_00810]) или DownloadService ([SWS_DM_00793]).
Это указание по использованию было сгенерировано ИИ на основе спецификации для AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал