motorcontrolboard 0.0.1 → 0.0.2

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.
@@ -220,7 +220,7 @@ class MotorControlBoard
220
220
  readBytes = []
221
221
  begin
222
222
  Timeout::timeout(1) do
223
- len.times {readBytes << @spr.getc}
223
+ len.times {readBytes << @sp.getbyte}
224
224
  readBytes.reverse!
225
225
 
226
226
  @data.select{|data| data['valid']==1}.each do |row| #do we need to revert this??
@@ -236,6 +236,7 @@ class MotorControlBoard
236
236
  rescue
237
237
  puts 'Timeout to read with mask ' + mask
238
238
  puts 'Read ' + readBytes.length.to_s + '/' + len.to_s + ' bytes'
239
+ puts 'READ:' + readBytes.to_s
239
240
  end
240
241
  return result
241
242
  end
@@ -35,7 +35,6 @@ class MotorControlBoard
35
35
  parity = SerialPort::NONE
36
36
  begin
37
37
  @sp = SerialPort.new(@port, @baud_rate, data_bits, stop_bits, parity)
38
- @spr = SerialPort.new(@port, @baud_rate, data_bits, stop_bits, parity)
39
38
  @open = true
40
39
 
41
40
  rescue
@@ -56,7 +55,6 @@ class MotorControlBoard
56
55
  if @open
57
56
  @open = false
58
57
  @sp.close
59
- @spr.close
60
58
  end
61
59
  end
62
60
 
@@ -88,19 +86,6 @@ class MotorControlBoard
88
86
  string.each_char do |char|
89
87
  sendC(char)
90
88
  end
91
- # puts 'sent: ' + string
92
- # puts 'waiting for return'
93
- # rec = ''
94
- # string.length.times {rec << @sp.getc}
95
- # puts 'received: ' + rec
96
- # match = (string.eql? rec.force_encoding('ASCII-8BIT'))
97
- # puts 'equal: ' + match.to_s
98
- # if !match
99
- # string.length.times.with_index do |i|
100
- # puts string[i].ord + ' ' + rec[i].force_encoding('ASCII-8BIT').ord + ' ' + (string[i].encode('ASCII-8BIT') == rec[i].force_encoding('ASCII-8BIT')).to_s
101
- # end
102
- # end
103
-
104
89
  end
105
90
 
106
91
  def startByte()
@@ -1,3 +1,3 @@
1
1
  module Motorcontrolboard
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,109 @@
1
+ require 'spec_helper'
2
+
3
+ describe MotorControlBoard do
4
+ before :each do
5
+ @m = MotorControlBoard.new
6
+ end
7
+
8
+ describe "#new" do
9
+ it "takes 0..2 parameters and returns a MotorControlBoard object" do
10
+ @m.should be_an_instance_of MotorControlBoard
11
+ end
12
+ end
13
+
14
+ describe "#dataMask" do
15
+ it "should return the valid bit as binary mask string" do
16
+ @m.dataMask.should eql "0b"+'0'*(@m.getMaxPos+1)
17
+ @m.data[1]['valid']='1'
18
+ @m.dataMask.should eql "0b"+'0'*(@m.getMaxPos-1)+'10'
19
+ @m.data[0]['valid']='1'
20
+ @m.dataMask.should eql "0b"+'0'*(@m.getMaxPos-1)+'11'
21
+ end
22
+ end
23
+
24
+ describe "#maskToPos" do
25
+ it "should extract positions with 1 in the mask" do
26
+ @m.maskToPos('0b0000').should eql []
27
+ @m.maskToPos('0b0000').should_not eql [0]
28
+ @m.maskToPos('0b0001').should eql [0]
29
+ @m.maskToPos('0b0010').should eql [1]
30
+ @m.maskToPos('0b0011').should eql [0, 1]
31
+ end
32
+ end
33
+
34
+ describe "#invalidateData" do
35
+ it "should reset the valid bit" do
36
+ @m.data[0]['valid']='1'
37
+ @m.data[(@m.getMaxPos())]['valid']='1'
38
+ @m.data[12]['valid']='1'
39
+ @m.data[24]['valid']='1'
40
+ @m.invalidateData
41
+ @m.dataMask.should eql "0b"+'0'*(@m.getMaxPos+1)
42
+ @m.data[0]['valid']='1'
43
+ @m.data[1]['valid']='1'
44
+ @m.data[2]['valid']='1'
45
+ @m.data[3]['valid']='1'
46
+ @m.invalidateData
47
+ @m.dataMask.should eql "0b"+'0'*(@m.getMaxPos+1)
48
+ end
49
+ end
50
+
51
+ describe "#validateData" do
52
+ it "should reset the valid bit" do
53
+ @m.data[0]['valid']='1'
54
+ @m.data[(@m.getMaxPos())]['valid']='1'
55
+ @m.data[12]['valid']='1'
56
+ @m.data[24]['valid']='1'
57
+ @m.validateData
58
+ @m.dataMask.should eql "0b"+'1'*(@m.getMaxPos+1)
59
+ @m.data[0]['valid']='1'
60
+ @m.data[1]['valid']='1'
61
+ @m.data[2]['valid']='1'
62
+ @m.data[3]['valid']='1'
63
+ @m.validateData
64
+ @m.dataMask.should eql "0b"+'1'*(@m.getMaxPos+1)
65
+ end
66
+ end
67
+
68
+ describe "#maskToValid" do
69
+ it "should transform a mask into valid bits" do
70
+ [0,1].repeated_permutation(4).each do |mask|
71
+ mask = '0b' +'0'*(@m.getMaxPos-3) + mask.join
72
+ @m.invalidateData
73
+ @m.maskToValid(mask)
74
+ @m.dataMask.should eql mask
75
+ end
76
+ [0,1].repeated_permutation(4).each do |mask|
77
+ mask = '0b'+ mask.join + '0'*(@m.getMaxPos-3)
78
+ @m.invalidateData
79
+ @m.maskToValid(mask)
80
+ @m.dataMask.should eql mask
81
+ end
82
+ [0,1].repeated_permutation(4).each do |mask|
83
+ mask = '0b' +'0'*11+ mask.join+'0'*(@m.getMaxPos-11-3)
84
+ @m.invalidateData
85
+ @m.maskToValid(mask)
86
+ @m.dataMask.should eql mask
87
+ end
88
+ end
89
+ end
90
+
91
+ describe "#maskFromNames" do
92
+ it "should create a mask according to the names passed as parameter" do
93
+ @m.maskFromNames().should eql "0b"+'0'*(@m.getMaxPos+1)
94
+ @m.maskFromNames(:ctrl_kp).should eql "0b"+'0'*24+'1'
95
+ @m.maskFromNames(:ctrl_ki).should eql "0b"+'0'*23+'10'
96
+ @m.maskFromNames(:ctrl_kp, :ctrl_ki).should eql "0b"+'0'*23+'11'
97
+ @m.maskFromNames(:board_id).should eql "0b"+'1'+'0'*24
98
+ end
99
+ end
100
+
101
+ describe "#positionFromName" do
102
+ it "return the position of the given name" do
103
+ @m.positionFromName(:ctrl_kp).should eql 0
104
+ @m.positionFromName(:ctrl_ki).should eql 1
105
+ @m.positionFromName(:board_id).should eql 24
106
+ end
107
+ end
108
+
109
+ end
@@ -0,0 +1,3 @@
1
+ require_relative '../lib/motorcontrolboard.rb'
2
+
3
+ require 'yaml'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motorcontrolboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-18 00:00:00.000000000 Z
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: serialport
@@ -44,6 +44,8 @@ files:
44
44
  - lib/motorcontrolboard/mcb_data.rb
45
45
  - lib/motorcontrolboard/version.rb
46
46
  - motorcontrolboard.gemspec
47
+ - spec/motorcontrolboard_spec.rb
48
+ - spec/spec_helper.rb
47
49
  homepage: http://irawiki.disco.unimib.it/irawiki/index.php/INFIND2011/12_Motor_control_board
48
50
  licenses: []
49
51
  post_install_message:
@@ -68,4 +70,6 @@ rubygems_version: 1.8.24
68
70
  signing_key:
69
71
  specification_version: 3
70
72
  summary: ''
71
- test_files: []
73
+ test_files:
74
+ - spec/motorcontrolboard_spec.rb
75
+ - spec/spec_helper.rb