Giter Club home page Giter Club logo

cfs-groundsystem's Introduction

Static Analysis Format Check

Core Flight System : Framework : Tool : Ground System

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

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.

See Guide-GroundSystem.md for more information.

Known issues

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

Getting Help

For best results, submit issues:questions or issues:help wanted requests at https://github.com/nasa/cFS.

Official cFS page: http://cfs.gsfc.nasa.gov

cfs-groundsystem's People

Contributors

arielswalker avatar astrogeco avatar avan989 avatar cdknightnasa avatar chillfig avatar declansullivan avatar dmknutsen avatar dzbaker avatar evanfitzgerald avatar hugovalente11 avatar jphickey avatar lbleier-gsfc avatar paulober avatar pgrimaud avatar skliper avatar thnkslprpt avatar yammajamma avatar zachar1a avatar zacnyjegomosc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cfs-groundsystem's Issues

Invalid command length

Describe the bug
There are discrepancies between the groundsystem command length and what cFS is expecting:

EventService:

  1. Delete Application Event Filter command :
    Error: Invalid cmd length: ID = 0x1801, CC = 16, Exp Len = 30, Len = 32

Time Service:

  1. Set Tone Signal Source command
    Error: Invalid cmd length: ID = 0x1805, CC = 15, Exp Len = 10, Len = 8

Table Service:

  1. Abort Table Load command:
    Error: Invalid msg length -- ID = 0x1804, CC = 9, Len = 24 (!= 46)
  2. Activate Table command:Invalid msg length -- ID = 0x1804, CC = 5, Len = 24 (!= 46)
  3. Delete Critical Table from Critical Data Store Command
    Error: Invalid msg length -- ID = 0x1804, CC = 8, Len = 24 (!= 46)
  4. Dump Table command
    Error: Invalid msg length -- ID = 0x1804, CC = 3, Len = 90 (!= 112)
  5. Telemeter One Table Registry Entry command
    Error: Invalid msg length -- ID = 0x1804, CC = 7, Len = 24 (!= 46)
  6. Validate Table command:
    Error: Invalid msg length -- ID = 0x1804, CC = 4, Len = 26 (!= 48)

Software Bus:

  1. Disable Software Bus Route command:
    Error: Invalid cmd length: ID = 0x1803, CC = 5, Exp Len = 12, Len = 9
  2. Enable Software Bus Route command:
    Error: Invalid cmd length: ID = 0x1803, CC = 4, Exp Len = 12, Len = 9

Executive Service:

  1. Delete Critical Data Store command:
    Error: Invalid cmd length: ID = 0x1806, CC = 21, Exp Len = 46, Len = 24

To Reproduce*
Steps to reproduce the behavior:

  1. Go to Ground System
  2. Start cFS
  3. In Ground System, click on the commands mention above
  4. See errors in cFS

System observed on:

  • Hardware
  • OS: Ubuntu 18.04.03
  • CFE 6.6

Reporter Info
Anh Van, NASA Goddard

Add display of parsed binary file given definition

Is your feature request related to a problem? Please describe.
cFS framework produces many binary files. Provide a general mechanism for parse/display given a defined format.

Describe the solution you'd like
Use whatever data description format is used for telemetry to interpret the file. Selectable format file, selectable binary file.

Describe alternatives you've considered
Separate tool from ground station, different description formats. Whatever works, but suggest leveraging ground system capabilities for interpreting telemetry streams.

Additional context
None

Requester Info
Jacob Hageman - NASA/GSFC

No command for sample app

Is your feature request related to a problem? Please describe.
No ground commands for sample app

Describe the solution you'd like
Implement ground commands for sample app

Describe alternatives you've considered
None

Additional context
None

Requester Info
Anh Van, NASA Goddard

Loading Table Tutorial

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
Create an tutorial on loading table using the groundsystem.

Describe alternatives you've considered
None

Additional context
none

Requester Info
Anh Van, NASA Goddard

IP address dropdown not fully working

Describe the bug
The dropdown in the main window indicates "All" or "127.0.0.1" as options. When "All" is selected, it seems to work fine, but a Python exception is thrown when "127.0.0.1" is selected:

Traceback (most recent call last):
  File "GroundSystem.py", line 87, in startTlmSystem
    subscription = '--sub=GroundSystem.' + selectedSpacecraft + '.TelemetryPackets'
TypeError: must be str, not bytes

To Reproduce
Steps to reproduce the behavior:

  1. Run the Python app
  2. Select "127.0.0.1" from the IP address dropdown
  3. Try opening the telemetry page

Expected behavior
Telemetry page should open and no crashes should occur

Reporter Info
Leor Bleier NASA GSFC\Code 582 (with support from @skliper)

Apply standard code style

Is your feature request related to a problem? Please describe.
Inconstant style

Describe the solution you'd like
See nasa/ci_lab#30 and nasa/ci_lab#28

Describe alternatives you've considered
N/A

Additional context
N/A

Requester Info
Jacob Hageman - NASA/GSFC

Sequence count likely not coming from header

Describe the bug
Looks like sequence count as displayed on the telemetry subsystem pages is not the sequence count from the header

To Reproduce
Steps to reproduce the behavior:

  1. Start cFE, start cFS-GroundStation, open cmd and tlm pages
  2. Send enable tlm command to 127.0.0.1
  3. Wait for packet counter to increment (> 1)
  4. Open ES subsystem page, sequence count will start at 1 and increment (should start higher since packets have been received)
  5. Close ES subsystem page, reopen and sequence count will start at 1 again

Expected behavior
Sequence count should be coming from the packet header, wouldn't restart every time the page opens.

Code snips
Haven't investigated yet

System observed on:

  • Hardware; cFS Dev Server 3
  • OS: Ubuntu 18.04
  • Versions: Current bundle

Additional context
Found during #66 testing

Reporter Info
Jacob Hageman - NASA/GSFC

ask for CI host/port # at startup

Is your feature request related to a problem? Please describe.
Currently the CI host/port is hard-coded in the Python code (yes, easy to change, but requires editing.)

Describe the solution you'd like
It would be nice to, instead, have the ground system ask for host/port # at startup (and use the values in the code as defaults.)

Describe alternatives you've considered
Leaving it the way it is.

Additional context
Add any other context about the feature request here.

Requester Info
[email protected]

gitignore *.pyc files

Originated from jhageman (74 on babelfish)

git should ignore compiled python files to simplify code cm.

cmdUtil.h not being use

cmdUtil.h is not being used. Only contain the prototypes for SendUdp. Suggest using it cmdUtil.h or deleting it.

Recommended lgtm python issues

Is your feature request related to a problem? Please describe.
Recommendation from lgtm:

CHeaderParser.py

else:
--
325 | line_num += 1
326 | pass
  | Unnecessary 'pass' statement.

TlmMQRecv.py

# We never get here but clean up anyhow
--
42 | subscriber.close()
  | Unreachable statement.
43 |  
RoutingService.py

self.sock.bind(('', udpRecvPort))
--
  | '' binds a socket to all interfaces.

CommandParser.py

line 20:

import sys
--
  | Import of 'sys' is not used.
21 | import csv
  | Import of 'csv' is not used.
22 | import getopt
  | Import of 'getopt' is not used.
23 | import subprocess
  | Import of 'subprocess' is not used.
24 | import shlex
  | Import of 'shlex' is not used.

HTMLDocsParser.py

line 20:

import sys
--
  | Import of 'sys' is not used.
21 | import csv
  | Import of 'csv' is not used.
22 | import getopt
  | Import of 'getopt' is not used.
23 | import subprocess
  | Import of 'subprocess' is not used.
24 | import shlex
  | Import of 'shlex' is not used.


ParameterDialog.py

line 234:
def retranslateUi(self, Dialog):
--
  | All statements in retranslateUi are similar in 4 Values.

GroundSystem.py

line 26:
import socket
--
  | Import of 'socket' is not used.
27 | import zmq
  | Import of 'zmq' is not used.
28 |  
29 | from PyQt4 import QtGui, QtNetwork, QtCore
  | Import of 'QtCore' is not used.Import of 'QtNetwork' is not used.


# Start FDL-FUL gui system
98 | #def startFDLSystem(self):
99 | #    selectedSpacecraft = self.getSelectedSpacecraftName()
100 | #    if selectedSpacecraft == 'All':
101 | #        subscription = ''
102 | #        self.DisplayErrorMessage('Cannot open FDL manager.\nNo spacecraft selected.')
103 | #    else:
104 | #       subscription = '--sub=GroundSystem.' + selectedSpacecraft
105 | #       os.system('( cd Subsystems/fdlGui/ && python FdlSystem.py ' + subscription + ' ) & ')
  | These comments appear to contain commented-out code.
106 |  

RoutingService.py

line 23:
import sys
--
  | Import of 'sys' is not used.
24 | import os
  | Import of 'os' is not used.
25 | import socket
26 | import zmq
27 |  
28 | from PyQt4 import QtGui, QtNetwork, QtCore
  | Import of 'QtGui' is not used.Import of 'QtNetwork' is not used.

Paramete.py

import csv
--
  | Import of 'csv' is not used.


from PyQt4 import QtGui, QtNetwork
--
  | Import of 'QtNetwork' is not used.
29 | from ParameterDialog import Ui_Dialog
30 | from HTMLParser import HTMLParser
  | Import of 'HTMLParser' is not used.


line 104:
idx = 0
--
  | The global variable 'idx' is not used.


line 111:
params = ''
--
  | The global variable 'params' is not used.

line 125:
idx = int(arg) # comand index in command definition file
--
  | The global variable 'idx' is not used.

line 163, 169, 174, 179, 184, 189, 194, 199, 204, 209
'except' clause does nothing but pass and there is no explanatory comment.

UdpCommands.py

import csv
--
  | Import of 'csv' is not used.

from HTMLParser import HTMLParser
--
  | Import of 'HTMLParser' is not used.

CHeaderParser.py

import sys, os
--
  | Import of 'os' is not used.

line 437:
typeNew = parser.findKeyword(dataTypesOrig[-1])
--
  | The global variable 'typeNew' is not used.


except IOError as e:
--
115 | print "Couldn't find default file. Checking command line arguments."
116 | except:
  | Except block directly handles BaseException.


array_size_within_limit = True
--
489 | # End of the loop.
490 | except:
  | Except block directly handles BaseException.


#else:
--
188 | #       print "Did not find any comments in definition."
  | These comments appear to contain commented-out code.


GenericTelemetry.py

import pdb
--
  | Import of 'pdb' is not used.


class TlmReceiver(QtCore.QThread):
--
127 |  
128 | def __init__(self, mainWindow, subscription):
  | All 6 statements in __init__ are identical in __init__.


TlmUDPSender.py

import sys
--
  | Import of 'sys' is not used.

EventMessage.py

line 151 - 153
udpPort  = 10000
--
  | The global variable 'udpPort' is not used.
152 | appId = 999
153 | tlmDefFile = "not-needed.txt"
  | The global variable 'tlmDefFile' is not used.

line 171:
udpPort = arg
--
  | The global variable 'udpPort' is not used.

line 175:
tlmDefFile = arg
--
  | The global variable 'tlmDefFile' is not used.


line 193 - 195:
py_endian = '<'
--
  | The global variable 'py_endian' is not used.

py_endian = '>'
--
  | The global variable 'py_endian' is not used.

GenericTelemetry.py

line 166:
udpPort  = 10000
--
  | The global variable 'udpPort' is not used.

line 186:
udpPort = arg
--
  | The global variable 'udpPort' is not used.

line 252:
for j in range (i, 40):
--
  | The global variable 'j' is not used.

UdpCommands.py

line 247:
for i in range(len(cmdDesc)):
--
  | The global variable 'i' is not used.

line 249:
for i in range (len(cmdDesc), 26):
--
  | The global variable 'i' is not used.

CommandSystem.py

for j in range (i, 22):
--
  | The global variable 'j' is not used.

line 341, 355, 369, 383, 397, 411, 425, 439, 453, 467, 481, 495, 509, 523, 537, 551, 565, 579, 593, 607, 621, 635

'except' clause does nothing but pass and there is no explanatory comment.

TelemetrySystem.py


#
--
71 | def strToHex(aString):
  | Normal methods should have 'self', rather than 'aString', as their first parameter.


#
--
80 | def dumpPacket(packetData):
  | Normal methods should have 'self', rather than 'packetData', as their first parameter.



line 82:
appIdString = appIdString + "%02X" % ord(packetData[1])
--
  | The value assigned to local variable 'appIdString' is never used.

line 167:
def dumpPacket(packetData):
--
  | The value assigned to local variable 'dumpPacket' is never used.

line 192:
send_host = "127.0.0.1"
--
  | The value assigned to local variable 'send_host' is never used.

193 | send_port =  tlmPagePort[i]
  | The value assigned to local variable 'send_port' is never used.


line 249:
def __init__(self, mainWindow, subscription):
--
  | All 6 statements in __init__ are identical in __init__.

Requester Info
Anh Van, NASA Goddard

remove ZMQ dependency

Is your feature request related to a problem? Please describe.
It's unclear what ZMQ is used for and it's not a standard Python library, so requires installation. Either it should be removed or documented what the feature is that requires it.

Describe the solution you'd like
Remove dependency/requirement for ZMQ.

Describe alternatives you've considered
Document what ZMQ is required for.

Additional context
Add any other context about the feature request here.

Requester Info
[email protected]

sendUdp uses gethostbyname

Originated by glimes (33 on babelfish):

cppcheck identifies gethostbyname as nonreentrant and obsolete, and recommends gethostbyname_r in the first case and getaddrinfo in the second.

Build issues with all warnings and pedantic defined

Describe the bug
With "-Wall -Wstrict-prototypes -std=c99 -pedantic -Wcast-align" defined, multiple issues observed:

[ 14%] Building C object tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/cmdUtil.c.o
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c: In function ‘main’:
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c:507:17: warning: overflow in implicit constant conversion [-Woverflow]
     tempShort = 0xC000; /* Sequence word. */
                 ^
[ 28%] Building C object tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/SendUdp.c.o
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c: In function ‘SendUdp’:
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:55:25: error: storage size of ‘hints’ isn’t known
     struct addrinfo     hints;
                         ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:78:30: error: invalid application of ‘sizeof’ to incomplete type ‘struct addrinfo’
     memset(&hints, 0, sizeof(struct addrinfo));
                              ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:81:25: error: ‘AI_CANONNAME’ undeclared (first use in this function)
     hints.ai_flags    = AI_CANONNAME;
                         ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:81:25: note: each undeclared identifier is reported only once for each function it appears in
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:84:15: warning: implicit declaration of function ‘getaddrinfo’ [-Wimplicit-function-declaration]
     errcode = getaddrinfo(hostname, portNum, &hints, &result);
               ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:89:63: error: dereferencing pointer to incomplete type ‘struct addrinfo’
     printf("sending data to '%s' (IP : %s); port %d\n", result->ai_canonname,
                                                               ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:132:9: warning: implicit declaration of function ‘freeaddrinfo’ [-Wimplicit-function-declaration]
         freeaddrinfo(result);
         ^
/home/jhageman/cFS/cFS-GitHub/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:55:25: warning: unused variable ‘hints’ [-Wunused-variable]
     struct addrinfo     hints;
                         ^

To Reproduce
Steps to reproduce the behavior:

  1. add_definitions("-Wall -Wstrict-prototypes -std=c99 -pedantic -Wcast-align") to mission_build.cmake prepare function
  2. make prep and make

Expected behavior
Clean build

Code snips
N/A

System observed on:

  • Hardware: cFS Dev Server
  • OS: Ubuntu 16.04
  • Versions: master bundle

Additional context
N/A

Reporter Info
Jacob Hageman - NASA/GSFC

cmdUtil is not 64-bit friendly

Originated from glimes (45 on babelfish)

As part of our "switch flip" to 64-bit on AOS, we needed to make changes to the cmdUtil program to make it 64-bit clean (the version we had, in at least one place, presumed that "long" was 32 bits).
When I refactored it to clean out the 32/64 dependency, I rerouted all the numeric data encoding through a common function, and ended up eliminating any need for the cmdUtil program to know its own endianness.

Further fixes for python3 and telemetry processing

Describe the bug
Not all scripts were updated for python3 (see also #51), and telemetry processing isn't working

To Reproduce
Steps to reproduce the behavior:

  1. Enable telemetry, view telemetry pages and they aren't getting filled in

Expected behavior
Fill in pages

System observed on:

  • cFS Dev Server 2
  • OS: Ubuntu 18.04
  • Versions: latest bundle

Reporter Info
Jacob Hageman - NASA/GSFC

Implement cmdUtil custom byte ordering logic in CopyData

Is your feature request related to a problem? Please describe.
Code as implemented utilizes endian.h, non-posix functions.

Describe the solution you'd like
Could custom implement byte ordering in CopyData w/ a few updates. Would need updated handling of the header fields.

Describe alternatives you've considered
Leave as-is, it works.

Additional context
Spawned from comment #92 (comment)

Requester Info
Jacob Hageman - NASA/GSFC

lgtm c issues

Describe the bug
Issues report from LGTM.

SendUdp.h
This header file should contain a header guard to prevent multiple inclusion.

cmdUtil.c:

 line - 213, 254, 274, 293, 318, 339
void ProcessStringArgument(char *optarg, CommandData_t *CommandData) {
--
  | Parameter CommandData hides a global variable with the same name.

cmdUtil.c

line 62 -84
Struct struct <unnamed> has 16 fields; we suggest refactoring to 15 fields or fewer.

To Reproduce
Steps to reproduce the behavior:

  1. Build against Lgtm

Reporter Info
Anh Van, NASA Goddard

Update build/run instructions for python 3

Is your feature request related to a problem? Please describe.
Guide-GroundSystem.txt is now out of date based on python 3 updates.

Describe the solution you'd like
Update the install/run guide

Describe alternatives you've considered
Move to a wiki, document in README, etc.

Requester Info
Jacob Hageman - NASA/GSFC

Not all Time command implemented

Describe the bug
Not all time commands in Ground System are implemented.

To Reproduce

  1. Go to Ground System
  2. Check command definition vs. cFE definition

System observed on:

  • Hardware
  • OS: 18.04.03
  • cFE 6.6, GroundSystem 2.0.90

Reporter Info
Anh Van, NASA Goddard

cFS ground system GUI Python code should generate cmd UDP directly

Is your feature request related to a problem? Please describe.
Currently the ground system code calls cmdUtil to send commands to the "spacecraft" via UDP messages to CI. This is clunky (and a giant security issue, not that we're that concerned about that...) and Python's quite capable of generating CCSDS UDP packets directly, skipping the need to call cmdUtil.

Describe the solution you'd like
I suggest implementing a library function to send commands, and that library function can directly generate CCSDS command UDP traffic. cmdUtil could even be re-written to be a Python program that just wraps that library function rather than requiring a compiler to build an executable version of cmdUtil.

Describe alternatives you've considered
Could just stick with current architecture. Currently this requires compiling cmdUtil and ensuring you're in the right location relative to cmdUtil for it to be called. Current calls assume the executable is in "../cmdUtil/cmdUtil" (so, wherever you start the GUI, it assumes cmdUtil is in a subdirectory called "cmdUtil" under the parent directory.

Additional context
Add any other context about the feature request here.

Requester Info
[email protected]

tempLong unused in cmdUtil.c

Originated from glimes (32 on babelfish):

cmdUtil declares tempLong and tempShort, but never uses tempLong. We should prune.

Release Prep

Is your feature request related to a problem? Please describe.
Updates for release:

  • Updated README
  • removed custom license document
  • added standard Apache 2.0
  • Updated copyright release version cFE 6.6 -> 6.7

Requester Info
Jacob Hageman - NASA/GSFC

Replace non-ascii characters

./Subsystems/Commands-Telemetry.txt:9:51: error: character code 226 (0xE2) is not portable.
./Subsystems/Commands-Telemetry.txt:66:49: error: character code 226 (0xE2) is not portable.
./Guide-GroundSystem.txt:13:241: error: character code 226 (0xE2) is not portable.
./Guide-GroundSystem.txt:21:3: error: character code 226 (0xE2) is not portable.
./Guide-GroundSystem.txt:22:3: error: character code 226 (0xE2) is not portable.
./Guide-GroundSystem.txt:23:3: error: character code 226 (0xE2) is not portable.

Convert to use a common data description format for interpreting telemetry and creating display

Is your feature request related to a problem? Please describe.
We currently duplicate changes to the groundsystem txt tlm definition files and the CCDD json files to support this element and CTF.

See also #61 (comment), EDS is another optional format

Describe the solution you'd like
Use one of the more "standard" tlm definition formats, selectable input directory as location for the format files, with a configurable default. Target endian selectable (if not defined in the format, as in the json case).

Describe alternatives you've considered
Some other shared format (or at least convertable). Note CCDD theoretically converts between a few, including these json and EDS files.

Additional context
None

Requester Info
Jacob Hageman - NASA/GSFC

Scrub/Redo GroundSystem command

Is your feature request related to a problem? Please describe.
Some of the commands are outdated and does not match current cFS.

Describe the solution you'd like
Redo all command to ensure everything is updated.

Describe alternatives you've considered
Scrubbing and fixing the parameter files manually (more difficult than just redoing the command)

Additional context
Add-on to issue #31

Requester Info
Anh Van, NASA Goddard

Reading csv file error in Python 3.

Reading csv file should use open(filename, 'r', newline='') in Python 3.

Otherwise it will raise up:

>>> with open('cs-hk-tlm.txt', 'rb') as f:
...  reader = csv.reader(f)
...  for r in reader:
...   print(r)
... 
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

This didn't address in de8c151.

Originally posted by @mlouielu in #35 (comment)

Adding Python 3 compatibility

Is your feature request related to a problem? Please describe.
In Python 3 default environment, using cFS-GroundSystem is a little tricky, since GroundSystem.py will use /usr/bin/env python for the Subsystem.

And the PyQt4 needs compile & build, it is hard to deploy in the virtual environment for it.

Describe the solution you'd like
Adding Python 3 compatibility for cFS-GroundSystem code.

Describe alternatives you've considered
By using 2to3, we can convert most of the code.

Only 2 parts need to concern:

  • csv reader open file
    • Adding a middle layer of open, or detect version in each files
  • zmq.socket.setsockopt
    • Does the subscription name need to support utf-8?

Additional context
No

Requester Info
Louie Lu / Advanced Rocket Research Center, NCTU, Taiwan

Adapt standards based cmd definitions

Is your feature request related to a problem? Please describe.
Custom database definition format is used

Describe the solution you'd like
Use the EDS definitions directly, or other the CCDD json format, or other convertable/standards based definition.

Describe alternatives you've considered
Many ways to approach this, but any progress towards more standards based definitions is an improvement.

Additional context
None

Requester Info
Jacob Hageman - NASA/GSFC

Make command secondary header endian agnostic (match GSFC spec)

Is your feature request related to a problem? Please describe.
See nasa/cFE#297

Command secondary header has always been defined by GSFC as endian agnostic, code behavior didn't match definition.

Describe the solution you'd like
Make command utility (cmdUtil) command secondary header endian agnostic.

Describe alternatives you've considered
None

Additional context
None

Requester Info
Jacob Hageman - NASA/GSFC

Add standard type processing to cmdUtil

Is your feature request related to a problem? Please describe.
Spawned from #40 and related CCB discussion.

Also relates to #2

Describe the solution you'd like
Add standard types like uint32, etc to cmdUtil processing

Requester Info
Jacob Hageman - NASA/GSFC

Resolve build warnings

2 warnings from cc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

/home/jhageman/cFS/cFS-dev/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c: In function ‘ProcessStringArgument’:
/home/jhageman/cFS/cFS-dev/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c:239:16: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
printf("String Length is %d.\n", stringLength);
^

/home/jhageman/cFS/cFS-dev/tools/cFS-GroundSystem/Subsystems/cmdUtil/sendUdp.c: In function ‘SendUdp’:
/home/jhageman/cFS/cFS-dev/tools/cFS-GroundSystem/Subsystems/cmdUtil/sendUdp.c:74:12: warning: implicit declaration of function ‘atoi’ [-Wimplicit-function-declaration]
port = atoi(portNum);
^

Add CCSDS V2 support

Is your feature request related to a problem? Please describe.
cmdUtil only supports V1

Describe the solution you'd like
Refactor the whole thing per all the related issues.

Describe alternatives you've considered
Bandaid.

Additional context
All the other issues.

Requester Info
Jacob Hageman - NASA/GSFC

String truncation warnings with newer GCC

Describe the bug
Ubuntu has released 20.04 LTS which includes GCC 9.3.0. When using this compiler it implements a much stricter (and often over-zealous) checking of string ops.

For instance:

In file included from /usr/include/string.h:495,
                 from /home/joe/code/cfecfs/github/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c:33:
In function ‘strncpy’,
    inlined from ‘main’ at /home/joe/code/cfecfs/github/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c:413:13:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 10 equals destination size [-Werror=stringop-truncation]
  106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘strncpy’,
    inlined from ‘main’ at /home/joe/code/cfecfs/github/tools/cFS-GroundSystem/Subsystems/cmdUtil/cmdUtil.c:407:13:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 32 equals destination size [-Werror=stringop-truncation]
  106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

To Reproduce
Build code with default config using GCC 9.3.0, with optimization enabled and full warnings.

Expected behavior
Code should build cleanly.

System observed on:
Ubuntu 20.04 LTS 64 bit.

Reporter Info
Joseph Hickey, Vantage Systems, Inc.

Update command and tlm definition files for GroundSystem.py

There are a number of cFE commands/tlm definitions that currently do not exist or are not defined.

Describe the solution you'd like
Audit/clean up cmd/tlm definition files.

Additional context
Add any other context about the feature request here.

Requester Info
Dan Knutsen
NASA/Goddard

Add Event Type and ID to event message display

Is your feature request related to a problem? Please describe.
Add the event type and ID to the event message display window when interpreting event messages

Requester Info
Dan Knutsen
NASA/Goddard

Pointer alignmnet issues on 32 bit ARM

It looks like some struct has changed size and it no longer aligns nicely with 32 bit ARM. It's possible that this software simply shouldn't be compiled on this platform and instead it should be reserved for an x86/x86_64 based ground station.

Steps to reproduce the behavior:

  1. Clone cFS from https://github.com/nasa/cFS
  2. Compile

Expected behavior:
Structs sizes should align so that casts can be made on platforms that do not allow unaligned access (such as ARM).

Code snips:

Scanning dependencies of target mission-all
Scanning dependencies of target cmdUtil
[ 14%] Building C object tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/cmdUtil.c.o
[ 28%] Building C object tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/SendUdp.c.o
/home/pi/upstream-cfs/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c: In function ‘SendUdp’:
/home/pi/upstream-cfs/tools/cFS-GroundSystem/Subsystems/cmdUtil/SendUdp.c:90:20: error: cast increases required alignment of target type [-Werror=cast-align]
         inet_ntoa(((struct sockaddr_in*)result->ai_addr)->sin_addr), port);
                    ^
cc1: all warnings being treated as errors
tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/build.make:86: recipe for target 'tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/SendUdp.c.o' failed
make[7]: *** [tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/SendUdp.c.o] Error 1
CMakeFiles/Makefile2:462: recipe for target 'tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/all' failed
make[6]: *** [tools/cFS-GroundSystem/Subsystems/cmdUtil/CMakeFiles/cmdUtil.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make[5]: *** [all] Error 2
CMakeFiles/mission-all.dir/build.make:57: recipe for target 'CMakeFiles/mission-all' failed
make[4]: *** [CMakeFiles/mission-all] Error 2
CMakeFiles/Makefile2:164: recipe for target 'CMakeFiles/mission-all.dir/all' failed
make[3]: *** [CMakeFiles/mission-all.dir/all] Error 2
CMakeFiles/Makefile2:171: recipe for target 'CMakeFiles/mission-all.dir/rule' failed
make[2]: *** [CMakeFiles/mission-all.dir/rule] Error 2
Makefile:212: recipe for target 'mission-all' failed
make[1]: *** [mission-all] Error 2
Makefile:120: recipe for target 'all' failed
make: *** [all] Error 2
pi@raspberrypi:~/upstream-cfs $ uname -a
Linux raspberrypi 4.19.66+ #1253 Thu Aug 15 11:37:30 BST 2019 armv6l GNU/Linux

System observed on:

  • Raspberry Pi Zero
  • OS: Linux 4.19
  • cFS git commit a4345d87c01b1818bdb217ffd4dcce8bf86e33fe, cFS-GroundSystem git commit 1c31f94f3b63d3ff9c5da35ca9f8825a89ef3258

GUI Command definitions use '--word' option unrecognized by cmdUtil

Describe the bug
The command definitions in Subsystems/cmdGui/ParameterFiles use the --word option that gets reported as unrecognized by cmdUtil.

To Reproduce
Steps to reproduce the behavior:

  1. Build cmdUtil
  2. python GroundSystem.py
  3. Select "Display Page" for Executive Servies
  4. Select "Send" for "Load and Start an Application"
  5. Fill in StackSize with a 16384 and hit send, should see:
    ../cmdUtil/cmdUtil: unrecognized option '--word=16384'

Expected behavior
Cmd should work. cmdUtil expects --long instead of --word for an int32. Not clear if the GUI command definitions should be updated or the cmdUtil. Probably more useful to cal it int32...

Code snips

printf(" --long : Add a 32 bit parameter to the packet ( hex or dec )\n");

{ "long", required_argument, NULL, 'l' },

System observed on:

  • cFS Dev server
  • OS: Ubuntu 16.04
  • Versions: Current bundle (2.1.2 of cFS_GroundSystem)

Additional context
None

Reporter Info
Jacob Hageman - NASA/GSFC

Convert a Guide-Loading-Tables.txt file to markdown

Is your feature request related to a problem? Please describe.
Guide-Loading-Tables.txt should be markdown and needs a scrub.

Describe the solution you'd like

  • Add a new file in markdown format.
  • Remove old txt loading table(s) guide.

Additional context
Currently, we have the main guide in markdown format (see: #9), so it will be consistence when we convert this "loading tables guide" to MD.

Requester Info
Marek Glijer
[email protected]

Update PyQt4 to PyQt5

Describe the solution you'd like
All usage of PyQt4 should be updated to PyQt5

Additional context
PyQt4 is extremely old at this point, and unless there is a specific need, it should not be used

Note: This fix will include code cleanup/updates as necessary, as well as fix #71 and #79

Requester Info
Leor Bleier, NASA GSFC\Code 582

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.