Diese Seite wurde vollständig KI-generiert auf Basis von SWS Safe Hardware Acceleration (R25-11) — kein offizieller AUTOSAR-Text und keine automatisch extrahierte API-Seite wie die übrigen Module. Als Interpretation gekennzeichnete Aussagen sind Schlussfolgerungen aus den Quellen.
[AP_SWS_SHWA_00401] texto aún no importadoUpstream: RS_SHWA_00006
class DeviceSelector {...};
Die Spezifikation definiert diesen Klassentyp mit der gezeigten Schnittstelle.
Sirve como interfaz abstracta para evaluar y seleccionar dispositivos en función de una estrategia de selección específica.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4c64c523c424ProcedenciaPreguntas abiertas (3)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como interfaz abstracta para evaluar y seleccionar dispositivos en función de una estrategia de selección específica.
La clase abstracta ara::shwa::DeviceSelector define una interfaz de estrategia para evaluar y seleccionar dispositivos de destino en el subsistema shwa. Permite determinar directamente un dispositivo óptimo a través de SelectDevice(), así como realizar una evaluación comparativa de candidatos a dispositivos individuales mediante operator()[AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. El destructor virtual por defecto garantiza la destrucción segura de las instancias de estrategia derivadas. Entre las restricciones centrales se encuentra que las llamadas no son seguras para subprocesos y que, en caso de fallo, no se aplica ninguna semántica de reversión automática.
Contexto
La clase ara::shwa::DeviceSelector proporciona en el módulo shwa una interfaz abstracta para seleccionar o evaluar dispositivos de hardware o funcionales (Device) sobre la base de una estrategia de selección específica. Actúa como capa de desacoplamiento entre una aplicación de control de nivel superior y los procedimientos de selección concretos. Entre las partes que interactúan se encuentran la aplicación llamadora, la implementación concreta de la estrategia de selección y los objetos de destino de tipo Device. La interfaz define dos operaciones centrales: la selección directa de un dispositivo mediante SelectDevice()[AP_SWS_SHWA_00403] y la evaluación individual comparativa de un dispositivo a través del operador de llamada a función operator()[AP_SWS_SHWA_00404].
Diagrama de contexto: integración de DeviceSelector entre la aplicación y los destinos de dispositivo. Fuentes: [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]
Ciclo de vida
Como clase base abstracta con métodos virtuales puros, DeviceSelector no se puede instanciar directamente. Se asume que las estrategias de selección concretas se implementan como clases derivadas y son creadas por el componente de aplicación. Pregunta Q-4e22b2e57ef141e9 (abierta) La gestión de la propiedad suele corresponder a la aplicación, por ejemplo, mediante punteros inteligentes como std::unique_ptr<DeviceSelector>. Para una destrucción polimórfica limpia de las clases especializadas, la interfaz declara un destructor virtual por defecto ~DeviceSelector()[AP_SWS_SHWA_00402]. Este está designado explícitamente como noexcept, cumpliendo así los requisitos de seguridad frente a excepciones (exception safe) durante la liberación de las instancias [AP_SWS_SHWA_00402].
En lo relativo a la concurrencia y las transiciones de estado, las operaciones de la interfaz están clasificadas como no seguras para subprocesos (not thread-safe) [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. Aunque las funciones miembro están anotadas con const, no deben realizarse accesos concurrentes a la misma instancia desde diferentes subprocesos sin sincronización externa. Además, la especificación no contempla ninguna reversión automática en caso de llamadas erróneas (no_rollback_semantics) [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404].
Ruta de uso
Un flujo de uso típico comprende la inicialización de una instancia de estrategia concreta y la posterior evaluación o selección de dispositivos candidatos. Existen dos rutas de llamada principales para ello:
Selección directa de dispositivos: la aplicación invoca el método sin parámetros SelectDevice()[AP_SWS_SHWA_00403]. La estrategia concreta determina de forma autónoma el dispositivo más adecuado y devuelve un ara::core::Result<Device>.
Evaluación individual iterativa: en algoritmos destinados al filtrado o la ordenación de varios candidatos, la aplicación pasa sucesivamente las instancias respectivas a operator()(const Device &device)[AP_SWS_SHWA_00404]. Es de esperar que la evaluación a través de operator() analice internamente propiedades relevantes o estados operativos del dispositivo transferido. Pregunta Q-8ba0b9b900196d50 (abierta) El valor int devuelto en el ara::core::Result<int> debería reflejar un índice de idoneidad o prioridad a partir del cual el punto de llamada toma una decisión de selección.
Diagrama de secuencia: secuencias de llamada para la evaluación individual y la selección directa, incluido el tratamiento de errores. Fuentes: [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]
Escenarios de error
Ambos métodos de selección están declarados como noexcept y no lanzan excepciones C++ (exception safe). En su lugar, notifican los fallos mediante el canal de error de ara::core::Result. Las aplicaciones siempre deben comprobar el valor de retorno en busca de errores antes de acceder al resultado. Se definen los siguientes estados de error para SelectDevice() y operator():
ShwaErrorCode::kResourceBusy: la operación solicitada no pudo ejecutarse porque el recurso necesario está ocupado actualmente [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404]. En este caso, la aplicación puede reintentar la llamada más adelante o elegir una estrategia alternativa.
ShwaErrorCode::kFeatureNotSupported: se devuelve cuando la implementación subyacente no admite una funcionalidad solicitada para la selección o evaluación [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404].
Dado que no existe semántica de reversión (no_rollback_semantics) [AP_SWS_SHWA_00403], [AP_SWS_SHWA_00404], el sistema permanece en el estado actual en caso de error, y la entidad llamadora es responsable de adoptar las medidas compensatorias oportunas. Además, como precondición para operator(), la referencia de dispositivo pasada debe permanecer válida durante toda la llamada.
Esta guía de clase se basa en la especificación AUTOSAR Adaptive R25-11 (módulo shwa) y ha sido curada de forma automatizada.
Bewertet beziehungsweise selektiert ein Device entsprechend der Selektor-Strategie.
Scope
class ara::shwa::DeviceSelector
Thread Safety
not thread-safe no_rollback_semantics ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy no_rollback_semantics
Exception Safety
exception safe
Errors
ShwaErrorCode::k FeatureNotSupported Used when a requested feature isn’t supported
Request a governed re-review of this record. The record is not changed immediately.
virtual ara::core::Result< int > operator() (const Device &device) const noexcept=0;
Bewertet beziehungsweise selektiert ein Device entsprechend der Selektor-Strategie.
Scope
class ara::shwa::DeviceSelector
Thread Safety
not thread-safe no_rollback_semantics ShwaErrorCode::k ResourceBusy The operation could not be performed because the resource is currently busy no_rollback_semantics
Exception Safety
exception safe
Errors
ShwaErrorCode::k FeatureNotSupported Used when a requested feature isn’t supported
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán