Releases: BallAerospace/COSMOS
v4.1.0
Welcome to COSMOS 4.1! The COSMOS API has transitioned from a custom TCP protocol to HTTP. This will make interfacing to COSMOS from programming languages other than Ruby much easier. There are also many new APIs that allows the full functionality of the CmdTlmServer and Replay to be controlled remotely. See below for the full list of changes!
New Features:
#531 Command sequence export option
#558 subscription APIs should work in disconnect mode
#559 Build Replay Functionality into CmdTlmServer
#578 Add ability to query available screens from Telemetry Viewer
#579 Create zip of configuration in saved config
#581 Make various log files readonly
#587 AUTO_INTERFACE_TARGETS ignore existing interfaces
#591 Investigate creating single COSMOS UDP socket for case where read_port == write_src_port
#599 Create subscription API for CTS messages
#601 Add background task and other status APIs
#606 Enhancement to Open File Script Interface - File Filter
#612 CSV support for strings and symbols
#620 Move Script Runner step button next to start/go
#625 Add APIs to start/stop background tasks
#626 Add API functions to get ignored parameters/items
#635 get_cmd_param_list should return the type for each command parameter
#642 Handle Infinity/NaN without invalid JSON
Maintenance:
#510 Investigate changing JsonDrb to running over HTTP
#603 CmdTlmServer invalid constructor argument
#614 Pass server message color to message subscriptions
#619 Script Runner instrumenting comments and whitespace
#630 Add ConfigEditor and CmdSequence to install launcher
#647 Make packet item sort consistent
#649 Add codecov support
Bug Fixes:
#562 Template protocol should fill Id fields
#577 Telemetry Viewer has fatal exception when called with JSON-RPC method display
#593 Race condition in Cosmos.kill_thread
#607 Support latest version of wkhtmltopdf for pdf creation and properly set working dir
#610 target shouldn't report error requiring file in target lib
#616 Ignore untested Windows version message in Windows 10
#617 Ruby 2.4's inherent Warning class shadows Qt::MessageBox::Warning
#633 combo_box is mutating input
#639 Partial rendering in config parser should enforce that rendered partials start with underscore
#654 Test Runner crashes with no config file
#655 Metadata system triggers a nil router error in api.rb with basic setup
#659 Hazardous commands throwing errors
Migration Notes from COSMOS 4.0.x:
Any custom tools in other languages that use the COSMOS API will need to be updated.
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v4.0.3
Important: UdpInterface was only working for localhost on earlier version of COSMOS 4.0.x. Please upgrade if you need Udp.
New Features:
#585 Add packet level config_name
Maintenance:
None
Bug Fixes:
#590 UdpReadSocket must be created before UdpWriteSocket if read_port == write_src_port
Migration Notes from COSMOS 3.x:
COSMOS 4 includes several breaking changes from the COSMOS 3.x series.
The first and simplest is that the Command and Telemetry Server now opens an additional port at 7780 by default, that provides a router that will send out each command that the system has sent. This can allow external systems to also log all commands sent by COSMOS. For most people this change will be transparent and no updates to your COSMOS configuration will be required.
The second is that the Command and Telemetry Server now always supports a meta data packet called SYSTEM META. This packet will always contain the MD5 sum for the current running COSMOS configuration, the version of COSMOS running, the version of your COSMOS Project, and the version of Ruby being used. You can also add your own requirements for meta data with things like the name of the operator currently running the system, or the name of a specific test you are currently running. In general you shouldn't need to do anything for this change unless you were using the previous metadata functionality in COSMOS. If you were, then you will need to migrate your meta data to the new SYSTEM META packet, and change the parameters in your CmdTlmServer or TestRunner configurations regarding meta data. If you weren't using metadata before, then you will probably just notice this new packet in your log files, and in your telemetry stream.
Finally the most exciting breaking change is in how COSMOS interfaces handle protocols. Before, the COSMOS TCP/IP and Serial interface classes each took a protocol like LENGTH, TERMINATED, etc that defined how packets were delineated by the interface. Now each interface can take a set of one or more protocols. This allows COSMOS to much more easily support nested protocols, such as the frame focused protocols of CCSDS. It also allows for creating helpful reusable protocols such as the new CRC protocol for automatically adding CRCs to outgoing commands and verifying incoming CRCs on telemetry packets. It's a great change, but if you have any custom interface classes you have written, they will probably require some modification. See the Interfaces section at cosmosrb.com to see how the new interface classes work. We will also be writing up a blog post to help document the process of upgrading. Look for this in a week or two.
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v4.0.2
Important: UdpInterface was only working for localhost on earlier version of COSMOS 4.0.x. Please upgrade if you need Udp.
New Features:
#557 LIMITSBAR widget shouldn't allow RAW
#565 Template Protocol support for logging rather than disconnect on timeout
Maintenance:
#551 TlmViewer meta AUTO_TARGET needs parameter
#553 Create cosmosrb documentation based on metadata
#554 TEMP1 limits getting disabled in demo is confusing
Bug Fixes:
#564 Items with STATES don't respect LIMITS
#568 CSV shouldn't call compact
#569 combo_box and vertical_message_box don't report correct user selection
#580 Udp interface does not work for non-localhost
Migration Notes from COSMOS 3.x:
COSMOS 4 includes several breaking changes from the COSMOS 3.x series.
The first and simplest is that the Command and Telemetry Server now opens an additional port at 7780 by default, that provides a router that will send out each command that the system has sent. This can allow external systems to also log all commands sent by COSMOS. For most people this change will be transparent and no updates to your COSMOS configuration will be required.
The second is that the Command and Telemetry Server now always supports a meta data packet called SYSTEM META. This packet will always contain the MD5 sum for the current running COSMOS configuration, the version of COSMOS running, the version of your COSMOS Project, and the version of Ruby being used. You can also add your own requirements for meta data with things like the name of the operator currently running the system, or the name of a specific test you are currently running. In general you shouldn't need to do anything for this change unless you were using the previous metadata functionality in COSMOS. If you were, then you will need to migrate your meta data to the new SYSTEM META packet, and change the parameters in your CmdTlmServer or TestRunner configurations regarding meta data. If you weren't using metadata before, then you will probably just notice this new packet in your log files, and in your telemetry stream.
Finally the most exciting breaking change is in how COSMOS interfaces handle protocols. Before, the COSMOS TCP/IP and Serial interface classes each took a protocol like LENGTH, TERMINATED, etc that defined how packets were delineated by the interface. Now each interface can take a set of one or more protocols. This allows COSMOS to much more easily support nested protocols, such as the frame focused protocols of CCSDS. It also allows for creating helpful reusable protocols such as the new CRC protocol for automatically adding CRCs to outgoing commands and verifying incoming CRCs on telemetry packets. It's a great change, but if you have any custom interface classes you have written, they will probably require some modification. See the Interfaces section at cosmosrb.com to see how the new interface classes work. We will also be writing up a blog post to help document the process of upgrading. Look for this in a week or two.
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v4.0.1
New Features:
#527 Editing config files should now bring up ConfigEditor
#528 ConfigEditor missing some keywords
#534 Create ConfigEditor Mac app
#536 Clickable canvas objects open screens
#542 Automatically populate COMMAND SYSTEM META
#543 Allow SYSTEM META items to be read only
Maintenance:
None
Bug Fixes:
#533 TestRunner strips all comments when running
#538 META_INIT broken
#540 Background task packet subscription get_packet broken
#547 convert_packet_to_data should copy buffer
Migration Notes from COSMOS 3.x:
COSMOS 4 includes several breaking changes from the COSMOS 3.x series.
The first and simplest is that the Command and Telemetry Server now opens an additional port at 7780 by default, that provides a router that will send out each command that the system has sent. This can allow external systems to also log all commands sent by COSMOS. For most people this change will be transparent and no updates to your COSMOS configuration will be required.
The second is that the Command and Telemetry Server now always supports a meta data packet called SYSTEM META. This packet will always contain the MD5 sum for the current running COSMOS configuration, the version of COSMOS running, the version of your COSMOS Project, and the version of Ruby being used. You can also add your own requirements for meta data with things like the name of the operator currently running the system, or the name of a specific test you are currently running. In general you shouldn't need to do anything for this change unless you were using the previous metadata functionality in COSMOS. If you were, then you will need to migrate your meta data to the new SYSTEM META packet, and change the parameters in your CmdTlmServer or TestRunner configurations regarding meta data. If you weren't using metadata before, then you will probably just notice this new packet in your log files, and in your telemetry stream.
Finally the most exciting breaking change is in how COSMOS interfaces handle protocols. Before, the COSMOS TCP/IP and Serial interface classes each took a protocol like LENGTH, TERMINATED, etc that defined how packets were delineated by the interface. Now each interface can take a set of one or more protocols. This allows COSMOS to much more easily support nested protocols, such as the frame focused protocols of CCSDS. It also allows for creating helpful reusable protocols such as the new CRC protocol for automatically adding CRCs to outgoing commands and verifying incoming CRCs on telemetry packets. It's a great change, but if you have any custom interface classes you have written, they will probably require some modification. See the Interfaces section at cosmosrb.com to see how the new interface classes work. We will also be writing up a blog post to help document the process of upgrading. Look for this in a week or two.
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v4.0.0
COSMOS 4 is here!
48 tickets have gone into this release, and it brings with it two new tools and some great under the hood improvements.
New Tools:
COSMOS now has a dedicated Configuration Editor and Command Sequence Builder.
The config editor gives you contextual help when building config files, and make it super easy to define packets and configure tools without having to have the online documentation up in front of you. It's going to make setting up COSMOS even easier than it was before.
Command Sequence builder allows you to define series of commands that should be sent at either absolute or relative timestamps to each other. This is great for planning time specific commanding. You can execute these on the ground directly from the tool, or you can convert them to your own internal format and upload to the system you are commanding.
Highlighted changes:
- New protocol system allows assigning multiple protocols to each interface to support layered protocols, and common functionality like CRC checking/adding to commands.
- The ability to View the most recent raw data received or sent on each interface
- The Command and Telemetry Server can now run on JRuby in --no-gui mode (may help performance for huge projects with 50+ targets)
- New router provides the ability to get a copy of every command sent out from COSMOS in a stream
- New SYSTEM META packet output by the CmdTlmServer
- Lots more! See the full ticket list below
New Features:
#229 Gem Based Targets should support DataViewer and other tool configurations
#234 Add a method to system.txt to add files used in the marshall file MD5 sum calculation
#253 Create "generators" for targets, tools, etc
#258 Create COSMOS Command Sequence Tool
#261 Provide a method for specifying binary data in STRING and BLOCK default values
#278 Consider adding wait_ methods to internal API for use in Background tasks
#281 Add support for stretch and spacers in widget layouts
#319 Add the ability to grab telemetry ARRAY_ITEMs
#337 Support specifying default parameters to default log reader and log writer in system.txt
#347 COSMOS GLobal Time Zone Setting (Local/UTC)
#356 Interface protocols
#360 Add raw stream preamble and postamble data to "View Raw"
#381 Float Infinity and NaN as command values
#401 tolerance scripting calls should support array telemetry items
#404 Packet Viewer easy access to edit configuration files
#405 Telemetry Viewer easy access to edit screen definition
#423 Add "Cmd router" to CmdTlmServer to support external logging of all commands
#424 TlmViewer should call update_widget for a screen with no value items and with CmdTlmServer not running
#426 Standardize meta data to SYSTEM META packet
#432 Export processed config files
#442 Label value widgets should support right aligned labels
#459 Script Editor code completion enhancements
#479 Limits Monitor doesn't detect newly connected targets
#489 Built in support for limits group enable and disable
#497 Update serial_interface.rb to support hardware flow control
#498 Script helper for activities that should cause an exception
#511 Make CmdTlmServer run on JRuby
#512 Create a CRC Protocol
#513 Create a GUI config file editor
#516 Recreate COSMOS C Extension Code in Pure Ruby
#517 Make hostname for tools to connect to CTS API configurable in system.txt
#519 Replay should support alternate packet log readers
Maintenance:
#354 Targets need to be path namespaced to avoid conflicts
#323 Catch Signals in CmdTlmServer
#341 Document COSMOS JSON API on cosmosrb.com
#398 Documentation, code cleanup
#429 Command Endianness and Parameter Endianness
#437 Remove CMD_TLM_VERSION from system.txt
#438 Cache script text as part of instrumenting script
#446 Windows 10 Install fails
#476 Separate apt and yum package install lines
#477 Deprecate userpath.txt
#484 require_file should re-raise existing exception
Bug Fixes:
#456 Replay doesn't shut down properly if closed while playing
#481 show_backtrace not working in ScriptRunner
#494 Details dialog crashes for items with LATEST packet
#502 Target REQUIRE should also search system path
#506 Don't call read_interface if data is cached in protocols for another packet
Migration Notes from COSMOS 3.x:
COSMOS 4 includes several breaking changes from the COSMOS 3.x series.
The first and simplest is that the Command and Telemetry Server now opens an additional port at 7780 by default, that provides a router that will send out each command that the system has sent. This can allow external systems to also log all commands sent by COSMOS. For most people this change will be transparent and no updates to your COSMOS configuration will be required.
The second is that the Command and Telemetry Server now always supports a meta data packet called SYSTEM META. This packet will always contain the MD5 sum for the current running COSMOS configuration, the version of COSMOS running, the version of your COSMOS Project, and the version of Ruby being used. You can also add your own requirements for meta data with things like the name of the operator currently running the system, or the name of a specific test you are currently running. In general you shouldn't need to do anything for this change unless you were using the previous metadata functionality in COSMOS. If you were, then you will need to migrate your meta data to the new SYSTEM META packet, and change the parameters in your CmdTlmServer or TestRunner configurations regarding meta data. If you weren't using metadata before, then you will probably just notice this new packet in your log files, and in your telemetry stream.
Finally the most exciting breaking change is in how COSMOS interfaces handle protocols. Before, the COSMOS TCP/IP and Serial interface classes each took a protocol like LENGTH, TERMINATED, etc that defined how packets were delineated by the interface. Now each interface can take a set of one or more protocols. This allows COSMOS to much more easily support nested protocols, such as the frame focused protocols of CCSDS. It also allows for creating helpful reusable protocols such as the new CRC protocol for automatically adding CRCs to outgoing commands and verifying incoming CRCs on telemetry packets. It's a great change, but if you have any custom interface classes you have written, they will probably require some modification. See the Interfaces section at cosmosrb.com to see how the new interface classes work. We will also be writing up a blog post to help document the process of upgrading. Look for this in a week or two.
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v3.9.2
New Features:
#147 TlmExtractor Full Column Names Mode
#148 TlmExtractor Share individual columns
#189 ScriptRunner Breakpoints don't adapt to edits
#233 Add Config Option to Increase Tcpip Interface Timeout to TlmGrapher
#280 Method for determining interface packet count
#313 Add command line option to automatically start ScriptRunner
#336 Add Log Analyze Feature to TlmExtractor/CmdExtractor
#395 Implement Stylesheets Throughout
#408 Easy way to find which targets use an interface?
#433 Scripting support for TlmViewer close all screens
#434 TlmViewer option for no resize of screens
#436 PacketViewer option to ignore target.txt ignored items
#441 PacketViewer should identify derived items in the GUI
Maintenance:
None
Bug Fixes:
#417 Table Manager not checking ranges
#419 Support multiple arrays in string based commands
Migration Notes from COSMOS 3.8.x:
The Table Manager configuration file format has changed.
You can migrate existing config files using:
bundle exec ruby tools\TableManager --convert config\tools\table_manager\old_table_def.txt
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v3.9.1
New Features:
#382 CmdTlmServer Start/Stop for background tasks
#385 Quick access to COSMOS gem code
#388 Legal Dialog should show COSMOS version
#409 Update LINC interface to support multiple targets on the same interface
Maintenance:
#369 Table Manager refactoring
#386 Batch file for offline installation
Bug Fixes:
#236 Test Runner doesn't support status_bar
#329 Using XTCE file instead of .txt cmd_tlm file didn't work as online docs suggest
#378 TlmViewer displaying partials in the screen list
#402 Mac installation is failed - Please help.
#411 xtce explicit byte order list processing isn't correct
#412 subscribe_packet_data needs to validate parameters
Migration Notes from COSMOS 3.8.x:
The Table Manager configuration file format has changed.
Documentation will updated the first week of April.
You can migrate existing config files using:
bundle exec ruby tools\TableManager --convert config\tools\table_manager\old_table_def.txt
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v3.8.3
New Features:
#230 Make AUTO_TARGETS ignore target folders that have already been manually referenced
#257 Increment received_count in packet log reader
#264 Validate command/telemetry conversions during startup
#292 Target directory for API methods
#314 Update .bat files to handle spaces in path
#316 Add option to radiobutton widget to be checked by default
#326 Script Runner Crash using message_box with boolean parameter
#339 Add 'Help' menu item to open cosmosrb.com -> Documentation
#340 Packet Viewer - Allow select cell and copy value as text
#357 Add support for mixed endianness within tables
#359 Table Manager support MIN/MAX UINTX macros
Maintenance:
#349 Optimize cmd() to not build commands twice
#362 restore_defaults should take an optional parameter to exclude specified parameters
#365 Windows installer can have issues if .gem files are present in same folder
- TestRunner support for newer Bundler (Abstract error when starting)
Bug Fixes:
#322 Udp interface thread does not gracefully shutdown
#327 TlmGrapher Screenshot in Linux captures the screenshot dialog box
#332 ERB template local variables dont' support strings
#338 Setting received_time and received_count on a packet should clear the read conversion cache
#342 Cust and Paste Error in top_level.rb
#344 CmdTlmServer connect/disconnect button doesn't work after calling connect_interface from script
#359 Table Manager doesn't support strings
#372 TestRunner reinstantiating TestSuite/Test objects every execution
Migration Notes from COSMOS 3.7.x:
None
To upgrade to the latest version of COSMOS, run "bundle update cosmos" in your COSMOS project folder.
v3.8.2
v3.8.1
New Features:
#184 Limits Monitor show green for blue limits items
#190 Simpler MIN MAX syntax for command definitions
#254 Get buffer from commands
#259 Proper support for user selected text editor on linux
#262 PackerViewer option for listing derived items last
#271 Time.formatted option for no microseconds
#288 check_tolerance should enforce a positive tolerance
#301 Update use of COSMOS_DEVEL
Maintenance:
#268 xtce_converter doesn't support byte order list
#277 Test Runner support for Script Runner options
#285 xtce converter doesn't support LocationInContainerInBits
Bug Fixes:
#256 Defining initialize method in Cosmos::Test class breaks the class when using Test Selection in TestRunner
#273 Wrap Qt::Application.instance in main_thread
#287 Installer issue on newer versions of Ubuntu and Debian related to libssl
#293 Units applied after a read_conversion that returns a string modifies cached conversion value
#294 String#convert_to_value should always just return the starting string if the conversion fails
#298 COSMOS IoMultiplexer breaks gems that invoke stream operator on STDOUT/ERR
Migration Notes from COSMOS 3.7.x:
None