Northeastern-Electric-Racing / Northeastern-Electric-Racing/Calypso

Interactive MQTT Injection Tool for Calypso

Open
#292 0 comments 0 reactions 1 assignee View on GitHub

@bracyw is already working on this.

Since Mar 29, 2026.

Dominant language
Rust
Stars
2
Forks
2
Avg merge
6d 20h
Merged PRs (30d)
3

Description

Description

Add a dedicated development tool to the Calypso repo that loads the same config as simulate.rs, maps keys to topics, and publishes a generated value within that topic's defined min/max range any time a mapped key is pressed. Intended for development and manual testing—not simulation—this tool connects to Siren at the default Calypso host (127.0.0.1:1883) so NERO and Argos receive messages identically to real CAN traffic.

Acceptance Criteria
  • Implemented as a first-class tool in the Calypso repo (publishable as a standalone binary)
  • Loads config using the same patterns as simulate.rs, filtering to only topics referenced in the key mapping
  • Accepts a key-to-topic mapping at startup (e.g. via a small JSON file)
  • Pressing a mapped key generates a value within that topic's min/max and publishes to Siren
  • No free-form input supported; to change mappings the tool must be restarted with a new config
  • Defaults to 127.0.0.1:1883 with an option to override via flag or env var
  • Exits cleanly on interrupt
Proposed Solution

Add a new entry under src/bin/, reusing config loading, value generation, MQTT client, and Siren connection patterns directly from simulate.rs. After loading, filter to only topics present in the key mapping. Listen for keypress events, resolve to topic, generate value from min/max, and publish. Add tests for config loading, topic filtering, key resolution, value generation bounds, and MQTT publish behavior.

Mocks

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.