minilab 2.0.0-x86-mingw32 → 2.0.1-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.
- data/.gitignore +1 -0
- data/.yardopts +1 -0
- data/CHANGES +7 -3
- data/README.rdoc +3 -3
- data/Rakefile +0 -8
- data/lib/minilab/analog_io.rb +1 -1
- data/lib/minilab/connection_state.rb +1 -1
- data/lib/minilab/digital_auxport_io.rb +1 -1
- data/lib/minilab/digital_configuration.rb +1 -1
- data/lib/minilab/digital_port_io.rb +1 -1
- data/lib/minilab/library_translator.rb +1 -1
- data/lib/minilab/minilab.rb +48 -41
- data/lib/minilab/minilab_constants.rb +4 -3
- data/lib/minilab/minilab_context.rb +1 -1
- data/lib/minilab/minilab_hardware.rb +1 -1
- data/lib/minilab/minilab_wrapper.rb +1 -1
- data/lib/minilab/version.rb +1 -1
- data/spec/unit/minilab_spec.rb +2 -2
- metadata +4 -4
- data/.document +0 -2
data/.gitignore
CHANGED
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
lib/**/*.rb --no-private -r README.rdoc - CHANGES LICENSE
|
data/CHANGES
CHANGED
@@ -1,11 +1,15 @@
|
|
1
|
+
== 2.0.1
|
2
|
+
* converted a significant amount of documentation to yardoc format
|
3
|
+
* some of Minilab's instance methods now return [true] instead of [whatever]
|
4
|
+
|
1
5
|
== 2.0.0
|
2
6
|
* minilab now requires Ruby 1.9 to run and is built for the RubyInstaller package.
|
3
7
|
minilab's public interface has not changed.
|
4
8
|
* Now using the latest and greatest bundler techniques for gem development.
|
5
9
|
* Two libraries minilab used for testing (hardmock and systir) do not run on Ruby 1.9. Therefore, minilab now uses:
|
6
|
-
|
7
|
-
|
8
|
-
|
10
|
+
* RSpec as a test harness
|
11
|
+
* steak as an acceptance test harness
|
12
|
+
* rr for mocking in unit tests
|
9
13
|
|
10
14
|
== 1.1.1
|
11
15
|
* Lots of little things changed as part of the Rubyforge -> Gemcutter/GitHub/rdoc.info migration
|
data/README.rdoc
CHANGED
@@ -62,8 +62,8 @@ See the end of this document for an outline of how a miniLAB and DB37 connector
|
|
62
62
|
* Reading analog values only supports single-ended mode. As you can probably guess, I didn't need differential mode, so I didn't add support for it.
|
63
63
|
|
64
64
|
== Contact information
|
65
|
-
* Matt Fletcher
|
66
|
-
* Atomic Object
|
65
|
+
* Matt Fletcher (mailto:fletcher@atomicobject.com)
|
66
|
+
* Atomic Object (http://atomicobject.com)
|
67
67
|
|
68
68
|
== Appendix
|
69
69
|
=== DB37 pin to port mapping
|
@@ -73,7 +73,7 @@ Pin:: Port
|
|
73
73
|
26-29:: :portcl
|
74
74
|
22-25:: :portch
|
75
75
|
|
76
|
-
===
|
76
|
+
=== Acceptance test setup
|
77
77
|
|
78
78
|
On top of the miniLAB:
|
79
79
|
CH0 IN:: D/A OUT 1
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "rake/rdoctask"
|
2
1
|
require "rspec/core/rake_task"
|
3
2
|
|
4
3
|
desc "Run the unit specs"
|
@@ -16,10 +15,3 @@ namespace :spec do
|
|
16
15
|
desc "all tests"
|
17
16
|
task :all => %w[ spec:unit spec:acceptance ]
|
18
17
|
end
|
19
|
-
|
20
|
-
Rake::RDocTask.new do |rdoc|
|
21
|
-
rdoc.rdoc_dir = "rdoc"
|
22
|
-
rdoc.title = "minilab: Ruby library for the miniLAB 1008"
|
23
|
-
rdoc.options = %w[ --main README.rdoc --title minilab ]
|
24
|
-
rdoc.rdoc_files.include("lib/minilab.rb", "README.rdoc", "CHANGES", "LICENSE")
|
25
|
-
end
|
data/lib/minilab/analog_io.rb
CHANGED
data/lib/minilab/minilab.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
+
# @author Matt Fletcher (fletcher@atomicobject.com)
|
1
2
|
module Minilab
|
2
|
-
#
|
3
|
-
#
|
3
|
+
# Constructs Minilab objects.
|
4
|
+
# @return [Minilab] an unconnected Minilab object. Use {Minilab#connect}
|
5
|
+
# to connect it to the physical device.
|
4
6
|
def self.build
|
5
7
|
MinilabContext.new.build[:minilab]
|
6
8
|
end
|
7
9
|
|
8
10
|
# The main interface to the minilab library. Create one of these objects
|
9
|
-
# using the
|
10
|
-
# use the
|
11
|
+
# using the {Minilab.build} method. After you've created a minilab object,
|
12
|
+
# use the {#connect} method to establish the connection to the device.
|
11
13
|
# Minilab objects are not usable until they've been connected.
|
14
|
+
# @author Matt Fletcher (fletcher@atomicobject.com)
|
12
15
|
class Minilab
|
13
16
|
include MinilabConstants
|
14
17
|
constructor :minilab_wrapper, :analog_io, :digital_auxport_io, :digital_port_io, :connection_state
|
@@ -17,18 +20,22 @@ module Minilab
|
|
17
20
|
# * Error reporting from MCC's universal library is set to print
|
18
21
|
# errors to standard out instead of popping up a Windows dialog.
|
19
22
|
# * Each of the DB37 digital ports is setup for input.
|
23
|
+
# @return [true]
|
20
24
|
def connect
|
21
25
|
@minilab_wrapper.setup_error_handling(DONTPRINT, STOPALL)
|
22
26
|
@minilab_wrapper.declare_revision(CURRENTREVNUM)
|
23
27
|
@connection_state.connected = true
|
24
28
|
DigitalConfiguration::PORTS.each { |port| configure_input_port(port) }
|
29
|
+
true
|
25
30
|
end
|
26
31
|
|
27
|
-
# Read from one of the eight analog channels
|
32
|
+
# Read from one of the eight analog channels on top of the device.
|
28
33
|
#
|
29
34
|
# Single-ended mode is the only analog mode supported.
|
30
35
|
#
|
31
|
-
#
|
36
|
+
# @param [Fixnum] channel the analog channel (0 - 7)
|
37
|
+
# @return [Float] the voltage
|
38
|
+
# @raise [RuntimeError] the channel number is invalid
|
32
39
|
def read_analog(channel)
|
33
40
|
ensure_connected_to_device
|
34
41
|
@analog_io.read_analog(channel)
|
@@ -39,8 +46,10 @@ module Minilab
|
|
39
46
|
#
|
40
47
|
# Single-ended mode is the only analog mode supported.
|
41
48
|
#
|
42
|
-
#
|
43
|
-
# voltage
|
49
|
+
# @param [Fixnum] channel the analog channel (0 or 1)
|
50
|
+
# @param [Float] volts the voltage (0.0 - 5.0)
|
51
|
+
# @raise [RuntimeError] the channel number is invalid
|
52
|
+
# @raise [RuntimeError] the voltage is out of range
|
44
53
|
def write_analog(channel, volts)
|
45
54
|
ensure_connected_to_device
|
46
55
|
@analog_io.write_analog(channel, volts)
|
@@ -48,9 +57,10 @@ module Minilab
|
|
48
57
|
|
49
58
|
# Configure one of the DB37 ports for input.
|
50
59
|
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
60
|
+
# @param [Symbol] port the port. Valid ports are
|
61
|
+
# :porta, :portb, :portcl, and :portch.
|
62
|
+
# @return [true]
|
63
|
+
# @raise [RuntimeError] the port is invalid
|
54
64
|
def configure_input_port(port)
|
55
65
|
ensure_connected_to_device
|
56
66
|
@digital_port_io.configure_input_port(port)
|
@@ -58,44 +68,42 @@ module Minilab
|
|
58
68
|
|
59
69
|
# Configure one of the DB37 ports for output.
|
60
70
|
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
71
|
+
# @param (see #configure_input_port)
|
72
|
+
# @return [true]
|
73
|
+
# @raise (see #configure_input_port)
|
64
74
|
def configure_output_port(port)
|
65
75
|
ensure_connected_to_device
|
66
76
|
@digital_port_io.configure_output_port(port)
|
67
77
|
end
|
68
78
|
|
69
|
-
# Read a single bit from one of the
|
79
|
+
# Read a single bit from one of the auxport pins (on the top of the
|
80
|
+
# device) or from a DB37 pin. Ensure the pin has been configured for
|
81
|
+
# input (see {#configure_input_port}) before using this method.
|
82
|
+
# auxport pins do not need to be configured.
|
70
83
|
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
#
|
75
|
-
#
|
76
|
-
#
|
77
|
-
# An error is raised if you specify a pin that doesn't exist or if you
|
78
|
-
# try to read from a DB37 pin on a port that is not configured for input.
|
79
|
-
# The digital pins on the top of the device do not need to be configured.
|
84
|
+
# @param [String, Fixnum] pin a String name of the auxport (e.g. "DIO1")
|
85
|
+
# or a Fixnum DB37 pin number (e.g. 13)
|
86
|
+
# @return [Fixnum] the bit value
|
87
|
+
# @raise [RuntimeError] the given pin doesn't exist
|
88
|
+
# @raise [RuntimeError] the DB37 pin has not been configured for input
|
80
89
|
def read_digital(pin)
|
81
90
|
ensure_connected_to_device
|
82
91
|
perform_digital_op(pin, :read, pin)
|
83
92
|
end
|
84
93
|
|
85
|
-
# Write a single bit to one of the
|
86
|
-
#
|
87
|
-
#
|
88
|
-
#
|
89
|
-
# auxport pins), then specify the pin as a string with its label (e.g.
|
90
|
-
# write_digital("DIO2", 0)). Alternatively, if you'd like to write to one
|
91
|
-
# of the DB37 pins, specify the pin as the number it's labeled with (e.g.
|
92
|
-
# write_digital(17, 1)).
|
94
|
+
# Write a single bit to one of the auxport pins (on the top of the
|
95
|
+
# device) or to a DB37 pin. Ensure the pin has been configured for
|
96
|
+
# output (see {#configure_output_port}) before using this method.
|
97
|
+
# auxport pins do not need to be configured.
|
93
98
|
#
|
94
|
-
#
|
95
|
-
#
|
96
|
-
#
|
97
|
-
#
|
98
|
-
#
|
99
|
+
# @param [String, Fixnum] pin a String name of the auxport (e.g. "DIO1")
|
100
|
+
# or a Fixnum DB37 pin number (e.g. 13)
|
101
|
+
# @param [Fixnum] value the value (0 or 1) to write. values above 1 are
|
102
|
+
# interpreted as 1.
|
103
|
+
# @return [true]
|
104
|
+
# @raise [RuntimeError] the given pin doesn't exist
|
105
|
+
# @raise [RuntimeError] the DB37 pin has not been configured for input
|
106
|
+
# @raise [RuntimeError] a negative value is given
|
99
107
|
def write_digital(pin, value)
|
100
108
|
ensure_connected_to_device
|
101
109
|
perform_digital_op(pin, :write, pin, value)
|
@@ -103,10 +111,9 @@ module Minilab
|
|
103
111
|
|
104
112
|
# Read a byte from one of the DB37 ports.
|
105
113
|
#
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
# An error is raised if an invalid port is given.
|
114
|
+
# @param (see #configure_input_port)
|
115
|
+
# @return [Fixnum] the byte value
|
116
|
+
# @raise (see #configure_input_port)
|
110
117
|
def read_digital_byte(port)
|
111
118
|
ensure_connected_to_device
|
112
119
|
@digital_port_io.read_port(port)
|
@@ -1,7 +1,8 @@
|
|
1
|
-
# Lifted from cbw.h. Let's hope these don't change often.
|
2
|
-
# Using revision number 5.90.
|
3
1
|
module Minilab
|
4
|
-
module MinilabConstants
|
2
|
+
module MinilabConstants #@private
|
3
|
+
# Lifted from cbw.h. Let's hope these don't change often.
|
4
|
+
# Using revision number 5.90.
|
5
|
+
|
5
6
|
CURRENTREVNUM = 5.90
|
6
7
|
|
7
8
|
BOARDNUM = 0
|
data/lib/minilab/version.rb
CHANGED
data/spec/unit/minilab_spec.rb
CHANGED
@@ -19,7 +19,7 @@ describe Minilab::Minilab do
|
|
19
19
|
@digital_port_io.configure_input_port(port)
|
20
20
|
end
|
21
21
|
|
22
|
-
subject.connect
|
22
|
+
assert subject.connect
|
23
23
|
end
|
24
24
|
|
25
25
|
it "bomb out if trying to use a method but haven't connected yet" do
|
@@ -58,7 +58,7 @@ describe Minilab::Minilab do
|
|
58
58
|
@connection_state.connected?.returns true
|
59
59
|
@digital_auxport_io.write_digital('DIO3', 0).returns(true)
|
60
60
|
|
61
|
-
subject.write_digital('DIO3', 0)
|
61
|
+
assert subject.write_digital('DIO3', 0)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "use the digital port object when the pin is a numbered pin for read_digital" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 2
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 2.0.
|
8
|
+
- 1
|
9
|
+
version: 2.0.1
|
10
10
|
platform: x86-mingw32
|
11
11
|
authors:
|
12
12
|
- Matt Fletcher
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-04 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -99,8 +99,8 @@ extra_rdoc_files:
|
|
99
99
|
- CHANGES
|
100
100
|
- LICENSE
|
101
101
|
files:
|
102
|
-
- .document
|
103
102
|
- .gitignore
|
103
|
+
- .yardopts
|
104
104
|
- CHANGES
|
105
105
|
- Gemfile
|
106
106
|
- LICENSE
|
data/.document
DELETED