---
name: aero-uhf-integration
description: Integrate AERO UHF Mark3 readers with the Helios or RFIDReaderConnect SDK on Apple, Android, Flutter, or a hosted web page inside Helios Showcase. Use for reader discovery, BLE, Wi-Fi, USB, lifecycle, inventory, tag events, memory operations, WebView mini programs, window.RFIDReader, or bridge troubleshooting. Do not use for unrelated RFID hardware.
---

# AERO UHF integration

Build the smallest maintainable integration that fits the application's existing architecture. Ground every symbol in the project's installed SDK version; never combine APIs from different branding generations.

## Classify the integration first

Inspect the repository and determine:

- target: native Apple, native Android, Flutter, hosted web page, or native WebView host;
- reader: Mark3-TT7, Mark3-TT5, or Mark3-TT3;
- transport: BLE, Wi-Fi, or USB;
- ownership: host-connected reader or page-created reader;
- state architecture, permission layer, deployment URL, and existing test commands.

If the task is a web page running inside Helios Showcase, do not add a native SDK to the web project. Use the injected `window.RFIDReader` contract.

## Read the focused references

- Hosted page, mini program, WebView host, deep link, or `window.RFIDReader`: read [references/web-showcase.md](references/web-showcase.md).
- Apple or Swift host: read [references/apple.md](references/apple.md).
- Android or Kotlin host: read [references/android.md](references/android.md).
- Flutter host or application: read [references/flutter.md](references/flutter.md).
- Inventory, tag memory, configuration, test design, or advanced reader commands: read [references/reader-workflows.md](references/reader-workflows.md).

For a WebView-host task, read the web guide and the host-platform guide. For a page-only task, the web guide is normally sufficient.

## Resolve the installed SDK generation

The SDK is moving from `RFIDReaderConnect` naming to `HeliosSDK` naming. Inspect package manifests, lockfiles, imports, and generated API docs before editing:

- Apple may expose `RFIDReaderConnect` or `HeliosSDK` as the module/product.
- Android may expose `com.bypratham.rfidreaderconnect` or `com.aerouhf.helios_sdk` packages.
- Flutter may expose `rfid_reader_connect` or `helios_sdk`.

Use one coherent generation throughout the project. The installed dependency and its matching documentation outrank examples in this skill. Do not rename a working integration unless the user explicitly requests a migration.

## Preserve lifecycle invariants

- Keep one reader and delegate in app-scoped state.
- Keep platform discovery separate from reader ownership and stop discovery before connecting.
- Request permissions before discovery or transport access.
- Wait for the ready callback/event before configuration or inventory.
- Derive connection, scanning, tag, and error state from callbacks/events.
- Treat command promises as accepted dispatch, not proof that hardware state changed.
- Remove listeners, stop active inventory, and detach the bridge when its screen closes.
- Keep credentials, network secrets, access passwords, and device identifiers out of source control and logs.

## Safety boundaries

Use read-only inventory and identity operations by default. Require explicit user intent before writing EPC or memory, changing region or permanent RF settings, resetting, rebooting, or updating firmware. Never expose `window.RFIDReader` to untrusted navigation; allowlist HTTPS origins in native hosts.

## Finish with evidence

Implement permissions, connection state, start/stop inventory, tag handling, errors, and cleanup. Add focused tests around the delegate/event boundary and a mocked bridge for web pages. Run the project's format, lint, build, and tests. Report the SDK generation used, changed files, commands that passed, and BLE, USB, Wi-Fi, WebView, or physical-reader checks that still require hardware.
