Skip to content

Commit 1c31f94

Browse files
authored
Merge pull request #86 from nasa/integration-candidate
Integration Candidate COMBINED 2020-04-29 and 2020-05-06
2 parents 65aac14 + e8bd93c commit 1c31f94

File tree

11 files changed

+140
-136
lines changed

11 files changed

+140
-136
lines changed

Guide-GroundSystem.md

Lines changed: 63 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# cFS Ground System Version 2.1.5
1+
# cFS Ground System Version 2.1.8
22

33
## cFS Ground System Info
44

@@ -9,6 +9,7 @@ This ground system supports commanding and receiving telemetry from multiple spa
99
The Ground System contains the main window that lets you launch the different utilities.
1010

1111
To start receiving data from the cFS, you need to enable telemetry first. To enable telemetry:
12+
1213
- click the "Start Command System" button from the main window,
1314
- then from the Command System Main Page click the "Enable Tlm" button (you will need to enter the target/destination IP address as an input to this command).
1415

@@ -17,68 +18,65 @@ Note: The Main Window needs to be opened at all times so that the telemetry mess
1718
The Ground System will automatically detect the spacecraft when it starts sending the telemetry, and it will be added to the IP addresses list. You can select the spacecraft from the list, and start Telemetry System to receive its data. If 'All' spacecrafts are selected, you can start Telemetry System to display the packet count from multiple spacecrafts (if it detected more than one).
1819

1920
Future enhancements:
21+
2022
1. Detect different spacecrafts based on telemetry header (spacecraft `id`) data instead of using the spacecraft IP address.
21-
1. Add instructions for Windows.
23+
2. Add instructions for Windows.
2224

2325
## Install and run
2426

2527
Before launching the Ground System make sure that:
28+
2629
- PyQt4 is installed,
2730
- PyZMQ is installed,
2831
- cmdUtil is compiled.
2932

3033
Installing and running cFS Ground System on Ubuntu:
3134

32-
1. ```sudo apt-get install python3-pyqt4```
33-
1. ```sudo apt-get install python3-zmq```
34-
1. ```sudo apt-get install libcanberra-gtk-module```
35-
1. ```cd Subsystems/cmdUtil/ && make```
36-
1. ```python3 GroundSystem.py```
35+
1. `sudo apt-get install python3-pyqt4`
36+
2. `sudo apt-get install python3-zmq`
37+
3. `sudo apt-get install libcanberra-gtk-module`
38+
4. `cd Subsystems/cmdUtil/ && make`
39+
5. `python3 GroundSystem.py`
3740

38-
The historically included instructions for running on macOS or CentOS are included at the bottom of this document for reference.
39-
Please note that instructions have not been maintained.
40-
Welcoming instruction contributions if any of these are your platform of choice.
41+
The historically included instructions for running on macOS or CentOS are included at the bottom of this document for reference. Please note that instructions have not been maintained. Welcoming instruction contributions if any of these are your platform of choice.
4142

4243
## Adding new flight software application to ground system command GUI
4344

4445
This section was made to help developers who are adding core Flight Software (cFS) Applications to the Python-based Ground System that comes with this cFS distribution.
4546

4647
The `CHeaderParser.py` program that should be found in:
4748

48-
```GroundSystem/Subsystems/cmdGui```
49-
49+
````groundsystem/subsystems/cmdgui```
5050
Is an interactive, command-line based program to help walk developers through the process of adding custom cFS applications to the Ground System. Along with `CHeaderParser.py` is a configuration file that CHeaderParser uses to find the proper header files for your "new" cFS application. This file is named `CHeaderParser-hdr-paths.txt`, and should be placed in the same directory as `CHeaderParser.py`.
5151

5252
Expected file structure:
53-
```
54-
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CHeaderParser.py
55-
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CHeaderParser-hdr-paths.txt
56-
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CommandFiles/
57-
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/ParameterFiles/
58-
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/command-pages.txt
53+
````
54+
55+
cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CHeaderParser.py cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CHeaderParser-hdr-paths.txt cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/CommandFiles/ cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/ParameterFiles/ cFE-6.4.x-OSS-release/cfe/tools/cFS-GroundSystem/Subsystems/cmdGui/command-pages.txt
56+
5957
```
6058
Steps to adding application commands to the Ground System:
6159
62-
1. Edit `CHeaderParser-hdr-paths.txt`:
63-
1. Locate any header files that contain command code definitions or command structure definitions. These files typically end in `*app_msg.h` or `*app_msgdefs.h` but could be named anything.
64-
1. Add each one of the paths to a new line in `CHeaderParser-hdr-paths.txt`.
65-
1. Comment out any paths/lines that aren't needed with `#` (at the beginning of the line).
66-
67-
1. Run CHeaderParser:
68-
1. Call CHeaderParser using python: `python3 CHeaderParser.py`
69-
1. The program will prompt you to enter a filename for the application. This will create a pickle file for your application named `CommandFiles/<user_defined_name>`. Notice that this file will be stored in the `CommandFiles` directory. This same filename will be used in `command-pages.txt` later.
70-
1. Type `yes` if any commands in your application have parameters. The program will then look through the provided header files for `definitions.pick` which-ever definitions describe related command codes (one at a time, the program will prompt you for the next command code after all parameters have been added for the current command).
71-
1. Select the appropriate command structure for the selected command. The program will show all structures that it could find in the provided header files. Enter the index of the command structure (the corresponding index should be above the command structure).
72-
1. Select any parameters from the structure that apply. Once you have selected all applicable lines from the command structure, enter `-1` to finish. This will create a pickle file for the command/parameters named `ParameterFiles/<command_name>`. Notice that this file will be stored in the `ParameterFiles` directory.
73-
74-
1. Update `command-pages.txt` (CSV):
75-
1. Column 1 - Title of your application (whatever you want it called).
76-
1. Column 2 - filename of your application (chosen in Step 2.ii) under `CommandFiles` directory.
77-
1. Column 3 - Message ID for Application Commands (typically defined in `mission_msgids.h`).
78-
1. Column 4 - Endianess (default little endian: `LE`).
79-
1. Column 5 - PyGUI Page (default: `UdpCommands.py`).
80-
1. Column 6 - Command Send Address (default: `127.0.0.1`).
81-
1. Column 7 - Command Send Port (default: `1234`).
60+
1\. Edit `CHeaderParser-hdr-paths.txt`:
61+
1\. Locate any header files that contain command code definitions or command structure definitions. These files typically end in `*app_msg.h` or `*app_msgdefs.h` but could be named anything.
62+
1\. Add each one of the paths to a new line in `CHeaderParser-hdr-paths.txt`.
63+
1\. Comment out any paths/lines that aren't needed with `#` (at the beginning of the line).
64+
65+
1\. Run CHeaderParser:
66+
1\. Call CHeaderParser using python: `python3 CHeaderParser.py`
67+
1\. The program will prompt you to enter a filename for the application. This will create a pickle file for your application named `CommandFiles/<user_defined_name>`. Notice that this file will be stored in the `CommandFiles` directory. This same filename will be used in `command-pages.txt` later.
68+
1\. Type `yes` if any commands in your application have parameters. The program will then look through the provided header files for `definitions.pick` which-ever definitions describe related command codes (one at a time, the program will prompt you for the next command code after all parameters have been added for the current command).
69+
1\. Select the appropriate command structure for the selected command. The program will show all structures that it could find in the provided header files. Enter the index of the command structure (the corresponding index should be above the command structure).
70+
1\. Select any parameters from the structure that apply. Once you have selected all applicable lines from the command structure, enter `-1` to finish. This will create a pickle file for the command/parameters named `ParameterFiles/<command_name>`. Notice that this file will be stored in the `ParameterFiles` directory.
71+
72+
1\. Update `command-pages.txt` (CSV):
73+
1\. Column 1 - Title of your application (whatever you want it called).
74+
1\. Column 2 - filename of your application (chosen in Step 2.ii) under `CommandFiles` directory.
75+
1\. Column 3 - Message ID for Application Commands (typically defined in `mission_msgids.h`).
76+
1\. Column 4 - Endianess (default little endian: `LE`).
77+
1\. Column 5 - PyGUI Page (default: `UdpCommands.py`).
78+
1\. Column 6 - Command Send Address (default: `127.0.0.1`).
79+
1\. Column 7 - Command Send Port (default: `1234`).
8280
8381
Notes:
8482
- USE ONLY SPACES, NO TABS (Remember, it's Python).
@@ -91,88 +89,62 @@ After completing these steps, restart the Ground System and the changes should h
9189
### Issue: Cannot Send Command, receiving the "[Errno 8] Exec format error"
9290
9391
Traceback:
94-
95-
```
96-
Calling cmdUtil from Parameter.py
97-
Traceback (most recent call last):
98-
File "Parameter.py", line 100, in ProcessSendButton
99-
subprocess.Popen(cmd_args, stdout=subprocess.PIPE)
100-
File "/usr/lib/python3.7/subprocess.py", line 642, in __init__
101-
errread, errwrite)
102-
File "/usr/lib/python3.7/subprocess.py", line 1234, in _execute_child
103-
raise child_exception
104-
OSError: [Errno 8] Exec format error
10592
```
10693
107-
Fix: This problem is most likely caused by calling `cmdUtil` without compiling it. This issue has also been found to occur when the `cmdUtil` executable has been compressed/decompressed. To fix this problem, use the `Makefile` inside of the `cmdUtil` directory to compile or recompile (in the case after decompressing).
94+
Calling cmdUtil from Parameter.py Traceback (most recent call last): File "Parameter.py", line 100, in ProcessSendButton subprocess.Popen(cmd_args, stdout=subprocess.PIPE) File "/usr/lib/python3.7/subprocess.py", line 642, in __init__ errread, errwrite) File "/usr/lib/python3.7/subprocess.py", line 1234, in _execute_child raise child_exception OSError: [Errno 8] Exec format error
10895
10996
```
110-
$ cd Subsystems/cmdUtil
111-
$ make
112-
$ cd ../..
113-
$ python3 GroundSystem.py
97+
Fix: This problem is most likely caused by calling `cmdUtil` without compiling it. This issue has also been found to occur when the `cmdUtil` executable has been compressed/decompressed. To fix this problem, use the `Makefile` inside of the `cmdUtil` directory to compile or recompile (in the case after decompressing).
11498
```
11599
100+
$ cd Subsystems/cmdUtil $ make $ cd ../.. $ python3 GroundSystem.py
101+
102+
```
116103
## Historically included instructions for running on macOS or CentOS
117104
118105
### Installing and running cFS Ground System on macOS, using Homebrew
119-
120-
```
121-
$ brew install pyqt
122-
$ brew install zeromq
123-
$ ( cd Subsystems/cmdUtil/ && make )
124-
$ python GroundSystem.py
125106
```
126107
108+
$ brew install pyqt $ brew install zeromq $ ( cd Subsystems/cmdUtil/ && make ) $ python GroundSystem.py
109+
110+
```
127111
### Installing and running cFS Ground System on CentOS 6
128112
129113
#### Update yum
130114
```
131-
$ su
132-
$ <type password>
133-
$ yum -y update
134-
```
135115
116+
$ su $
117+
118+
<type password="">
119+
$ yum -y update</type>
120+
121+
```
136122
#### Install pip and python-development ####
137123
If you are on a 64-bit CentOS / RHEL based system:
138124
```
139-
$ wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
140-
$ rpm -ivh epel-release-6-8.noarch.rpm
141-
```
142125
143-
If you are on a 32-bit CentOS / RHEL based system:
126+
$ wget <http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm> $ rpm -ivh epel-release-6-8.noarch.rpm
127+
144128
```
145-
$ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
146-
$ rpm -ivh epel-release-6-8.noarch.rpm
147-
$ yum install -y python-pip
148-
$ yum install -y python-devel
129+
If you are on a 32-bit CentOS / RHEL based system:
149130
```
150131
151-
#### Install zeroMQ and pyZMQ messaging system ####
132+
$ wget <http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm> $ rpm -ivh epel-release-6-8.noarch.rpm $ yum install -y python-pip $ yum install -y python-devel
133+
152134
```
153-
$ yum install -y uuid-devel
154-
$ yum install -y pkgconfig
155-
$ yum install -y libtool
156-
$ yum install -y gcc-c++
157-
$ wget http://download.zeromq.org/zeromq-4.0.5.tar.gz
158-
$ tar xzvf zeromq-4.0.5.tar.gz
159-
$ cd zeromq-4.0.5
160-
$ ./configure
161-
$ make
162-
$ make install
163-
$ echo /usr/local/lib > /etc/ld.so.conf.d/local.conf
164-
$ ldconfig
165-
$ pip install pyzmq
135+
#### Install zeroMQ and pyZMQ messaging system ####
166136
```
167137
168-
#### Install pyQT4 ####
138+
$ yum install -y uuid-devel $ yum install -y pkgconfig $ yum install -y libtool $ yum install -y gcc-c++ $ wget <http://download.zeromq.org/zeromq-4.0.5.tar.gz> $ tar xzvf zeromq-4.0.5.tar.gz $ cd zeromq-4.0.5 $ ./configure $ make $ make install $ echo /usr/local/lib > /etc/ld.so.conf.d/local.conf $ ldconfig $ pip install pyzmq
139+
169140
```
170-
$ yum install -y PyQt4
171-
$ yum install -y qt qt-demos qt-designer qt4 qt4-designer
141+
#### Install pyQT4 ####
172142
```
173143
144+
$ yum install -y PyQt4 $ yum install -y qt qt-demos qt-designer qt4 qt4-designer
174145
175-
#### Running Ground System ###
176146
```
177-
$ python GroundSystem.py
147+
#### Running Ground System ###
178148
```
149+
150+
$ python GroundSystem.py ```

Guide-GroundSystem.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cFS Ground System Version 2.1.7
1+
cFS Ground System Version 2.1.8
22

33
cFS Ground System Info:
44

README.md

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,69 @@
22

33
This repository contains NASA's Lab Ground System (cFS-GroundSystem), which is a framework component of the Core Flight System.
44

5-
This lab application is a non-flight utility ground system to interact with the cFS. It is intended to be located in the `tools/cFS-GroundSystem` subdirectory of a cFS Mission Tree. The Core Flight System is bundled at https://github.com/nasa/cFS (which includes cFS-GroundSystem as a submodule), which includes build and execution instructions.
5+
This lab application is a non-flight utility ground system to interact with the cFS. It is intended to be located in the `tools/cFS-GroundSystem` subdirectory of a cFS Mission Tree. The Core Flight System is bundled at <https://github.com/nasa/cFS> (which includes cFS-GroundSystem as a submodule), which includes build and execution instructions.
66

77
See Guide-GroundSystem.txt for more information.
88

99
## Version History
1010

11-
##### Development Build: 2.1.7
12-
- Commands and Telemetry definitions now match code
13-
- See https://github.com/nasa/cFS-GroundSystem/pull/74
11+
### Development Build: 2.1.8
1412

15-
##### Development Build: 2.1.6
16-
- Cmd code (and checksum) are always in the same place
17-
- See https://github.com/nasa/cFS-GroundSystem/pull/69
13+
- No warnings when building with GCC9
14+
- Event messages now display both Event type and ID.
15+
- See <https://github.com/nasa/cFS-GroundSystem/pull/86>
1816

19-
##### Development Build: 2.1.5
20-
- Updated build instructions for Python 3
21-
- See https://github.com/nasa/cFS-GroundSystem/pull/64
17+
### Development Build: 2.1.7
2218

23-
##### Development Build: 2.1.4
24-
- Finish conversion to python 3
25-
- cmdutil now accepts --word as alias to --long
26-
- See https://github.com/nasa/cFS-GroundSystem/pull/54
19+
- Commands and Telemetry definitions now match code
20+
- See <https://github.com/nasa/cFS-GroundSystem/pull/74>
2721

28-
##### Development Build: 2.1.3
29-
- Minor updates to work with python 3
30-
- No longer compatible with python 2.7
31-
- Note issue #50 is to update the related documentation
32-
- See https://github.com/nasa/cFS-GroundSystem/pull/47
22+
### Development Build: 2.1.6
3323

34-
##### Development Build: 2.1.2
35-
- Minor updates (see https://github.com/nasa/cFS-GroundSystem/pull/39)
24+
- Cmd code (and checksum) are always in the same place
25+
- See <https://github.com/nasa/cFS-GroundSystem/pull/69>
3626

37-
##### Development Build: 2.1.1
38-
- Minor updates (see https://github.com/nasa/cFS-GroundSystem/pull/36)
27+
### Development Build: 2.1.5
3928

40-
### ***OFFICIAL RELEASE 2.1.0***
41-
- Minor updates (see https://github.com/nasa/cFS-GroundSystem/pull/26)
42-
- Released as part of cFE 6.7.0, Apache 2.0
29+
- Updated build instructions for Python 3
30+
- See <https://github.com/nasa/cFS-GroundSystem/pull/64>
4331

44-
### ***OFFICIAL RELEASE 2.0.90a***
45-
- Released as part of cFE 6.6.0a, Apache 2.0
32+
### Development Build: 2.1.4
33+
34+
- Finish conversion to python 3
35+
- cmdutil now accepts --word as alias to --long
36+
- See <https://github.com/nasa/cFS-GroundSystem/pull/54>
37+
38+
### Development Build: 2.1.3
39+
40+
- Minor updates to work with python 3
41+
- No longer compatible with python 2.7
42+
- Note issue #50 is to update the related documentation
43+
- See <https://github.com/nasa/cFS-GroundSystem/pull/47>
44+
45+
### Development Build: 2.1.2
46+
47+
- Minor updates (see <https://github.com/nasa/cFS-GroundSystem/pull/39>)
48+
49+
### Development Build: 2.1.1
50+
51+
- Minor updates (see <https://github.com/nasa/cFS-GroundSystem/pull/36>)
52+
53+
### **_OFFICIAL RELEASE 2.1.0_**
54+
55+
- Minor updates (see <https://github.com/nasa/cFS-GroundSystem/pull/26>)
56+
- Released as part of cFE 6.7.0, Apache 2.0
57+
58+
### **_OFFICIAL RELEASE 2.0.90a_**
59+
60+
- Released as part of cFE 6.6.0a, Apache 2.0
4661

4762
## Known issues
4863

4964
As a lab application, extensive testing is not performed prior to release and only minimal functionality is included.
5065

5166
## Getting Help
5267

53-
For best results, submit issues:questions or issues:help wanted requests at https://github.com/nasa/cFS.
68+
For best results, submit issues:questions or issues:help wanted requests at <https://github.com/nasa/cFS>.
5469

55-
Official cFS page: http://cfs.gsfc.nasa.gov
70+
Official cFS page: <http://cfs.gsfc.nasa.gov>

RoutingService.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
udpRecvPort = 1235
3434

3535
#
36-
# Receive telemetry packets, apply the appropiate header
36+
# Receive telemetry packets, apply the appropriate header
3737
# and publish the message with zeroMQ
3838
#
3939
class RoutingService(QtCore.QThread):

Subsystems/cmdGui/CHeaderParser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
# the user for necessary information, and parsing the cFS header files, this
4343
# program will generate up to two different "pickle" files for the ground
4444
# system to use (for information about pickle files and the pickle python
45-
# libary, see the link here: https://docs.python.org/2/library/pickle.html).
45+
# library, see the link here: https://docs.python.org/2/library/pickle.html).
4646
# These files will be placed in CommandFiles/ or ParameterFiles/.
4747
#
4848
# Usage:
@@ -422,7 +422,7 @@ def getFileList(self, filename='CHeaderParser-hdr-paths.txt'):
422422
# Add original data type (C data type) to list
423423
dataTypesOrig.append(line_split[0])
424424

425-
# Get rid of any occurance of ';' (at the end of the line)
425+
# Get rid of any occurrence of ';' (at the end of the line)
426426
paramNames.append(re.sub(';','',line_split[1]))
427427

428428
# Not sure about why we are keeping track of this yet

Subsystems/cmdGui/CommandSystem.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ def ProcessQuickButton(self, idx):
253253
Command = CommandSystem()
254254

255255
#
256-
# Read in the contents of the telemetry packet defintion
256+
# Read in the contents of the telemetry packet definition
257257
#
258258
cmdPageIsValid = []
259259
cmdPageDesc = []

Subsystems/cmdGui/Parameter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def ProcessSendButton(self):
122122
elif opt in ("-d", "--descrip"):
123123
cmdDesc = arg # command name, eg No-Op
124124
elif opt in ("-i", "--idx"):
125-
idx = int(arg) # comand index in command definition file
125+
idx = int(arg) # command index in command definition file
126126
elif opt in ("-h", "--host"):
127127
pageAddress = arg # send to address
128128
elif opt in ("-p", "--port"):

0 commit comments

Comments
 (0)