Skip to content

LikeDotAudio/OPEN-AIR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

815 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏷️ OPEN-AIR

Python Version License Status Build

πŸ“– Description

The Open-Air Instrumented Radio (OPEN-AIR) platform is a modular, high-performance toolkit designed for radio frequency monitoring, signal analysis, and laboratory instrument orchestration.

OPEN-AIR solves the problem of rigid, vendor-locked instrumentation software by providing a partitioned architecture:

  • Partition A (Core): Handles safety-critical hardware communication, MQTT bridging, and real-time data processing.
  • Partition B (UI): A rich, dynamic user interface engine capable of generating photorealistic industrial "Next Gen" dashboards from simple JSON configurations.

Whether you are performing spectral reconnaissance, automating test sequences, or building a custom cockpit for your RF laboratory, OPEN-AIR provides the scaffolding to scale from a single instrument to a global fleet.

πŸ›‘ Prerequisites

Before running OPEN-AIR, ensure your environment meets the following requirements:

  • Target OS: Ubuntu 22.04 LTS (or compatible Linux distribution).
  • Runtime: Python 3.10 or higher.
  • External Services:
    • Mosquitto MQTT Broker: Required for inter-partition communication and instrument telemetry.
    • VISA Backend: (Optional) National Instruments or Keysight VISA drivers for physical instrument connectivity.

βš™οΈ Installation

Follow these steps to get OPEN-AIR running locally:

  1. Clone the Repository:

    git clone https://github.com/APKaudio/OPEN-AIR
    cd OPEN-AIR
  2. Set up Virtual Environment:

    python3 -m venv venv
    source venv/bin/activate
  3. Install Dependencies:

    pip install --upgrade pip
    pip install -r requirements.txt

πŸš€ Usage

The quickest way to launch the full system is via the Supervisor:

python3 OpenAir.py

Advanced Launch Options

You can launch partitions independently for debugging:

  • Core Only: python3 OpenAir.py --core
  • UI Only: python3 OpenAir.py --ui

Common Use Cases

  • Instrument Discovery: Click "Find Fleet" in the UI to scan your network and USB ports for SCPI-compatible devices.
  • Custom Dashboard: Edit any .json file in the display/ directory to instantly update your UI layout.

πŸ› οΈ Configuration

System-wide settings are managed via config.ini in the project root.

Variable Description Default
enable_debug_mode Enables verbose TRACE/DEBUG logging. False
broker_address IP address of your MQTT broker. localhost
mission_critical_mode Enables auto-restart for crashed partitions. False

Refer to managers/configini/config_reader.py.md for deep configuration details.

πŸ—οΈ Development & Contributing

We welcome contributions to the OPEN-AIR ecosystem!

  • Testing: Run the test suite via pytest.
  • Formatting: Adhere to PEP 8 standards. Use black for auto-formatting.
  • Submitting: Create a feature branch and submit a Pull Request against the main branch.

πŸ—ΊοΈ Documentation Map

managers/

*   [manager_launcher.py.md](./managers/manager_launcher.py.md) β€” *Manager Launcher*
*   **Mqtt_Manager/**
    *   [mqtt_manager.py.md](./managers/Mqtt_Manager/mqtt_manager.py.md) β€” *Mqtt Manager*
*   **Visa_Fleet_Manager/**
    *   [__init__.py.md](./managers/Visa_Fleet_Manager/__init__.py.md) β€” *  Init  *
    *   [manager_fleet_mqtt_bridge.py.md](./managers/Visa_Fleet_Manager/manager_fleet_mqtt_bridge.py.md) β€” *Manager Fleet Mqtt Bridge*
    *   [manager_visa_Gateway.py.md](./managers/Visa_Fleet_Manager/manager_visa_Gateway.py.md) β€” *Manager Visa Gateway*
    *   [manager_visa_IP.py.md](./managers/Visa_Fleet_Manager/manager_visa_IP.py.md) β€” *Manager Visa Ip*
    *   [manager_visa_Search.py.md](./managers/Visa_Fleet_Manager/manager_visa_Search.py.md) β€” *Manager Visa Search*
    *   [manager_visa_USB.py.md](./managers/Visa_Fleet_Manager/manager_visa_USB.py.md) β€” *Manager Visa Usb*
    *   [manager_visa_csv_builder.py.md](./managers/Visa_Fleet_Manager/manager_visa_csv_builder.py.md) β€” *Manager Visa Csv Builder*
    *   [manager_visa_json_builder.py.md](./managers/Visa_Fleet_Manager/manager_visa_json_builder.py.md) β€” *Manager Visa Json Builder*
    *   [manager_visa_known_types.py.md](./managers/Visa_Fleet_Manager/manager_visa_known_types.py.md) β€” *Manager Visa Known Types*
    *   [manager_visa_parse_idn.py.md](./managers/Visa_Fleet_Manager/manager_visa_parse_idn.py.md) β€” *Manager Visa Parse Idn*
    *   [manager_visa_supervisor.py.md](./managers/Visa_Fleet_Manager/manager_visa_supervisor.py.md) β€” *Manager Visa Supervisor*
    *   [visa_fleet_manager.py.md](./managers/Visa_Fleet_Manager/visa_fleet_manager.py.md) β€” *Visa Fleet Manager*
    *   [visa_proxy_fleet.py.md](./managers/Visa_Fleet_Manager/visa_proxy_fleet.py.md) β€” *Visa Proxy Fleet*
    *   **Prototype/**
        *   [cli_visa_find.py.md](./managers/Visa_Fleet_Manager/Prototype/cli_visa_find.py.md) β€” *Cli Visa Find*
*   **configini/**
    *   [config_builder.py.md](./managers/configini/config_builder.py.md) β€” *Config Builder*
    *   [config_reader.py.md](./managers/configini/config_reader.py.md) β€” *Config Reader*
    *   [config_validator.py.md](./managers/configini/config_validator.py.md) β€” *Config Validator*
    *   [console_encoder.py.md](./managers/configini/console_encoder.py.md) β€” *Console Encoder*
*   **Display/**
    *   [open_air_ui.py.md](./managers/Display/open_air_ui.py.md) β€” *Open Air Ui*
    *   **factory/**
        *   [asset_cache_manager.py.md](./managers/Display/factory/asset_cache_manager.py.md) β€” *Asset Cache Manager*
        *   [button_canvas_base.py.md](./managers/Display/factory/button_canvas_base.py.md) β€” *Button Canvas Base*
        *   [gui_widget_factory.py.md](./managers/Display/factory/gui_widget_factory.py.md) β€” *Gui Widget Factory*
        *   [widget_registry.py.md](./managers/Display/factory/widget_registry.py.md) β€” *Widget Registry*
    *   **breakoff_manager/**
        *   [hidden_breakoff_manager.md](./managers/Display/breakoff_manager/hidden_breakoff_manager.md) β€” *Hidden Breakoff Manager*
        *   [hidden_breakoff_manager.py.md](./managers/Display/breakoff_manager/hidden_breakoff_manager.py.md) β€” *Hidden Breakoff Manager*
    *   **.crawler/**
        *   **Display-20260222165442/**
    *   **transparency/**
        *   [transparency_manager.py.md](./managers/Display/transparency/transparency_manager.py.md) β€” *Transparency Manager*
        *   [transparency_mixin.py.md](./managers/Display/transparency/transparency_mixin.py.md) β€” *Transparency Mixin*
    *   **parser/**
        *   [HOMOGENIZED_SCHEMA_SPEC.md](./managers/Display/parser/HOMOGENIZED_SCHEMA_SPEC.md) β€” *Homogenized Schema Spec*
        *   [gui_batch_builder.md](./managers/Display/parser/gui_batch_builder.md) β€” *Gui Batch Builder*
        *   [gui_file_loader.md](./managers/Display/parser/gui_file_loader.md) β€” *Gui File Loader*
        *   [gui_mqtt_manager.md](./managers/Display/parser/gui_mqtt_manager.md) β€” *Gui Mqtt Manager*
        *   [gui_rebuilder.md](./managers/Display/parser/gui_rebuilder.md) β€” *Gui Rebuilder*
        *   [gui_smart_standardizer.md](./managers/Display/parser/gui_smart_standardizer.md) β€” *Gui Smart Standardizer*
        *   [gui_smart_standardizer.py.md](./managers/Display/parser/gui_smart_standardizer.py.md) β€” *Gui Smart Standardizer*
        *   [gui_style_manager.md](./managers/Display/parser/gui_style_manager.md) β€” *Gui Style Manager*
        *   [gui_widget_factory.md](./managers/Display/parser/gui_widget_factory.md) β€” *Gui Widget Factory*
        *   [layout_parser.py.md](./managers/Display/parser/layout_parser.py.md) β€” *Layout Parser*
        *   [widget_schema_normalizer.py.md](./managers/Display/parser/widget_schema_normalizer.py.md) β€” *Widget Schema Normalizer*
    *   **telemetry/**
        *   [ui_tracking_service.py.md](./managers/Display/telemetry/ui_tracking_service.py.md) β€” *Ui Tracking Service*
        *   **geometry_snitch/**
            *   [geometry_snitch.py.md](./managers/Display/telemetry/geometry_snitch/geometry_snitch.py.md) β€” *Geometry Snitch*
            *   [hidden_geometry_manager.md](./managers/Display/telemetry/geometry_snitch/hidden_geometry_manager.md) β€” *Hidden Geometry Manager*
        *   **visibility_snitch/**
            *   [hidden_visibility_manager.md](./managers/Display/telemetry/visibility_snitch/hidden_visibility_manager.md) β€” *Hidden Visibility Manager*
            *   [visibility_snitch.py.md](./managers/Display/telemetry/visibility_snitch/visibility_snitch.py.md) β€” *Visibility Snitch*
    *   **array/**
        *   [array.md](./managers/Display/array/array.md) β€” *Array*
        *   [array.py.md](./managers/Display/array/array.py.md) β€” *Array*
        *   **collapsible_block/**
            *   [collapsible_block.py.md](./managers/Display/array/collapsible_block/collapsible_block.py.md) β€” *Collapsible Block*
    *   **builder/**
        *   [DYNAMIC_GUI_GUIDE.md](./managers/Display/builder/DYNAMIC_GUI_GUIDE.md) β€” *Dynamic Gui Guide*
        *   [async_grid_renderer.py.md](./managers/Display/builder/async_grid_renderer.py.md) β€” *Async Grid Renderer*
        *   [gui_batch_builder.py.md](./managers/Display/builder/gui_batch_builder.py.md) β€” *Gui Batch Builder*
        *   [gui_display.py.md](./managers/Display/builder/gui_display.py.md) β€” *Gui Display*
        *   [gui_mqtt_manager.py.md](./managers/Display/builder/gui_mqtt_manager.py.md) β€” *Gui Mqtt Manager*
        *   [gui_rebuilder.py.md](./managers/Display/builder/gui_rebuilder.py.md) β€” *Gui Rebuilder*
        *   [window_manager.py.md](./managers/Display/builder/window_manager.py.md) β€” *Window Manager*
    *   **styling/**
        *   [gui_style_manager.py.md](./managers/Display/styling/gui_style_manager.py.md) β€” *Gui Style Manager*
    *   **loader/**
        *   [blueprint_loader.py.md](./managers/Display/loader/blueprint_loader.py.md) β€” *Blueprint Loader*
        *   [gui_file_loader.py.md](./managers/Display/loader/gui_file_loader.py.md) β€” *Gui File Loader*
        *   [gui_from_json.py.md](./managers/Display/loader/gui_from_json.py.md) β€” *Gui From Json*
        *   [module_loader.py.md](./managers/Display/loader/module_loader.py.md) β€” *Module Loader*
    *   **context/**
        *   [widget_context.py.md](./managers/Display/context/widget_context.py.md) β€” *Widget Context*
*   **Visa_Scipi_dialog/**
    *   [__init__.py.md](./managers/Visa_Scipi_dialog/__init__.py.md) β€” *  Init  *
    *   [manager_logic_connect_instrument.py.md](./managers/Visa_Scipi_dialog/manager_logic_connect_instrument.py.md) β€” *Manager Logic Connect Instrument*
    *   [manager_logic_disconnect_instrument.py.md](./managers/Visa_Scipi_dialog/manager_logic_disconnect_instrument.py.md) β€” *Manager Logic Disconnect Instrument*
    *   [manager_logic_mqtt_listen.py.md](./managers/Visa_Scipi_dialog/manager_logic_mqtt_listen.py.md) β€” *Manager Logic Mqtt Listen*
    *   [manager_logic_mqtt_publisher.py.md](./managers/Visa_Scipi_dialog/manager_logic_mqtt_publisher.py.md) β€” *Manager Logic Mqtt Publisher*
    *   [manager_visa.py.md](./managers/Visa_Scipi_dialog/manager_visa.py.md) β€” *Manager Visa*
    *   [manager_visa_list_visa_resources.py.md](./managers/Visa_Scipi_dialog/manager_visa_list_visa_resources.py.md) β€” *Manager Visa List Visa Resources*
    *   [manager_visa_proxy.py.md](./managers/Visa_Scipi_dialog/manager_visa_proxy.py.md) β€” *Manager Visa Proxy*
    *   [manager_visa_reboot.py.md](./managers/Visa_Scipi_dialog/manager_visa_reboot.py.md) β€” *Manager Visa Reboot*
    *   [manager_visa_reset.py.md](./managers/Visa_Scipi_dialog/manager_visa_reset.py.md) β€” *Manager Visa Reset*
    *   [manager_visa_safe_query.py.md](./managers/Visa_Scipi_dialog/manager_visa_safe_query.py.md) β€” *Manager Visa Safe Query*
    *   [manager_visa_safe_writer.py.md](./managers/Visa_Scipi_dialog/manager_visa_safe_writer.py.md) β€” *Manager Visa Safe Writer*
    *   [manager_visa_search_results.py.md](./managers/Visa_Scipi_dialog/manager_visa_search_results.py.md) β€” *Manager Visa Search Results*
    *   [worker_visa_pre_flight_check.py.md](./managers/Visa_Scipi_dialog/worker_visa_pre_flight_check.py.md) β€” *Worker Visa Pre Flight Check*
*   **PTP/**
    *   [PTPtester.py.md](./managers/PTP/PTPtester.py.md) β€” *Ptptester*
    *   [ptp_manager.py.md](./managers/PTP/ptp_manager.py.md) β€” *Ptp Manager*
*   **yak/**
    *   [manager_yak_rx.py.md](./managers/yak/manager_yak_rx.py.md) β€” *Manager Yak Rx*
    *   [manager_yak_tx.py.md](./managers/yak/manager_yak_tx.py.md) β€” *Manager Yak Tx*
    *   [manager_yakety_yak.py.md](./managers/yak/manager_yakety_yak.py.md) β€” *Manager Yakety Yak*
    *   [yak_command_builder.py.md](./managers/yak/yak_command_builder.py.md) β€” *Yak Command Builder*
    *   [yak_repository_parser.py.md](./managers/yak/yak_repository_parser.py.md) β€” *Yak Repository Parser*
    *   [yak_translator.py.md](./managers/yak/yak_translator.py.md) β€” *Yak Translator*
    *   [yak_trigger_handler.py.md](./managers/yak/yak_trigger_handler.py.md) β€” *Yak Trigger Handler*
    *   **Documentation/**
        *   [How to make a yak json.md](./managers/yak/Documentation/How%20to%20make%20a%20yak%20json.md) β€” *How To Make A Yak Json*
*   **System_Core/**
    *   [open_air_core.py.md](./managers/System_Core/open_air_core.py.md) β€” *Open Air Core*

workers/

*   [Worker_Launcher.py.md](./workers/Worker_Launcher.py.md) β€” *Worker Launcher*
*   [__init__.py.md](./workers/__init__.py.md) β€” *  Init  *
*   **monitoring/**
    *   [fleet_status_monitor.py.md](./workers/monitoring/fleet_status_monitor.py.md) β€” *Fleet Status Monitor*
*   **Showtime/**
    *   [ptp_time.py.md](./workers/Showtime/ptp_time.py.md) β€” *Ptp Time*
    *   [worker_showtime_buttons.py.md](./workers/Showtime/worker_showtime_buttons.py.md) β€” *Worker Showtime Buttons*
    *   [worker_showtime_clear_group_buttons.py.md](./workers/Showtime/worker_showtime_clear_group_buttons.py.md) β€” *Worker Showtime Clear Group Buttons*
    *   [worker_showtime_draw_bargraph.py.md](./workers/Showtime/worker_showtime_draw_bargraph.py.md) β€” *Worker Showtime Draw Bargraph*
    *   [worker_showtime_group.py.md](./workers/Showtime/worker_showtime_group.py.md) β€” *Worker Showtime Group*
    *   [worker_showtime_on_group_toggle.py.md](./workers/Showtime/worker_showtime_on_group_toggle.py.md) β€” *Worker Showtime On Group Toggle*
    *   [worker_showtime_on_marker_button_click.py.md](./workers/Showtime/worker_showtime_on_marker_button_click.py.md) β€” *Worker Showtime On Marker Button Click*
    *   [worker_showtime_on_zone_toggle.py.md](./workers/Showtime/worker_showtime_on_zone_toggle.py.md) β€” *Worker Showtime On Zone Toggle*
    *   [worker_showtime_read.py.md](./workers/Showtime/worker_showtime_read.py.md) β€” *Worker Showtime Read*
    *   [worker_showtime_tune.py.md](./workers/Showtime/worker_showtime_tune.py.md) β€” *Worker Showtime Tune*
*   **splash_screen/**
    *   [__init__.py.md](./workers/splash_screen/__init__.py.md) β€” *  Init  *
    *   [lyrics_data.py.md](./workers/splash_screen/lyrics_data.py.md) β€” *Lyrics Data*
    *   [makegif.py.md](./workers/splash_screen/makegif.py.md) β€” *Makegif*
    *   [splash_screen.py.md](./workers/splash_screen/splash_screen.py.md) β€” *Splash Screen*
*   **mqtt/**
    *   [XXX worker_mqtt_data_flattening.py.md](./workers/mqtt/XXX%20worker_mqtt_data_flattening.py.md) β€” *Xxx Worker Mqtt Data Flattening*
    *   [broker_monitor.py.md](./workers/mqtt/broker_monitor.py.md) β€” *Broker Monitor*
    *   [delete_open_air.py.md](./workers/mqtt/delete_open_air.py.md) β€” *Delete Open Air*
    *   [mqtt_connection_manager.py.md](./workers/mqtt/mqtt_connection_manager.py.md) β€” *Mqtt Connection Manager*
    *   [mqtt_message.py.md](./workers/mqtt/mqtt_message.py.md) β€” *Mqtt Message*
    *   [mqtt_publisher_service.py.md](./workers/mqtt/mqtt_publisher_service.py.md) β€” *Mqtt Publisher Service*
    *   [mqtt_subscriber_router.py.md](./workers/mqtt/mqtt_subscriber_router.py.md) β€” *Mqtt Subscriber Router*
    *   [mqtt_topic_utils.py.md](./workers/mqtt/mqtt_topic_utils.py.md) β€” *Mqtt Topic Utils*
    *   [worker_mqtt_controller_util.py.md](./workers/mqtt/worker_mqtt_controller_util.py.md) β€” *Worker Mqtt Controller Util*
    *   **setup/**
        *   [config_reader.py.md](./workers/mqtt/setup/config_reader.py.md) β€” *Config Reader*
*   **active/**
    *   [XXX worker_active_marker_tune_and_collect.py.md](./workers/active/XXX%20worker_active_marker_tune_and_collect.py.md) β€” *Xxx Worker Active Marker Tune And Collect*
    *   [XXX-worker_active_peak_publisher.py.md](./workers/active/XXX-worker_active_peak_publisher.py.md) β€” *Xxx-Worker Active Peak Publisher*
    *   [__init__.py.md](./workers/active/__init__.py.md) β€” *  Init  *
*   **wysiwyg_editor/**
    *   [run_builder.py.md](./workers/wysiwyg_editor/run_builder.py.md) β€” *Run Builder*
    *   [wysiwyg_editor.py.md](./workers/wysiwyg_editor/wysiwyg_editor.py.md) β€” *Wysiwyg Editor*
    *   **workspaces/**
        *   [element_properties.py.md](./workers/wysiwyg_editor/workspaces/element_properties.py.md) β€” *Element Properties*
        *   [interactive_layout.py.md](./workers/wysiwyg_editor/workspaces/interactive_layout.py.md) β€” *Interactive Layout*
        *   [json_editor.py.md](./workers/wysiwyg_editor/workspaces/json_editor.py.md) β€” *Json Editor*
        *   **layout_overlays/**
            *   [alignment.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/alignment.py.md) β€” *Alignment*
            *   [blocks.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/blocks.py.md) β€” *Blocks*
            *   [colors.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/colors.py.md) β€” *Colors*
            *   [columns.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/columns.py.md) β€” *Columns*
            *   [selection.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/selection.py.md) β€” *Selection*
            *   [sizing.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/sizing.py.md) β€” *Sizing*
            *   [sticky.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/sticky.py.md) β€” *Sticky*
            *   [structure.py.md](./workers/wysiwyg_editor/workspaces/layout_overlays/structure.py.md) β€” *Structure*
    *   **grab_bag/**
        *   [grab_bag_loader.py.md](./workers/wysiwyg_editor/grab_bag/grab_bag_loader.py.md) β€” *Grab Bag Loader*
        *   [grab_bag_view.py.md](./workers/wysiwyg_editor/grab_bag/grab_bag_view.py.md) β€” *Grab Bag View*
    *   **actions/**
    *   **core/**
        *   [event_bus.py.md](./workers/wysiwyg_editor/core/event_bus.py.md) β€” *Event Bus*
        *   [file_io_handler.py.md](./workers/wysiwyg_editor/core/file_io_handler.py.md) β€” *File Io Handler*
        *   [state_manager.py.md](./workers/wysiwyg_editor/core/state_manager.py.md) β€” *State Manager*
*   **exporters/**
    *   [__init__.py.md](./workers/exporters/__init__.py.md) β€” *  Init  *
    *   [utils_csv_writer.py.md](./workers/exporters/utils_csv_writer.py.md) β€” *Utils Csv Writer*
    *   [worker_file_csv_export.py.md](./workers/exporters/worker_file_csv_export.py.md) β€” *Worker File Csv Export*
*   **watchdog/**
    *   [__init__.py.md](./workers/watchdog/__init__.py.md) β€” *  Init  *
    *   [watchdog.py.md](./workers/watchdog/watchdog.py.md) β€” *Watchdog*
*   **logger/**
    *   [logger.py.md](./workers/logger/logger.py.md) β€” *Logger*
*   **builder/**
    *   [builder.md](./workers/builder/builder.md) β€” *Builder*
    *   [builder.py.md](./workers/builder/builder.py.md) β€” *Builder*
    *   **breakoff_manager/**
        *   [hidden_breakoff_manager.md](./workers/builder/breakoff_manager/hidden_breakoff_manager.md) β€” *Hidden Breakoff Manager*
        *   [hidden_breakoff_manager.py.md](./workers/builder/breakoff_manager/hidden_breakoff_manager.py.md) β€” *Hidden Breakoff Manager*
    *   **panel_screw/**
        *   [screw_generator.py.md](./workers/builder/panel_screw/screw_generator.py.md) β€” *Screw Generator*
    *   **break_line/**
        *   [hidden_BreakLine.md](./workers/builder/break_line/hidden_BreakLine.md) β€” *Hidden Breakline*
        *   [hidden_BreakLine.py.md](./workers/builder/break_line/hidden_BreakLine.py.md) β€” *Hidden Breakline*
    *   **fader_input/**
        *   [fader_input.md](./workers/builder/fader_input/fader_input.md) β€” *Fader Input*
        *   [fader_input.py.md](./workers/builder/fader_input/fader_input.py.md) β€” *Fader Input*
    *   **button_wink_toggler/**
        *   [button_wink_toggler.py.md](./workers/builder/button_wink_toggler/button_wink_toggler.py.md) β€” *Button Wink Toggler*
    *   **fader/**
        *   [fader.md](./workers/builder/fader/fader.md) β€” *Fader*
        *   [fader.py.md](./workers/builder/fader/fader.py.md) β€” *Fader*
        *   **core/**
            *   [cap.py.md](./workers/builder/fader/core/cap.py.md) β€” *Cap*
            *   [readout.py.md](./workers/builder/fader/core/readout.py.md) β€” *Readout*
            *   [scale.py.md](./workers/builder/fader/core/scale.py.md) β€” *Scale*
            *   [track.py.md](./workers/builder/fader/core/track.py.md) β€” *Track*
    *   **button_trapezoid_toggler/**
        *   [button_trapezoid_toggler.md](./workers/builder/button_trapezoid_toggler/button_trapezoid_toggler.md) β€” *Button Trapezoid Toggler*
        *   [button_trapezoid_toggler.py.md](./workers/builder/button_trapezoid_toggler/button_trapezoid_toggler.py.md) β€” *Button Trapezoid Toggler*
    *   **status_light/**
        *   [status_light.md](./workers/builder/status_light/status_light.md) β€” *Status Light*
        *   [status_light.py.md](./workers/builder/status_light/status_light.py.md) β€” *Status Light*
    *   **meter_needle/**
        *   [constants.py.md](./workers/builder/meter_needle/constants.py.md) β€” *Constants*
        *   [meter_modifyer.py.md](./workers/builder/meter_needle/meter_modifyer.py.md) β€” *Meter Modifyer*
        *   [meter_needle.md](./workers/builder/meter_needle/meter_needle.md) β€” *Meter Needle*
        *   [meter_needle.py.md](./workers/builder/meter_needle/meter_needle.py.md) β€” *Meter Needle*
        *   **animation/**
            *   [animator.py.md](./workers/builder/meter_needle/animation/animator.py.md) β€” *Animator*
        *   **ui/**
            *   [frame_factory.py.md](./workers/builder/meter_needle/ui/frame_factory.py.md) β€” *Frame Factory*
        *   **config/**
            *   [meter_config.py.md](./workers/builder/meter_needle/config/meter_config.py.md) β€” *Meter Config*
        *   **cosmetics/**
            *   [background.py.md](./workers/builder/meter_needle/cosmetics/background.py.md) β€” *Background*
            *   [bezel.py.md](./workers/builder/meter_needle/cosmetics/bezel.py.md) β€” *Bezel*
            *   [geometry.py.md](./workers/builder/meter_needle/cosmetics/geometry.py.md) β€” *Geometry*
            *   [label.py.md](./workers/builder/meter_needle/cosmetics/label.py.md) β€” *Label*
            *   [lens.py.md](./workers/builder/meter_needle/cosmetics/lens.py.md) β€” *Lens*
            *   [lighting_overlay.py.md](./workers/builder/meter_needle/cosmetics/lighting_overlay.py.md) β€” *Lighting Overlay*
            *   [mask.py.md](./workers/builder/meter_needle/cosmetics/mask.py.md) β€” *Mask*
        *   **core/**
            *   [needle.py.md](./workers/builder/meter_needle/core/needle.py.md) β€” *Needle*
            *   [number.py.md](./workers/builder/meter_needle/core/number.py.md) β€” *Number*
            *   [peak.py.md](./workers/builder/meter_needle/core/peak.py.md) β€” *Peak*
            *   [pivot.py.md](./workers/builder/meter_needle/core/pivot.py.md) β€” *Pivot*
            *   [scale.py.md](./workers/builder/meter_needle/core/scale.py.md) β€” *Scale*
            *   [shadow.py.md](./workers/builder/meter_needle/core/shadow.py.md) β€” *Shadow*
        *   **integration/**
            *   [state_linker.py.md](./workers/builder/meter_needle/integration/state_linker.py.md) β€” *State Linker*
    *   **input_mousewheel_mixin/**
        *   [input_mousewheel_mixin.md](./workers/builder/input_mousewheel_mixin/input_mousewheel_mixin.md) β€” *Input Mousewheel Mixin*
        *   [input_mousewheel_mixin.py.md](./workers/builder/input_mousewheel_mixin/input_mousewheel_mixin.py.md) β€” *Input Mousewheel Mixin*
        *   [test_dynamic_gui_mousewheel_mixin.py.md](./workers/builder/input_mousewheel_mixin/test_dynamic_gui_mousewheel_mixin.py.md) β€” *Test Dynamic Gui Mousewheel Mixin*
    *   **panels/**
        *   [HOW_TO_USE_BACKGROUNDS.md](./workers/builder/panels/HOW_TO_USE_BACKGROUNDS.md) β€” *How To Use Backgrounds*
        *   [panel_generator.py.md](./workers/builder/panels/panel_generator.py.md) β€” *Panel Generator*
    *   **meter_bar/**
        *   [meter_bar.md](./workers/builder/meter_bar/meter_bar.md) β€” *Meter Bar*
        *   [meter_bar.py.md](./workers/builder/meter_bar/meter_bar.py.md) β€” *Meter Bar*
        *   [smart_meter.py.md](./workers/builder/meter_bar/smart_meter.py.md) β€” *Smart Meter*
        *   **core/**
            *   [ballistics.py.md](./workers/builder/meter_bar/core/ballistics.py.md) β€” *Ballistics*
            *   [config_parser.py.md](./workers/builder/meter_bar/core/config_parser.py.md) β€” *Config Parser*
            *   [layout_calculator.py.md](./workers/builder/meter_bar/core/layout_calculator.py.md) β€” *Layout Calculator*
        *   **renderers/**
            *   [tk_canvas_renderer.py.md](./workers/builder/meter_bar/renderers/tk_canvas_renderer.py.md) β€” *Tk Canvas Renderer*
    *   **button_actuator/**
        *   [button_actuator.md](./workers/builder/button_actuator/button_actuator.md) β€” *Button Actuator*
        *   [button_actuator.py.md](./workers/builder/button_actuator/button_actuator.py.md) β€” *Button Actuator*
    *   **images_image_display/**
        *   [images_image_display.md](./workers/builder/images_image_display/images_image_display.md) β€” *Images Image Display*
        *   [images_image_display.py.md](./workers/builder/images_image_display/images_image_display.py.md) β€” *Images Image Display*
    *   **images_animation_display/**
        *   [images_animation_display.md](./workers/builder/images_animation_display/images_animation_display.md) β€” *Images Animation Display*
        *   [images_animation_display.py.md](./workers/builder/images_animation_display/images_animation_display.py.md) β€” *Images Animation Display*
    *   **listbox/**
        *   [listbox.md](./workers/builder/listbox/listbox.md) β€” *Listbox*
        *   [listbox.py.md](./workers/builder/listbox/listbox.py.md) β€” *Listbox*
    *   **data_json_tree/**
        *   [data_json_tree.py.md](./workers/builder/data_json_tree/data_json_tree.py.md) β€” *Data Json Tree*
    *   **fader_horizontal/**
        *   [fader_horizontal.md](./workers/builder/fader_horizontal/fader_horizontal.md) β€” *Fader Horizontal*
        *   [fader_horizontal.py.md](./workers/builder/fader_horizontal/fader_horizontal.py.md) β€” *Fader Horizontal*
    *   **data_radar/**
        *   [data_radar.md](./workers/builder/data_radar/data_radar.md) β€” *Data Radar*
        *   [data_radar.py.md](./workers/builder/data_radar/data_radar.py.md) β€” *Data Radar*
    *   **circular_motion_displacement_potentiometer/**
        *   [CMDP_tester.md](./workers/builder/circular_motion_displacement_potentiometer/CMDP_tester.md) β€” *Cmdp Tester*
        *   [CMDP_tester.py.md](./workers/builder/circular_motion_displacement_potentiometer/CMDP_tester.py.md) β€” *Cmdp Tester*
        *   [circular_motion_displacement_potentiometer.py.md](./workers/builder/circular_motion_displacement_potentiometer/circular_motion_displacement_potentiometer.py.md) β€” *Circular Motion Displacement Potentiometer*
        *   [cmdp_channel_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_channel_handler.py.md) β€” *Cmdp Channel Handler*
        *   [cmdp_file_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_file_handler.py.md) β€” *Cmdp File Handler*
        *   [cmdp_group_handler.py.md](./workers/builder/circular_motion_displacement_potentiometer/cmdp_group_handler.py.md) β€” *Cmdp Group Handler*
    *   **input_directional_buttons/**
        *   [input_directional_buttons.md](./workers/builder/input_directional_buttons/input_directional_buttons.md) β€” *Input Directional Buttons*
        *   [input_directional_buttons.py.md](./workers/builder/input_directional_buttons/input_directional_buttons.py.md) β€” *Input Directional Buttons*
    *   **text_value_box/**
        *   [text_value_box.md](./workers/builder/text_value_box/text_value_box.md) β€” *Text Value Box*
        *   [text_value_box.py.md](./workers/builder/text_value_box/text_value_box.py.md) β€” *Text Value Box*
    *   **text_table/**
        *   [Table_CSV_Reader.py.md](./workers/builder/text_table/Table_CSV_Reader.py.md) β€” *Table Csv Reader*
        *   [Table_CSV_Writer.py.md](./workers/builder/text_table/Table_CSV_Writer.py.md) β€” *Table Csv Writer*
        *   [Table_CSV_check.py.md](./workers/builder/text_table/Table_CSV_check.py.md) β€” *Table Csv Check*
        *   [table_editing_inplace_mixin.py.md](./workers/builder/text_table/table_editing_inplace_mixin.py.md) β€” *Table Editing Inplace Mixin*
        *   [table_editing_manager.py.md](./workers/builder/text_table/table_editing_manager.py.md) β€” *Table Editing Manager*
        *   [table_editing_row_ops_mixin.py.md](./workers/builder/text_table/table_editing_row_ops_mixin.py.md) β€” *Table Editing Row Ops Mixin*
        *   [table_editing_sort_mixin.py.md](./workers/builder/text_table/table_editing_sort_mixin.py.md) β€” *Table Editing Sort Mixin*
        *   [table_editing_undo_mixin.py.md](./workers/builder/text_table/table_editing_undo_mixin.py.md) β€” *Table Editing Undo Mixin*
        *   [text_table.md](./workers/builder/text_table/text_table.md) β€” *Text Table*
        *   [text_table.py.md](./workers/builder/text_table/text_table.py.md) β€” *Text Table*
    *   **input_inc_dec_buttons/**
        *   [input_inc_dec_buttons.md](./workers/builder/input_inc_dec_buttons/input_inc_dec_buttons.md) β€” *Input Inc Dec Buttons*
        *   [input_inc_dec_buttons.py.md](./workers/builder/input_inc_dec_buttons/input_inc_dec_buttons.py.md) β€” *Input Inc Dec Buttons*
    *   **meter_knob_with_vu_meter/**
        *   [meter_knob_with_vu_meter.md](./workers/builder/meter_knob_with_vu_meter/meter_knob_with_vu_meter.md) β€” *Meter Knob With Vu Meter*
        *   [meter_knob_with_vu_meter.py.md](./workers/builder/meter_knob_with_vu_meter/meter_knob_with_vu_meter.py.md) β€” *Meter Knob With Vu Meter*
    *   **data_graphing/**
        *   [Meter_to_display_units.md](./workers/builder/data_graphing/Meter_to_display_units.md) β€” *Meter To Display Units*
        *   [Meter_to_display_units.py.md](./workers/builder/data_graphing/Meter_to_display_units.py.md) β€” *Meter To Display Units*
        *   [dynamic_bar_graph.py.md](./workers/builder/data_graphing/dynamic_bar_graph.py.md) β€” *Dynamic Bar Graph*
        *   [dynamic_graph.md](./workers/builder/data_graphing/dynamic_graph.md) β€” *Dynamic Graph*
        *   [dynamic_graph.py.md](./workers/builder/data_graphing/dynamic_graph.py.md) β€” *Dynamic Graph*
        *   [graph_builder.md](./workers/builder/data_graphing/graph_builder.md) β€” *Graph Builder*
        *   [graph_builder.py.md](./workers/builder/data_graphing/graph_builder.py.md) β€” *Graph Builder*
        *   [graph_interactor.md](./workers/builder/data_graphing/graph_interactor.md) β€” *Graph Interactor*
        *   [graph_interactor.py.md](./workers/builder/data_graphing/graph_interactor.py.md) β€” *Graph Interactor*
        *   [graph_styler.md](./workers/builder/data_graphing/graph_styler.md) β€” *Graph Styler*
        *   [graph_styler.py.md](./workers/builder/data_graphing/graph_styler.py.md) β€” *Graph Styler*
        *   [graph_updater.md](./workers/builder/data_graphing/graph_updater.md) β€” *Graph Updater*
        *   [graph_updater.py.md](./workers/builder/data_graphing/graph_updater.py.md) β€” *Graph Updater*
        *   [meter_widget_adapter.md](./workers/builder/data_graphing/meter_widget_adapter.md) β€” *Meter Widget Adapter*
        *   [meter_widget_adapter.py.md](./workers/builder/data_graphing/meter_widget_adapter.py.md) β€” *Meter Widget Adapter*
        *   [plot_widget_adapter.md](./workers/builder/data_graphing/plot_widget_adapter.md) β€” *Plot Widget Adapter*
        *   [plot_widget_adapter.py.md](./workers/builder/data_graphing/plot_widget_adapter.py.md) β€” *Plot Widget Adapter*
    *   **knob/**
        *   [knob.md](./workers/builder/knob/knob.md) β€” *Knob*
        *   [knob.py.md](./workers/builder/knob/knob.py.md) β€” *Knob*
        *   **effects/**
            *   [knob_3d_effects.py.md](./workers/builder/knob/effects/knob_3d_effects.py.md) β€” *Knob 3D Effects*
        *   **core/**
            *   [knob_config.py.md](./workers/builder/knob/core/knob_config.py.md) β€” *Knob Config*
            *   [knob_events.py.md](./workers/builder/knob/core/knob_events.py.md) β€” *Knob Events*
            *   [knob_renderer.py.md](./workers/builder/knob/core/knob_renderer.py.md) β€” *Knob Renderer*
            *   [knob_state.py.md](./workers/builder/knob/core/knob_state.py.md) β€” *Knob State*
    *   **button_trapezoid/**
        *   [button_trapezoid.md](./workers/builder/button_trapezoid/button_trapezoid.md) β€” *Button Trapezoid*
        *   [button_trapezoid.py.md](./workers/builder/button_trapezoid/button_trapezoid.py.md) β€” *Button Trapezoid*
    *   **text_label/**
        *   [text_label.md](./workers/builder/text_label/text_label.md) β€” *Text Label*
        *   [text_label.py.md](./workers/builder/text_label/text_label.py.md) β€” *Text Label*
    *   **images_progress_bar/**
        *   [images_progress_bar.md](./workers/builder/images_progress_bar/images_progress_bar.md) β€” *Images Progress Bar*
        *   [images_progress_bar.py.md](./workers/builder/images_progress_bar/images_progress_bar.py.md) β€” *Images Progress Bar*
    *   **text_gui_dropdown_option/**
        *   [text_gui_dropdown_option.md](./workers/builder/text_gui_dropdown_option/text_gui_dropdown_option.md) β€” *Text Gui Dropdown Option*
        *   [text_gui_dropdown_option.py.md](./workers/builder/text_gui_dropdown_option/text_gui_dropdown_option.py.md) β€” *Text Gui Dropdown Option*
    *   **text_label_from_config/**
        *   [text_label_from_config.md](./workers/builder/text_label_from_config/text_label_from_config.md) β€” *Text Label From Config*
        *   [text_label_from_config.py.md](./workers/builder/text_label_from_config/text_label_from_config.py.md) β€” *Text Label From Config*
    *   **text_value_with_units/**
        *   [text_value_with_units.md](./workers/builder/text_value_with_units/text_value_with_units.md) β€” *Text Value With Units*
        *   [text_value_with_units.py.md](./workers/builder/text_value_with_units/text_value_with_units.py.md) β€” *Text Value With Units*
    *   **fader_dual/**
        *   [fader_dual.md](./workers/builder/fader_dual/fader_dual.md) β€” *Fader Dual*
        *   [fader_dual.py.md](./workers/builder/fader_dual/fader_dual.py.md) β€” *Fader Dual*
    *   **fader_ganged_controlled_array/**
        *   [README.md](./workers/builder/fader_ganged_controlled_array/README.md) β€” *Readme*
        *   [fader_ganged_controlled_array.md](./workers/builder/fader_ganged_controlled_array/fader_ganged_controlled_array.md) β€” *Fader Ganged Controlled Array*
        *   [fader_ganged_controlled_array.py.md](./workers/builder/fader_ganged_controlled_array/fader_ganged_controlled_array.py.md) β€” *Fader Ganged Controlled Array*
    *   **text_web_link/**
        *   [text_web_link.md](./workers/builder/text_web_link/text_web_link.md) β€” *Text Web Link*
        *   [text_web_link.py.md](./workers/builder/text_web_link/text_web_link.py.md) β€” *Text Web Link*
    *   **checkbox/**
        *   [checkbox.md](./workers/builder/checkbox/checkbox.md) β€” *Checkbox*
        *   [checkbox.py.md](./workers/builder/checkbox/checkbox.py.md) β€” *Checkbox*
    *   **fader_linear_travelling_potentiometer/**
        *   [README.md](./workers/builder/fader_linear_travelling_potentiometer/README.md) β€” *Readme*
        *   [fader_linear_travelling_potentiometer.md](./workers/builder/fader_linear_travelling_potentiometer/fader_linear_travelling_potentiometer.md) β€” *Fader Linear Travelling Potentiometer*
        *   [fader_linear_travelling_potentiometer.py.md](./workers/builder/fader_linear_travelling_potentiometer/fader_linear_travelling_potentiometer.py.md) β€” *Fader Linear Travelling Potentiometer*
    *   **button_toggle/**
        *   [button_toggle.md](./workers/builder/button_toggle/button_toggle.md) β€” *Button Toggle*
        *   [button_toggle.py.md](./workers/builder/button_toggle/button_toggle.py.md) β€” *Button Toggle*
    *   **button_toggler/**
        *   [button_toggler.md](./workers/builder/button_toggler/button_toggler.md) β€” *Button Toggler*
        *   [button_toggler.py.md](./workers/builder/button_toggler/button_toggler.py.md) β€” *Button Toggler*
    *   **fader_bar_graph/**
        *   [fader_bar_graph.py.md](./workers/builder/fader_bar_graph/fader_bar_graph.py.md) β€” *Fader Bar Graph*
    *   **knob_rotary_selector/**
        *   [knob_rotary_selector.md](./workers/builder/knob_rotary_selector/knob_rotary_selector.md) β€” *Knob Rotary Selector*
        *   [knob_rotary_selector.py.md](./workers/builder/knob_rotary_selector/knob_rotary_selector.py.md) β€” *Knob Rotary Selector*
    *   **composite_mdp/**
        *   [README.md](./workers/builder/composite_mdp/README.md) β€” *Readme*
        *   [composite_mdp.py.md](./workers/builder/composite_mdp/composite_mdp.py.md) β€” *Composite Mdp*
        *   [tester.py.md](./workers/builder/composite_mdp/tester.py.md) β€” *Tester*
    *   **composite_horizontal_dial_value/**
        *   [composite_horizontal_dial_value.md](./workers/builder/composite_horizontal_dial_value/composite_horizontal_dial_value.md) β€” *Composite Horizontal Dial Value*
        *   [composite_horizontal_dial_value.py.md](./workers/builder/composite_horizontal_dial_value/composite_horizontal_dial_value.py.md) β€” *Composite Horizontal Dial Value*
    *   **slider_value/**
        *   [slider_value.md](./workers/builder/slider_value/slider_value.md) β€” *Slider Value*
        *   [slider_value.py.md](./workers/builder/slider_value/slider_value.py.md) β€” *Slider Value*
    *   **button_wink/**
        *   [button_wink.md](./workers/builder/button_wink/button_wink.md) β€” *Button Wink*
        *   [button_wink.py.md](./workers/builder/button_wink/button_wink.py.md) β€” *Button Wink*
        *   [winkdemo.py.md](./workers/builder/button_wink/winkdemo.py.md) β€” *Winkdemo*
        *   **core/**
            *   [wink_config.py.md](./workers/builder/button_wink/core/wink_config.py.md) β€” *Wink Config*
            *   [wink_events.py.md](./workers/builder/button_wink/core/wink_events.py.md) β€” *Wink Events*
            *   [wink_physics.py.md](./workers/builder/button_wink/core/wink_physics.py.md) β€” *Wink Physics*
            *   [wink_renderer.py.md](./workers/builder/button_wink/core/wink_renderer.py.md) β€” *Wink Renderer*
            *   [wink_state.py.md](./workers/builder/button_wink/core/wink_state.py.md) β€” *Wink State*
*   **presets/**
    *   [XXX worker_preset_pusher.py.md](./workers/presets/XXX%20worker_preset_pusher.py.md) β€” *Xxx Worker Preset Pusher*
    *   [XXXworker_preset_from_device.py.md](./workers/presets/XXXworker_preset_from_device.py.md) β€” *Xxxworker Preset From Device*
    *   [__init__.py.md](./workers/presets/__init__.py.md) β€” *  Init  *
*   **logic/**
    *   [state_mirror_engine.py.md](./workers/logic/state_mirror_engine.py.md) β€” *State Mirror Engine*
*   **markers/**
    *   [XXXX worker_marker_peak_re_publisher.py.md](./workers/markers/XXXX%20worker_marker_peak_re_publisher.py.md) β€” *Xxxx Worker Marker Peak Re Publisher*
    *   [__init__.py.md](./workers/markers/__init__.py.md) β€” *  Init  *
    *   [worker_marker_logic.py.md](./workers/markers/worker_marker_logic.py.md) β€” *Worker Marker Logic*
*   **styling/**
    *   [style.py.md](./workers/styling/style.py.md) β€” *Style*
    *   [theme_applier.py.md](./workers/styling/theme_applier.py.md) β€” *Theme Applier*
*   **initialization/**
    *   [application_initializer.py.md](./workers/initialization/application_initializer.py.md) β€” *Application Initializer*
    *   [debug_cleaner.py.md](./workers/initialization/debug_cleaner.py.md) β€” *Debug Cleaner*
    *   [path_initializer.py.md](./workers/initialization/path_initializer.py.md) β€” *Path Initializer*
    *   [worker_project_paths.py.md](./workers/initialization/worker_project_paths.py.md) β€” *Worker Project Paths*
*   **handlers/**
    *   [json_validator.py.md](./workers/handlers/json_validator.py.md) β€” *Json Validator*
    *   [widget_event_binder.py.md](./workers/handlers/widget_event_binder.py.md) β€” *Widget Event Binder*
*   **State_Cache/**
    *   [__init__.py.md](./workers/State_Cache/__init__.py.md) β€” *  Init  *
    *   [cache_io_handler.py.md](./workers/State_Cache/cache_io_handler.py.md) β€” *Cache Io Handler*
    *   [cache_traffic_controller.py.md](./workers/State_Cache/cache_traffic_controller.py.md) β€” *Cache Traffic Controller*
    *   [gui_state_restorer.py.md](./workers/State_Cache/gui_state_restorer.py.md) β€” *Gui State Restorer*
    *   [state_cache_manager.py.md](./workers/State_Cache/state_cache_manager.py.md) β€” *State Cache Manager*
    *   [state_comparator.py.md](./workers/State_Cache/state_comparator.py.md) β€” *State Comparator*
*   **importers/**
    *   [__init__.py.md](./workers/importers/__init__.py.md) β€” *  Init  *
    *   [worker_importer_appender.py.md](./workers/importers/worker_importer_appender.py.md) β€” *Worker Importer Appender*
    *   [worker_importer_editor.py.md](./workers/importers/worker_importer_editor.py.md) β€” *Worker Importer Editor*
    *   [worker_importer_loader.py.md](./workers/importers/worker_importer_loader.py.md) β€” *Worker Importer Loader*
    *   [worker_importer_saver.py.md](./workers/importers/worker_importer_saver.py.md) β€” *Worker Importer Saver*
    *   [worker_marker_csv_to_json_mqtt.py.md](./workers/importers/worker_marker_csv_to_json_mqtt.py.md) β€” *Worker Marker Csv To Json Mqtt*
    *   [worker_marker_file_import_converter.py.md](./workers/importers/worker_marker_file_import_converter.py.md) β€” *Worker Marker File Import Converter*
    *   **formats/**
        *   [worker_importer_from_csv_unknown.py.md](./workers/importers/formats/worker_importer_from_csv_unknown.py.md) β€” *Worker Importer From Csv Unknown*
        *   [worker_importer_from_ias_html.py.md](./workers/importers/formats/worker_importer_from_ias_html.py.md) β€” *Worker Importer From Ias Html*
        *   [worker_importer_from_shure_wwb_shw.py.md](./workers/importers/formats/worker_importer_from_shure_wwb_shw.py.md) β€” *Worker Importer From Shure Wwb Shw*
        *   [worker_importer_from_shure_wwb_zip.py.md](./workers/importers/formats/worker_importer_from_shure_wwb_zip.py.md) β€” *Worker Importer From Shure Wwb Zip*
        *   [worker_importer_from_soundbase_pdf_v1.py.md](./workers/importers/formats/worker_importer_from_soundbase_pdf_v1.py.md) β€” *Worker Importer From Soundbase Pdf V1*
        *   [worker_importer_from_soundbase_pdf_v2.py.md](./workers/importers/formats/worker_importer_from_soundbase_pdf_v2.py.md) β€” *Worker Importer From Soundbase Pdf V2*
*   **icons/**
    *   [__init__.py.md](./workers/icons/__init__.py.md) β€” *  Init  *
    *   [make_icon.py.md](./workers/icons/make_icon.py.md) β€” *Make Icon*

Last Updated: 2026-02-24 | Generated by OPEN-AIR Documentation Engine

About

Open Air - wireless RF scanning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors