# HAICU

## Overview

Package and command line utility for controlling and sequencing the MLD1200

The available subcommands are:

- `list` - List of available MLD1200 devices
- `info` - Get full report on MLD1200, all registers and status bits
- `set` - Allows human-readable setting of register values
- `upload` - Upload a new sequence into MLD1200 (does not run!)
- `program` - Upload and start sequence
- `convert` - Convert derived.txt file into .RLE format
- `compare` - Compare a derived file to an RLE file
- `csv` - Future use. Will convert .csv directly to RLE
- `monitor` - Attach to MLD and log errors

Diagnostic subcommands:
- `memtest` - Test the selected MLD by writing then reading random values to DDR memory
- `status` - Low level readback of status registers
- `control` - Low level read/write of control registers
- `memory` - Low level read/write of DDR memory
- `bread` - Low level block read of DDR memory section

## Installation

The recommended installation method is via pip

  To install:
    `pip install haicu`

  To upgrade:
    `pip install -U haicu`

  To run it locally from the source (from the `scripts/haicu` directory):
    `python -m haicu`

## Interactive

 Command:
  `haicu-ctl [-h] [--version] [-v] [-l file] [-s SERIAL] [-j] {list,info,set,upload,program,convert,compare,csv,monitor}`

 Purpose:
  Connects to an MLD1200 device and reads/writes registers, statuses, and memory. Also contains utility functions to create .RLE files for consumption by device.

 Options:

  `-h` or `--help`
  Print out help for general usage or subcommand. Ie: `haicu-ctl -h` or `haicu-ctl reg -h`

  `--version`
  Print out current version

  `-v` or `--verbose`
   Increase logging level, can be used multiple times

  `-l LOG_FILE` or `--log LOG_FILE`
   Specify log file name, instead of standard naming scheme

  `-s SERIAL` or `--serial SERIAL`
   Specify serial number of MLD1200 to connect to

  `-j` or `--json`
   For reads, format output in JSON. Only affects `info`, `register`, `memory`, and `bread`

