Metadata-Version: 2.4
Name: bit-pirate
Version: 0.1.1
Summary: Python clients for ESP32 Bit Pirate over USB serial, Wi-Fi, and BPIO2
Author: Geo Frey
Project-URL: Homepage, https://github.com/geo-tp/ESP32-Bit-Pirate
Project-URL: Repository, https://github.com/geo-tp/Bit-Pirate-Python
Project-URL: Issues, https://github.com/geo-tp/Bit-Pirate-Python/issues
Keywords: esp32,hardware-hacking,serial,i2c,spi,uart,bpio2
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Topic :: System :: Hardware
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
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: pyserial>=3.5
Requires-Dist: websocket-client>=1.8
Requires-Dist: cobs>=1.2
Requires-Dist: flatbuffers>=24.3
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=6; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"

# Bit Pirate Python

Python clients for controlling [ESP32 Bit Pirate](https://github.com/geo-tp/ESP32-Bit-Pirate) through:

- USB serial CLI
- Wi-Fi WebSocket CLI
- BPIO2 binary GPIO, I2C, and SPI adapter mode

## Installation

```bash
pip install bit-pirate
```

The PyPI distribution is named `bit-pirate`; the Python import package is `bitpirate`.

## USB serial CLI

```python
from bitpirate import BitPirate

bp = BitPirate.auto_connect()
bp.start()
bp.change_mode("i2c")
bp.send("scan")
bp.wait()
print(bp.receive())
bp.stop()
```

A specific serial port can also be selected:

```python
from bitpirate import BitPirate

bp = BitPirate("/dev/ttyACM0")
```

## Wi-Fi CLI

```python
from bitpirate import BitPirateWifi

bp = BitPirateWifi("192.168.4.1")
bp.start()
bp.change_mode("uart")
bp.send("read")
print(bp.receive())
bp.stop()
```

## BPIO2

Switch ESP32 Bit Pirate to the BPIO2 USB adapter before opening the port.

```python
from bitpirate.bpio2 import BPIOClient

with BPIOClient("/dev/ttyACM0", timeout=3) as client:
    status = client.status_request()
    print(status)
```

Protocol helpers are available as `BPIOGPIO`, `BPIOI2C`, and `BPIOSPI`.
