Arquitectura
El sistema se compone de dos aplicaciones independientes que se comunican por IPC:
- Aplicación integradora (la suya): contiene solo el contrato. Llama al HalBridge, que se enlaza por IPC al servicio del HAL.
- Aplicación anfitriona (BCI Pagos): contiene la implementación real (servicio, drivers, SDK del fabricante) y expone el servicio del HAL. Es quien efectivamente opera el hardware.
| Capa | Responsabilidad |
|---|---|
| HalBridge | Puente. Establece y mantiene el binding al servicio, reconecta automáticamente y entrega los binders de cada componente. |
| IServiceHAL | Contrato maestro. Expone un getter por cada componente (getPrinter(), getCamera(), etc.). |
| Interfaces de componente | IPrinter, ICamera, IScanner, IMagneticStripe, IDeviceInfo, INfc, IBeep, IDiagnostic. |
| Listeners | Callbacks AIDL para operaciones asíncronas (impresión, escaneo, banda). |
Flujo de una llamada
- La aplicación integradora obtiene la instancia del HalBridge y se conecta.
- El HalBridge enlaza por IPC con el servicio dentro de BCI Pagos (puede tardar varios segundos la primera vez).
- Una vez conectado, el integrador pide el binder del componente que necesita (por ejemplo, la impresora).
- El integrador invoca el método del componente. Para operaciones asíncronas, registra un listener y espera el callback.
- El servicio valida la identidad y la llave de acceso, opera el hardware y responde.
La conexión no es instantánea. El primer enlace puede tardar entre 5 y 15 segundos, porque el sistema debe iniciar el proceso anfitrión y el SDK del hardware. La interfaz debe observar el estado de conexión de forma continua y no asumir un tiempo fijo.
