Sirve como interfaz para que las aplicaciones verifiquen y ejecuten reinicios de unidades de control UDS en Diagnostic Management.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5b921e2dd86fProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como interfaz para que las aplicaciones verifiquen y ejecuten reinicios de unidades de control UDS en Diagnostic Management.
La clase ara::diag::EcuResetRequest representa la interfaz de aplicación para el procesamiento de servicios de reinicio UDS (Service 0x11) en Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1. Tras la activación mediante Offer(), recibe solicitudes para la verificación y ejecución de reinicios, así como para el control de parada rápida ([SWS_DM_01016], [SWS_DM_01013], [SWS_DM_01014]). Las instancias no son copiables ni movibles, y todos los métodos están especificados como no seguros para hilos ([SWS_DM_01010], [SWS_DM_01621]).
Contexto
La clase de interfaz ara::diag::EcuResetRequest sirve para el procesamiento del servicio UDS ECUReset (Service 0x11) en AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 «Service 0x11 – ECUReset – RapidPowerShutdown sub function». Permite a una aplicación actuar como manejador de solicitudes de reinicio de Diagnostic Management (DM). Entre las tareas se encuentran la activación o desactivación de la parada rápida ([SWS_DM_01012]), la verificación de peticiones de reinicio entrantes ([SWS_DM_01013]) y la ejecución propiamente dicha del reinicio ([SWS_DM_01014]). Los interlocutores que intervienen son el comprobador de diagnóstico externo, la instancia de Diagnostic Management (DM o servidor de diagnóstico) y la implementación de EcuResetRequest en el lado de la aplicación.
Una instancia de EcuResetRequest se crea mediante su constructor explícito especificando un ara::core::InstanceSpecifier que referencia a un PortPrototype de un DiagnosticEcuResetInterface ([SWS_DM_01010]). Conforme a las directrices de diseño, la clase no es copiable ni movible; los constructores de copia y de movimiento ([SWS_DM_01621], [SWS_DM_01622]), así como los operadores de asignación correspondientes ([SWS_DM_01619], [SWS_DM_01620]) están explícitamente eliminados (=delete). Todos los métodos de interfaz, así como el destructor ([SWS_DM_01011]), están especificados como not thread-safe ([SWS_DM_01010], [SWS_DM_01016], [SWS_DM_01017]). Tras la inicialización, el manejador se encuentra inicialmente en el estado en el que no se produce reenvío de solicitudes, hasta que el registro se activa explícitamente mediante Offer() ([SWS_DM_01016]). Mediante la llamada a StopOffer() se vuelve a desactivar el reenvío de solicitudes ([SWS_DM_01017]), antes de que el objeto pueda ser destruido ([SWS_DM_01011]).
Una ruta de uso típica se divide en inicialización, habilitación y posterior procesamiento de solicitudes de diagnóstico:
Instanciación y habilitación: la aplicación instancia la clase derivada con el InstanceSpecifier adecuado ([SWS_DM_01010]) e invoca Offer() para permitir al DM el reenvío de solicitudes ([SWS_DM_01016]).
Control de parada rápida: si el DM recibe una solicitud UDS para EnableRapidPowerShutdown o DisableRapidPowerShutdown, invoca EnableRapidShutdown(enable, metaInfo, cancellationHandler) ([SWS_DM_01020], [SWS_DM_01021], [SWS_DM_01012]). En caso de confirmación positiva, el DM inserta en la respuesta el valor configurado para el tiempo de desconexión (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.1 [SWS_DM_01092]).
Petición de reinicio: para todas las demás subfunciones de reinicio UDS, el DM invoca el método RequestReset(resetType, id, metaInfo, cancellationHandler) ([SWS_DM_01013]). El proceso que realiza la instanciación debe verificar cuidadosamente si se permite un reinicio de partes o de la totalidad de la máquina ([SWS_DM_01013]). A través del cancellationHandler se puede consultar el estado de cancelación o registrar un notificador ([SWS_DM_01013]).
Ejecución del reinicio: si se acepta la solicitud y está configurado que la respuesta positiva se envíe antes del reinicio (respondBeforeReset o bien no está presente), el servidor de diagnóstico envía la respuesta UDS positiva e invoca a continuación ExecuteReset(metaInfo) (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023], [SWS_DM_01014]). Si en su lugar se configuró respondAfterReset, la respuesta positiva no se devuelve hasta después del rearranque, siempre que RequestReset() no haya notificado ningún error (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_00360]).
Baja del servicio: para finalizar el reenvío del servicio, la aplicación invoca StopOffer() ([SWS_DM_01017]).
En caso de error, deben tenerse en cuenta los siguientes aspectos en las distintas llamadas:
Violaciones del constructor: durante la creación pueden producirse violaciones del modelo, entre otras cosas si el InstanceSpecifier no se puede resolver en el modelo (InstanceSpecifierMappingIntegrityViolation), referencia a un elemento de modelo incorrecto, falta la asignación de puerto (PortInterfaceMappingViolation), no existe referencia a ningún proceso (ProcessMappingViolation) o el identificador ya está en uso en el proceso (InstanceSpecifierAlreadyInUseViolation) ([SWS_DM_01010]).
Error de registro: si se invoca Offer() a pesar de que el servicio ya se está ofreciendo, el método devuelve un ara::core::Result con el código de error DiagOfferErrc::kAlreadyOffered ([SWS_DM_01016]).
Códigos de error de diagnóstico (NRC): si EnableRapidShutdown, RequestReset o ExecuteReset no pueden completarse con éxito, sus futures de retorno devuelven un error con un Negative Response Code (NRC) de ISO 14229-1 adecuado a través de DiagUdsNrcErrc ([SWS_DM_01012], [SWS_DM_01013], [SWS_DM_01014]). Debe tenerse en cuenta: si respondToReset está establecido en respondBeforeReset o no está configurado, un error en ExecuteReset() ya no tiene efecto alguno sobre la respuesta de diagnóstico, ya que la confirmación positiva se envió previamente al comprobador ([SWS_DM_01014], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.5.2 [SWS_DM_01023]).
Esta guía se basa exclusivamente en las especificaciones de 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 64d1feb19eceProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Uso y contexto de llamada
El método puramente virtual EnableRapidShutdown de la clase ara::diag::EcuResetRequest sirve como interfaz para gestionar las subfunciones UDS para el apagado rápido ([SWS_DM_01012]). Ante peticiones de diagnóstico entrantes del servicio 0x11 (ECUReset), el Diagnostic Manager (DM) llama a esta función: para EnableRapidPowerShutdown con el argumento enable = true ([SWS_DM_01020]) y para DisableRapidPowerShutdown con enable = false ([SWS_DM_01021]). Esto distingue estas dos subfunciones de todos los demás servicios ECUReset, que en su lugar activan RequestReset ([SWS_DM_00235]).
enable: activa el apagado rápido con true y lo desactiva con false.
metaInfo: transfiere metainformación sobre la petición de diagnóstico.
cancellationHandler: sirve para supervisar el estado de cancelación vía cancellationHandler.IsCanceled() o para registrar un notificador mediante cancellationHandler.SetNotifier() en caso de que se cancele la conversación de diagnóstico en curso.
Semántica, gestión de errores y concurrencia
La interfaz devuelve un ara::core::Future<void>; por tanto, el procesamiento propiamente dicho se realiza presumiblemente de forma asíncrona en segundo plano ([SWS_DM_01012]). Pregunta Q-ee781913ae88fabb (abierta) En caso de éxito, el future no entrega ningún valor. En caso de error, debe establecerse un Negative Response Code (NRC) adecuado conforme a ISO 14229-1 mediante DiagUdsNrcErrc (AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.1 «EnableRapidShutdown»). La función está especificada como noexcept y segura frente a excepciones (exception safe), pero se considera no segura para subprocesos (not thread-safe), por lo que las llamadas concurrentes en la misma instancia deben evitarse en el lado de la aplicación ([SWS_DM_01012]).
Este texto ha sido generado por una IA sobre la base de la especificación AUTOSAR R25-11.
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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5a6dac3995bcProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El Diagnostic Server (DM) llama al método ExecuteReset de la interfaz ara::diag::EcuResetRequest para desencadenar de forma efectiva en el proceso de implementación el reinicio de la ECU previamente aceptado mediante [SWS_DM_01013][SWS_DM_01014]. Como parámetro se transfiere el metaInfo de la petición. La función está especificada como no segura para subprocesos (not thread-safe), pero segura frente a excepciones (exception safe) [SWS_DM_01014].
El momento de la llamada por parte del Diagnostic Server depende del parámetro de configuración DiagnosticEcuResetClass.respondToReset:
Si el parámetro no existe o está establecido en respondBeforeReset, el Diagnostic Server llama a ExecuteReset solo después de que se haya enviado la respuesta UDS positiva [SWS_DM_01023].
Si está configurado respondAfterReset, la llamada a ExecuteReset se efectúa directamente y sin enviar previamente la respuesta positiva [SWS_DM_01090].
La función devuelve un ara::core::Future<void>[SWS_DM_01014]. Si las peticiones UDS entrantes se bloquearon tras la aceptación del reinicio [SWS_DM_01022], el Diagnostic Server levanta de nuevo este bloqueo tan pronto como concluye el Future devuelto por ExecuteReset[SWS_DM_01309]. Los posibles errores se señalizan a través de NRC de ISO 14229-1 mediante DiagUdsNrcErrc en el Future; sin embargo, con la configuración respondBeforeReset, un error transferido no tiene efecto [SWS_DM_01014].
Este texto ha sido elaborado por una IA y se basa en AUTOSAR Release R25-11.
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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: c497a60736afProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Con el método ara::diag::EcuResetRequest::Offer ([SWS_DM_01016]), una Adaptive Application señaliza a Diagnostic Management (DM) que está lista para recibir peticiones de diagnóstico entrantes para un reinicio de la ECU. Mediante la llamada síncrona, se autoriza al DM a reenviar los correspondientes mensajes de petición a este manejador ([SWS_DM_01016]). La llamada debería tener lugar típicamente durante la fase de inicialización de la aplicación, antes de que el DM deba procesar peticiones de diagnóstico. Pregunta Q-93d794e6b1dba23e (abierta)
Llamada y gestión de errores
La función no posee parámetros de entrada, está declarada como noexcept y garantiza seguridad frente a excepciones ([SWS_DM_01016]). Como valor de retorno sirve un ara::core::Result<void>. Si la provisión falla porque el servicio ya se había ofrecido con anterioridad, el método devuelve el código de error DiagOfferErrc::kAlreadyOffered con semántica de reversión ([SWS_DM_01016]).
Concurrencia e interacción
Según la especificación, la función está catalogada como not thread-safe ([SWS_DM_01016]). Por lo tanto, las llamadas en la misma instancia de ara::diag::EcuResetRequest deben sincronizarse en el lado de la aplicación. El patrón de provisión corresponde al diseño uniforme de interfaces en Adaptive Diagnostic Management, tal como se define también de manera análoga para otros manejadores como ara::diag::GenericUDSService::Offer ([SWS_DM_00619]), ara::diag::GenericRoutine::Offer ([SWS_DM_00557]) o ara::diag::CommunicationControl::Offer ([SWS_DM_00809]). Aunque la denominación se basa en ara::com, se trata de una implementación independiente de Diagnostic Management (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
Esta nota de uso se ha creado de manera automatizada y se fundamenta en la especificación AUTOSAR Adaptive 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4ec2f9bf44c2Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método ara::diag::EcuResetRequest::RequestReset (#include "ara/diag/ecu_reset_request.h") es llamado por el servidor de diagnóstico en cuanto se recibe una solicitud UDS para el servicio 0x11 (ECUReset) ([SWS_DM_00235], SWS Diagnostics §7.3.2.8.5.2 «Service 0x11 – ECUReset – all other sub functions»). Esto se aplica a todas las subfunciones de reinicio con excepción de EnableRapidPowerShutdown y DisableRapidPowerShutdown ([SWS_DM_01013]). La aplicación instanciadora debe comprobar minuciosamente antes de la aceptación si se permite realizar un reinicio de partes o de la totalidad de la máquina ([SWS_DM_01013]).
Parámetros e interfaz asíncrona
La llamada transfiere el tipo de reinicio resetType, un identificador opcional id (solo se evalúa si resetType está en custom), los metadatos metaInfo así como un cancellationHandler ([SWS_DM_01013]). A través del cancellationHandler, la aplicación puede determinar el estado de cancelación mediante IsCanceled o registrar una función de retrollamada para eventos de cancelación mediante SetNotifier ([SWS_DM_01013]). El resultado se proporciona de forma asíncrona a través de ara::core::Future<void> ([SWS_DM_01013]).
Tratamiento de errores, control de flujo y concurrencia
Si el reinicio no puede ser aceptado, debe devolverse en el Future un código de error NRC adecuado a través de DiagUdsNrcErrc conforme a ISO 14229-1 ([SWS_DM_01013]); además, se tiene en cuenta la notificación de un ApApplicationError ([SWS_DM_00360]). Si se acepta la solicitud, esta decisión es vinculante para el posterior disparador ExecuteReset ([SWS_DM_01013]), y el servidor de diagnóstico ignora las solicitudes UDS entrantes posteriores ([SWS_DM_01022]) hasta que se levante el bloqueo tras finalizar ExecuteReset ([SWS_DM_01309]). La ejecución real del reinicio se lleva a cabo en función de DiagnosticEcuResetClass.respondToReset, bien tras el envío de la respuesta UDS positiva ([SWS_DM_01023]) o directamente antes del reinicio ([SWS_DM_01090]). La función está especificada como exception safe, pero explícitamente como not thread-safe ([SWS_DM_01013]).
Esta nota de uso se basa en la especificación AUTOSAR Adaptive Platform Release R25-11.
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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: b9e940cd3ae2ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método ara::diag::EcuResetRequest::StopOffer finaliza la provisión del servicio de reinicio y desactiva el reenvío de mensajes de petición entrantes desde el Diagnostic Management (DM) a la aplicación ([SWS_DM_01017], AUTOSAR_AP_SWS_Diagnostics §8.16.3.1.3.5 «StopOffer»). La función posee la signatura void StopOffer() noexcept, no espera parámetros y no devuelve ningún valor de retorno.
Tratamiento de errores y comportamiento ante excepciones
La operación está declarada como noexcept y clasificada según la especificación como segura frente a excepciones (exception safe) ([SWS_DM_01017]). Ni se lanzan excepciones ni se devuelven códigos de error específicos al llamador.
Concurrencia y restricciones
El método está clasificado explícitamente como no seguro para subprocesos (not thread-safe) ([SWS_DM_01017]). Los llamadores deben sincronizar del lado de la aplicación los accesos concurrentes a la misma instancia de ara::diag::EcuResetRequest. Desde el punto de vista técnico, es probable que la llamada esté prevista únicamente tras haber ofrecido previamente el manejador, a fin de detener de forma ordenada la recepción de más peticiones de reinicio. Pregunta Q-25f37b77dc8cf80f (abierta)
Interacción
La desactivación del reenvío mediante StopOffer sigue el patrón de interfaz uniforme de los manejadores de diagnóstico funcionales en Adaptive AUTOSAR, tal como está definido de forma análoga también para otros servicios como CommunicationControl ([SWS_DM_00810]) o DownloadService ([SWS_DM_00793]).
Esta nota de uso ha sido generada por una IA sobre la base de la especificación para AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán