minilab 2.0.0-x86-mingw32

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.
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