cosmos 4.4.1 → 4.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +9 -8
- data/cosmos.gemspec +1 -1
- data/data/crc.txt +9 -9
- data/demo/config/data/crc.txt +1 -1
- data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/install/config/data/crc.txt +1 -1
- data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/lib/cosmos/interfaces/linc_interface.rb +3 -3
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +3 -3
- data/lib/cosmos/interfaces/stream_interface.rb +1 -1
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +13 -13
- data/lib/cosmos/script/extract.rb +1 -1
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +1 -1
- data/lib/cosmos/version.rb +4 -4
- data/spec/interfaces/linc_interface_spec.rb +1 -1
- data/spec/packet_logs/packet_log_reader_spec.rb +33 -34
- data/spec/script/extract_spec.rb +4 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 118c33651e0616201ed73bde1566f2e1d645ef30d06fe558e9d6585602e912e7
|
4
|
+
data.tar.gz: eaf90fcf26d5313349cd0f11c05fdfce4c24ee3de2a9d73d222dd349eae10af7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38a5ee8dd5fc1d4b5c1a2e97c3ecfe6e5e944150da861f9fa0a32db9c69c1896019e804f021fdbc4da5f7a47874d614d385cb246f76adb3542fa55a7101ea0c1
|
7
|
+
data.tar.gz: 20503f8f9121ab812625cc778b911feda6ca9b3d9b7e699f44b3d6676e5691551b3734893a5bee0ab6a2ff5eda7ed45f62fc1ddaca65a3d16b385e27d349ec2f
|
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.
|
327
|
-
STDOUT.puts "13.
|
328
|
-
STDOUT.puts "14. git
|
329
|
-
STDOUT.puts "15. git
|
330
|
-
STDOUT.puts "16. git
|
331
|
-
STDOUT.puts "17.
|
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')
|
data/cosmos.gemspec
CHANGED
@@ -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
|
data/data/crc.txt
CHANGED
@@ -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"
|
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"
|
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"
|
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"
|
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"
|
462
|
-
"lib/cosmos/interfaces/protocols/crc_protocol.rb"
|
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"
|
465
|
-
"lib/cosmos/interfaces/tcpip_server_interface.rb"
|
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"
|
469
|
+
"lib/cosmos/interfaces/stream_interface.rb" 0xF3EE02F8
|
470
470
|
"lib/cosmos/interfaces/serial_interface.rb" 0x97B428D8
|
data/demo/config/data/crc.txt
CHANGED
@@ -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"
|
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="
|
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>
|
data/install/config/data/crc.txt
CHANGED
@@ -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"
|
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="
|
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.
|
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\
|
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}")
|
data/lib/cosmos/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
COSMOS_VERSION = '4.4.
|
3
|
+
COSMOS_VERSION = '4.4.2'
|
4
4
|
module Cosmos
|
5
5
|
module Version
|
6
6
|
MAJOR = '4'
|
7
7
|
MINOR = '4'
|
8
|
-
PATCH = '
|
9
|
-
BUILD = '
|
8
|
+
PATCH = '2'
|
9
|
+
BUILD = '41a1376a7b11d7bb3498dd6fd0a13c1a9b383946'
|
10
10
|
end
|
11
|
-
VERSION = '4.4.
|
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
|
-
|
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 =
|
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.
|
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.
|
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
|
-
|
445
|
-
expect(packet.
|
446
|
-
expect(packet.
|
447
|
-
expect(packet.
|
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
|
453
|
+
expect(index).to eql 3
|
451
454
|
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
expect(packet.target_name).to eql @tlm_packets[index
|
456
|
-
expect(packet.packet_name).to eql @tlm_packets[index
|
457
|
-
expect(packet.received_time).to eql @tlm_packets[index
|
458
|
-
expect(packet.read('PACKET')).to eql @tlm_packets[index
|
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
|
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
|
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
|
data/spec/script/extract_spec.rb
CHANGED
@@ -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.
|
4
|
+
version: 4.4.2
|
5
5
|
platform: ruby
|
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:
|
12
|
+
date: 2020-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -436,6 +436,9 @@ dependencies:
|
|
436
436
|
- - "~>"
|
437
437
|
- !ruby/object:Gem::Version
|
438
438
|
version: '1.0'
|
439
|
+
- - "<"
|
440
|
+
- !ruby/object:Gem::Version
|
441
|
+
version: '1.3'
|
439
442
|
type: :development
|
440
443
|
prerelease: false
|
441
444
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -443,6 +446,9 @@ dependencies:
|
|
443
446
|
- - "~>"
|
444
447
|
- !ruby/object:Gem::Version
|
445
448
|
version: '1.0'
|
449
|
+
- - "<"
|
450
|
+
- !ruby/object:Gem::Version
|
451
|
+
version: '1.3'
|
446
452
|
description: |2
|
447
453
|
Ball Aerospace COSMOS provides all the functionality needed to send
|
448
454
|
commands to and receive data from one or more embedded systems
|