Skip to content

Embedded programming interface

Benedek Horvath edited this page Oct 3, 2017 · 10 revisions

Embedded Programming Interface

Disclaimer: Information that is presented here, might be deprecated.

Component owners: Beni, Zsolti, Bálint
Date of assessment: 2016-05-10

Current status:

  • BP-TO-UPPAAL: BridgePoint is fully excluded from the project, this component is no longer needed and no longer maintained (formerly created by Raimi)

  • KVControl-MQTT-Client: Model railway track controller and data collector library based on MQTT. Created in order to communicate with the model railway track. This provides the capability to send the message to the actual controller.

  • Master-MQTT-Client: code running on the switch controllers. It is responsible for handling MQTT communication, subscribed for the topic of switch control messages. It publishes section or switch status (a.k.a. sensor data) to the corresponding topic.

  • Master-MQTT-SOC: lightweight version of the Master-MQTT-Client, currently runs on the Arduino responsible for publishing the section occupancy vector.

  • MQTT-Common: Common classes used for MQTT communication and configuration.

  • PiClient-MQTT: this component is planned to be run on a Raspberry Pi, however currently runs on a PC. This is responsible for visualizing the track occupancy and the status of the switches. It can also control sections.

  • SerialMonitor: a Java component for monitoring the Arduino software using serial communication (UART) outside the Arduino IDE

  • Documentation: MoDeS3 main repository readme contains links to the documentation

Issues and TODOs

  • Testing

  • Javadoc: done by Beni on 16.05.2016.

  • New subscribers (e.g. for switch state - "initial turnout status message") are not always informed.

Development directions and plans

  • A planned new feature is the DCC control from PC. JMRI is an existing library for the PC adapter card, however, this library seems to have a big latency.

  • PiClient-MQTT: DCC (Digital Command and Control) API is missing, so that the switches cannot be controlled yet.

Clone this wiki locally