tmtccmd


Nametmtccmd JSON
Version 7.0.0 PyPI version JSON
download
home_page
SummaryTMTC Commander Core
upload_time2023-11-10 17:34:12
maintainer
docs_urlNone
author
requires_python>=3.8
licenseApache-2.0 or MIT
keywords ccsds ecss space communication packet
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center"> <img src="misc/logo.png" width="40%"> </p>

TMTC Commander [![Documentation Status](https://readthedocs.org/projects/tmtccmd/badge/?version=latest)](https://tmtccmd.readthedocs.io/en/latest/?badge=latest)
[![ci](https://github.com/robamu-org/tmtccmd/actions/workflows/ci.yml/badge.svg)](https://github.com/robamu-org/tmtccmd/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/robamu-org/tmtccmd/branch/main/graph/badge.svg?token=BVOE3A4WE4)](https://codecov.io/gh/robamu-org/tmtccmd)
[![PyPI version](https://badge.fury.io/py/tmtccmd.svg)](https://badge.fury.io/py/tmtccmd)
====

## Overview

- [Documentation](https://tmtccmd.readthedocs.io/en/latest/)
- [Project Homepage](https://github.com/robamu-org/tmtccmd)

This is a small Python framework targeted towards the testing of remote systems like satellites
and rovers. It simplifies sending and receiving TMTCs (Telemetry and Telecommands)
and testing via different communication interfaces. This tool can be
used either as a command line tool or as a GUI tool. The GUI features require a PyQt5 installation.
This package also has dedicated support to send and receive ECSS PUS packets or other generic
CCSDS packets.

## Features

- Generic communication interface abstraction which can also be used without the other components
  of the library if the goal is to separate the packet logic from the communication interface.
  The dedicated documentation chapter contains a more information and examples.
- Special support for [Packet Utilisation Standard (PUS)](https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/)
  packets and [CCSDS Space Packets](https://public.ccsds.org/Pubs/133x0b2e1.pdf).
  This library uses the [spacepackets](https://github.com/us-irs/py-spacepackets) library for most
  packet implementations.
- High level CFDP components which allow to build
  [CFDP standard conformant](https://public.ccsds.org/Pubs/727x0b5.pdf) CFDP handlers.
- Support for both CLI and GUI usage
- Flexibility in the way to specify telecommands to send and how to handle incoming telemetry.
  This is done by requiring the user to specify callbacks for both TC specification and TM handling.
- One-Queue Mode for simple command sequences and Multi-Queue for more complex command sequences
- Listener mode to only listen to incoming telemetry
- Basic logger components which can be used to store sent Telecommands and incoming Telemetry
  in files

- Some components are tailored towards usage with the
  [Flight Software Framework (FSFW)](https://egit.irs.uni-stuttgart.de/fsfw/fsfw/)

The framework currently supports the following communication interfaces:

1. TCP/IP with UDP and TCP. The TCP interface currently only supports sending CCSDS space packets
   and is able to parse those packets from the received data stream.
2. Serial Communication with a transport layer using either [COBS](https://pypi.org/project/cobs/)
   encoded packets or DLE as a simple [ASCII based transport layer](https://pypi.org/project/dle-encoder/).
3. QEMU, using a virtual serial interface

It is also possible to supply custom interfaces.

## Examples 

The [`examples`](https://github.com/robamu-org/tmtccmd/tree/main/examples) folder contains a simple
example using a  dummy communication interface. It sends a PUS ping telecommand and then reads the
ping reply and  the verification replies back from the dummy interface. Assuming, the package was
installed in a virtual environment like shown in the [installation chapter](#install), it can be
run like this for the CLI mode:

```sh
cd examples
./tmtcc.py
```

or like this for the GUI mode:

```sh
cd examples
./tmtcc.py -g
```

The [EIVE](https://egit.irs.uni-stuttgart.de/eive/eive-tmtc) and
[SOURCE](https://git.ksat-stuttgart.de/source/tmtc) project implementation of the TMTC commander
provide more complex implementations.

## Tests

To run the tests, install the test requirements first with the following command, assuming
a virtual environment:

```sh
pip install .[gui,test]
```

All tests are provided in the `src/test` folder and can be run with coverage information
by running

```sh
coverage run -m pytest
```

provided that `pytest` and `coverage` were installed with

```sh
pip install coverage pytest
```

## <a id="install"></a> Installation

It is recommended to use a virtual environment when installing this library. The steps here
assume you have [set up and activated the environment](https://docs.python.org/3/tutorial/venv.html).

To install the full version with GUI support, run the following command to install from the cloned
source code

```sh
pip install .[gui]
```

You can omit `[gui]` for a CLI only installation. Alternatively you can also install the package
from PyPI with `pip install -e tmtccmd[gui]`.

## Documentation

The documentation is built with Sphinx

Install the required dependencies first:

```sh
pip install -r docs/requirements.txt
```

Then the documentation can be built with

```sh
cd docs
make html
```

The doctests can be run with the following command

```sh
cd docs
make doctest
```

## Using PyCharm

When using PyCharm and running the application from PyCharm, it is recommended to set
the `Emulate terminal in output console` option. This is because packages like `prompt-toolkit`
require a complete terminal for features like auto-complete to work.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "tmtccmd",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "ccsds,ecss,space,communication,packet",
    "author": "",
    "author_email": "Robin Mueller <robin.mueller.m@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/ce/c7/90dcb161a535a859c1de4bd551c05a4dc28737a16c6d74e56c04fe62864b/tmtccmd-7.0.0.tar.gz",
    "platform": null,
    "description": "<p align=\"center\"> <img src=\"misc/logo.png\" width=\"40%\"> </p>\n\nTMTC Commander [![Documentation Status](https://readthedocs.org/projects/tmtccmd/badge/?version=latest)](https://tmtccmd.readthedocs.io/en/latest/?badge=latest)\n[![ci](https://github.com/robamu-org/tmtccmd/actions/workflows/ci.yml/badge.svg)](https://github.com/robamu-org/tmtccmd/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/robamu-org/tmtccmd/branch/main/graph/badge.svg?token=BVOE3A4WE4)](https://codecov.io/gh/robamu-org/tmtccmd)\n[![PyPI version](https://badge.fury.io/py/tmtccmd.svg)](https://badge.fury.io/py/tmtccmd)\n====\n\n## Overview\n\n- [Documentation](https://tmtccmd.readthedocs.io/en/latest/)\n- [Project Homepage](https://github.com/robamu-org/tmtccmd)\n\nThis is a small Python framework targeted towards the testing of remote systems like satellites\nand rovers. It simplifies sending and receiving TMTCs (Telemetry and Telecommands)\nand testing via different communication interfaces. This tool can be\nused either as a command line tool or as a GUI tool. The GUI features require a PyQt5 installation.\nThis package also has dedicated support to send and receive ECSS PUS packets or other generic\nCCSDS packets.\n\n## Features\n\n- Generic communication interface abstraction which can also be used without the other components\n  of the library if the goal is to separate the packet logic from the communication interface.\n  The dedicated documentation chapter contains a more information and examples.\n- Special support for [Packet Utilisation Standard (PUS)](https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/)\n  packets and [CCSDS Space Packets](https://public.ccsds.org/Pubs/133x0b2e1.pdf).\n  This library uses the [spacepackets](https://github.com/us-irs/py-spacepackets) library for most\n  packet implementations.\n- High level CFDP components which allow to build\n  [CFDP standard conformant](https://public.ccsds.org/Pubs/727x0b5.pdf) CFDP handlers.\n- Support for both CLI and GUI usage\n- Flexibility in the way to specify telecommands to send and how to handle incoming telemetry.\n  This is done by requiring the user to specify callbacks for both TC specification and TM handling.\n- One-Queue Mode for simple command sequences and Multi-Queue for more complex command sequences\n- Listener mode to only listen to incoming telemetry\n- Basic logger components which can be used to store sent Telecommands and incoming Telemetry\n  in files\n\n- Some components are tailored towards usage with the\n  [Flight Software Framework (FSFW)](https://egit.irs.uni-stuttgart.de/fsfw/fsfw/)\n\nThe framework currently supports the following communication interfaces:\n\n1. TCP/IP with UDP and TCP. The TCP interface currently only supports sending CCSDS space packets\n   and is able to parse those packets from the received data stream.\n2. Serial Communication with a transport layer using either [COBS](https://pypi.org/project/cobs/)\n   encoded packets or DLE as a simple [ASCII based transport layer](https://pypi.org/project/dle-encoder/).\n3. QEMU, using a virtual serial interface\n\nIt is also possible to supply custom interfaces.\n\n## Examples \n\nThe [`examples`](https://github.com/robamu-org/tmtccmd/tree/main/examples) folder contains a simple\nexample using a  dummy communication interface. It sends a PUS ping telecommand and then reads the\nping reply and  the verification replies back from the dummy interface. Assuming, the package was\ninstalled in a virtual environment like shown in the [installation chapter](#install), it can be\nrun like this for the CLI mode:\n\n```sh\ncd examples\n./tmtcc.py\n```\n\nor like this for the GUI mode:\n\n```sh\ncd examples\n./tmtcc.py -g\n```\n\nThe [EIVE](https://egit.irs.uni-stuttgart.de/eive/eive-tmtc) and\n[SOURCE](https://git.ksat-stuttgart.de/source/tmtc) project implementation of the TMTC commander\nprovide more complex implementations.\n\n## Tests\n\nTo run the tests, install the test requirements first with the following command, assuming\na virtual environment:\n\n```sh\npip install .[gui,test]\n```\n\nAll tests are provided in the `src/test` folder and can be run with coverage information\nby running\n\n```sh\ncoverage run -m pytest\n```\n\nprovided that `pytest` and `coverage` were installed with\n\n```sh\npip install coverage pytest\n```\n\n## <a id=\"install\"></a> Installation\n\nIt is recommended to use a virtual environment when installing this library. The steps here\nassume you have [set up and activated the environment](https://docs.python.org/3/tutorial/venv.html).\n\nTo install the full version with GUI support, run the following command to install from the cloned\nsource code\n\n```sh\npip install .[gui]\n```\n\nYou can omit `[gui]` for a CLI only installation. Alternatively you can also install the package\nfrom PyPI with `pip install -e tmtccmd[gui]`.\n\n## Documentation\n\nThe documentation is built with Sphinx\n\nInstall the required dependencies first:\n\n```sh\npip install -r docs/requirements.txt\n```\n\nThen the documentation can be built with\n\n```sh\ncd docs\nmake html\n```\n\nThe doctests can be run with the following command\n\n```sh\ncd docs\nmake doctest\n```\n\n## Using PyCharm\n\nWhen using PyCharm and running the application from PyCharm, it is recommended to set\nthe `Emulate terminal in output console` option. This is because packages like `prompt-toolkit`\nrequire a complete terminal for features like auto-complete to work.\n",
    "bugtrack_url": null,
    "license": "Apache-2.0 or MIT",
    "summary": "TMTC Commander Core",
    "version": "7.0.0",
    "project_urls": {
        "Homepage": "https://github.com/robamu-org/tmtccmd"
    },
    "split_keywords": [
        "ccsds",
        "ecss",
        "space",
        "communication",
        "packet"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2309e6ac657fcce43a0db5ccf3be6700a95364af6173c05937c66e77b89f7d39",
                "md5": "68277af6bfce6f84b63d259f6bca629d",
                "sha256": "beab3133277252dc4489aa2c3528378f0a3f267f418258e56069b54e7063fa1c"
            },
            "downloads": -1,
            "filename": "tmtccmd-7.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "68277af6bfce6f84b63d259f6bca629d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 755116,
            "upload_time": "2023-11-10T17:34:10",
            "upload_time_iso_8601": "2023-11-10T17:34:10.051937Z",
            "url": "https://files.pythonhosted.org/packages/23/09/e6ac657fcce43a0db5ccf3be6700a95364af6173c05937c66e77b89f7d39/tmtccmd-7.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cec790dcb161a535a859c1de4bd551c05a4dc28737a16c6d74e56c04fe62864b",
                "md5": "6dbd43a24a0e108367630fe174c22a73",
                "sha256": "fed0208a4566191406a5ba2f5c2e70d29d4f9818a2d5e5254e55998409a6d018"
            },
            "downloads": -1,
            "filename": "tmtccmd-7.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "6dbd43a24a0e108367630fe174c22a73",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 657853,
            "upload_time": "2023-11-10T17:34:12",
            "upload_time_iso_8601": "2023-11-10T17:34:12.654196Z",
            "url": "https://files.pythonhosted.org/packages/ce/c7/90dcb161a535a859c1de4bd551c05a4dc28737a16c6d74e56c04fe62864b/tmtccmd-7.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-10 17:34:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "robamu-org",
    "github_project": "tmtccmd",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "tmtccmd"
}
        
Elapsed time: 0.26338s