retrotoolkit 0.0.0 → 0.0.1
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 +4 -4
- data/lib/retrotoolkit.rb +2 -0
- data/lib/retrotoolkit/can_frame.rb +58 -0
- data/lib/retrotoolkit/can_frame_set.rb +39 -0
- data/lib/retrotoolkit/can_usb_269.rb +13 -0
- metadata +21 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d81da3b42e0dcf659d4fc17c85b38c6650fa986
|
4
|
+
data.tar.gz: f1ac2af5cc8da6cb4717fdaf2a7241ce2df9f9d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf94d887903f3b9c6fcf519d62e3024f6e8c744b0da6a099502b1d4f9caae3d4db38e652ef1e8cf225ccb4e68188516643a6c98cad2cc791c24c7c8b4ddec9a5
|
7
|
+
data.tar.gz: df2e47529c703a2ea24a3a70a3dec91cc4370d1d494956352caf463c420d2099e08187f052f29c6a0c38d39343f15677e4c2ce520dbd3c92b3f9d16d23112fa7
|
data/lib/retrotoolkit.rb
CHANGED
@@ -1,3 +1,61 @@
|
|
1
1
|
class CanFrame
|
2
2
|
|
3
|
+
def initialize value
|
4
|
+
@value = value
|
5
|
+
end
|
6
|
+
|
7
|
+
def to_bits
|
8
|
+
"%0#{@value.size * 4}d" % (@value.hex.to_s(2))
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_hex
|
12
|
+
@value
|
13
|
+
end
|
14
|
+
|
15
|
+
def dlc
|
16
|
+
@value[3].hex
|
17
|
+
end
|
18
|
+
|
19
|
+
def identifier
|
20
|
+
@value[0..2]
|
21
|
+
end
|
22
|
+
|
23
|
+
def data_field
|
24
|
+
@value[4..-5]
|
25
|
+
end
|
26
|
+
|
27
|
+
def crc
|
28
|
+
@value[-4..-1]
|
29
|
+
end
|
30
|
+
|
31
|
+
def repr
|
32
|
+
to_bits
|
33
|
+
end
|
34
|
+
|
35
|
+
def match integer
|
36
|
+
data_field_values.select { |value| value.hex == integer }.size > 0
|
37
|
+
end
|
38
|
+
|
39
|
+
def formatted_output
|
40
|
+
[identifier, dlc, data_field_bytes.join(' '), crc].join ' '
|
41
|
+
end
|
42
|
+
|
43
|
+
#######################################################################
|
44
|
+
private
|
45
|
+
######################################################################
|
46
|
+
|
47
|
+
def data_field_bytes
|
48
|
+
data_field.scan(/.{2}/)
|
49
|
+
end
|
50
|
+
|
51
|
+
def data_field_values
|
52
|
+
values = []
|
53
|
+
dlc.times do |length|
|
54
|
+
(dlc-length).times do |pos|
|
55
|
+
values << data_field[(pos*2)..(pos*2+1+length*2)]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
values
|
59
|
+
end
|
60
|
+
|
3
61
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class CanFrameSet
|
2
|
+
|
3
|
+
attr_reader :frames
|
4
|
+
|
5
|
+
def initialize frames
|
6
|
+
@frames = frames
|
7
|
+
end
|
8
|
+
|
9
|
+
def identifiers
|
10
|
+
identifiers = []
|
11
|
+
@frames.each do |f|
|
12
|
+
identifiers << f.identifier unless identifiers.include?(f.identifier)
|
13
|
+
end
|
14
|
+
identifiers
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_by_identifier identifier
|
18
|
+
@frames.select { |f| f.identifier == identifier }
|
19
|
+
end
|
20
|
+
|
21
|
+
def find_by_value value
|
22
|
+
@frames.select { |f| f.match(value) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def match_identifier_with_value id, value
|
26
|
+
find_by_value(value) & find_by_identifier(id)
|
27
|
+
end
|
28
|
+
|
29
|
+
def formatted_output
|
30
|
+
@frames.map { |f| f.formatted_output }.join("\n")
|
31
|
+
end
|
32
|
+
|
33
|
+
def write file
|
34
|
+
File.open file, 'w' do |f|
|
35
|
+
f.write formatted_output
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retrotoolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Efflam Castel
|
@@ -14,16 +14,30 @@ dependencies:
|
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.14.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.14.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: factory_girl
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.2.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.2.0
|
27
41
|
description: Gem designed to help with retro-engineering, especially can bus
|
28
42
|
email: efflamm.castel@gmail.com
|
29
43
|
executables: []
|
@@ -32,6 +46,8 @@ extra_rdoc_files: []
|
|
32
46
|
files:
|
33
47
|
- lib/retrotoolkit.rb
|
34
48
|
- lib/retrotoolkit/can_frame.rb
|
49
|
+
- lib/retrotoolkit/can_frame_set.rb
|
50
|
+
- lib/retrotoolkit/can_usb_269.rb
|
35
51
|
homepage: http://rubygems.org/gems/retrotoolkit
|
36
52
|
licenses:
|
37
53
|
- MIT
|