minilab 2.0.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/.document +2 -0
  2. data/.gitignore +2 -0
  3. data/CHANGES +22 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +19 -0
  6. data/README.rdoc +101 -0
  7. data/Rakefile +25 -0
  8. data/doc/UniLib.chm +0 -0
  9. data/doc/minilab-1008.pdf +0 -0
  10. data/doc/minilab_systest_setup.txt +38 -0
  11. data/doc/port_mapping.txt +2 -0
  12. data/lib/minilab/analog_io.rb +25 -0
  13. data/lib/minilab/connection_state.rb +15 -0
  14. data/lib/minilab/digital_auxport_io.rb +36 -0
  15. data/lib/minilab/digital_configuration.rb +55 -0
  16. data/lib/minilab/digital_port_io.rb +41 -0
  17. data/lib/minilab/library_translator.rb +48 -0
  18. data/lib/minilab/minilab.rb +130 -0
  19. data/lib/minilab/minilab_constants.rb +22 -0
  20. data/lib/minilab/minilab_context.rb +18 -0
  21. data/lib/minilab/minilab_hardware.rb +118 -0
  22. data/lib/minilab/minilab_wrapper.rb +14 -0
  23. data/lib/minilab/objects.yml +24 -0
  24. data/lib/minilab/version.rb +3 -0
  25. data/lib/minilab.rb +14 -0
  26. data/minilab.gemspec +32 -0
  27. data/spec/acceptance/analog_spec.rb +35 -0
  28. data/spec/acceptance/digital_port_spec.rb +81 -0
  29. data/spec/acceptance/digital_screw_terminal_spec.rb +22 -0
  30. data/spec/spec_helper.rb +102 -0
  31. data/spec/unit/analog_io_spec.rb +55 -0
  32. data/spec/unit/connection_state_spec.rb +14 -0
  33. data/spec/unit/digital_auxport_io_spec.rb +98 -0
  34. data/spec/unit/digital_configuration_spec.rb +96 -0
  35. data/spec/unit/digital_port_io_spec.rb +65 -0
  36. data/spec/unit/library_translator_spec.rb +86 -0
  37. data/spec/unit/minilab_context_spec.rb +17 -0
  38. data/spec/unit/minilab_hardware_spec.rb +17 -0
  39. data/spec/unit/minilab_spec.rb +104 -0
  40. data/spec/unit/minilab_wrapper_spec.rb +20 -0
  41. data/vendor/mcc/cbw32.dll +0 -0
  42. metadata +192 -0
@@ -0,0 +1,96 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::DigitalConfiguration do
4
+ before { @mox = create_mocks(:minilab_wrapper) }
5
+ subject { described_class.new(@mox) }
6
+
7
+ it "configure known ports for input" do
8
+ good_ports.each do |port|
9
+ expected_configuration = { :direction => DIGITALIN, :port => port_to_library_port_mapping[port] }
10
+ @minilab_wrapper.configure_port(expected_configuration).returns "you"
11
+ end
12
+
13
+ good_ports.each do |port|
14
+ assert_equal true, subject.configure_port_for_input(port)
15
+ end
16
+ end
17
+
18
+ it "configure known ports for output" do
19
+ good_ports.each do |port|
20
+ expected_configuration = { :direction => DIGITALOUT, :port => port_to_library_port_mapping[port] }
21
+ @minilab_wrapper.configure_port(expected_configuration).returns "boo"
22
+ end
23
+
24
+ good_ports.each do |port|
25
+ assert_equal true, subject.configure_port_for_output(port)
26
+ end
27
+ end
28
+
29
+ it "raise an error for an invalid input port" do
30
+ check_error_for_all_bad_ports(:configure_port_for_input)
31
+ end
32
+
33
+ it "raise an error for an invalid output port" do
34
+ check_error_for_all_bad_ports(:configure_port_for_output)
35
+ end
36
+
37
+ it "return false when each of the ports has not been configured for input yet and a client asks if it has" do
38
+ good_ports.each do |port|
39
+ assert_equal false, subject.is_port_configured_for_input?(port)
40
+ end
41
+ end
42
+
43
+ it "return false when each of the ports has not been configured for output yet and a client asks if it has" do
44
+ good_ports.each do |port|
45
+ assert_equal false, subject.is_port_configured_for_output?(port)
46
+ end
47
+ end
48
+
49
+ it "return the input configuration status of a port when asked" do
50
+ expected_configuration = { :direction => DIGITALIN, :port => port_to_library_port_mapping[:porta] }
51
+ @minilab_wrapper.configure_port(expected_configuration).returns true
52
+
53
+ subject.configure_port_for_input(:porta)
54
+ assert_equal true, subject.is_port_configured_for_input?(:porta)
55
+ end
56
+
57
+ it "return the output configuration status of a port when asked" do
58
+ expected_configuration = { :direction => DIGITALOUT, :port => port_to_library_port_mapping[:portb] }
59
+ @minilab_wrapper.configure_port(expected_configuration).returns true
60
+
61
+ subject.configure_port_for_output(:portb)
62
+ assert_equal true, subject.is_port_configured_for_output?(:portb)
63
+ end
64
+
65
+ it "raise an error if you pass is_port_configured_for_input? an invalid port" do
66
+ check_error_for_all_bad_ports(:is_port_configured_for_input?)
67
+ end
68
+
69
+ it "raise an error if you pass is_port_configured_for_output? an invalid port" do
70
+ check_error_for_all_bad_ports(:is_port_configured_for_output?)
71
+ end
72
+
73
+ private
74
+ def good_ports
75
+ [:porta, :portb, :portcl, :portch]
76
+ end
77
+
78
+ def bad_ports
79
+ [nil, :portd, :portttt, "ibm"]
80
+ end
81
+
82
+ def port_to_library_port_mapping
83
+ {
84
+ :porta => FIRSTPORTA,
85
+ :portb => FIRSTPORTB,
86
+ :portcl => FIRSTPORTCL,
87
+ :portch => FIRSTPORTCH
88
+ }
89
+ end
90
+
91
+ def check_error_for_all_bad_ports(method_to_test)
92
+ bad_ports.each do |bad_port|
93
+ -> { subject.send(method_to_test, bad_port) }.should raise_error
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,65 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::DigitalPortIo do
4
+ before { @mox =create_mocks(:minilab_wrapper, :digital_configuration, :library_translator) }
5
+ subject { described_class.new(@mox) }
6
+
7
+ # configuration tests
8
+ it "use the digital configuration object to configure a port for input" do
9
+ @digital_configuration.configure_port_for_input(:portch).returns(true)
10
+ assert subject.configure_input_port(:portch)
11
+ end
12
+
13
+ it "use the digital configuration object to configure a port for output" do
14
+ @digital_configuration.configure_port_for_output(:portcl).returns(true)
15
+ assert subject.configure_output_port(:portcl)
16
+ end
17
+
18
+ # read tests
19
+ it "read digital input from the digital pins" do
20
+ @library_translator.get_port_for_pin(1).returns(:porta)
21
+ @digital_configuration.is_port_configured_for_input?(:porta).returns(true)
22
+ @library_translator.get_library_pin_number(1).returns(21)
23
+ @minilab_wrapper.read_digital_pin(21).returns "woohoo"
24
+
25
+ assert_equal "woohoo", subject.read_digital(1)
26
+ end
27
+
28
+ it "read digital input from a digital port" do
29
+ @digital_configuration.is_port_configured_for_input?(:portb).returns(true)
30
+ @library_translator.get_library_port(:portb).returns("some port")
31
+ @minilab_wrapper.read_port("some port").returns 0x34
32
+
33
+ assert_equal 0x34, subject.read_port(:portb)
34
+ end
35
+
36
+ it "raise an error when the configuration object says the port isn't configured for input when reading a pin" do
37
+ @library_translator.get_port_for_pin(20).returns(:portc)
38
+ @digital_configuration.is_port_configured_for_input?(:portc).returns(false)
39
+
40
+ assert_raise (RuntimeError) { subject.read_digital(20) }
41
+ end
42
+
43
+ it "raise an error when the configuration objects says the port isn't configured for input when reading a port" do
44
+ @digital_configuration.is_port_configured_for_input?(:porta).returns(false)
45
+
46
+ assert_raise (RuntimeError) { subject.read_port(:porta) }
47
+ end
48
+
49
+ # output tests
50
+ it "write digital output to a digital pin" do
51
+ @library_translator.get_port_for_pin(2).returns(:portcl)
52
+ @digital_configuration.is_port_configured_for_output?(:portcl).returns(true)
53
+ @library_translator.get_library_pin_number(2).returns(7)
54
+ @minilab_wrapper.write_digital_pin(7, 0).returns "ibm"
55
+
56
+ assert_equal true, subject.write_digital(2, 0)
57
+ end
58
+
59
+ it "raise an error when the configuration object says the port is not configured for output (for write_digital)" do
60
+ @library_translator.get_port_for_pin(1).returns(:portd)
61
+ @digital_configuration.is_port_configured_for_output?(:portd).returns(false)
62
+
63
+ assert_raise (RuntimeError) { subject.write_digital(1, 1) }
64
+ end
65
+ end
@@ -0,0 +1,86 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::LibraryTranslator do
4
+ def check_pins_and_ports(low, high, port)
5
+ low.upto(high) do |pin|
6
+ assert_equal port, subject.get_port_for_pin(pin), "Didn't get #{port} for pin #{pin}"
7
+ end
8
+ end
9
+
10
+ it "provide :porta when asked about numbered pins on the hardware's FIRSTPORTA" do
11
+ check_pins_and_ports(30, 37, :porta)
12
+ end
13
+
14
+ it "provide :portb when asked about numbered pins on the hardware's FIRSTPORTB" do
15
+ check_pins_and_ports(3, 10, :portb)
16
+ end
17
+
18
+ it "provide :portcl when asked about numbered pins on the hardware's FIRSTPORTCL" do
19
+ check_pins_and_ports(26, 29, :portcl)
20
+ end
21
+
22
+ it "provide :portch when asked about numbered pins on the hardware's FIRSTPORTCH" do
23
+ check_pins_and_ports(22, 25, :portch)
24
+ end
25
+
26
+ it "raise an error when asked about a pin number that does not map to a port (such as the pins for ground, 5v +ve, DIO1..3, etc)" do
27
+ [ 1, 2, "DIO0", "DIO2", nil, :thedude, 832].each do |bad_pin|
28
+ -> { subject.get_port_for_pin(bad_pin) }.should raise_error(RuntimeError)
29
+ end
30
+ end
31
+
32
+ it "get the number the library uses for the pin when asked to translate from the numbers on the board (port a pins)" do
33
+ assert_equal 7, subject.get_library_pin_number(30)
34
+ assert_equal 6, subject.get_library_pin_number(31)
35
+ assert_equal 5, subject.get_library_pin_number(32)
36
+ assert_equal 4, subject.get_library_pin_number(33)
37
+ assert_equal 3, subject.get_library_pin_number(34)
38
+ assert_equal 2, subject.get_library_pin_number(35)
39
+ assert_equal 1, subject.get_library_pin_number(36)
40
+ assert_equal 0, subject.get_library_pin_number(37)
41
+ end
42
+
43
+ it "get the number the library uses for the pin when asked to translate from the numbers on the board (port b pins)" do
44
+ assert_equal 15, subject.get_library_pin_number(3)
45
+ assert_equal 14, subject.get_library_pin_number(4)
46
+ assert_equal 13, subject.get_library_pin_number(5)
47
+ assert_equal 12, subject.get_library_pin_number(6)
48
+ assert_equal 11, subject.get_library_pin_number(7)
49
+ assert_equal 10, subject.get_library_pin_number(8)
50
+ assert_equal 9, subject.get_library_pin_number(9)
51
+ assert_equal 8, subject.get_library_pin_number(10)
52
+ end
53
+
54
+ it "get the number the library uses for the pin when asked to translate from the numbers on the board (port cl pins)" do
55
+ assert_equal 19, subject.get_library_pin_number(26)
56
+ assert_equal 18, subject.get_library_pin_number(27)
57
+ assert_equal 17, subject.get_library_pin_number(28)
58
+ assert_equal 16, subject.get_library_pin_number(29)
59
+ end
60
+
61
+ it "get the number the library uses for the pin when asked to translate from the numbers on the board (port ch pins)" do
62
+ assert_equal 23, subject.get_library_pin_number(22)
63
+ assert_equal 22, subject.get_library_pin_number(23)
64
+ assert_equal 21, subject.get_library_pin_number(24)
65
+ assert_equal 20, subject.get_library_pin_number(25)
66
+ end
67
+
68
+ it "raise an error if the pin passed in to get_library_pin_number is invalid" do
69
+ [20, 21, nil, 12, :heynow, "uba"].each do |bad_pin|
70
+ -> { subject.get_library_pin_number(bad_pin) }.should raise_error(RuntimeError)
71
+ end
72
+ end
73
+
74
+ it "know the mapping between symbolic ports and ports in the library" do
75
+ assert_equal FIRSTPORTA, subject.get_library_port(:porta), "wrong port"
76
+ assert_equal FIRSTPORTB, subject.get_library_port(:portb), "wrong port"
77
+ assert_equal FIRSTPORTCL, subject.get_library_port(:portcl), "wrong port"
78
+ assert_equal FIRSTPORTCH, subject.get_library_port(:portch), "wrong port"
79
+ end
80
+
81
+ it "raise an error if asked about the library port that does not exist" do
82
+ [:portd, :portci, "cigarette butt", nil].each do |bad_port|
83
+ -> { subject.get_library_port(bad_port) }.should raise_error(RuntimeError)
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::MinilabContext do
4
+ it "build minilab context" do
5
+ context = nil
6
+ -> { context = subject.build }.should_not raise_error
7
+ assert_not_nil context, "should have gotten a context"
8
+
9
+ minilab = context[:minilab]
10
+ assert_not_nil minilab, "should have a minilab object in the context"
11
+ assert_kind_of Minilab::Minilab, minilab, "should have gotten a Minilab object"
12
+ end
13
+
14
+ it "give the same context when built more than once" do
15
+ assert_same subject.build, subject.build, "not the same context object"
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative "../spec_helper"
2
+
3
+ # Not many tests for this class, since there isn't much behavior outside of
4
+ # calling into the minilab library. I could probably figure out another way
5
+ # to unit test those calls, but I don't believe there would be much value
6
+ # in brittle tests for code that is already covered by system tests.
7
+ describe Minilab::MinilabHardware do
8
+ it "raise an error if auxport configuration isn't given the correct hash parameters" do
9
+ -> { subject.configure_auxport(:pin => 3) }.should raise_error(":direction is a required parameter")
10
+ -> { subject.configure_auxport(:direction => DIGITALIN) }.should raise_error(":pin is a required parameter")
11
+ end
12
+
13
+ it "raise an error if port configuration isn't given the correct hash parameters" do
14
+ -> { subject.configure_port(:port => FIRSTPORTA) }.should raise_error(":direction is a required parameter")
15
+ -> { subject.configure_port(:direction => DIGITALOUT) }.should raise_error(":port is a required parameter")
16
+ end
17
+ end
@@ -0,0 +1,104 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::Minilab do
4
+ before { @mox = create_mocks(:minilab_wrapper, :analog_io, :digital_auxport_io, :digital_port_io, :connection_state) }
5
+ subject { described_class.new(@mox) }
6
+
7
+ it "allow the user to easily build the minilab object and its dependences" do
8
+ assert_not_nil Minilab.build
9
+ assert_kind_of Minilab::Minilab, Minilab.build
10
+ end
11
+
12
+ it "connect to the hardware, setup the error handling, declare the library revision, and setup the db37 ports for input" do
13
+ @minilab_wrapper.setup_error_handling(DONTPRINT, STOPALL)
14
+ @minilab_wrapper.declare_revision(CURRENTREVNUM)
15
+ @connection_state.connected=(true)
16
+
17
+ Minilab::DigitalConfiguration::PORTS.each do |port|
18
+ @connection_state.connected?.returns true
19
+ @digital_port_io.configure_input_port(port)
20
+ end
21
+
22
+ subject.connect
23
+ end
24
+
25
+ it "bomb out if trying to use a method but haven't connected yet" do
26
+ assert_not_connected_error { subject.read_analog(0) }
27
+ assert_not_connected_error { subject.write_analog(0, 2.2) }
28
+ assert_not_connected_error { subject.read_digital(6) }
29
+ assert_not_connected_error { subject.write_digital(6, 1) }
30
+ assert_not_connected_error { subject.read_digital_byte(:porta) }
31
+ assert_not_connected_error { subject.configure_input_port(:portcl) }
32
+ assert_not_connected_error { subject.configure_output_port(:portb) }
33
+ end
34
+
35
+ # IO tests
36
+ it "read analog input" do
37
+ @connection_state.connected?.returns true
38
+ @analog_io.read_analog(4).returns(1.1)
39
+
40
+ assert_equal 1.1, subject.read_analog(4)
41
+ end
42
+
43
+ it "write analog output" do
44
+ @connection_state.connected?.returns true
45
+ @analog_io.write_analog(1, 5.9).returns(true)
46
+
47
+ subject.write_analog(1, 5.9)
48
+ end
49
+
50
+ it "read digital input from the DIO auxport terminals" do
51
+ @connection_state.connected?.returns true
52
+ @digital_auxport_io.read_digital('DIO1').returns(1)
53
+
54
+ assert_equal 1, subject.read_digital('DIO1')
55
+ end
56
+
57
+ it "write digital output to the DIO auxport terminals" do
58
+ @connection_state.connected?.returns true
59
+ @digital_auxport_io.write_digital('DIO3', 0).returns(true)
60
+
61
+ subject.write_digital('DIO3', 0)
62
+ end
63
+
64
+ it "use the digital port object when the pin is a numbered pin for read_digital" do
65
+ @connection_state.connected?.returns true
66
+ @digital_port_io.read_digital(7).returns(1)
67
+
68
+ assert_equal 1, subject.read_digital(7)
69
+ end
70
+
71
+ it "use the digital port object when the pin is a numbered pin for write_digital" do
72
+ @connection_state.connected?.returns true
73
+ @digital_port_io.write_digital(2, 1).returns(:yourmom)
74
+
75
+ assert_equal :yourmom, subject.write_digital(2, 1)
76
+ end
77
+
78
+ it "use the digital port object to read a byte from a digital port" do
79
+ @connection_state.connected?.returns true
80
+ @digital_port_io.read_port(:porta).returns(0x22)
81
+ assert_equal 0x22, subject.read_digital_byte(:porta)
82
+ end
83
+
84
+ # Configuration tests
85
+ it "use the digital port object for configuring a port for input" do
86
+ @connection_state.connected?.returns true
87
+ @digital_port_io.configure_input_port(:portch).returns(true)
88
+
89
+ assert subject.configure_input_port(:portch)
90
+ end
91
+
92
+ it "use the digital port object for configuring a port for output" do
93
+ @connection_state.connected?.returns true
94
+ @digital_port_io.configure_output_port(:porta).returns(true)
95
+
96
+ assert subject.configure_output_port(:porta)
97
+ end
98
+
99
+ private
100
+ def assert_not_connected_error
101
+ @connection_state.connected?.returns false
102
+ -> { yield }.should raise_error("Cannot use any minilab methods without calling 'connect' first.")
103
+ end
104
+ end
@@ -0,0 +1,20 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe Minilab::MinilabWrapper do
4
+ before { @mox = create_mocks(:minilab_hardware) }
5
+ subject { described_class.new(@mox) }
6
+
7
+ it "forwards methods to the hardware and gives the result" do
8
+ @minilab_hardware.razzle(1, 2, "three").returns({ :value => 5 })
9
+ assert_equal 5, subject.razzle(1, 2, "three")
10
+
11
+ @minilab_hardware.dazzle.returns({ :value => :whatever })
12
+ assert_equal :whatever, subject.dazzle
13
+ end
14
+
15
+ it "raise an error when there is a hardware error" do
16
+ @minilab_hardware.bang(1, 2).returns({ :error => 4 })
17
+ @minilab_hardware.get_error_string(4).returns "Righteous error"
18
+ -> { subject.bang(1,2) }.should raise_error("Command [bang([1, 2])] caused a hardware error: Righteous error")
19
+ end
20
+ end
Binary file
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minilab
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 0
8
+ - 0
9
+ version: 2.0.0
10
+ platform: x86-mingw32
11
+ authors:
12
+ - Matt Fletcher
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-01-02 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: constructor
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 2
30
+ - 0
31
+ version: "2.0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: diy
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 1
45
+ version: "1.1"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: ffi
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 1
58
+ - 0
59
+ version: "1.0"
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: steak
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 1
72
+ - 0
73
+ version: "1.0"
74
+ type: :development
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
77
+ name: rr
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 1
86
+ - 0
87
+ version: "1.0"
88
+ type: :development
89
+ version_requirements: *id005
90
+ description: "Ruby interface to Measurement Computing's miniLAB 1008 "
91
+ email:
92
+ - fletcher@atomicobject.com
93
+ executables: []
94
+
95
+ extensions: []
96
+
97
+ extra_rdoc_files:
98
+ - README.rdoc
99
+ - CHANGES
100
+ - LICENSE
101
+ files:
102
+ - .document
103
+ - .gitignore
104
+ - CHANGES
105
+ - Gemfile
106
+ - LICENSE
107
+ - README.rdoc
108
+ - Rakefile
109
+ - doc/UniLib.chm
110
+ - doc/minilab-1008.pdf
111
+ - doc/minilab_systest_setup.txt
112
+ - doc/port_mapping.txt
113
+ - lib/minilab.rb
114
+ - lib/minilab/analog_io.rb
115
+ - lib/minilab/connection_state.rb
116
+ - lib/minilab/digital_auxport_io.rb
117
+ - lib/minilab/digital_configuration.rb
118
+ - lib/minilab/digital_port_io.rb
119
+ - lib/minilab/library_translator.rb
120
+ - lib/minilab/minilab.rb
121
+ - lib/minilab/minilab_constants.rb
122
+ - lib/minilab/minilab_context.rb
123
+ - lib/minilab/minilab_hardware.rb
124
+ - lib/minilab/minilab_wrapper.rb
125
+ - lib/minilab/objects.yml
126
+ - lib/minilab/version.rb
127
+ - minilab.gemspec
128
+ - spec/acceptance/analog_spec.rb
129
+ - spec/acceptance/digital_port_spec.rb
130
+ - spec/acceptance/digital_screw_terminal_spec.rb
131
+ - spec/spec_helper.rb
132
+ - spec/unit/analog_io_spec.rb
133
+ - spec/unit/connection_state_spec.rb
134
+ - spec/unit/digital_auxport_io_spec.rb
135
+ - spec/unit/digital_configuration_spec.rb
136
+ - spec/unit/digital_port_io_spec.rb
137
+ - spec/unit/library_translator_spec.rb
138
+ - spec/unit/minilab_context_spec.rb
139
+ - spec/unit/minilab_hardware_spec.rb
140
+ - spec/unit/minilab_spec.rb
141
+ - spec/unit/minilab_wrapper_spec.rb
142
+ - vendor/mcc/cbw32.dll
143
+ has_rdoc: true
144
+ homepage: http://atomicobject.github.com/minilab
145
+ licenses: []
146
+
147
+ post_install_message:
148
+ rdoc_options:
149
+ - --main
150
+ - README.rdoc
151
+ - --title
152
+ - minilab
153
+ require_paths:
154
+ - lib
155
+ required_ruby_version: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ segments:
161
+ - 0
162
+ version: "0"
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ segments:
169
+ - 0
170
+ version: "0"
171
+ requirements: []
172
+
173
+ rubyforge_project: minilab
174
+ rubygems_version: 1.3.7
175
+ signing_key:
176
+ specification_version: 3
177
+ summary: Ruby interface to Measurement Computing's miniLAB 1008
178
+ test_files:
179
+ - spec/acceptance/analog_spec.rb
180
+ - spec/acceptance/digital_port_spec.rb
181
+ - spec/acceptance/digital_screw_terminal_spec.rb
182
+ - spec/spec_helper.rb
183
+ - spec/unit/analog_io_spec.rb
184
+ - spec/unit/connection_state_spec.rb
185
+ - spec/unit/digital_auxport_io_spec.rb
186
+ - spec/unit/digital_configuration_spec.rb
187
+ - spec/unit/digital_port_io_spec.rb
188
+ - spec/unit/library_translator_spec.rb
189
+ - spec/unit/minilab_context_spec.rb
190
+ - spec/unit/minilab_hardware_spec.rb
191
+ - spec/unit/minilab_spec.rb
192
+ - spec/unit/minilab_wrapper_spec.rb