Metadata-Version: 2.4
Name: rr-app
Version: 1.5.1
Summary: EMGS PyQt6 desktop application (BLE + asyncio).
Author: rr_emg contributors
License: Proprietary
Project-URL: Homepage, https://github.com/o0fung/RR_EMG
Project-URL: Repository, https://github.com/o0fung/RR_EMG
Project-URL: Issues, https://github.com/o0fung/RR_EMG/issues
Keywords: emg,ble,pyqt6,imu,sensor
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
Requires-Dist: PyQt6==6.9.1
Requires-Dist: qasync==0.27.1
Requires-Dist: bleak==0.22.3
Requires-Dist: pyqtgraph==0.13.7
Requires-Dist: numpy==2.3.1
Requires-Dist: rich==14.1.0
Requires-Dist: pyobjc-core==10.3.2; platform_system == "Darwin"
Requires-Dist: pyobjc-framework-Cocoa==10.3.2; platform_system == "Darwin"
Requires-Dist: pyobjc-framework-CoreBluetooth==10.3.2; platform_system == "Darwin"
Requires-Dist: pyobjc-framework-libdispatch==10.3.2; platform_system == "Darwin"
Provides-Extra: ml
Requires-Dist: scipy; extra == "ml"
Requires-Dist: scikit-learn; extra == "ml"
Requires-Dist: joblib; extra == "ml"

# RR App (`rr_emg`)

Language: **English** | [繁體中文](README.zh-TW.md) | [简体中文](README.zh-CN.md)

## Overview

`rr_emg` is a desktop GUI for Bluetooth monitoring and control.

It supports:
- **EMGS devices** (EMG + IMU streaming)
- **AKR-compatible devices** (including `rr_akr2` protocol behavior and other compatible devices such as EMGS-family products)

Typical use:
- scan and connect to devices,
- monitor live data,
- send control/configuration commands,
- record sessions for analysis.

## Audience

- Operators and clinicians
- R&D teams
- Integrators and developers

For operator-focused instructions, see `IFU.md`.

## Requirements

- Python `>=3.10,<3.14`
- Bluetooth-capable host (macOS / Linux / Windows)

## Installation

### Option 1: Release packages (recommended for most operators)

Download from [GitHub Releases](https://github.com/o0fung/RR_EMG/releases/latest).

- Windows: `rr-app-<version>-setup.exe`
- macOS: `rr-app-<version>-macos.dmg`

On macOS, if Gatekeeper warns on unsigned builds, right-click the app and choose **Open**.

### Option 2: PyPI / pipx

```bash
pip install rr-app
```

or

```bash
pipx install rr-app
```

### Option 3: From source (developer path)

```bash
python -m venv .venv
source .venv/bin/activate
pip install -e .
```

## Quick Start

1. Turn on host Bluetooth.
2. Power on target device(s).
3. Launch:

```bash
rr
```

4. Scan and connect in the app.
5. Use **Signals** tab for live monitoring.
6. Use settings/control actions as needed.
7. Start recording when session export is required.

Simulation mode (no hardware):

```bash
RR_BACKEND=sim rr
```

## Device Compatibility Notes

- EMGS discovery prefix: `EMGS`
- AKR discovery prefixes: `AKR` and optional legacy `BT`
- AKR BLE profile fallback is built-in (new profile first, legacy profile fallback)

## Protocol and OTA Docs

- AKR/BT CLI + telemetry: `doc/BT_AKR_DEVICE_PROTOCOL.md`
- OTA CLI session protocol: `doc/OTA_PROTOCOL_CLI_SESSION.md`

## Data and Logs

- Startup logs:
  - macOS: `~/Library/Logs/rr-app`
  - Linux/Windows: `~/.rr-app/logs`
- Default recording folder: `~/rr_data`

## Project Links

- Homepage: [RR_EMG](https://github.com/o0fung/RR_EMG)
- Issues: [GitHub Issues](https://github.com/o0fung/RR_EMG/issues)

