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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ca15c2b48fb117da2cb621a1a1f4b16c37242be
4
- data.tar.gz: e03aeece0e6bdab847c85f597a88bf837453bfde
3
+ metadata.gz: 6d81da3b42e0dcf659d4fc17c85b38c6650fa986
4
+ data.tar.gz: f1ac2af5cc8da6cb4717fdaf2a7241ce2df9f9d7
5
5
  SHA512:
6
- metadata.gz: 4fcde131f339228b75eefd0f407e492c6cfdf986e214b5f71552d155f21e8b0f298e133c6d3527fafdc594c484404cfa347dd0044970d63c64bd52ff03fcbf3f
7
- data.tar.gz: 4e4b7bb178e788c53194dd359778aa74d1c5f4ce64bc677fc806f1b7d795ef8a0e038c51ff5de0d3398dc647bd8b0e1460061d3993628f9229010b1280584487
6
+ metadata.gz: bf94d887903f3b9c6fcf519d62e3024f6e8c744b0da6a099502b1d4f9caae3d4db38e652ef1e8cf225ccb4e68188516643a6c98cad2cc791c24c7c8b4ddec9a5
7
+ data.tar.gz: df2e47529c703a2ea24a3a70a3dec91cc4370d1d494956352caf463c420d2099e08187f052f29c6a0c38d39343f15677e4c2ce520dbd3c92b3f9d16d23112fa7
data/lib/retrotoolkit.rb CHANGED
@@ -1 +1,3 @@
1
1
  require 'retrotoolkit/can_frame'
2
+ require 'retrotoolkit/can_frame_set'
3
+ require 'retrotoolkit/can_usb_269'
@@ -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
@@ -0,0 +1,13 @@
1
+ class CanUsb269
2
+
3
+ def self.load file
4
+ data = file.read.gsub(/[^0-9A-Ft]/, '')
5
+ frames = data.split 't'
6
+ frames.shift
7
+ frame_set = []
8
+ frames.each do |frame|
9
+ frame_set << CanFrame.new(frame)
10
+ end
11
+ CanFrameSet.new(frame_set)
12
+ end
13
+ 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.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: '0'
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: '0'
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