# Software

The repository contains host-side libraries and utilities plus node and
submaster firmware.

## Current host software

| Component | Purpose |
|---|---|
| `src/mscb.cxx` | C-compatible MSCB host API, implemented in C++ |
| `include/mscbxx.h` | Header-only MSCB++ node and variable façade |
| `src/msc.cxx` | Interactive command-line client |
| `python/mscb.py` | Python Ethernet/UDP MSCB library |
| `python/msc.py` | Python command-line client using `mscb.py` directly |
| `include/mscb.h` | Public types, constants, and C declarations |

Use the [C library](c-library.md), [MSCB++ API](../reference/mscbxx-api.md), [Python library](python.md), or
[`msc` command reference](../reference/msc-cli.md) according to the application.

## Typical workflow

1. Discover or identify an Ethernet submaster.
2. Scan or ping the node address space.
3. Query node and variable metadata.
4. Read or write typed variables.
5. Save persistent settings with `FLASH` when required.
6. Save an XML snapshot before broad configuration changes.

Use group and broadcast writes sparingly: they intentionally produce no unique
acknowledgement.
