Metadata-Version: 2.4
Name: amfiprot_amfitrack
Version: 0.0.1a15
Summary: AmfiTrack extension for Amfiprot
Author: Kristian Klein-Wengel
Author-email: kkw@amfitech.dk
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: amfiprot
Dynamic: license-file

AmfiTrack extensions for the [Amfiprot](https://pypi.org/project/amfiprot/) package.

# Installation
Install (or update) with `pip`:

```shell
pip install -U amfiprot-amfitrack
```

# Usage example
Instead of creating a generic `amfiprot.Device`, create an `amfitrack.Device` to get access to AmfiTrack specific functionality and payload interpretation:

```python
import amfiprot
import amfiprot_amfitrack as amfitrack

VENDOR_ID = 0xC17
PRODUCT_ID_SENSOR = 0xD12
PRODUCT_ID_SOURCE = 0xD01

if __name__ == "__main__":
    conn = None
    try:
        conn = amfiprot.USBConnection(VENDOR_ID, PRODUCT_ID_SENSOR)
    except:
        try:
            conn = amfiprot.USBConnection(VENDOR_ID, PRODUCT_ID_SOURCE)
        except:
            print("No Amfitrack device found")
            exit()
            
    nodes = conn.find_nodes()
    Devs = []

    print(f"Found {len(nodes)} node(s).")
    for node in nodes:
        print(f"[{node.tx_id}] {node.name}")
        Devs.append(amfitrack.Device(node))

    conn.start()

    while True:
        for idx, Dev in enumerate(Devs):
            if Dev.packet_available():
                packet = Dev.get_packet()
                if type(packet.payload) == amfitrack.payload.EmfImuFrameIdPayload:
                    # Sensor measurement package 
                    payload: amfitrack.payload.EmfImuFrameIdPayload = packet.payload
                    print(payload.emf) # emf contains position and orientation
                elif type(packet.payload) == amfitrack.payload.SourceMeasurementPayload:
                    # Source measurement package
                    payload: amfitrack.payload.SourceMeasurementPayload = packet.payload
                    print("Source current:" + str(payload.current))
                elif type(packet.payload) == amfitrack.payload.SourceCalibrationPayload:
                    # Source calibration package (sent at 5Hz)
                    payload: amfitrack.payload.SourceCalibrationPayload = packet.payload
                    print("Source frequency:" + str(payload.frequency))
                else:
                    print(packet)
```
