Architecture ============ Overview -------- The project follows a ``src/`` layout and is organized into clearly separated functional layers. Package structure ----------------- ``src/dlab`` contains the following main subpackages: - ``ui`` Graphical user interface components (windows, tabs, dialogs). - ``ui.scans`` Scan orchestration logic and scan-specific UI elements. - ``hardware`` Hardware abstraction layer. - ``hardware.wrappers`` High-level Python wrappers around vendor SDKs and drivers. - ``core`` Shared infrastructure (device registry). - ``utils`` Generic utility functions. Execution flow -------------- 1. A user action is triggered in the GUI. 2. The UI layer delegates the action to a scan or controller module. 3. The scan logic calls the appropriate hardware wrapper. 4. The wrapper communicates with the underlying device driver or SDK. 5. Results are returned to the UI for display or storage.