cosmos 4.4.1-java → 4.4.2-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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36e34fbd844de84ca2b8b051fa32cdb3d4a378b8042aeb968951af68e74a79da
4
- data.tar.gz: c00194480b4dac9e5cc1c7c519f1f5b0f5ae343503735207ab22da09dcf6d18a
3
+ metadata.gz: acf444b515bd25779264c1a5f13436a212ef77d727137a44e9389ab9b64a4dfb
4
+ data.tar.gz: 4dbf05321b812f9a1ca0f1c05c29794870ab22e06e895073085017b2a2702da9
5
5
  SHA512:
6
- metadata.gz: 948f3c0738765b8c62057871449b56f05490bc66a5dd31e78fa8d5bf57d0b4bdd5c90b895d5eee5e4a3f345ddfaf2396838ac882599d949e030ae448ff626be7
7
- data.tar.gz: c326e41b536132fb332a888b2e63157f1e75c4f0aeb29143525183ccb0456c2653a8c457acbbcc0ffba45b3aebbd5bb5d434aae83e35fe4b5ad1114f46715149
6
+ metadata.gz: 92e45f58a5b0a524c164dcaddde9338401c03462572b6fe6b6fd5c5fcb234fc1cc0a41b3442134863630f0cd951c8db8b5ed0d4995181843442c11b0b2edc53b
7
+ data.tar.gz: c253c546cbab3d122b97613172a2f23d53ecdabf165e58b913634ee72bd01252e4eaffb3fa56c6b4d341201def291c326c0d6a06a50074f03842e2dc87884612
data/Rakefile CHANGED
@@ -320,15 +320,16 @@ task :docker_run do
320
320
  STDOUT.puts "6. rake commit_release"
321
321
  STDOUT.puts "7. export PATH=/opt/jruby/bin:$PATH"
322
322
  STDOUT.puts "8. rake gem"
323
- STDOUT.puts "9. gem push cosmos-X.X.X.gem"
324
- STDOUT.puts "10. gem push cosmos-X.X.X-java.gem"
323
+ STDOUT.puts "9. /usr/bin/gem push cosmos-X.X.X.gem"
324
+ STDOUT.puts "10. /usr/bin/gem push cosmos-X.X.X-java.gem"
325
325
  STDOUT.puts "11. cd /devel/cosmos-docker"
326
- STDOUT.puts "12. Update COSMOS_VERSION in all Dockerfiles"
327
- STDOUT.puts "13. git commit -a -m \"Release COSMOS vX.X.X\""
328
- STDOUT.puts "14. git push"
329
- STDOUT.puts "15. git checkout -b vX.X.X"
330
- STDOUT.puts "16. git push --set-upstream origin vX.X.X"
331
- STDOUT.puts "17. Update release notes on github.com and cosmosrb.com"
326
+ STDOUT.puts "12. git pull"
327
+ STDOUT.puts "13. Update COSMOS_VERSION in all Dockerfiles"
328
+ STDOUT.puts "14. git commit -a -m \"Release COSMOS vX.X.X\""
329
+ STDOUT.puts "15. git push"
330
+ STDOUT.puts "16. git checkout -b vX.X.X"
331
+ STDOUT.puts "17. git push --set-upstream origin vX.X.X"
332
+ STDOUT.puts "18. Update release notes on github.com and cosmosrb.com"
332
333
 
333
334
  _, platform, *_ = RUBY_PLATFORM.split("-")
334
335
  if (platform == 'mswin32' or platform == 'mingw32') and which('winpty')
@@ -114,7 +114,7 @@ spec = Gem::Specification.new do |s|
114
114
  s.add_development_dependency 'simplecov', '~> 0.15'
115
115
  s.add_development_dependency 'codecov', '~> 0.1'
116
116
  s.add_development_dependency 'benchmark-ips', '~> 2.0'
117
- s.add_development_dependency 'ruby-prof', '~> 1.0' if RUBY_ENGINE == 'ruby' # MRI Only
117
+ s.add_development_dependency 'ruby-prof', ['~> 1.0', '< 1.3'] if RUBY_ENGINE == 'ruby' # MRI Only
118
118
 
119
119
  s.post_install_message = "Thanks for installing Ball Aerospace COSMOS!\nStart your first project with: cosmos demo demo\n"
120
120
  end
@@ -158,7 +158,7 @@
158
158
  "lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb" 0xD1CF7B70
159
159
  "lib/cosmos/tools/tlm_viewer/screen.rb" 0x007BDC26
160
160
  "lib/cosmos/tools/handbook_creator/handbook_creator_config.rb" 0x9706590F
161
- "lib/cosmos/tools/handbook_creator/handbook_creator.rb" 0xA0E1DA06
161
+ "lib/cosmos/tools/handbook_creator/handbook_creator.rb" 0x1F9BF5BB
162
162
  "lib/cosmos/tools/opengl_builder/opengl_builder.rb" 0x2D82B6FB
163
163
  "lib/cosmos/tools/opengl_builder/scene_config.rb" 0x15B59793
164
164
  "lib/cosmos/tools/script_runner/script_audit.rb" 0xAAEFBDF7
@@ -233,7 +233,7 @@
233
233
  "lib/cosmos/script/limits.rb" 0x9693149E
234
234
  "lib/cosmos/script/telemetry.rb" 0x19F63F52
235
235
  "lib/cosmos/script/commands.rb" 0x13531FE3
236
- "lib/cosmos/script/extract.rb" 0x31199456
236
+ "lib/cosmos/script/extract.rb" 0xE39029E6
237
237
  "lib/cosmos/script/script.rb" 0xA19681FC
238
238
  "lib/cosmos/script/replay.rb" 0xEB08C485
239
239
  "lib/cosmos/script/tools.rb" 0xB30033A7
@@ -447,7 +447,7 @@
447
447
  "lib/cosmos/win32/win32_main.rb" 0x722DDE0D
448
448
  "lib/cosmos/win32/excel.rb" 0x72BFBAC2
449
449
  "lib/cosmos/win32/win32.rb" 0xBCECA922
450
- "lib/cosmos/version.rb" 0x0FA2BCFD
450
+ "lib/cosmos/version.rb" 0xCC5AC5BC
451
451
  "lib/cosmos/interfaces/interface.rb" 0xFC517874
452
452
  "lib/cosmos/interfaces/udp_interface.rb" 0xE673DC8E
453
453
  "lib/cosmos/interfaces/protocols/terminated_protocol.rb" 0xE6AAACCA
@@ -456,15 +456,15 @@
456
456
  "lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb" 0xC5443C01
457
457
  "lib/cosmos/interfaces/protocols/override_protocol.rb" 0x64479CFF
458
458
  "lib/cosmos/interfaces/protocols/preidentified_protocol.rb" 0xE8D0347C
459
- "lib/cosmos/interfaces/protocols/template_protocol.rb" 0x8C86548D
459
+ "lib/cosmos/interfaces/protocols/template_protocol.rb" 0xA16B27DF
460
460
  "lib/cosmos/interfaces/protocols/length_protocol.rb" 0x5036FBBB
461
- "lib/cosmos/interfaces/protocols/burst_protocol.rb" 0xCF4EE7A5
462
- "lib/cosmos/interfaces/protocols/crc_protocol.rb" 0x9212C9CB
461
+ "lib/cosmos/interfaces/protocols/burst_protocol.rb" 0x6A6D8FE9
462
+ "lib/cosmos/interfaces/protocols/crc_protocol.rb" 0x61C90363
463
463
  "lib/cosmos/interfaces/simulated_target_interface.rb" 0x402C2FF5
464
- "lib/cosmos/interfaces/linc_interface.rb" 0xA85A43C1
465
- "lib/cosmos/interfaces/tcpip_server_interface.rb" 0x0209F6E0
464
+ "lib/cosmos/interfaces/linc_interface.rb" 0xBEA1F26B
465
+ "lib/cosmos/interfaces/tcpip_server_interface.rb" 0x0B30B476
466
466
  "lib/cosmos/interfaces/cmd_tlm_server_interface.rb" 0x8921CFC1
467
467
  "lib/cosmos/interfaces/tcpip_client_interface.rb" 0xE9F201A9
468
468
  "lib/cosmos/interfaces/dart_status_interface.rb" 0xE85231B8
469
- "lib/cosmos/interfaces/stream_interface.rb" 0x6D1676BA
469
+ "lib/cosmos/interfaces/stream_interface.rb" 0xF3EE02F8
470
470
  "lib/cosmos/interfaces/serial_interface.rb" 0x97B428D8
@@ -32,7 +32,7 @@
32
32
  "config/tools/tlm_extractor/_adcs_time.txt" 0x3DAD5094
33
33
  "config/tools/tlm_extractor/tlm_extractor4.txt" 0x068824C2
34
34
  "config/tools/tlm_viewer/tlm_viewer.txt" 0x6E6DBC7A
35
- "config/tools/handbook_creator/default_toc.xsl" 0x4122A040
35
+ "config/tools/handbook_creator/default_toc.xsl" 0x00FD130E
36
36
  "config/tools/handbook_creator/templates/command_toc.html.erb" 0x9159BCF9
37
37
  "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
38
38
  "config/tools/handbook_creator/templates/footer.html.erb" 0x0E1F9800
@@ -1,59 +1,59 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="1.0"
3
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
- xmlns:outline="http://code.google.com/p/wkhtmltopdf/outline"
5
- xmlns="http://www.w3.org/1999/xhtml">
6
- <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
7
- doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
8
- indent="yes" />
9
- <xsl:template match="outline:outline">
10
- <html>
11
- <head>
12
- <title>Table of Contents</title>
13
- <style>
14
- h1 {
15
- text-align: center;
16
- font-size: 20px;
17
- font-family: arial;
18
- }
19
- div {border-bottom: 1px dashed rgb(200,200,200);}
20
- span {float: right;}
21
- li {list-style: none;}
22
- ul {
23
- font-size: 20px;
24
- font-family: arial;
25
- }
26
- ul ul {font-size: 80%; }
27
- ul {padding-left: 0em;}
28
- ul ul {padding-left: 1em;}
29
- a {text-decoration:none; color: black;}
30
- </style>
31
- </head>
32
- <body>
33
- <h1>Table of Contents</h1>
34
- <ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
35
- </body>
36
- </html>
37
- </xsl:template>
38
- <xsl:template match="outline:item">
39
- <li>
40
- <xsl:if test="@title!=''">
41
- <div>
42
- <a>
43
- <xsl:if test="@link">
44
- <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
45
- </xsl:if>
46
- <xsl:if test="@backLink">
47
- <xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
48
- </xsl:if>
49
- <xsl:value-of select="@title" />
50
- </a>
51
- <span> <xsl:value-of select="@page" /> </span>
52
- </div>
53
- </xsl:if>
54
- <ul>
55
- <xsl:apply-templates select="outline:item"/>
56
- </ul>
57
- </li>
58
- </xsl:template>
59
- </xsl:stylesheet>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version="2.0"
3
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
+ xmlns:outline="http://code.google.com/p/wkhtmltopdf/outline"
5
+ xmlns="http://www.w3.org/1999/xhtml">
6
+ <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
7
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
8
+ indent="yes" />
9
+ <xsl:template match="outline:outline">
10
+ <html>
11
+ <head>
12
+ <title>Table of Contents</title>
13
+ <style>
14
+ h1 {
15
+ text-align: center;
16
+ font-size: 20px;
17
+ font-family: arial;
18
+ }
19
+ div {border-bottom: 1px dashed rgb(200,200,200);}
20
+ span {float: right;}
21
+ li {list-style: none;}
22
+ ul {
23
+ font-size: 20px;
24
+ font-family: arial;
25
+ }
26
+ ul ul {font-size: 80%; }
27
+ ul {padding-left: 0em;}
28
+ ul ul {padding-left: 1em;}
29
+ a {text-decoration:none; color: black;}
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <h1>Table of Contents</h1>
34
+ <ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
35
+ </body>
36
+ </html>
37
+ </xsl:template>
38
+ <xsl:template match="outline:item">
39
+ <li>
40
+ <xsl:if test="@title!=''">
41
+ <div>
42
+ <a>
43
+ <xsl:if test="@link">
44
+ <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
45
+ </xsl:if>
46
+ <xsl:if test="@backLink">
47
+ <xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
48
+ </xsl:if>
49
+ <xsl:value-of select="@title" />
50
+ </a>
51
+ <span> <xsl:value-of select="@page" /> </span>
52
+ </div>
53
+ </xsl:if>
54
+ <ul>
55
+ <xsl:apply-templates select="outline:item"/>
56
+ </ul>
57
+ </li>
58
+ </xsl:template>
59
+ </xsl:stylesheet>
@@ -4,7 +4,7 @@
4
4
  "config/tools/launcher/launcher.txt" 0x6A3047DB
5
5
  "config/tools/tlm_extractor/README.txt" 0x93B2C07E
6
6
  "config/tools/tlm_viewer/tlm_viewer.txt" 0xD9071527
7
- "config/tools/handbook_creator/default_toc.xsl" 0x4122A040
7
+ "config/tools/handbook_creator/default_toc.xsl" 0x00FD130E
8
8
  "config/tools/handbook_creator/templates/command_toc.html.erb" 0x9159BCF9
9
9
  "config/tools/handbook_creator/templates/title.html.erb" 0xBC66E2BC
10
10
  "config/tools/handbook_creator/templates/footer.html.erb" 0x0E1F9800
@@ -1,59 +1,59 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="1.0"
3
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
- xmlns:outline="http://code.google.com/p/wkhtmltopdf/outline"
5
- xmlns="http://www.w3.org/1999/xhtml">
6
- <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
7
- doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
8
- indent="yes" />
9
- <xsl:template match="outline:outline">
10
- <html>
11
- <head>
12
- <title>Table of Contents</title>
13
- <style>
14
- h1 {
15
- text-align: center;
16
- font-size: 20px;
17
- font-family: arial;
18
- }
19
- div {border-bottom: 1px dashed rgb(200,200,200);}
20
- span {float: right;}
21
- li {list-style: none;}
22
- ul {
23
- font-size: 20px;
24
- font-family: arial;
25
- }
26
- ul ul {font-size: 80%; }
27
- ul {padding-left: 0em;}
28
- ul ul {padding-left: 1em;}
29
- a {text-decoration:none; color: black;}
30
- </style>
31
- </head>
32
- <body>
33
- <h1>Table of Contents</h1>
34
- <ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
35
- </body>
36
- </html>
37
- </xsl:template>
38
- <xsl:template match="outline:item">
39
- <li>
40
- <xsl:if test="@title!=''">
41
- <div>
42
- <a>
43
- <xsl:if test="@link">
44
- <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
45
- </xsl:if>
46
- <xsl:if test="@backLink">
47
- <xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
48
- </xsl:if>
49
- <xsl:value-of select="@title" />
50
- </a>
51
- <span> <xsl:value-of select="@page" /> </span>
52
- </div>
53
- </xsl:if>
54
- <ul>
55
- <xsl:apply-templates select="outline:item"/>
56
- </ul>
57
- </li>
58
- </xsl:template>
59
- </xsl:stylesheet>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet version="2.0"
3
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4
+ xmlns:outline="http://code.google.com/p/wkhtmltopdf/outline"
5
+ xmlns="http://www.w3.org/1999/xhtml">
6
+ <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
7
+ doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
8
+ indent="yes" />
9
+ <xsl:template match="outline:outline">
10
+ <html>
11
+ <head>
12
+ <title>Table of Contents</title>
13
+ <style>
14
+ h1 {
15
+ text-align: center;
16
+ font-size: 20px;
17
+ font-family: arial;
18
+ }
19
+ div {border-bottom: 1px dashed rgb(200,200,200);}
20
+ span {float: right;}
21
+ li {list-style: none;}
22
+ ul {
23
+ font-size: 20px;
24
+ font-family: arial;
25
+ }
26
+ ul ul {font-size: 80%; }
27
+ ul {padding-left: 0em;}
28
+ ul ul {padding-left: 1em;}
29
+ a {text-decoration:none; color: black;}
30
+ </style>
31
+ </head>
32
+ <body>
33
+ <h1>Table of Contents</h1>
34
+ <ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
35
+ </body>
36
+ </html>
37
+ </xsl:template>
38
+ <xsl:template match="outline:item">
39
+ <li>
40
+ <xsl:if test="@title!=''">
41
+ <div>
42
+ <a>
43
+ <xsl:if test="@link">
44
+ <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
45
+ </xsl:if>
46
+ <xsl:if test="@backLink">
47
+ <xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
48
+ </xsl:if>
49
+ <xsl:value-of select="@title" />
50
+ </a>
51
+ <span> <xsl:value-of select="@page" /> </span>
52
+ </div>
53
+ </xsl:if>
54
+ <ul>
55
+ <xsl:apply-templates select="outline:item"/>
56
+ </ul>
57
+ </li>
58
+ </xsl:template>
59
+ </xsl:stylesheet>
@@ -256,7 +256,7 @@ module Cosmos
256
256
  # Handle handshake warnings and errors
257
257
  if status == "OK" and code != 0
258
258
  unless @ignored_error_codes[handshake_cmd.handshake.handshake.target_name].include? code
259
- Logger.warn "Warning sending command (#{code}): #{source}"
259
+ Logger.warn "#{@name}: Warning sending command (#{code}): #{source}"
260
260
  end
261
261
  elsif status == "ERROR"
262
262
  unless @ignored_error_codes[handshake_cmd.handshake.handshake.target_name].include? code
@@ -295,7 +295,7 @@ module Cosmos
295
295
  command.received_count += 1
296
296
 
297
297
  # Put a log of the command onto the server for the user to see
298
- Logger.info("External Command: " + System.commands.format(linc_handshake.identified_command, System.targets[linc_handshake.identified_command.target_name].ignored_parameters))
298
+ Logger.info("#{@name}: External Command: " + System.commands.format(linc_handshake.identified_command, System.targets[linc_handshake.identified_command.target_name].ignored_parameters))
299
299
 
300
300
  # Log the command to the command log(s)
301
301
  @packet_log_writer_pairs.each do |packet_log_writer_pair|
@@ -361,7 +361,7 @@ module Cosmos
361
361
  if @handshake
362
362
  timed_out = false
363
363
  else
364
- Logger.warn "No handshake - must be timeout."
364
+ Logger.warn "#{@name}: No handshake - must be timeout."
365
365
  timed_out = true
366
366
  end
367
367
 
@@ -156,7 +156,7 @@ module Cosmos
156
156
  end
157
157
 
158
158
  def log_discard(length, found)
159
- Logger.error("Sync #{'not ' unless found}found. Discarding #{length} bytes of data.")
159
+ Logger.error("#{@interface ? @interface.name : ""}: Sync #{'not ' unless found}found. Discarding #{length} bytes of data.")
160
160
  if @data.length >= 0
161
161
  Logger.error(sprintf("Starting: 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n",
162
162
  @data.length >= 1 ? @data.getbyte(0) : 0,
@@ -140,7 +140,7 @@ module Cosmos
140
140
  crc = BinaryAccessor.read(@bit_offset, @bit_size, :UINT, data, @endianness)
141
141
  calculated_crc = @crc.calc(data[0...(@bit_offset / 8)])
142
142
  if calculated_crc != crc
143
- Logger.error "Invalid CRC detected! Calculated 0x#{calculated_crc.to_s(16).upcase} vs found 0x#{crc.to_s(16).upcase}."
143
+ Logger.error "#{@interface ? @interface.name : ""}: Invalid CRC detected! Calculated 0x#{calculated_crc.to_s(16).upcase} vs found 0x#{crc.to_s(16).upcase}."
144
144
  if @bad_strategy == DISCONNECT
145
145
  return :DISCONNECT
146
146
  end
@@ -146,13 +146,13 @@ module Cosmos
146
146
  # Write the packet value with each of the values received
147
147
  response_values = response_string.scan(response_regexp)[0]
148
148
  if !response_values || (response_values.length != response_item_names.length)
149
- handle_error("#{@interface.name}: Unexpected response: #{response_string}")
149
+ handle_error("#{@interface ? @interface.name : ""}: Unexpected response: #{response_string}")
150
150
  else
151
151
  response_values.each_with_index do |value, i|
152
152
  begin
153
153
  result_packet.write(response_item_names[i], value)
154
154
  rescue => error
155
- handle_error("#{@interface.name}: Could not write value #{value} due to #{error.message}")
155
+ handle_error("#{@interface ? @interface.name : ""}: Could not write value #{value} due to #{error.message}")
156
156
  break
157
157
  end
158
158
  end
@@ -234,7 +234,7 @@ module Cosmos
234
234
  sleep(@response_polling_period)
235
235
  retry if !response_timeout_time
236
236
  retry if response_timeout_time and Time.now < response_timeout_time
237
- handle_error("#{@interface.name}: Timeout waiting for response")
237
+ handle_error("#{@interface ? @interface.name : ""}: Timeout waiting for response")
238
238
  end
239
239
 
240
240
  @response_template = nil
@@ -49,7 +49,7 @@ module Cosmos
49
49
  begin
50
50
  data = @stream.read
51
51
  rescue Timeout::Error
52
- Logger.instance.error "Timeout waiting for data to be read"
52
+ Logger.instance.error "#{@name}: Timeout waiting for data to be read"
53
53
  data = nil
54
54
  end
55
55
  return nil if data.nil? or data.length <= 0
@@ -132,7 +132,7 @@ module Cosmos
132
132
  end
133
133
  rescue Exception => err
134
134
  shutdown_interfaces(@write_interface_infos)
135
- Logger.instance.error("Tcpip server write thread unexpectedly died")
135
+ Logger.instance.error("#{@name}: Tcpip server write thread unexpectedly died")
136
136
  Logger.instance.error(err.formatted)
137
137
  end
138
138
  end
@@ -144,7 +144,7 @@ module Cosmos
144
144
  end
145
145
  rescue Exception => err
146
146
  shutdown_interfaces(@write_interface_infos)
147
- Logger.instance.error("Tcpip server write raw thread unexpectedly died")
147
+ Logger.instance.error("#{@name}: Tcpip server write raw thread unexpectedly died")
148
148
  Logger.instance.error(err.formatted)
149
149
  end
150
150
  end
@@ -346,7 +346,7 @@ module Cosmos
346
346
  break if @cancel_threads
347
347
  end
348
348
  rescue => err
349
- Logger.instance.error("Tcpip server listen thread unexpectedly died")
349
+ Logger.instance.error("#{@name}: Tcpip server listen thread unexpectedly died")
350
350
  Logger.instance.error(err.formatted)
351
351
  end
352
352
  end
@@ -372,7 +372,7 @@ module Cosmos
372
372
  if not System.instance.acl.allow_addr?(addr)
373
373
  # Reject connection
374
374
  Cosmos.close_socket(socket)
375
- Logger.instance.info "Tcpip server rejected connection from #{hostname}(#{host_ip}):#{port}"
375
+ Logger.instance.info "#{@name}: Tcpip server rejected connection from #{hostname}(#{host_ip}):#{port}"
376
376
  return
377
377
  end
378
378
  end
@@ -417,7 +417,7 @@ module Cosmos
417
417
  end
418
418
  start_read_thread(@read_interface_infos[-1])
419
419
  end
420
- Logger.instance.info "Tcpip server accepted connection from #{hostname}(#{host_ip}):#{port}"
420
+ Logger.instance.info "#{@name}: Tcpip server accepted connection from #{hostname}(#{host_ip}):#{port}"
421
421
  end
422
422
 
423
423
  def start_read_thread(interface_info)
@@ -427,10 +427,10 @@ module Cosmos
427
427
  begin
428
428
  read_thread_body(interface_info.interface)
429
429
  rescue Exception => err
430
- Logger.instance.error "Tcpip server read thread unexpectedly died"
430
+ Logger.instance.error "#{@name}: Tcpip server read thread unexpectedly died"
431
431
  Logger.instance.error err.formatted
432
432
  end
433
- Logger.instance.info "Tcpip server lost read connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
433
+ Logger.instance.info "#{@name}: Tcpip server lost read connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
434
434
  @read_threads.delete(Thread.current)
435
435
 
436
436
  index_to_delete = nil
@@ -453,7 +453,7 @@ module Cosmos
453
453
  end
454
454
  end
455
455
  rescue Exception => err
456
- Logger.instance.error "Tcpip server read thread unexpectedly died"
456
+ Logger.instance.error "#{@name}: Tcpip server read thread unexpectedly died"
457
457
  Logger.instance.error err.formatted
458
458
  end
459
459
  end
@@ -500,7 +500,7 @@ module Cosmos
500
500
  end
501
501
 
502
502
  def interface_disconnect(interface_info)
503
- Logger.instance.info "Tcpip server lost write connection to "\
503
+ Logger.instance.info "#{@name}: Tcpip server lost write connection to "\
504
504
  "#{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
505
505
  interface_info.interface.disconnect
506
506
  interface_info.interface.raw_logger_pair.stop if interface_info.interface.raw_logger_pair
@@ -552,13 +552,13 @@ module Cosmos
552
552
  next
553
553
  end
554
554
  # Client has disconnected (or is invalidly sending data on the socket)
555
- Logger.instance.info "Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
555
+ Logger.instance.info "#{@name}: Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
556
556
  interface_info.interface.disconnect
557
557
  interface_info.interface.raw_logger_pair.stop if interface_info.interface.raw_logger_pair
558
558
  indexes_to_delete.unshift(index) # Put later indexes at front of array
559
559
  rescue Errno::ECONNRESET, Errno::ECONNABORTED, IOError
560
560
  # Client has disconnected
561
- Logger.instance.info "Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
561
+ Logger.instance.info "#{@name}: Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
562
562
  interface_info.interface.disconnect
563
563
  interface_info.interface.raw_logger_pair.stop if interface_info.interface.raw_logger_pair
564
564
  indexes_to_delete.unshift(index) # Put later indexes at front of array
@@ -600,13 +600,13 @@ module Cosmos
600
600
  need_disconnect = true
601
601
  rescue Exception => err
602
602
  if err.message != "Stream not connected for write_raw"
603
- Logger.instance.error "Error sending to client: #{err.class} #{err.message}"
603
+ Logger.instance.error "#{@name}: Error sending to client: #{err.class} #{err.message}"
604
604
  end
605
605
  need_disconnect = true
606
606
  end
607
607
 
608
608
  if need_disconnect
609
- Logger.instance.info "Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
609
+ Logger.instance.info "#{@name}: Tcpip server lost write connection to #{interface_info.hostname}(#{interface_info.host_ip}):#{interface_info.port}"
610
610
  interface_info.interface.disconnect
611
611
  interface_info.interface.raw_logger_pair.stop if interface_info.interface.raw_logger_pair
612
612
  indexes_to_delete.unshift(index) # Put later indexes at front of array
@@ -130,7 +130,7 @@ module Cosmos
130
130
  return [target_name, packet_name, item_name, comparison_to_eval] if split_string.length == 3
131
131
  raise "ERROR: Check improperly specified: #{text}" if split_string.length < 4
132
132
  split_string = text.split(/ /) # Split on regex spaces to preserve spaces in comparison
133
- index = split_string.index(item_name)
133
+ index = split_string.rindex(item_name)
134
134
  comparison_to_eval = split_string[(index + 1)..(split_string.length - 1)].join(" ")
135
135
  raise "ERROR: Use '==' instead of '=': #{text}" if split_string[3] == '='
136
136
  return [target_name, packet_name, item_name, comparison_to_eval]
@@ -156,7 +156,7 @@ module Cosmos
156
156
  msg << "PDF Handbooks created successfully"
157
157
  progress_dialog.append_text(msg)
158
158
  else
159
- progress_dialog.append_text("\nPDF Handbooks could not be created.\n\nIs wkhtmltopdf in your PATH and are all existing pdfs closed?\n\nUsing version 0.11.0_rc1 of wkhtmltox is recommended which can be found at: http://download.gna.org/wkhtmltopdf/obsolete/\n\nVersion 0.12.x has shown issues with Handbook Creator's default templates.")
159
+ progress_dialog.append_text("\nPDF Handbooks could not be created.\n\nIs wkhtmltopdf in your PATH and are all existing pdfs closed?\n\nwkhtmltopdf can be found at: https://wkhtmltopdf.org/downloads.html.")
160
160
  end
161
161
  rescue => error
162
162
  progress_dialog.append_text("\n\nError processing:\n#{error.formatted}")
@@ -1,12 +1,12 @@
1
1
  # encoding: ascii-8bit
2
2
 
3
- COSMOS_VERSION = '4.4.1'
3
+ COSMOS_VERSION = '4.4.2'
4
4
  module Cosmos
5
5
  module Version
6
6
  MAJOR = '4'
7
7
  MINOR = '4'
8
- PATCH = '1'
9
- BUILD = 'f8e9c89b2d7fcd0c558806ff6c9dd59d167786e4'
8
+ PATCH = '2'
9
+ BUILD = '41a1376a7b11d7bb3498dd6fd0a13c1a9b383946'
10
10
  end
11
- VERSION = '4.4.1'
11
+ VERSION = '4.4.2'
12
12
  end
@@ -179,7 +179,7 @@ module Cosmos
179
179
  it "warns if an error code is set" do
180
180
  allow_any_instance_of(TcpipClientStream).to receive(:read).and_return @handshake.buffer(false)
181
181
  expect(Logger).to receive(:warn) do |msg|
182
- expect(msg).to eql "Warning sending command (12345): BAD"
182
+ expect(msg).to eql "LincInterface: Warning sending command (12345): BAD"
183
183
  end
184
184
  t = Thread.new do
185
185
  sleep 0.1
@@ -23,7 +23,10 @@ module Cosmos
23
23
  plw = PacketLogWriter.new(:CMD,nil,true,nil,10000000,nil,false)
24
24
  @cmd_packets = []
25
25
  pkt = System.commands.packet("SYSTEM","STARTLOGGING").clone
26
- pkt.received_time = Time.new(2020,1,31,12,30,15)
26
+ # Avoid precision errors by rounding to nearest second and then add 1 to ensure
27
+ # the time is AFTER the initial META packet with the current time
28
+ @time = Time.now.round + 1
29
+ pkt.received_time = @time
27
30
  pkt.write('label','PKT1')
28
31
  plw.write(pkt)
29
32
  @cmd_packet_length = pkt.length
@@ -43,7 +46,7 @@ module Cosmos
43
46
  plw = PacketLogWriter.new(:TLM,nil,true,nil,10000000,nil,false)
44
47
  @tlm_packets = []
45
48
  pkt = System.telemetry.packet("SYSTEM","LIMITS_CHANGE").clone
46
- pkt.received_time = Time.new(2020,2,1,12,30,15)
49
+ pkt.received_time = @time
47
50
  pkt.write('PACKET','PKT1')
48
51
  plw.write(pkt)
49
52
  @tlm_packet_length = pkt.length
@@ -239,10 +242,11 @@ module Cosmos
239
242
  expect(packet_offsets).to eql [PacketLogReader::COSMOS4_HEADER_LENGTH, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length + header_length + @cmd_packet_length, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length + (header_length + @cmd_packet_length) * 2]
240
243
 
241
244
  expect(@plr.open(Dir[File.join(@log_path,"*cmd.bin")][0])).to eql [true, nil]
242
- pkt = @plr.read_at_offset(packet_offsets[2])
245
+ pkt = @plr.read_at_offset(packet_offsets[2]) # Grab the second STARTLOGGING (META is 0)
243
246
  expect(pkt.target_name).to eql "SYSTEM"
244
247
  expect(pkt.packet_name).to eql "STARTLOGGING"
245
- expect(pkt.received_time).to eql Time.new(2020,1,31,12,30,16)
248
+ expect(pkt.read('LABEL')).to eql "PKT2"
249
+ expect(pkt.received_time).to eql @time + 1
246
250
  @plr.close
247
251
  end
248
252
 
@@ -257,10 +261,11 @@ module Cosmos
257
261
  expect(packet_offsets).to eql [PacketLogReader::COSMOS4_HEADER_LENGTH, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length + header_length + @tlm_packet_length, PacketLogReader::COSMOS4_HEADER_LENGTH + meta_header_length + meta_length + (header_length + @tlm_packet_length) * 2]
258
262
 
259
263
  expect(@plr.open(Dir[File.join(@log_path,"*tlm.bin")][0])).to eql [true, nil]
260
- pkt = @plr.read_at_offset(packet_offsets[2])
264
+ pkt = @plr.read_at_offset(packet_offsets[2]) # Grab the second LIMITS_CHANGE (META is 0)
261
265
  expect(pkt.target_name).to eql "SYSTEM"
262
266
  expect(pkt.packet_name).to eql "LIMITS_CHANGE"
263
- expect(pkt.received_time).to eql Time.new(2020,2,1,12,30,16)
267
+ expect(pkt.read('PACKET')).to eql "PKT2"
268
+ expect(pkt.received_time).to eql @time + 1
264
269
  @plr.close
265
270
  end
266
271
  end
@@ -415,9 +420,8 @@ module Cosmos
415
420
  end
416
421
 
417
422
  it "returns all packets if the start time is before all" do
418
- time = Time.new(2000,1,31,12,30,16)
419
423
  index = 0
420
- @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, time) do |packet|
424
+ @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, @time) do |packet|
421
425
  next if packet.packet_name == 'META'
422
426
  expect(packet.target_name).to eql @cmd_packets[index].target_name
423
427
  expect(packet.packet_name).to eql @cmd_packets[index].packet_name
@@ -429,51 +433,48 @@ module Cosmos
429
433
  end
430
434
 
431
435
  it "returns no packets if the start time is after all" do
432
- time = Time.new(2030,2,1,12,30,16)
433
436
  index = 0
434
- @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, time) do |packet|
437
+ @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, @time + 100) do |packet|
435
438
  index += 1
436
439
  end
437
440
  expect(index).to eql 0
438
441
  end
439
442
 
440
443
  it "returns all packets after a start time" do
441
- time = Time.new(2020,1,31,12,30,16)
442
444
  index = 0
443
- @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, time) do |packet|
444
- expect(packet.target_name).to eql @cmd_packets[index+1].target_name
445
- expect(packet.packet_name).to eql @cmd_packets[index+1].packet_name
446
- expect(packet.received_time).to eql @cmd_packets[index+1].received_time
447
- expect(packet.read('LABEL')).to eql @cmd_packets[index+1].read('LABEL')
445
+ @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, @time) do |packet|
446
+ next if packet.packet_name == 'META'
447
+ expect(packet.target_name).to eql @cmd_packets[index].target_name
448
+ expect(packet.packet_name).to eql @cmd_packets[index].packet_name
449
+ expect(packet.received_time).to eql @cmd_packets[index].received_time
450
+ expect(packet.read('LABEL')).to eql @cmd_packets[index].read('LABEL')
448
451
  index += 1
449
452
  end
450
- expect(index).to eql 2
453
+ expect(index).to eql 3
451
454
 
452
- time = Time.new(2020,2,1,12,30,16)
453
- index = 0
454
- @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, time) do |packet|
455
- expect(packet.target_name).to eql @tlm_packets[index+1].target_name
456
- expect(packet.packet_name).to eql @tlm_packets[index+1].packet_name
457
- expect(packet.received_time).to eql @tlm_packets[index+1].received_time
458
- expect(packet.read('PACKET')).to eql @tlm_packets[index+1].read('PACKET')
455
+ index = 1 # @time + 1
456
+ @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, @time + 1) do |packet|
457
+ next if packet.packet_name == 'META'
458
+ expect(packet.target_name).to eql @tlm_packets[index].target_name
459
+ expect(packet.packet_name).to eql @tlm_packets[index].packet_name
460
+ expect(packet.received_time).to eql @tlm_packets[index].received_time
461
+ expect(packet.read('PACKET')).to eql @tlm_packets[index].read('PACKET')
459
462
  index += 1
460
463
  end
461
- expect(index).to eql 2
464
+ expect(index).to eql 3
462
465
  end
463
466
 
464
467
  it "returns no packets if the end time is before all" do
465
- time = Time.new(2000,1,31,12,30,16)
466
468
  index = 0
467
- @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, nil, time) do |packet|
469
+ @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, nil, @time - 10) do |packet|
468
470
  index += 1
469
471
  end
470
472
  expect(index).to eql 0
471
473
  end
472
474
 
473
475
  it "returns all packets if the end time is after all" do
474
- time = Time.new(2030,2,1,12,30,16)
475
476
  index = 0
476
- @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, nil, time) do |packet|
477
+ @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, nil, @time + 10) do |packet|
477
478
  next if packet.packet_name == 'META'
478
479
  expect(packet.target_name).to eql @cmd_packets[index].target_name
479
480
  expect(packet.packet_name).to eql @cmd_packets[index].packet_name
@@ -485,9 +486,8 @@ module Cosmos
485
486
  end
486
487
 
487
488
  it "returns all packets before an end time" do
488
- time = Time.new(2020,1,31,12,30,16)
489
489
  index = 0
490
- @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, nil, time) do |packet|
490
+ @plr.each(Dir[File.join(@log_path,"*cmd.bin")][0], true, nil, @time) do |packet|
491
491
  next if packet.packet_name == 'META'
492
492
  expect(packet.target_name).to eql @cmd_packets[index].target_name
493
493
  expect(packet.packet_name).to eql @cmd_packets[index].packet_name
@@ -495,11 +495,10 @@ module Cosmos
495
495
  expect(packet.read('LABEL')).to eql @cmd_packets[index].read('LABEL')
496
496
  index += 1
497
497
  end
498
- expect(index).to eql 2
498
+ expect(index).to eql 1
499
499
 
500
- time = Time.new(2020,2,1,12,30,16)
501
500
  index = 0
502
- @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, nil, time) do |packet|
501
+ @plr.each(Dir[File.join(@log_path,"*tlm.bin")][0], true, nil, @time + 1) do |packet|
503
502
  next if packet.packet_name == 'META'
504
503
  expect(packet.target_name).to eql @tlm_packets[index].target_name
505
504
  expect(packet.packet_name).to eql @tlm_packets[index].packet_name
@@ -148,6 +148,10 @@ module Cosmos
148
148
  expect(extract_fields_from_check_text("TARGET PACKET ITEM < 5")).to eql(['TARGET', 'PACKET', 'ITEM', '< 5'])
149
149
  end
150
150
 
151
+ it "should support target packet items named the same" do
152
+ expect(extract_fields_from_check_text("TEST TEST TEST == 5")).to eql(['TEST', 'TEST', 'TEST', '== 5'])
153
+ end
154
+
151
155
  it "should complain about trying to do an = comparison" do
152
156
  expect { extract_fields_from_check_text("TARGET PACKET ITEM = 5") }.to raise_error(/ERROR: Use/)
153
157
  end
@@ -160,4 +164,3 @@ module Cosmos
160
164
 
161
165
  end
162
166
  end
163
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cosmos
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.1
4
+ version: 4.4.2
5
5
  platform: java
6
6
  authors:
7
7
  - Ryan Melton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-12-30 00:00:00.000000000 Z
12
+ date: 2020-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  requirement: !ruby/object:Gem::Requirement