cosmos 4.5.0-java → 4.5.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +2 -1
  3. data/Rakefile +10 -8
  4. data/autohotkey/tools/cmd_extractor.ahk +11 -9
  5. data/autohotkey/tools/cmd_sender.ahk +1 -1
  6. data/autohotkey/tools/cmd_sequence.ahk +1 -1
  7. data/autohotkey/tools/data_viewer.ahk +1 -1
  8. data/autohotkey/tools/limits_monitor.ahk +1 -1
  9. data/autohotkey/tools/packet_viewer.ahk +1 -1
  10. data/autohotkey/tools/script_runner.ahk +1 -1
  11. data/autohotkey/tools/test_runner2.ahk +1 -1
  12. data/autohotkey/tools/tlm_grapher.ahk +1 -1
  13. data/autohotkey/tools/tlm_grapher3.ahk +1 -1
  14. data/autohotkey/tools/tlm_viewer.ahk +1 -1
  15. data/autohotkey/tools/tlm_viewer2.ahk +1 -1
  16. data/autohotkey/tools/tlm_viewer5.ahk +1 -1
  17. data/bin/xtce_converter +1 -1
  18. data/data/crc.txt +403 -403
  19. data/demo/Rakefile +4 -4
  20. data/demo/config/data/crc.txt +210 -210
  21. data/ext/cosmos/ext/buffered_file/buffered_file.c +2 -2
  22. data/ext/cosmos/ext/config_parser/config_parser.c +1 -2
  23. data/ext/cosmos/ext/line_graph/line_graph.c +53 -94
  24. data/ext/cosmos/ext/platform/platform.c +56 -21
  25. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +4 -8
  26. data/ext/cosmos/ext/structure/structure.c +12 -0
  27. data/install/Rakefile +4 -4
  28. data/install/config/data/crc.txt +129 -129
  29. data/lib/cosmos/config/config_parser.rb +2 -10
  30. data/lib/cosmos/core_ext/class.rb +10 -0
  31. data/lib/cosmos/core_ext/time.rb +2 -2
  32. data/lib/cosmos/dart/lib/dart_common.rb +3 -3
  33. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +2 -2
  34. data/lib/cosmos/gui/qt.rb +10 -10
  35. data/lib/cosmos/gui/qt_tool.rb +7 -0
  36. data/lib/cosmos/gui/text/completion_text_edit.rb +2 -0
  37. data/lib/cosmos/interfaces/tcpip_server_interface.rb +3 -3
  38. data/lib/cosmos/io/io_multiplexer.rb +6 -2
  39. data/lib/cosmos/io/json_drb.rb +1 -1
  40. data/lib/cosmos/packets/packet.rb +8 -8
  41. data/lib/cosmos/packets/packet_config.rb +1 -1
  42. data/lib/cosmos/packets/parsers/xtce_converter.rb +10 -10
  43. data/lib/cosmos/packets/parsers/xtce_parser.rb +3 -0
  44. data/lib/cosmos/packets/structure.rb +16 -12
  45. data/lib/cosmos/script/api_shared.rb +10 -0
  46. data/lib/cosmos/script/script.rb +2 -2
  47. data/lib/cosmos/tools/cmd_tlm_server/api.rb +10 -8
  48. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -1
  49. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +29 -26
  50. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +1 -1
  51. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +5 -2
  52. data/lib/cosmos/tools/test_runner/test.rb +1 -1
  53. data/lib/cosmos/tools/test_runner/test_runner.rb +4 -4
  54. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  55. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +2 -0
  56. data/lib/cosmos/top_level.rb +1 -1
  57. data/lib/cosmos/utilities/simulated_target.rb +1 -1
  58. data/lib/cosmos/version.rb +4 -4
  59. data/spec/core_ext/class_spec.rb +54 -0
  60. data/spec/interfaces/serial_interface_spec.rb +1 -5
  61. data/spec/packet_logs/packet_log_reader_spec.rb +1 -1
  62. data/spec/system/system_spec.rb +1 -1
  63. data/spec/tools/cmd_tlm_server/api_spec.rb +12 -12
  64. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +2 -2
  65. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +4 -3
  66. data/spec/utilities/logger_spec.rb +3 -3
  67. data/test/performance/Rakefile +4 -4
  68. data/test/performance/config/data/crc.txt +67 -48
  69. metadata +2 -2
@@ -1,179 +1,179 @@
1
1
  "lib/user_version.rb" 0x8F282EE9
2
+ "config/dart/Gemfile" 0x97CC0D80
2
3
  "config/data/README.txt" 0x93B2C07E
4
+ "config/system/system.txt" 0x1DD3AB8A
3
5
  "config/targets/SYSTEM/cmd_tlm/meta_tlm.txt" 0x07CDABCB
4
6
  "config/targets/SYSTEM/target.txt" 0x07E82776
5
- "config/system/system.txt" 0x1DD3AB8A
6
- "config/dart/Gemfile" 0x97CC0D80
7
- "config/tools/limits_monitor/README.txt" 0x93B2C07E
8
- "config/tools/tlm_grapher/README.txt" 0x93B2C07E
9
- "config/tools/launcher/launcher.txt" 0x6A3047DB
10
- "config/tools/script_runner/script_runner.txt" 0x1EECD803
11
- "config/tools/handbook_creator/templates/telemetry_toc.html.erb" 0x610E3BC5
12
- "config/tools/handbook_creator/templates/pdf_header.html.erb" 0x3020FEE1
13
- "config/tools/handbook_creator/templates/telemetry_packets.html.erb" 0x44BD9695
14
- "config/tools/handbook_creator/templates/limits_groups.html.erb" 0x40FDF34C
15
- "config/tools/handbook_creator/templates/command_toc.html.erb" 0x9159BCF9
16
- "config/tools/handbook_creator/templates/command_packets.html.erb" 0x9897CA7A
17
- "config/tools/handbook_creator/templates/overview.html.erb" 0xDC4DD2B8
18
- "config/tools/handbook_creator/templates/pdf_footer.html.erb" 0xF0D3EB77
19
- "config/tools/handbook_creator/templates/nav.html.erb" 0xDF65AAEA
20
- "config/tools/handbook_creator/templates/footer.html.erb" 0x0E1F9800
21
- "config/tools/handbook_creator/templates/header.html.erb" 0x1E490C2A
22
- "config/tools/handbook_creator/templates/pdf_cover.html.erb" 0x7AAB9A42
23
- "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
24
- "config/tools/handbook_creator/handbook_creator.txt" 0x64E4B5CC
25
- "config/tools/handbook_creator/assets/css/bootstrap.css" 0x3F240B56
7
+ "config/tools/cmd_tlm_server/cmd_tlm_server.txt" 0x2A39E69F
8
+ "config/tools/data_viewer/data_viewer.txt" 0xAEE0B7DF
26
9
  "config/tools/handbook_creator/assets/css/bootstrap-theme.css" 0x446F3211
27
- "config/tools/handbook_creator/assets/css/bootstrap.min.css" 0x1BD3585F
28
10
  "config/tools/handbook_creator/assets/css/bootstrap-theme.min.css" 0xB49F966D
11
+ "config/tools/handbook_creator/assets/css/bootstrap.css" 0x3F240B56
12
+ "config/tools/handbook_creator/assets/css/bootstrap.min.css" 0x1BD3585F
13
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot" 0x50687BA4
29
14
  "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg" 0x068A502C
30
- "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff" 0x946BFB8C
31
15
  "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf" 0x063128D6
32
- "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot" 0x50687BA4
33
- "config/tools/handbook_creator/assets/js/html5shiv.js" 0x15B5CD4D
34
- "config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js" 0xCDB86103
35
- "config/tools/handbook_creator/assets/js/respond.min.js" 0xD9168C21
36
- "config/tools/handbook_creator/assets/js/bootstrap.min.js" 0xB3ECDABF
37
- "config/tools/handbook_creator/assets/js/bootstrap.js" 0x013B0300
16
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff" 0x946BFB8C
38
17
  "config/tools/handbook_creator/assets/img/ball_logo.bmp" 0xAD799C2E
39
18
  "config/tools/handbook_creator/assets/img/ball_logo.gif" 0xD8A3D76B
40
19
  "config/tools/handbook_creator/assets/img/ball_logo.jpg" 0xA15FB300
20
+ "config/tools/handbook_creator/assets/js/bootstrap.js" 0x013B0300
21
+ "config/tools/handbook_creator/assets/js/bootstrap.min.js" 0xB3ECDABF
22
+ "config/tools/handbook_creator/assets/js/html5shiv.js" 0x15B5CD4D
23
+ "config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js" 0xCDB86103
24
+ "config/tools/handbook_creator/assets/js/respond.min.js" 0xD9168C21
41
25
  "config/tools/handbook_creator/default_toc.xsl" 0x00FD130E
26
+ "config/tools/handbook_creator/handbook_creator.txt" 0x64E4B5CC
27
+ "config/tools/handbook_creator/templates/command_packets.html.erb" 0x9897CA7A
28
+ "config/tools/handbook_creator/templates/command_toc.html.erb" 0x9159BCF9
29
+ "config/tools/handbook_creator/templates/footer.html.erb" 0x0E1F9800
30
+ "config/tools/handbook_creator/templates/header.html.erb" 0x1E490C2A
31
+ "config/tools/handbook_creator/templates/limits_groups.html.erb" 0x40FDF34C
32
+ "config/tools/handbook_creator/templates/nav.html.erb" 0xDF65AAEA
33
+ "config/tools/handbook_creator/templates/overview.html.erb" 0xDC4DD2B8
34
+ "config/tools/handbook_creator/templates/pdf_cover.html.erb" 0x7AAB9A42
35
+ "config/tools/handbook_creator/templates/pdf_footer.html.erb" 0xF0D3EB77
36
+ "config/tools/handbook_creator/templates/pdf_header.html.erb" 0x3020FEE1
37
+ "config/tools/handbook_creator/templates/telemetry_packets.html.erb" 0x44BD9695
38
+ "config/tools/handbook_creator/templates/telemetry_toc.html.erb" 0x610E3BC5
39
+ "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
40
+ "config/tools/launcher/launcher.txt" 0x6A3047DB
41
+ "config/tools/limits_monitor/README.txt" 0x93B2C07E
42
42
  "config/tools/opengl_builder/README.txt" 0x93B2C07E
43
+ "config/tools/script_runner/script_runner.txt" 0x1EECD803
43
44
  "config/tools/table_manager/README.txt" 0x93B2C07E
44
- "config/tools/cmd_tlm_server/cmd_tlm_server.txt" 0x2A39E69F
45
- "config/tools/data_viewer/data_viewer.txt" 0xAEE0B7DF
46
45
  "config/tools/test_runner/test_runner.txt" 0xD24409D2
47
- "config/tools/tlm_viewer/tlm_viewer.txt" 0xD9071527
48
46
  "config/tools/tlm_extractor/README.txt" 0x93B2C07E
49
- "tools/Launcher.bat" 0x2B98E027
47
+ "config/tools/tlm_grapher/README.txt" 0x93B2C07E
48
+ "config/tools/tlm_viewer/tlm_viewer.txt" 0xD9071527
49
+ "tools/CmdExtractor" 0x96E82AC3
50
+ "tools/CmdExtractor.bat" 0x2B98E027
51
+ "tools/CmdSender" 0x10346CF4
52
+ "tools/CmdSender.bat" 0x2B98E027
50
53
  "tools/CmdSequence" 0x4A13C82C
51
- "tools/ScriptRunner" 0x20F38758
54
+ "tools/CmdSequence.bat" 0x2B98E027
55
+ "tools/CmdTlmServer" 0x4C7A4FCB
56
+ "tools/CmdTlmServer.bat" 0x2B98E027
52
57
  "tools/ConfigEditor" 0xD1205371
53
- "tools/ToolLaunch.bat" 0x4E6549E0
54
- "tools/PacketViewer" 0xF23A40BB
55
- "tools/Launcher" 0xFD4E356C
58
+ "tools/ConfigEditor.bat" 0x2B98E027
56
59
  "tools/Dart" 0x19C73FBA
60
+ "tools/Dart.bat" 0x357107FB
61
+ "tools/DataViewer" 0x9D20734C
62
+ "tools/DataViewer.bat" 0x2B98E027
63
+ "tools/HandbookCreator" 0xD927814C
57
64
  "tools/HandbookCreator.bat" 0x2B98E027
58
- "tools/TestRunner" 0x0B0E0B8B
59
- "tools/TlmExtractor.bat" 0x2B98E027
60
- "tools/ScriptRunner.bat" 0x2B98E027
65
+ "tools/Launcher" 0xFD4E356C
66
+ "tools/Launcher.bat" 0x2B98E027
67
+ "tools/LimitsMonitor" 0x04FD96D8
68
+ "tools/LimitsMonitor.bat" 0x2B98E027
61
69
  "tools/OpenGLBuilder" 0x585EA691
62
- "tools/TlmViewer" 0xFE723189
63
- "tools/TableManager.bat" 0x2B98E027
70
+ "tools/OpenGLBuilder.bat" 0x2B98E027
71
+ "tools/PacketViewer" 0xF23A40BB
72
+ "tools/PacketViewer.bat" 0x2B98E027
73
+ "tools/Replay" 0xAC00D2AD
64
74
  "tools/Replay.bat" 0x2B98E027
65
- "tools/DataViewer" 0x9D20734C
66
- "tools/CmdExtractor.bat" 0x2B98E027
67
- "tools/LimitsMonitor" 0x04FD96D8
75
+ "tools/ScriptRunner" 0x20F38758
76
+ "tools/ScriptRunner.bat" 0x2B98E027
77
+ "tools/TableManager" 0x71F21C88
78
+ "tools/TableManager.bat" 0x2B98E027
79
+ "tools/TestRunner" 0x0B0E0B8B
80
+ "tools/TestRunner.bat" 0x2B98E027
68
81
  "tools/TlmExtractor" 0x1EC4639A
69
- "tools/CmdSender.bat" 0x2B98E027
70
- "tools/TlmViewer.bat" 0x2B98E027
71
- "tools/LimitsMonitor.bat" 0x2B98E027
82
+ "tools/TlmExtractor.bat" 0x2B98E027
72
83
  "tools/TlmGrapher" 0x9464F502
73
- "tools/Dart.bat" 0x357107FB
74
- "tools/ConfigEditor.bat" 0x2B98E027
75
- "tools/HandbookCreator" 0xD927814C
76
- "tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb" 0xF23A40BB
77
- "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x47F54F98
78
- "tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
79
- "tools/mac/PacketViewer.app/Contents/Info.plist" 0x6934BF89
80
- "tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns" 0xDF373DAE
81
- "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0xE2F1EAFE
82
- "tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
83
- "tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb" 0xFE723189
84
- "tools/mac/TlmViewer.app/Contents/Info.plist" 0x821041E0
85
- "tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns" 0x1CBA8EB3
86
- "tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb" 0x585EA691
87
- "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0xAD05D35B
88
- "tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
89
- "tools/mac/OpenGLBuilder.app/Contents/Info.plist" 0x3C2E542D
90
- "tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns" 0x8DDBD837
91
- "tools/mac/DataViewer.app/Contents/MacOS/main.sh" 0xD40D9D6C
92
- "tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
93
- "tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb" 0x9D20734C
94
- "tools/mac/DataViewer.app/Contents/Info.plist" 0xB79CA16B
95
- "tools/mac/DataViewer.app/Contents/Resources/appIcon.icns" 0x3EC9B207
84
+ "tools/TlmGrapher.bat" 0x2B98E027
85
+ "tools/TlmViewer" 0xFE723189
86
+ "tools/TlmViewer.bat" 0x2B98E027
87
+ "tools/ToolLaunch.bat" 0x4E6549E0
88
+ "tools/mac/CmdExtractor.app/Contents/Info.plist" 0x0E89084D
89
+ "tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb" 0x96E82AC3
90
+ "tools/mac/CmdExtractor.app/Contents/MacOS/main.sh" 0xEE3EC072
91
+ "tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
92
+ "tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns" 0x39862FA7
93
+ "tools/mac/CmdSender.app/Contents/Info.plist" 0x87039019
96
94
  "tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb" 0x10346CF4
97
95
  "tools/mac/CmdSender.app/Contents/MacOS/main.sh" 0x707CA873
98
96
  "tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
99
- "tools/mac/CmdSender.app/Contents/Info.plist" 0x87039019
100
97
  "tools/mac/CmdSender.app/Contents/Resources/appIcon.icns" 0xEC403A52
98
+ "tools/mac/CmdSequence.app/Contents/Info.plist" 0xF9BF98AD
99
+ "tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb" 0x4A13C82C
100
+ "tools/mac/CmdSequence.app/Contents/MacOS/main.sh" 0x11671716
101
+ "tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
102
+ "tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns" 0xF819EAD4
103
+ "tools/mac/CmdTlmServer.app/Contents/Info.plist" 0x97E53674
104
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb" 0x4C7A4FCB
105
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh" 0x1F1443E6
106
+ "tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
107
+ "tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns" 0x972CDCC6
108
+ "tools/mac/ConfigEditor.app/Contents/Info.plist" 0x5E9C6081
101
109
  "tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb" 0xD1205371
102
110
  "tools/mac/ConfigEditor.app/Contents/MacOS/main.sh" 0x7C087C20
103
111
  "tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
104
- "tools/mac/ConfigEditor.app/Contents/Info.plist" 0x5E9C6081
105
112
  "tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns" 0xD9774799
106
- "tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb" 0x0B0E0B8B
107
- "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0x5A8D958C
108
- "tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
109
- "tools/mac/TestRunner.app/Contents/Info.plist" 0x482B3BA5
110
- "tools/mac/TestRunner.app/Contents/Resources/appIcon.icns" 0xC8D32D55
113
+ "tools/mac/DataViewer.app/Contents/Info.plist" 0xB79CA16B
114
+ "tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb" 0x9D20734C
115
+ "tools/mac/DataViewer.app/Contents/MacOS/main.sh" 0xD40D9D6C
116
+ "tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
117
+ "tools/mac/DataViewer.app/Contents/Resources/appIcon.icns" 0x3EC9B207
118
+ "tools/mac/HandbookCreator.app/Contents/Info.plist" 0x7591A548
119
+ "tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb" 0xD927814C
120
+ "tools/mac/HandbookCreator.app/Contents/MacOS/main.sh" 0x358F92E1
121
+ "tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
122
+ "tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns" 0xCEA7C465
123
+ "tools/mac/Launcher.app/Contents/Info.plist" 0x32A1EF14
111
124
  "tools/mac/Launcher.app/Contents/MacOS/Launcher.rb" 0xFD4E356C
112
125
  "tools/mac/Launcher.app/Contents/MacOS/main.sh" 0x0B32DAE8
113
126
  "tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
114
- "tools/mac/Launcher.app/Contents/Info.plist" 0x32A1EF14
115
127
  "tools/mac/Launcher.app/Contents/Resources/appIcon.icns" 0x8857CD2B
116
- "tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb" 0x20F38758
117
- "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xCE8AE11F
118
- "tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
119
- "tools/mac/ScriptRunner.app/Contents/Info.plist" 0x1BC8C5E9
120
- "tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns" 0x9246743E
121
- "tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb" 0x4A13C82C
122
- "tools/mac/CmdSequence.app/Contents/MacOS/main.sh" 0x11671716
123
- "tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
124
- "tools/mac/CmdSequence.app/Contents/Info.plist" 0xF9BF98AD
125
- "tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns" 0xF819EAD4
128
+ "tools/mac/LimitsMonitor.app/Contents/Info.plist" 0xAF650287
129
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb" 0x04FD96D8
130
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh" 0xAAF1493C
131
+ "tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
132
+ "tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns" 0xC98BF799
133
+ "tools/mac/OpenGLBuilder.app/Contents/Info.plist" 0x3C2E542D
134
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb" 0x585EA691
135
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0xAD05D35B
136
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
137
+ "tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns" 0x8DDBD837
138
+ "tools/mac/PacketViewer.app/Contents/Info.plist" 0x6934BF89
139
+ "tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb" 0xF23A40BB
140
+ "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x47F54F98
141
+ "tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
142
+ "tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns" 0xDF373DAE
143
+ "tools/mac/Replay.app/Contents/Info.plist" 0x894AC4CF
126
144
  "tools/mac/Replay.app/Contents/MacOS/Replay.rb" 0xAC00D2AD
127
145
  "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x42370A6F
128
146
  "tools/mac/Replay.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
129
- "tools/mac/Replay.app/Contents/Info.plist" 0x894AC4CF
130
147
  "tools/mac/Replay.app/Contents/Resources/appIcon.icns" 0x0E6B32E5
148
+ "tools/mac/ScriptRunner.app/Contents/Info.plist" 0x1BC8C5E9
149
+ "tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb" 0x20F38758
150
+ "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xCE8AE11F
151
+ "tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
152
+ "tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns" 0x9246743E
153
+ "tools/mac/TableManager.app/Contents/Info.plist" 0xF6A5877F
154
+ "tools/mac/TableManager.app/Contents/MacOS/TableManager.rb" 0x71F21C88
155
+ "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x68092BA9
156
+ "tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
157
+ "tools/mac/TableManager.app/Contents/Resources/appIcon.icns" 0xEBF5074E
158
+ "tools/mac/TestRunner.app/Contents/Info.plist" 0x482B3BA5
159
+ "tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb" 0x0B0E0B8B
160
+ "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0x5A8D958C
161
+ "tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
162
+ "tools/mac/TestRunner.app/Contents/Resources/appIcon.icns" 0xC8D32D55
163
+ "tools/mac/TlmExtractor.app/Contents/Info.plist" 0x343784F4
131
164
  "tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb" 0x1EC4639A
132
165
  "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x348F7440
133
166
  "tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
134
- "tools/mac/TlmExtractor.app/Contents/Info.plist" 0x343784F4
135
167
  "tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns" 0x0AC88876
136
- "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x68092BA9
137
- "tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
138
- "tools/mac/TableManager.app/Contents/MacOS/TableManager.rb" 0x71F21C88
139
- "tools/mac/TableManager.app/Contents/Info.plist" 0xF6A5877F
140
- "tools/mac/TableManager.app/Contents/Resources/appIcon.icns" 0xEBF5074E
141
- "tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb" 0x4C7A4FCB
142
- "tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh" 0x1F1443E6
143
- "tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
144
- "tools/mac/CmdTlmServer.app/Contents/Info.plist" 0x97E53674
145
- "tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns" 0x972CDCC6
168
+ "tools/mac/TlmGrapher.app/Contents/Info.plist" 0x3623B978
146
169
  "tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb" 0x9464F502
147
170
  "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x7BE28DE6
148
171
  "tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
149
- "tools/mac/TlmGrapher.app/Contents/Info.plist" 0x3623B978
150
172
  "tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns" 0xCA324F50
151
- "tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh" 0xAAF1493C
152
- "tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
153
- "tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb" 0x04FD96D8
154
- "tools/mac/LimitsMonitor.app/Contents/Info.plist" 0xAF650287
155
- "tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns" 0xC98BF799
156
- "tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb" 0xD927814C
157
- "tools/mac/HandbookCreator.app/Contents/MacOS/main.sh" 0x358F92E1
158
- "tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
159
- "tools/mac/HandbookCreator.app/Contents/Info.plist" 0x7591A548
160
- "tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns" 0xCEA7C465
161
- "tools/mac/CmdExtractor.app/Contents/MacOS/main.sh" 0xEE3EC072
162
- "tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
163
- "tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb" 0x96E82AC3
164
- "tools/mac/CmdExtractor.app/Contents/Info.plist" 0x0E89084D
165
- "tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns" 0x39862FA7
166
- "tools/CmdTlmServer" 0x4C7A4FCB
167
- "tools/TlmGrapher.bat" 0x2B98E027
168
- "tools/TableManager" 0x71F21C88
169
- "tools/OpenGLBuilder.bat" 0x2B98E027
170
- "tools/CmdSequence.bat" 0x2B98E027
171
- "tools/PacketViewer.bat" 0x2B98E027
173
+ "tools/mac/TlmViewer.app/Contents/Info.plist" 0x821041E0
174
+ "tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb" 0xFE723189
175
+ "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0xE2F1EAFE
176
+ "tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb" 0x0BDB6696
177
+ "tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns" 0x1CBA8EB3
172
178
  "tools/tool_launch.rb" 0x0BDB6696
173
- "tools/Replay" 0xAC00D2AD
174
- "tools/CmdExtractor" 0x96E82AC3
175
- "tools/CmdTlmServer.bat" 0x2B98E027
176
- "tools/TestRunner.bat" 0x2B98E027
177
- "tools/CmdSender" 0x10346CF4
178
- "tools/DataViewer.bat" 0x2B98E027
179
179
  "procedures/README.txt" 0x93B2C07E
@@ -149,16 +149,8 @@ module Cosmos
149
149
  raise Error.new(self, "Partial name '#{template_name}' must begin with an underscore.") if File.basename(template_name)[0] != '_'
150
150
  b = binding
151
151
  if options[:locals]
152
- if RUBY_VERSION.split('.')[0..1].join.to_i >= 21
153
- options[:locals].each {|key, value| b.local_variable_set(key, value) }
154
- else
155
- options[:locals].each do |key, value|
156
- if value.is_a? String
157
- b.eval("#{key} = '#{value}'")
158
- else
159
- b.eval("#{key} = #{value}")
160
- end
161
- end
152
+ options[:locals].each do |key, value|
153
+ b.local_variable_set(key, value)
162
154
  end
163
155
  end
164
156
  # Assume the file is there. If not we raise a pretty obvious error
@@ -35,6 +35,11 @@ class Class
35
35
  # instance variables with class method readers
36
36
  def instance_attr_reader(*args)
37
37
  args.each do |arg|
38
+ # Non-word characters (letter, number, underscore) are disallowed
39
+ raise ArgumentError, "Non-word characters characters parsed" if arg =~ /\W/
40
+
41
+ # Fortify: Dynamic Code Evaluation: Code Injection
42
+ # This is true but we're whitelisting the input above
38
43
  self.class_eval("def #{arg};@#{arg};end")
39
44
  self.instance_eval("def #{arg};self.instance.#{arg};end")
40
45
  end
@@ -44,6 +49,11 @@ class Class
44
49
  # instance variables with class method accessors (read and write)
45
50
  def instance_attr_accessor(*args)
46
51
  args.each do |arg|
52
+ # Non-word characters (letter, number, underscore) are disallowed
53
+ raise ArgumentError, "Non-word characters characters parsed" if arg =~ /\W/
54
+
55
+ # Fortify: Dynamic Code Evaluation: Code Injection
56
+ # This is true but we're whitelisting the input above
47
57
  self.class_eval("def #{arg};@#{arg};end")
48
58
  self.instance_eval("def #{arg};self.instance.#{arg};end")
49
59
  self.class_eval("def #{arg}=(arg);@#{arg} = arg;end")
@@ -88,9 +88,9 @@ class Time
88
88
  # use_utc flag.
89
89
  def sys
90
90
  if @@use_utc
91
- self.utc
91
+ self.dup.utc
92
92
  else
93
- self.localtime
93
+ self.dup.localtime
94
94
  end
95
95
  end
96
96
 
@@ -291,11 +291,11 @@ module DartCommon
291
291
  reader.open(packet_log.filename)
292
292
  @plr_cache[packet_log.id] = reader
293
293
  end
294
- packet = reader.read_at_offset(ple.data_offset)
294
+ packet = reader.read_at_offset(ple.data_offset)
295
295
  unless packet
296
296
  Cosmos::Logger.error("Failed to read at offset #{ple.data_offset} (file offset: #{reader.bytes_read}) with file size #{reader.size}")
297
297
  end
298
- return packet
298
+ return packet
299
299
  rescue Exception => error
300
300
  Cosmos::Logger.error("Error Reading Packet Log Entry:\n#{error.formatted}")
301
301
  return nil
@@ -668,7 +668,7 @@ module DartCommon
668
668
  end
669
669
  model.reset_column_information
670
670
  model_name = table_name.upcase
671
- Cosmos.send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
671
+ Cosmos.public_send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
672
672
  Cosmos.const_set(model_name, model)
673
673
  end
674
674
 
@@ -189,7 +189,7 @@ describe DartDatabaseCleaner do
189
189
  end
190
190
  model.reset_column_information
191
191
  model_name = table_name.upcase
192
- Cosmos.send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
192
+ Cosmos.public_send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
193
193
  Cosmos.const_set(model_name, model)
194
194
 
195
195
  expect(model.column_names).to include("delete_me")
@@ -205,7 +205,7 @@ describe DartDatabaseCleaner do
205
205
  end
206
206
  model.reset_column_information
207
207
  model_name = table_name.upcase
208
- Cosmos.send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
208
+ Cosmos.public_send(:remove_const, model_name) if Cosmos.const_defined?(model_name)
209
209
  Cosmos.const_set(model_name, model)
210
210
 
211
211
  expect(model.column_names).to include("delete_me")
data/lib/cosmos/gui/qt.rb CHANGED
@@ -101,22 +101,22 @@ module Cosmos
101
101
  return color_r if (color_r.is_a? Qt::Color) || (color_r.is_a? Qt::Pen) || (color_r.is_a? Qt::LinearGradient)
102
102
 
103
103
  color = nil
104
- key = color_r
105
- key = key.to_i if key.is_a? Qt::Enum
104
+ color_key = color_r
105
+ color_key = color_key.to_i if color_key.is_a? Qt::Enum
106
106
 
107
107
  if color_r && color_g && color_b
108
- key = (color_r.to_i << 24) + (color_g.to_i << 16) + (color_b.to_i << 8)
108
+ color_key = (color_r.to_i << 24) + (color_g.to_i << 16) + (color_b.to_i << 8)
109
109
  end
110
110
 
111
- if Cosmos::COLORS[key]
112
- color = Cosmos::COLORS[key]
111
+ if Cosmos::COLORS[color_key]
112
+ color = Cosmos::COLORS[color_key]
113
113
  else
114
114
  if color_r && color_g && color_b
115
115
  color = Qt::Color.new(color_r.to_i, color_g.to_i, color_b.to_i)
116
116
  else
117
117
  color = Qt::Color.new(color_r)
118
118
  end
119
- Cosmos::COLORS[key] = color
119
+ Cosmos::COLORS[color_key] = color
120
120
  end
121
121
  color
122
122
  end
@@ -214,12 +214,12 @@ module Cosmos
214
214
  end
215
215
 
216
216
  def self.getCursor(shape)
217
- key = shape
218
- key = shape.to_i if shape.is_a? Qt::Enum
219
- cursor = CURSORS[key]
217
+ shape_key = shape
218
+ shape_key = shape.to_i if shape.is_a? Qt::Enum
219
+ cursor = CURSORS[shape_key]
220
220
  unless cursor
221
221
  cursor = Qt::Cursor.new(shape)
222
- CURSORS[key] = cursor
222
+ CURSORS[shape_key] = cursor
223
223
  end
224
224
  cursor
225
225
  end
@@ -61,6 +61,7 @@ module Cosmos
61
61
  @stylesheet = File.read(app_style) if File.exist? app_style
62
62
 
63
63
  self.class.normalize_config_options(@options)
64
+ setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint) if @options.stay_on_top
64
65
 
65
66
  # Add a banner based on system configuration
66
67
  add_classification_banner
@@ -350,6 +351,7 @@ module Cosmos
350
351
  options.remember_geometry = true
351
352
  options.restore_position = true
352
353
  options.restore_size = true
354
+ options.stay_on_top = false
353
355
  options.redirect_io = true
354
356
  options.title = "COSMOS Tool"
355
357
  options.config_file = nil
@@ -401,6 +403,11 @@ module Cosmos
401
403
  options.startup_state = :DEFAULT
402
404
  end
403
405
 
406
+ # Create the defaultsize option
407
+ option_parser.on("--stay-on-top", "Force the tool to stay on top of all other windows") do |arg|
408
+ options.stay_on_top = true
409
+ end
410
+
404
411
  # Create the x and y position options
405
412
  option_parser.separator("")
406
413
  option_parser.separator("Window X & Y Position Options:")
@@ -17,6 +17,7 @@ module Cosmos
17
17
  # This calss also includes many helper methods to access various
18
18
  # lines, indent selections, highlight lines and center the view.
19
19
  class CompletionTextEdit < Qt::PlainTextEdit
20
+ attr_accessor :read_only
20
21
  # Create a signal so users of CompletionTextEdit don't have to
21
22
  # subclass in order to listen to keyPressEvents
22
23
  signals 'key_pressed(QKeyEvent*)'
@@ -47,6 +48,7 @@ module Cosmos
47
48
 
48
49
  @last_hightlighted_line = 1
49
50
  @code_completion = nil
51
+ @read_only = false
50
52
  begin
51
53
  @code_completion = Completion.new(self)
52
54
  rescue
@@ -298,10 +298,10 @@ module Cosmos
298
298
  def change_raw_logging(method)
299
299
  if @raw_logger_pair
300
300
  @write_interface_infos.each do |interface_info|
301
- interface_info.interface.raw_logger_pair.send(method) if interface_info.interface.raw_logger_pair
301
+ interface_info.interface.raw_logger_pair.public_send(method) if interface_info.interface.raw_logger_pair
302
302
  end
303
303
  @read_interface_infos.each do |interface_info|
304
- interface_info.interface.raw_logger_pair.send(method) if interface_info.interface.raw_logger_pair
304
+ interface_info.interface.raw_logger_pair.public_send(method) if interface_info.interface.raw_logger_pair
305
305
  end
306
306
  end
307
307
  end
@@ -590,7 +590,7 @@ module Cosmos
590
590
  need_disconnect = false
591
591
  begin
592
592
  interface_bytes_written = interface_info.interface.bytes_written
593
- interface_info.interface.send(method, packet_or_data)
593
+ interface_info.interface.public_send(method, packet_or_data)
594
594
  diff = interface_info.interface.bytes_written - interface_bytes_written
595
595
  @written_raw_data_time = interface_info.interface.written_raw_data_time
596
596
  @written_raw_data = interface_info.interface.written_raw_data
@@ -40,11 +40,15 @@ module Cosmos
40
40
  result = nil
41
41
  @streams.each do |stream|
42
42
  if first
43
- result = stream.send(method_name, *args)
43
+ # Fortify Access Specifier Manipulation
44
+ # We're forwarding only public methods to the stream
45
+ result = stream.public_send(method_name, *args)
44
46
  result = self if result == stream
45
47
  first = false
46
48
  else
47
- stream.send(method_name, *args)
49
+ # Fortify Access Specifier Manipulation
50
+ # We're forwarding only public methods to the stream
51
+ stream.public_send(method_name, *args)
48
52
  end
49
53
  end
50
54
  result
@@ -262,7 +262,7 @@ module Cosmos
262
262
  if (@method_whitelist and @method_whitelist.include?(request.method.downcase())) or
263
263
  (!@method_whitelist and !JsonRpcRequest::DANGEROUS_METHODS.include?(request.method.downcase()))
264
264
  begin
265
- result = @object.send(request.method.downcase().intern, *request.params)
265
+ result = @object.public_send(request.method.downcase().intern, *request.params)
266
266
  if request.id
267
267
  response = JsonRpcSuccessResponse.new(result, request.id)
268
268
  end
@@ -186,9 +186,9 @@ module Cosmos
186
186
  @read_conversion_cache.clear if @read_conversion_cache
187
187
  @received_count
188
188
  end
189
-
190
- end # if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
191
-
189
+
190
+ end # if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
191
+
192
192
  # Tries to identify if a buffer represents the currently defined packet. It
193
193
  # does this by iterating over all the packet items that were created with
194
194
  # an ID value and checking whether that ID value is present at the correct
@@ -216,7 +216,7 @@ module Cosmos
216
216
 
217
217
  true
218
218
  end
219
-
219
+
220
220
  # Reads the values from a buffer at the position of each id_item defined
221
221
  # in the packet.
222
222
  #
@@ -226,7 +226,7 @@ module Cosmos
226
226
  return [] unless buffer
227
227
  return [] unless @id_items
228
228
  values = []
229
-
229
+
230
230
  @id_items.each do |item|
231
231
  begin
232
232
  values << read_item(item, :RAW, buffer)
@@ -234,10 +234,10 @@ module Cosmos
234
234
  values << nil
235
235
  end
236
236
  end
237
-
237
+
238
238
  values
239
239
  end
240
-
240
+
241
241
  # Returns @received_time unless a packet item called PACKET_TIME exists that returns
242
242
  # a Ruby Time object that represents a different timestamp for the packet
243
243
  def packet_time
@@ -259,7 +259,7 @@ module Cosmos
259
259
  end
260
260
 
261
261
  # Use the hashing algorithm established by Cosmos::System
262
- digest = Digest.const_get(System.hashing_algorithm).send('new')
262
+ digest = Digest.const_get(System.hashing_algorithm).public_send('new')
263
263
  digest << string
264
264
  @config_name = digest.hexdigest
265
265
  @config_name
@@ -443,7 +443,7 @@ module Cosmos
443
443
  klass = params[0].filename_to_class_name.to_class
444
444
  raise parser.error("#{params[0].filename_to_class_name} class not found. Did you require the file in target.txt?", usage) unless klass
445
445
  conversion = klass.new(*params[1..(params.length - 1)])
446
- @current_item.send("#{keyword.downcase}=".to_sym, conversion)
446
+ @current_item.public_send("#{keyword.downcase}=".to_sym, conversion)
447
447
  if klass != ProcessorConversion and (conversion.converted_type.nil? or conversion.converted_bit_size.nil?)
448
448
  msg = "Read Conversion #{params[0].filename_to_class_name} on item #{@current_item.name} does not specify converted type or bit size. Will not be supported by DART"
449
449
  @warnings << msg