Code Monkey home page Code Monkey logo

yamcs-sle's Introduction

Yamcs Mission Control Maven Central

Yamcs is a mission control framework developed in Java. It uses an open-ended architecture that allows tailoring its feature set using yaml configuration files. You can also extend the default feature set by writing custom Java classes.

To start developing your own Yamcs application, follow our Getting Started guide.

Documentation

License

Yamcs is licensed under Affero GPLv3.

For commercial licensing please contact Space Applications Services with your use case.

Development Setup

To work on the core components of Yamcs you need JDK11, Maven and npm.

Build Java jars:

mvn clean install -DskipTests

Build web interface:

cd yamcs-web/src/main/webapp
npm install
npm run build
cd -

These commands will produce an optimized production version of the web interface. This process will take a few minutes. For faster incremental builds run in watch mode (npm run watch).

For demo and development purposes we work with an all-in-one simulation environment that uses many Yamcs features. In this simulation, Yamcs receives TM from a simple simulator of a landing spacecraft. Yamcs can also send some basic TC. The simulator starts together with Yamcs as a subprocess.

./run-example.sh simulation

This configuration stores data to /storage/yamcs-data. Ensure this folder exists and that you can write to it.

When Yamcs started successfully, you can visit the built-in web interface by navigating to http://localhost:8090.

Note to Windows users: This repository uses some relative symbolic links. To support this on Windows:

  • Enable "Developer Mode" in Windows (allows to use mklink without administrative privileges).
  • Enable msysgit symlink support: git config --global core.symlinks true
  • If you already cloned the repository prior to these steps, git status will tell you how to convert the symlinks.

Contributions

While Yamcs is managed and developed by Space Applications Services, we also consider pull requests from other contributors. For non-trivial patches we ask you to sign our CLA.

yamcs-sle's People

Contributors

dependabot[bot] avatar fqqb avatar loricvdt avatar xpromache avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

yamcs-sle's Issues

Support multiple endpoints for each provider, with round-robin connection attempts

Some SLE ground station implementations, such as that from the DSN, provide multiple endpoint locations for the same service ID, and require clients to try each in turn. It would be convenient if each provider could supply multiple endpoints, instead of a single host/port pair, and configuration options on how fast to try each endpoint.

SLE links continue to retry after "connection refused", even if disabled

To reproduce:

  1. Enable an SLE data link to an IP address that will refuse the connection attempt.

Expected result: Event list shows "Failed to connect to the SLE provider: Connection refused: /ip-addr:port

  1. Disable the SLE data link. (You can also disable all sub-links - does not affect behavior.)

Expected result: SLE connection attempts stop.
Actual result: SLE connection is retried every 30 seconds, as shown in the Events list.

Typo in event message

In AbstractTmSleLink.java, line 199, there is a typo. "satus" should be "status".

eventProducer.sendInfo("SLE production satus changed to " + productionStatusChange);

Need ability to BIND separate from START

When performing handover between ground stations, such as when using the Deep Space Network and transferring telemetry downlink from a station in Australia to a station in Spain, mission operators want the ability to BIND to a new ground station without performing START, so that if there are any problems connecting to the new ground station they can be identified before needing to get telemetry from the new ground station. Currently, enabling a SLE data link performs both a BIND and a START.

Missing dependencies

There appear to be some missing dependencies preventing this from working without modification:

abyss:yamcs-sle lgarbs$ mvn clean yamcs:run
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< org.yamcs:yamcs-sle >-------------------------
[INFO] Building Yamcs SLE 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The POM for org.yamcs:jsle:jar:0.8-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.yamcs:yamcs-core:jar:4.11.0-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for org.yamcs:yamcs-web:jar:4.11.0-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.189 s
[INFO] Finished at: 2020-07-28T15:38:46-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project yamcs-sle: Could not resolve dependencies for project org.yamcs:yamcs-sle:jar:1.0.0-SNAPSHOT: The following artifacts could not be resolved: org.yamcs:jsle:jar:0.8-SNAPSHOT, org.yamcs:yamcs-core:jar:4.11.0-SNAPSHOT, org.yamcs:yamcs-web:jar:4.11.0-SNAPSHOT: Could not find artifact org.yamcs:jsle:jar:0.8-SNAPSHOT -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

In the short term, I'm attempting to build yamcs-sle against Yamcs 4.10.9. Is there a particular yamcs-sle commit that would work best for this, or would it be easier to build against a different version of Yamcs?

SLE data links should report their names in event messages

For some ground providers, such as the Deep Space Network, multiple RCF connections need to be established (if using RCF). However, the event messages showing connection and disconnection do not display enough information to determine which data link is generating the event. As an example, this shows the connection of two RCF data links.

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.