retrotoolkit 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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