cosmos 4.4.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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +6 -6
  5. data/Dockerfile +70 -0
  6. data/Manifest.txt +37 -2
  7. data/README.md +9 -0
  8. data/Rakefile +55 -5
  9. data/appveyor.yml +18 -8
  10. data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  11. data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
  12. data/autohotkey/procedures/collect.rb +2 -2
  13. data/autohotkey/procedures/collect_util.rb +1 -1
  14. data/autohotkey/procedures/script_test.rb +1 -1
  15. data/autohotkey/tools/CmdSenderAHK2 +18 -0
  16. data/autohotkey/tools/cmd_extractor.ahk +11 -9
  17. data/autohotkey/tools/cmd_sender.ahk +35 -7
  18. data/autohotkey/tools/cmd_sender2.ahk +4 -0
  19. data/autohotkey/tools/cmd_sequence.ahk +22 -9
  20. data/autohotkey/tools/config_editor.ahk +4 -4
  21. data/autohotkey/tools/data_viewer.ahk +1 -1
  22. data/autohotkey/tools/limits_monitor.ahk +1 -1
  23. data/autohotkey/tools/packet_viewer.ahk +1 -1
  24. data/autohotkey/tools/script_runner.ahk +1 -1
  25. data/autohotkey/tools/test_runner2.ahk +1 -1
  26. data/autohotkey/tools/tlm_grapher.ahk +1 -1
  27. data/autohotkey/tools/tlm_grapher3.ahk +1 -1
  28. data/autohotkey/tools/tlm_viewer.ahk +1 -1
  29. data/autohotkey/tools/tlm_viewer2.ahk +1 -1
  30. data/autohotkey/tools/tlm_viewer5.ahk +1 -1
  31. data/bin/cstol_converter +1 -1
  32. data/bin/rubysloc +73 -28
  33. data/bin/xtce_converter +1 -1
  34. data/cosmos.gemspec +2 -2
  35. data/data/config/command_modifiers.yaml +16 -1
  36. data/data/config/interface_modifiers.yaml +3 -2
  37. data/data/config/param_item_modifiers.yaml +5 -0
  38. data/data/config/system.yaml +110 -23
  39. data/data/config/telemetry_modifiers.yaml +16 -1
  40. data/data/crc.txt +416 -411
  41. data/demo/Rakefile +4 -4
  42. data/demo/config/dart/Gemfile +1 -6
  43. data/demo/config/data/crc.txt +233 -232
  44. data/demo/config/system/system.txt +17 -6
  45. data/demo/config/system/system2.txt +17 -6
  46. data/demo/config/system/system_alt_ports.txt +17 -6
  47. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +4 -4
  48. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +4 -0
  49. data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
  50. data/demo/config/targets/INST/lib/sim_inst.rb +2 -2
  51. data/demo/config/targets/INST/target.txt +1 -0
  52. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
  53. data/demo/procedures/cosmos_api_test.rb +8 -8
  54. data/ext/cosmos/ext/buffered_file/buffered_file.c +2 -2
  55. data/ext/cosmos/ext/config_parser/config_parser.c +1 -2
  56. data/ext/cosmos/ext/line_graph/line_graph.c +53 -94
  57. data/ext/cosmos/ext/platform/platform.c +56 -21
  58. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +4 -8
  59. data/ext/cosmos/ext/structure/structure.c +12 -0
  60. data/extensions/vscode/.gitignore +4 -0
  61. data/extensions/vscode/.vscode/launch.json +32 -0
  62. data/extensions/vscode/.vscode/settings.json +13 -0
  63. data/extensions/vscode/.vscode/tasks.json +79 -0
  64. data/extensions/vscode/License.txt +879 -0
  65. data/extensions/vscode/README.md +9 -0
  66. data/extensions/vscode/client/License.txt +879 -0
  67. data/extensions/vscode/client/README.md +39 -0
  68. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  69. data/extensions/vscode/client/images/icon.png +0 -0
  70. data/extensions/vscode/client/package-lock.json +414 -0
  71. data/extensions/vscode/client/package.json +105 -0
  72. data/extensions/vscode/client/src/extension.ts +132 -0
  73. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  74. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  75. data/extensions/vscode/client/tsconfig.json +17 -0
  76. data/extensions/vscode/package-lock.json +26 -0
  77. data/extensions/vscode/package.json +35 -0
  78. data/extensions/vscode/server/License.txt +879 -0
  79. data/extensions/vscode/server/package-lock.json +236 -0
  80. data/extensions/vscode/server/package.json +29 -0
  81. data/extensions/vscode/server/src/server.ts +59 -0
  82. data/extensions/vscode/server/tsconfig.json +16 -0
  83. data/install/Rakefile +4 -4
  84. data/install/config/dart/Gemfile +2 -7
  85. data/install/config/data/crc.txt +137 -137
  86. data/install/config/system/system.txt +17 -6
  87. data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
  88. data/lib/cosmos/config/config_parser.rb +2 -10
  89. data/lib/cosmos/core_ext/class.rb +10 -0
  90. data/lib/cosmos/core_ext/time.rb +5 -3
  91. data/lib/cosmos/dart/config/boot.rb +1 -1
  92. data/lib/cosmos/dart/config/database.yml +2 -0
  93. data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
  94. data/lib/cosmos/dart/lib/dart_common.rb +12 -5
  95. data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
  96. data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
  97. data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
  98. data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
  99. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
  100. data/lib/cosmos/dart/processes/dart.rb +4 -2
  101. data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
  102. data/lib/cosmos/dart/processes/dart_ingester.rb +38 -1
  103. data/lib/cosmos/dart/processes/dart_master.rb +44 -0
  104. data/lib/cosmos/dart/processes/dart_util.rb +115 -0
  105. data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +2 -2
  106. data/lib/cosmos/gui/qt.rb +10 -10
  107. data/lib/cosmos/gui/qt_tool.rb +17 -12
  108. data/lib/cosmos/gui/text/completion_text_edit.rb +2 -0
  109. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
  110. data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
  111. data/lib/cosmos/interfaces/linc_interface.rb +3 -3
  112. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
  113. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
  114. data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
  115. data/lib/cosmos/interfaces/protocols/template_protocol.rb +3 -3
  116. data/lib/cosmos/interfaces/serial_interface.rb +7 -1
  117. data/lib/cosmos/interfaces/stream_interface.rb +1 -1
  118. data/lib/cosmos/interfaces/tcpip_server_interface.rb +16 -16
  119. data/lib/cosmos/io/io_multiplexer.rb +6 -2
  120. data/lib/cosmos/io/json_drb.rb +5 -5
  121. data/lib/cosmos/io/json_drb_object.rb +7 -2
  122. data/lib/cosmos/io/json_drb_rack.rb +25 -5
  123. data/lib/cosmos/io/json_rpc.rb +1 -1
  124. data/lib/cosmos/io/posix_serial_driver.rb +60 -22
  125. data/lib/cosmos/io/serial_driver.rb +11 -8
  126. data/lib/cosmos/io/win32_serial_driver.rb +31 -3
  127. data/lib/cosmos/packet_logs/packet_log_reader.rb +2 -2
  128. data/lib/cosmos/packets/packet.rb +9 -9
  129. data/lib/cosmos/packets/packet_config.rb +27 -9
  130. data/lib/cosmos/packets/parsers/xtce_converter.rb +10 -10
  131. data/lib/cosmos/packets/parsers/xtce_parser.rb +3 -0
  132. data/lib/cosmos/packets/structure.rb +35 -5
  133. data/lib/cosmos/packets/structure_item.rb +5 -1
  134. data/lib/cosmos/packets/telemetry.rb +7 -1
  135. data/lib/cosmos/script/api_shared.rb +18 -1
  136. data/lib/cosmos/script/extract.rb +1 -1
  137. data/lib/cosmos/script/script.rb +4 -11
  138. data/lib/cosmos/streams/serial_stream.rb +11 -6
  139. data/lib/cosmos/system/system.rb +155 -57
  140. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
  141. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
  142. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +29 -318
  143. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +14 -17
  144. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +38 -331
  145. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
  146. data/lib/cosmos/tools/cmd_tlm_server/api.rb +10 -8
  147. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +2 -2
  148. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1 -0
  149. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -1
  150. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +29 -26
  151. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +1 -1
  152. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
  153. data/lib/cosmos/tools/config_editor/config_editor.rb +34 -3
  154. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +8 -9
  155. data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
  156. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +1 -1
  157. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
  158. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +7 -4
  159. data/lib/cosmos/tools/test_runner/test.rb +6 -3
  160. data/lib/cosmos/tools/test_runner/test_runner.rb +6 -6
  161. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  162. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -4
  163. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
  164. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
  165. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +18 -11
  166. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +17 -6
  167. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +2 -0
  168. data/lib/cosmos/top_level.rb +1 -1
  169. data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
  170. data/lib/cosmos/utilities/simulated_target.rb +1 -1
  171. data/lib/cosmos/version.rb +5 -5
  172. data/lib/cosmos/win32/excel.rb +23 -17
  173. data/run_gui_tests.bat +1 -0
  174. data/spec/core_ext/class_spec.rb +54 -0
  175. data/spec/core_ext/socket_spec.rb +1 -1
  176. data/spec/core_ext/time_spec.rb +4 -0
  177. data/spec/install/yaml_docs_spec.rb +26 -6
  178. data/spec/interfaces/linc_interface_spec.rb +1 -1
  179. data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
  180. data/spec/interfaces/serial_interface_spec.rb +1 -5
  181. data/spec/io/json_drb_rack_spec.rb +166 -0
  182. data/spec/io/json_drb_spec.rb +14 -0
  183. data/spec/io/json_rpc_spec.rb +4 -5
  184. data/spec/io/posix_serial_driver_spec.rb +81 -0
  185. data/spec/io/win32_serial_driver_spec.rb +33 -3
  186. data/spec/packet_logs/packet_log_reader_spec.rb +36 -37
  187. data/spec/packets/structure_spec.rb +52 -2
  188. data/spec/packets/telemetry_spec.rb +29 -1
  189. data/spec/script/extract_spec.rb +4 -1
  190. data/spec/system/system_spec.rb +111 -3
  191. data/spec/tools/cmd_tlm_server/api_spec.rb +12 -12
  192. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +2 -2
  193. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +4 -3
  194. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
  195. data/spec/utilities/logger_spec.rb +3 -3
  196. data/spec/utilities/message_log_spec.rb +6 -3
  197. data/tasks/gemfile_stats.rake +22 -13
  198. data/test/performance/Rakefile +4 -4
  199. data/test/performance/config/data/crc.txt +67 -48
  200. metadata +44 -9
  201. data/demo/outputs/dart/logs/README.txt +0 -1
  202. data/lib/cosmos/dart/Gemfile +0 -69
@@ -102,12 +102,12 @@ DOC
102
102
  end
103
103
 
104
104
  def test_cmd_unknown(method)
105
- expect { @api.send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
106
- expect { @api.send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
107
- expect { @api.send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
108
- expect { @api.send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
109
- expect { @api.send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
110
- expect { @api.send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
105
+ expect { @api.public_send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
106
+ expect { @api.public_send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
107
+ expect { @api.public_send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
108
+ expect { @api.public_send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
109
+ expect { @api.public_send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
110
+ expect { @api.public_send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
111
111
  end
112
112
 
113
113
  describe "cmd" do
@@ -571,12 +571,12 @@ DOC
571
571
  end
572
572
 
573
573
  def test_tlm_unknown(method)
574
- expect { @api.send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
575
- expect { @api.send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
576
- expect { @api.send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
577
- expect { @api.send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
578
- expect { @api.send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
579
- expect { @api.send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
574
+ expect { @api.public_send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
575
+ expect { @api.public_send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
576
+ expect { @api.public_send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
577
+ expect { @api.public_send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
578
+ expect { @api.public_send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
579
+ expect { @api.public_send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
580
580
  end
581
581
 
582
582
  describe "tlm" do
@@ -165,7 +165,7 @@ module Cosmos
165
165
  expect(running_threads.length).to eql(2)
166
166
  expect(bt.instance_variable_get("@threads").length).to eq 1
167
167
  expect(bt.instance_variable_get("@threads")[0].alive?).to eq true
168
- sleep 1.1 # Allow the thread to crash
168
+ sleep 2 # Allow the thread to crash
169
169
  expect(running_threads.length).to eql(1)
170
170
  expect(bt.instance_variable_get("@threads")[0]).to be_nil
171
171
  expect(stdout.string).to match("unexpectedly died")
@@ -178,7 +178,7 @@ module Cosmos
178
178
  expect(running_threads.length).to eql(2)
179
179
  expect(bt.instance_variable_get("@threads").length).to eq 1
180
180
  expect(bt.instance_variable_get("@threads")[0].alive?).to eq true
181
- sleep 1.1 # Allow the thread to crash
181
+ sleep 2 # Allow the thread to crash
182
182
  expect(running_threads.length).to eql(1)
183
183
  expect(bt.instance_variable_get("@threads")[0]).to be_nil
184
184
  expect(stdout.string).to match("unexpectedly died")
@@ -39,8 +39,8 @@ module Cosmos
39
39
  @packet
40
40
  end
41
41
 
42
- allow(System).to receive_message_chain(:telemetry,:identify!).and_return(nil)
43
- allow(System).to receive_message_chain(:telemetry,:update!).and_return(@packet)
42
+ allow(System).to receive_message_chain(:telemetry,:packet).and_return(@packet)
43
+ allow(System).to receive_message_chain(:telemetry,:identify).and_return(nil)
44
44
  allow(System).to receive_message_chain(:telemetry,:identify_and_define_packet).and_return(@packet)
45
45
  targets = {'TGT'=>Target.new('TGT')}
46
46
  allow(System).to receive(:targets).and_return(targets)
@@ -237,6 +237,7 @@ module Cosmos
237
237
  it "handles unidentified packets" do
238
238
  capture_io do |stdout|
239
239
  @packet = Packet.new(nil,nil)
240
+ @packet.buffer = "\x01\x02"
240
241
  thread = InterfaceThread.new(@interface)
241
242
  thread.start
242
243
  sleep 0.1
@@ -253,7 +254,7 @@ module Cosmos
253
254
  capture_io do |stdout|
254
255
  @packet.target_name = 'BOB'
255
256
  @packet.packet_name = 'SMITH'
256
- allow(System).to receive_message_chain(:telemetry,:update!).and_raise(RuntimeError)
257
+ allow(System).to receive_message_chain(:telemetry,:packet).and_raise(RuntimeError)
257
258
  thread = InterfaceThread.new(@interface)
258
259
  thread.start
259
260
  sleep 0.1
@@ -20,7 +20,7 @@ module Cosmos
20
20
  before(:each) do
21
21
  @packet = Packet.new('TGT','PKT')
22
22
  @packet.buffer = "\x01\x02"
23
-
23
+ System.instance.instance_variable_set(:@allow_router_commanding, true)
24
24
  @interface = Interface.new
25
25
  # Interface#connected? implemented in each test case
26
26
  allow(@interface).to receive(:connect)
@@ -32,7 +32,7 @@ module Cosmos
32
32
  end
33
33
 
34
34
  describe "handle_packet" do
35
- it "handles disconnectd interfaces" do
35
+ it "handles disconnected interfaces" do
36
36
  allow(@interface).to receive(:connected?).and_return(false)
37
37
  @interface.interfaces = [@interface]
38
38
  thread = RouterThread.new(@interface)
@@ -148,4 +148,3 @@ module Cosmos
148
148
  end
149
149
  end
150
150
  end
151
-
@@ -33,11 +33,11 @@ module Cosmos
33
33
  $stdout = stdout
34
34
  Logger.level = level
35
35
  if block
36
- Logger.send(method, "Message1") { "Block1" }
36
+ Logger.public_send(method, "Message1") { "Block1" }
37
37
  expect(stdout.string).not_to match("Message1")
38
38
  expect(stdout.string).to match("#{method.upcase}: Block1")
39
39
  else
40
- Logger.send(method, "Message1")
40
+ Logger.public_send(method, "Message1")
41
41
  expect(stdout.string).to match("#{method.upcase}: Message1")
42
42
  end
43
43
  Logger::instance.level = level + 1
@@ -46,7 +46,7 @@ module Cosmos
46
46
  expect(stdout.string).not_to match("Message2")
47
47
  expect(stdout.string).not_to match("Block2")
48
48
  else
49
- Logger.send(method, "Message2")
49
+ Logger.public_send(method, "Message2")
50
50
  expect(stdout.string).not_to match("Message2")
51
51
  end
52
52
  $stdout = STDOUT
@@ -70,9 +70,12 @@ module Cosmos
70
70
  log = MessageLog.new('TEST')
71
71
  log.start
72
72
  log.stop
73
- Cosmos.set_working_dir do
74
- expect(File.stat(log.filename).writable?).to be false
75
- File.delete log.filename
73
+ if Kernel.is_windows? or Process.uid != 0
74
+ # writable? is always true for root, so skip this check
75
+ Cosmos.set_working_dir do
76
+ expect(File.stat(log.filename).writable?).to be false
77
+ File.delete log.filename
78
+ end
76
79
  end
77
80
  end
78
81
  end
@@ -15,18 +15,25 @@ task :gemfile_stats do
15
15
 
16
16
  def get_latest_gem_data
17
17
  gem_data = []
18
+ # This is the only API call to Rubygems
18
19
  versions = Gems.versions 'cosmos'
19
20
  versions.each do |version|
20
21
  version_no = version['number']
22
+ next if version_no.split('.')[0] < '3' # anything before 3 is another gem
21
23
  month = version['built_at'].split('-')[0..1].join('-')
22
- gem_data << [month, version_no, Gems.total_downloads("cosmos",version_no)[:version_downloads]] if version_no.split('.')[0] >= '3' # anything before 3 is another gem
24
+ downloads = version['downloads_count'].to_i
25
+ if gem_data.length > 0 && gem_data[-1][1] == version_no
26
+ gem_data[-1][2] += downloads
27
+ else
28
+ gem_data << [month, version_no, downloads]
29
+ end
23
30
  end
24
31
  gem_data
25
32
  end
26
33
 
27
34
  # This is useful for testing to prevent server round trips
28
35
  # Simply comment out this line when working on the formatting below (after first running once)
29
- File.open("gemdata.marshall", 'w') {|file| file.write(Marshal.dump(get_latest_gem_data)) }
36
+ File.open("gemdata.marshall", 'w') {|file| file.write(Marshal.dump(get_latest_gem_data())) }
30
37
  gem_data = Marshal.load(File.read("gemdata.marshall"))
31
38
 
32
39
  # Convert all the date text into Ruby Dates
@@ -68,26 +75,28 @@ task :gemfile_stats do
68
75
  end
69
76
  end
70
77
 
71
- # Force the date row to be text
72
- sheet.Rows(1).NumberFormat = "\@"
78
+ # Put dates in rows as there are more dates than there are releases
79
+ # Force the date column to be text
80
+ sheet.Columns(1).NumberFormat = "\@"
73
81
  labels.values.each_with_index do |val, x|
74
- sheet.Cells(1, (x+2)).Value = val
82
+ sheet.Cells((x+2), 1).Value = val
75
83
  end
76
84
 
77
- row = 2
85
+ col = 2
78
86
  dataset.each do |version, data|
79
- # Set the version (e.g. 3.0) in column 1
80
- sheet.Cells(row, 1).Value = version
87
+ # Set the version (e.g. 3.0) in the top row
88
+ sheet.Cells(1, col).Value = version
89
+ # The download values by date appear below the version in the same column
81
90
  data.each_with_index do |val, x|
82
- sheet.Cells(row, (x+2)).Value = val
91
+ sheet.Cells((x+2), col).Value = val
83
92
  end
84
- row += 1
93
+ col += 1
85
94
  end
86
- # Excel column name lookup
87
- letters = ('A'..'Z').to_a.concat(('AA'..'AZ').to_a)
95
+ # Excel column name lookup, 4 sets of alphabets gives us 104 versions to work with
96
+ letters = ('A'..'Z').to_a.concat(('AA'..'AZ').to_a).concat(('BA'..'BZ').to_a).concat(('CA'..'CZ').to_a)
88
97
  chart = book.Charts.Add
89
98
  chart.Name = "COSMOS Downloads"
90
- chart.SetSourceData(sheet.Range("A1:#{letters[labels.length]}#{dataset.length}"))
99
+ chart.SetSourceData(sheet.Range("A1:#{letters[dataset.length]}#{labels.length+1}"))
91
100
  chart.HasTitle = true
92
101
  chart.ChartTitle.Characters.Text = "COSMOS Downloads"
93
102
  chart.ChartType = 76 # AreaStacked
@@ -35,14 +35,14 @@ def create_crc_file(official)
35
35
  crc = Cosmos::Crc32.new(Cosmos::Crc32::DEFAULT_POLY, Cosmos::Crc32::DEFAULT_SEED, true, false)
36
36
  File.open("config/data/crc.txt",'w') do |file|
37
37
  file.puts "USER_MODIFIED" unless official
38
- Dir[File.join('lib','**','*')].each do |filename|
38
+ Dir[File.join('lib','**','*')].sort.each do |filename|
39
39
  next if File.directory?(filename)
40
40
  next if ignore.include?(filename)
41
41
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
42
42
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
43
43
  count += 1
44
44
  end
45
- Dir[File.join('config','**','*')].each do |filename|
45
+ Dir[File.join('config','**','*')].sort.each do |filename|
46
46
  next if File.directory?(filename)
47
47
  next if ignore.include?(filename)
48
48
  next if File.basename(filename) == 'crc.txt'
@@ -50,14 +50,14 @@ def create_crc_file(official)
50
50
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
51
51
  count += 1
52
52
  end
53
- Dir[File.join('tools','**','*')].each do |filename|
53
+ Dir[File.join('tools','**','*')].sort.each do |filename|
54
54
  next if File.directory?(filename)
55
55
  next if ignore.include?(filename)
56
56
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
57
57
  file.puts "\"#{filename}\" #{sprintf("0x%08X", crc.calc(file_data))}"
58
58
  count += 1
59
59
  end
60
- Dir[File.join('procedures','**','*')].each do |filename|
60
+ Dir[File.join('procedures','**','*')].sort.each do |filename|
61
61
  next if File.directory?(filename)
62
62
  next if ignore.include?(filename)
63
63
  file_data = File.open(filename, 'rb').read.gsub("\x0D\x0A", "\x0A")
@@ -1,5 +1,6 @@
1
1
  "lib/packet_target.rb" 0x59C31C58
2
- "lib/thread_target.rb" 0x09C820AD
2
+ "lib/thread_target.rb" 0x6A2E93AF
3
+ "lib/user_version.rb" 0x8F282EE9
3
4
  "config/data/attitude.bin" 0xB6D17289
4
5
  "config/data/diamond.STL" 0xA96E4846
5
6
  "config/data/groundoff.gif" 0x7BA45A4D
@@ -16,8 +17,9 @@
16
17
  "config/data/tada.wav" 0x1ABCFFD1
17
18
  "config/data/vswitchoff.gif" 0xFAE436C9
18
19
  "config/data/vswitchon.gif" 0xD747AC45
19
- "config/system/system_packets.txt" 0xDA665B50
20
- "config/system/system_threads.txt" 0x20F6E744
20
+ "config/system/system.txt" 0x00000000
21
+ "config/system/system_packets.txt" 0xD7719176
22
+ "config/system/system_threads.txt" 0x345E358A
21
23
  "config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt" 0x9589CE1D
22
24
  "config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt" 0xC667CCD6
23
25
  "config/targets/COSMOS/cmd_tlm_server.txt" 0xE53A4164
@@ -25,22 +27,38 @@
25
27
  "config/targets/COSMOS/screens/version.txt" 0x393D4F72
26
28
  "config/targets/COSMOS/target.txt" 0xB39D9281
27
29
  "config/targets/PACKET/cmd_tlm/packet_cmds.txt" 0xAF042065
28
- "config/targets/PACKET/cmd_tlm/packet_tlm.txt" 0x03795B48
30
+ "config/targets/PACKET/cmd_tlm/packet_tlm.txt" 0x2FCD6766
29
31
  "config/targets/PACKET/cmd_tlm_server.txt" 0x7C18BA09
30
32
  "config/targets/PACKET/lib/packet_interface.rb" 0x0BC1909F
31
33
  "config/targets/PACKET/lib/packet_limits_response.rb" 0xA427D78E
32
34
  "config/targets/PACKET/screens/status.txt" 0xD9B1DD08
33
35
  "config/targets/PACKET/target.txt" 0x0B0338E4
34
36
  "config/targets/SYSTEM/screens/status.txt" 0x89B616E5
35
- "config/targets/THREAD/cmd_tlm/thread_cmds.txt" 0x8D82A34C
36
- "config/targets/THREAD/cmd_tlm/thread_tlm.txt" 0xAF01DDA9
37
- "config/targets/THREAD/cmd_tlm_server.txt" 0x37AE20AF
37
+ "config/targets/THREAD/cmd_tlm/thread_cmds.txt" 0xE0E86176
38
+ "config/targets/THREAD/cmd_tlm/thread_tlm.txt" 0xA9255BD2
39
+ "config/targets/THREAD/cmd_tlm_server.txt" 0xA2C09F15
38
40
  "config/targets/THREAD/lib/thread_interface.rb" 0x82FB49D8
39
41
  "config/targets/THREAD/screens/status.txt" 0xD9B1DD08
40
42
  "config/targets/THREAD/target.txt" 0x4ED5B5BC
41
43
  "config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt" 0x35E7315D
42
- "config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt" 0xBDC1510D
44
+ "config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt" 0x7781DEEA
43
45
  "config/tools/data_viewer/data_viewer.txt" 0xCAC3B017
46
+ "config/tools/handbook_creator/assets/css/bootstrap-theme.css" 0x446F3211
47
+ "config/tools/handbook_creator/assets/css/bootstrap-theme.min.css" 0xB49F966D
48
+ "config/tools/handbook_creator/assets/css/bootstrap.css" 0x3F240B56
49
+ "config/tools/handbook_creator/assets/css/bootstrap.min.css" 0x1BD3585F
50
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot" 0x50687BA4
51
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg" 0x068A502C
52
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf" 0x063128D6
53
+ "config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff" 0x946BFB8C
54
+ "config/tools/handbook_creator/assets/img/ball_logo.bmp" 0xAD799C2E
55
+ "config/tools/handbook_creator/assets/img/ball_logo.gif" 0xD8A3D76B
56
+ "config/tools/handbook_creator/assets/img/ball_logo.jpg" 0xA15FB300
57
+ "config/tools/handbook_creator/assets/js/bootstrap.js" 0x013B0300
58
+ "config/tools/handbook_creator/assets/js/bootstrap.min.js" 0xB3ECDABF
59
+ "config/tools/handbook_creator/assets/js/html5shiv.js" 0x15B5CD4D
60
+ "config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js" 0xCDB86103
61
+ "config/tools/handbook_creator/assets/js/respond.min.js" 0xD9168C21
44
62
  "config/tools/handbook_creator/default_toc.xsl" 0x4122A040
45
63
  "config/tools/handbook_creator/handbook_creator.txt" 0xAA806C94
46
64
  "config/tools/handbook_creator/templates/command_packets.html.erb" 0x9897CA7A
@@ -57,7 +75,7 @@
57
75
  "config/tools/handbook_creator/templates/telemetry_toc.html.erb" 0x610E3BC5
58
76
  "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
59
77
  "config/tools/launcher/launcher_packets.txt" 0x51DC78DA
60
- "config/tools/launcher/launcher_threads.txt" 0x878061C0
78
+ "config/tools/launcher/launcher_threads.txt" 0x5C3A58EF
61
79
  "config/tools/limits_monitor/README.txt" 0x93B2C07E
62
80
  "config/tools/opengl_builder/README.txt" 0x93B2C07E
63
81
  "config/tools/script_runner/script_runner.txt" 0x1EECD803
@@ -67,7 +85,7 @@
67
85
  "config/tools/table_manager/MCConfigurationTable_fsw2_def.txt" 0x9DE18AEA
68
86
  "config/tools/table_manager/PPSSelectionTable_def.txt" 0xE7A1E70B
69
87
  "config/tools/table_manager/TLMMonitoringTable_def.txt" 0x70DABA45
70
- "config/tools/test_runner/test_runner.txt" 0x1EB7E49C
88
+ "config/tools/test_runner/test_runner.txt" 0x6401DC8C
71
89
  "config/tools/tlm_extractor/tlm_extractor.txt" 0x51B791DF
72
90
  "config/tools/tlm_extractor/tlm_extractor2.txt" 0x210DED6A
73
91
  "config/tools/tlm_extractor/tlm_extractor3.txt" 0x3A25E012
@@ -85,14 +103,41 @@
85
103
  "tools/CmdTlmServerMemProf.bat" 0xF1C468BA
86
104
  "tools/DataViewer" 0x2F81335B
87
105
  "tools/DataViewer.bat" 0xF1C468BA
88
- "tools/ExampleTarget" 0xC7698E38
89
- "tools/ExampleTarget.bat" 0xF7D93DD0
90
106
  "tools/HandbookCreator" 0x7337665F
91
107
  "tools/HandbookCreator.bat" 0x4D5B6471
92
108
  "tools/Launcher" 0xBB5DB49A
93
109
  "tools/Launcher.bat" 0xF1C468BA
94
110
  "tools/LimitsMonitor" 0x8227E66E
95
111
  "tools/LimitsMonitor.bat" 0xF1C468BA
112
+ "tools/OpenGLBuilder" 0x70C85B16
113
+ "tools/OpenGLBuilder.bat" 0xF1C468BA
114
+ "tools/PacketTarget" 0x633EBA89
115
+ "tools/PacketTarget.bat" 0xF7D93DD0
116
+ "tools/PacketViewer" 0xCFB39857
117
+ "tools/PacketViewer.bat" 0xF1C468BA
118
+ "tools/Replay" 0x15162D45
119
+ "tools/Replay.bat" 0xF1C468BA
120
+ "tools/ScpiTarget" 0x8FB2CE09
121
+ "tools/ScpiTarget.bat" 0xF7D93DD0
122
+ "tools/ScriptRunner" 0x8DF937B6
123
+ "tools/ScriptRunner.bat" 0xF1C468BA
124
+ "tools/TableManager" 0xE75FDFFE
125
+ "tools/TableManager.bat" 0xF1C468BA
126
+ "tools/TestRunner" 0x1DBDC0CF
127
+ "tools/TestRunner.bat" 0xF1C468BA
128
+ "tools/ThreadTarget" 0x93FE9405
129
+ "tools/ThreadTarget.bat" 0xF7D93DD0
130
+ "tools/TlmExtractor" 0xE0DE48BC
131
+ "tools/TlmExtractor.bat" 0xF1C468BA
132
+ "tools/TlmGrapher" 0x8D7A0529
133
+ "tools/TlmGrapher.bat" 0xF1C468BA
134
+ "tools/TlmGrapherMemProf" 0x9A200E06
135
+ "tools/TlmGrapherMemProf.bat" 0xF1C468BA
136
+ "tools/TlmViewer" 0x120F8422
137
+ "tools/TlmViewer.bat" 0xF1C468BA
138
+ "tools/TlmViewerMemProf" 0x3CC66D92
139
+ "tools/TlmViewerMemProf.bat" 0xF1C468BA
140
+ "tools/identify_performance.rb" 0xAC543A1D
96
141
  "tools/mac/CmdExtractor.app/Contents/Info.plist" 0x0E89084D
97
142
  "tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb" 0x9AD128F4
98
143
  "tools/mac/CmdExtractor.app/Contents/MacOS/main.sh" 0x52DD5B34
@@ -122,72 +167,46 @@
122
167
  "tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh" 0xCC934478
123
168
  "tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns" 0xC98BF799
124
169
  "tools/mac/OpenGLBuilder.app/Contents/Info.plist" 0x3C2E542D
125
- "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0x5EF4D8E2
126
170
  "tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb" 0x96F7D2C2
171
+ "tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh" 0x5EF4D8E2
127
172
  "tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns" 0x8DDBD837
128
173
  "tools/mac/PacketViewer.app/Contents/Info.plist" 0x6934BF89
129
- "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x0D28EF08
130
174
  "tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb" 0x019FC483
175
+ "tools/mac/PacketViewer.app/Contents/MacOS/main.sh" 0x0D28EF08
131
176
  "tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns" 0xDF373DAE
132
177
  "tools/mac/Replay.app/Contents/Info.plist" 0x894AC4CF
133
- "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x211D29BB
134
178
  "tools/mac/Replay.app/Contents/MacOS/Replay.rb" 0xA2C90DA4
179
+ "tools/mac/Replay.app/Contents/MacOS/main.sh" 0x211D29BB
135
180
  "tools/mac/Replay.app/Contents/Resources/appIcon.icns" 0x0E6B32E5
136
181
  "tools/mac/ScriptRunner.app/Contents/Info.plist" 0x1BC8C5E9
137
- "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xE3274772
138
182
  "tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb" 0x43D56B62
183
+ "tools/mac/ScriptRunner.app/Contents/MacOS/main.sh" 0xE3274772
139
184
  "tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns" 0x9246743E
140
185
  "tools/mac/TableManager.app/Contents/Info.plist" 0xF6A5877F
141
- "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x98E69D10
142
186
  "tools/mac/TableManager.app/Contents/MacOS/TableManager.rb" 0x2973832A
187
+ "tools/mac/TableManager.app/Contents/MacOS/main.sh" 0x98E69D10
143
188
  "tools/mac/TableManager.app/Contents/Resources/appIcon.icns" 0xEBF5074E
144
189
  "tools/mac/TestRunner.app/Contents/Info.plist" 0x482B3BA5
145
- "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0xD486D22B
146
190
  "tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb" 0xDE0A3BD7
191
+ "tools/mac/TestRunner.app/Contents/MacOS/main.sh" 0xD486D22B
147
192
  "tools/mac/TestRunner.app/Contents/Resources/appIcon.icns" 0xC8D32D55
148
193
  "tools/mac/TlmExtractor.app/Contents/Info.plist" 0x343784F4
149
- "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x4210EF0D
150
194
  "tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb" 0x2EF21468
195
+ "tools/mac/TlmExtractor.app/Contents/MacOS/main.sh" 0x4210EF0D
151
196
  "tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns" 0x0AC88876
152
197
  "tools/mac/TlmGrapher.app/Contents/Info.plist" 0x3623B978
153
- "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x427E2ECF
154
198
  "tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb" 0x4ECDFE31
199
+ "tools/mac/TlmGrapher.app/Contents/MacOS/main.sh" 0x427E2ECF
155
200
  "tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns" 0xCA324F50
156
201
  "tools/mac/TlmViewer.app/Contents/Info.plist" 0x821041E0
157
- "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0x99FD781B
158
202
  "tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb" 0x922D7C22
203
+ "tools/mac/TlmViewer.app/Contents/MacOS/main.sh" 0x99FD781B
159
204
  "tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns" 0x1CBA8EB3
160
- "tools/OpenGLBuilder" 0x70C85B16
161
- "tools/OpenGLBuilder.bat" 0xF1C468BA
162
- "tools/PacketTarget" 0x633EBA89
163
- "tools/PacketTarget.bat" 0xF7D93DD0
164
- "tools/PacketViewer" 0xCFB39857
165
- "tools/PacketViewer.bat" 0xF1C468BA
166
- "tools/Replay" 0x15162D45
167
- "tools/Replay.bat" 0xF1C468BA
168
- "tools/ScpiTarget" 0x8FB2CE09
169
- "tools/ScpiTarget.bat" 0xF7D93DD0
170
- "tools/ScriptRunner" 0x8DF937B6
171
- "tools/ScriptRunner.bat" 0xF1C468BA
172
- "tools/TableManager" 0xE75FDFFE
173
- "tools/TableManager.bat" 0xF1C468BA
174
- "tools/TestRunner" 0x1DBDC0CF
175
- "tools/TestRunner.bat" 0xF1C468BA
176
- "tools/TlmExtractor" 0xE0DE48BC
177
- "tools/TlmExtractor.bat" 0xF1C468BA
178
- "tools/TlmGrapher" 0x8D7A0529
179
- "tools/TlmGrapher.bat" 0xF1C468BA
180
- "tools/TlmGrapherMemProf" 0x9A200E06
181
- "tools/TlmGrapherMemProf.bat" 0xF1C468BA
182
- "tools/TlmViewer" 0x120F8422
183
- "tools/TlmViewer.bat" 0xF1C468BA
184
- "tools/TlmViewerMemProf" 0x3CC66D92
185
- "tools/TlmViewerMemProf.bat" 0xF1C468BA
186
205
  "procedures/checks.rb" 0x34EEF3E2
187
206
  "procedures/clear_util.rb" 0x5B3C1279
188
207
  "procedures/collect.rb" 0x3E52C327
189
208
  "procedures/collect_util.rb" 0x3952EB08
190
- "procedures/cosmos_api_test.rb" 0x57AE9ED2
209
+ "procedures/cosmos_api_test.rb" 0xD334796E
191
210
  "procedures/disconnect.rb" 0x5F3A18E5
192
211
  "procedures/example_test.rb" 0x4FBA73C1
193
212
  "procedures/plot_test.rb" 0x0C2972E4