Permite a las aplicaciones la generación y verificación de pruebas de proximidad para operaciones de diagnóstico SOVD protegidas.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7c7c088635a6ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a las aplicaciones la generación y verificación de pruebas de proximidad para operaciones de diagnóstico SOVD protegidas.
La clase de interfaz sirve en la AUTOSAR Adaptive Platform para la implementación de comprobaciones de proximidad para operaciones SOVD en el entorno de Diagnostics [SWS_DM_01481]. Las aplicaciones derivan de la clase, activan el reenvío por parte de Diagnostic Management a través de Offer() y proporcionan de forma asíncrona el desafío requerido, así como su posterior validación [SWS_DM_01478]. Las llamadas concurrentes a los métodos de validación se rigen por el modo de concurrencia seleccionado durante la construcción, mientras que el registro y la destrucción no son seguros para subprocesos.
Contexto
La clase ara::diag::SovdProximityChallenge[SWS_DM_01481] sirve en la AUTOSAR Adaptive Platform para la implementación en el lado de la aplicación de la interfaz para pruebas de proximidad (Proximity Challenge) en el entorno de Service-Oriented Vehicle Diagnostics (SOVD). Constituye el puente entre AUTOSAR Diagnostic Management (DM o Diagnostic Server) y la propia aplicación del vehículo, la cual proporciona la lógica de seguridad para comprobaciones de proximidad físicas o criptográficas AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Si para una operación SOVD está configurado que se requiere una prueba de proximidad (el atributo proximityProofRequired es TRUE), Diagnostic Management solicita a la aplicación un desafío durante el procesamiento de una solicitud de diagnóstico y hace que se verifique la respuesta transmitida por el cliente [SWS_DM_01398]. En esta asociación participan tres partes esenciales: el cliente SOVD externo, el Diagnostic Management intermediario y la aplicación usuaria.
La instanciación de la clase manejadora se realiza a través del constructor SovdProximityChallenge[SWS_DM_01480]. Este vincula la instancia a un ara::core::InstanceSpecifier definido en el manifiesto y determina, mediante el parámetro ConcurrencyType, si la ejecución posterior se realiza de forma concurrente (kConcurrent) o secuencial (kNotConcurrent). El propio constructor está especificado como seguro para subprocesos [SWS_DM_01480]. Tras la creación del objeto, el manejador se encuentra inicialmente en estado pasivo. Solo mediante la llamada explícita a Offer()[SWS_DM_01478] se autoriza a Diagnostic Management a reenviar solicitudes a la instancia de la aplicación.
El reenvío se puede desactivar de nuevo en cualquier momento mediante StopOffer()[SWS_DM_01495]. Ni Offer(), StopOffer() ni el destructor virtual ~SovdProximityChallenge()[SWS_DM_01479] son seguros para subprocesos. Interpretación: antes de la destrucción del objeto, es probable que sea necesario llamar a StopOffer() para evitar un reenvío a un objeto en proceso de destrucción. Pregunta Q-b4c66854163f433e (abierta) Además, en la práctica, es de esperar que una instancia de aplicación se mantenga típicamente durante todo el tiempo de ejecución del proceso de diagnóstico para proteger de forma continua las operaciones SOVD. La seguridad para subprocesos de los métodos de consulta y validación propiamente dichos GetChallenge()[SWS_DM_01494] y ValidateResponse()[SWS_DM_01493] se controla mediante el ConcurrencyType pasado en el constructor.
Ruta de uso
Tras la inicialización exitosa y la provisión del servicio mediante Offer()[SWS_DM_01478], la clase responde a las solicitudes de Diagnostic Management. Si un cliente SOVD solicita una operación protegida, el DM llama al método virtual puro GetChallenge()[SWS_DM_01494]. La aplicación genera el token de proximidad y lo devuelve junto con el momento de validez (valid_until) de forma asíncrona a través de un ara::core::Future<SovdProximityChallengeType>[SWS_DM_01494]. Por defecto, se asume que en cada momento solo existe un único desafío que es válido para todos los clientes y operaciones, fijándose su tiempo de vida típicamente de forma fija (p. ej., en dos minutos) AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Para escenarios más complejos, la aplicación puede evaluar el objeto ara::diag::MetaInfo transmitido para realizar comprobaciones específicas del cliente o de la operación AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge».
Diagnostic Management transmite el atributo proximity_challenge en el cuerpo de la respuesta al cliente [SWS_DM_01398]. Si el cliente responde con una prueba de proximidad, el DM reenvía estos datos a través de ValidateResponse()[SWS_DM_01493]. El área de memoria transmitida proximityResponse permanece válida hasta que se cumpla el ara::core::Future<ProximityChallengeValidationResultType> devuelto o se cancele el procesamiento [SWS_DM_01493]. Antes de apagar el proceso, el servicio se da de baja mediante StopOffer()[SWS_DM_01495].
Ya durante la creación del objeto mediante el constructor [SWS_DM_01480], el framework comprueba la consistencia del modelo y puede notificar las siguientes infracciones: InstanceSpecifierMappingIntegrityViolation (el identificador no se puede resolver o no hace referencia a un prototipo de puerto), PortInterfaceMappingViolation (el prototipo de puerto no está tipificado como DiagnosticSovdProximityChallengeInterface), ProcessMappingViolation (no se encontró ningún proceso modelado adecuado) o InstanceSpecifierAlreadyInUseViolation (el identificador ya se utiliza en el proceso) [SWS_DM_01480].
Al llamar a Offer()[SWS_DM_01478], el ara::core::Result<void> resultante devuelve códigos de error estandarizados en caso de fallo: DiagOfferErrc::kAlreadyOffered, si el servicio ya se ofrece activamente para este puerto, o DiagOfferErrc::kConfigurationMismatch, si la configuración del monitor no coincide con la DEXT. Para GetChallenge()[SWS_DM_01494] y ValidateResponse()[SWS_DM_01493] no hay definidos códigos de error estandarizados. Todas las funciones miembro de la clase están declaradas como noexcept y garantizan la seguridad frente a excepciones.
Esta guía se basa en la especificación AUTOSAR Adaptive Platform Release R25-11.
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: f009f89ccf76ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método síncrono Offer de la clase ara::diag::SovdProximityChallenge (definido en #include "ara/diag/sovd_proximity_challenge.h") registra el gestor ante Diagnostic Management (DM) y permite que este reenvíe mensajes de solicitud (request messages) entrantes a la instancia del gestor [SWS_DM_01478]. La llamada se realiza sin parámetros y está especificada con noexcept[SWS_DM_01478].
Como valor de retorno sirve ara::core::Result<void>[SWS_DM_01478]. En caso de error, el método devuelve un código de error específico con semántica de reversión [SWS_DM_01478]:
DiagOfferErrc::kAlreadyOffered: el servicio ya se ha ofrecido a través de la instancia [SWS_DM_01478].
DiagOfferErrc::kConfigurationMismatch: la configuración del gestor no coincide con los datos DEXT [SWS_DM_01478].
En relación con la seguridad de ejecución, el método está declarado como exception safe, pero se considera explícitamente como not thread-safe[SWS_DM_01478]. Por lo tanto, las llamadas paralelas en la misma instancia deben ser sincronizadas por la aplicación que realiza la llamada. El patrón de provisión corresponde al principio de activación uniforme de los gestores del DM, tal como se aplica, entre otros, también en ara::diag::GenericRoutine[SWS_DM_00557], ara::diag::GenericUDSService[SWS_DM_00619] y ara::diag::CommunicationControl[SWS_DM_00809]. Interpretación: mientras Offer no se haya ejecutado con éxito, el DM presumiblemente no reenvía las solicitudes de Proximity-Challenge al gestor. Pregunta Q-320a80aca81ef460 (abierta)
Esta nota de uso se ha generado automáticamente sobre la base de AUTOSAR R25-11.
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 referenced by a pingViolation DiagnosticSovdProximityChallengePortMapping needs to be typed by a DiagnosticSovdProximityChallengeInterface. 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
instanceSpecifier
InstanceSpecifier to a PortPrototype of a DiagnosticSovdProximityChallengeInterface service instance in the manifest.
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.
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: d973f1eccf91ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método StopOffer de la clase ara::diag::SovdProximityChallenge desactiva el reenvío de mensajes de solicitud desde Diagnostic Management (DM) a esta instancia de servicio ([SWS_DM_01495]). La interfaz se proporciona a través del encabezado ara/diag/sovd_proximity_challenge.h.
Uso y contexto de ejecución
La función se invoca de forma síncrona, no acepta parámetros de entrada y no posee valor de retorno ([SWS_DM_01495]). Tras la ejecución, el DM ya no reenvía más solicitudes de Proximity-Challenge a la aplicación.
Tratamiento de errores y seguridad frente a excepciones
El método está declarado como noexcept y es completamente seguro frente a excepciones (exception safe) ([SWS_DM_01495]). No se prevén estados de error ni códigos de error específicos para esta llamada.
Concurrencia y ciclo de vida
En lo que respecta a la ejecución, StopOffer está especificado expresamente como no seguro para subprocesos (not thread-safe) ([SWS_DM_01495]). Las llamadas paralelas en la misma instancia deben sincronizarse en el lado del llamador. Interpretación: es probable que la llamada se produzca normalmente al apagar el componente o cuando se suspenda temporalmente la comprobación de Proximity-Challenge. Pregunta Q-7b8910a8d5f6dc05 (abierta)
This function validates the proximity response sent by the client.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 0179eb4520d7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método virtual puro ara::diag::SovdProximityChallenge::ValidateResponse sirve para validar una respuesta de proximidad [SWS_DM_01493] transmitida por el cliente. La instancia del servidor de diagnóstico llama a este método tan pronto como un cuerpo de solicitud SOVD contiene el atributo proximity_response[SWS_DM_01395], como por ejemplo en solicitudes para finalizar la ejecución de una operación [SWS_DM_01391]. Se transfieren el span de bytes proximityResponse y el objeto de contexto metaInfo[SWS_DM_01493]. Este último permite que la aplicación realice comprobaciones específicas del cliente o de la operación en caso necesario SWS Diagnostics p. 215. El resultado de la validación se proporciona de forma asíncrona a través de un ara::core::Future<ProximityChallengeValidationResultType>[SWS_DM_01493].
La interfaz está declarada como noexcept y con seguridad frente a excepciones (exception safe) [SWS_DM_01493]. No se especifican códigos de error estandarizados [SWS_DM_01493]. Interpretación: es probable que un fallo en la validación de proximidad se represente a través del tipo de retorno ProximityChallengeValidationResultType o del canal de error del Future. Pregunta Q-1be6378537b59f2b (abierta)
En cuanto a la concurrencia, la seguridad para subprocesos es condicional (conditional): que la implementación deba ser segura para subprocesos o no se controla mediante el ConcurrencyType establecido en el constructor [SWS_DM_01493]. Los datos transferidos en el búfer proximityResponse permanecen válidos hasta que se cumpla la Promise correspondiente o se cancele el procesamiento mediante un CancellationHandler [SWS_DM_01493].
La función interactúa con la provisión del challenge a través de GetChallenge[SWS_DM_01398]. Solo tras una validación correcta de la respuesta de proximidad, el servidor ejecuta las acciones solicitadas, como la finalización de una operación a través de Terminate en la SovdOperationExecution[SWS_DM_02179].
Esta indicación de uso se generó automáticamente a partir de la especificación AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán