mi100 0.3.0 → 0.3.1
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/lib/mi100.rb +40 -13
- data/lib/mi100/morsecoder.rb +59 -23
- data/lib/mi100/version.rb +1 -1
- data/spec/mi100_spec.rb +244 -3
- metadata +8 -8
data/lib/mi100.rb
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# mi100.rb
|
2
|
+
# Copyright (c) 2014 Masami Yamakawa
|
3
|
+
#
|
4
|
+
# This software is released under the MIT License.
|
5
|
+
# http://opensource.org/lisenses/mit-license.php
|
6
|
+
|
1
7
|
require 'mi100/version'
|
2
8
|
require 'mi100/morsecoder'
|
3
9
|
require 'timeout'
|
@@ -28,7 +34,30 @@ class Mi100
|
|
28
34
|
DEFAULT_MOVE_DIRECTION = "FORWARD"
|
29
35
|
DEFAULT_SPIN_DIRECTION = "RIGHT"
|
30
36
|
|
31
|
-
FREQUENCY = {DO:
|
37
|
+
FREQUENCY = { DO: 262,
|
38
|
+
DOS: 277,
|
39
|
+
RE: 294,
|
40
|
+
RES: 311,
|
41
|
+
MI: 330,
|
42
|
+
FA: 349,
|
43
|
+
FAS: 370,
|
44
|
+
SO: 392,
|
45
|
+
SOS: 415,
|
46
|
+
LA: 440,
|
47
|
+
LAS: 466,
|
48
|
+
SI: 494,
|
49
|
+
HDO: 523,
|
50
|
+
HDOS: 554,
|
51
|
+
HRE: 587,
|
52
|
+
HRES: 622,
|
53
|
+
HMI: 659,
|
54
|
+
HFA: 698,
|
55
|
+
HFAS: 740,
|
56
|
+
HSO: 784,
|
57
|
+
HSOS: 831,
|
58
|
+
HLA: 880,
|
59
|
+
HSI: 988,
|
60
|
+
}
|
32
61
|
|
33
62
|
def initialize(dev)
|
34
63
|
retries_left = DEFAULT_RETRIES
|
@@ -42,8 +71,6 @@ class Mi100
|
|
42
71
|
raise
|
43
72
|
end
|
44
73
|
|
45
|
-
@morsecoder = Morsecoder.new
|
46
|
-
|
47
74
|
end
|
48
75
|
|
49
76
|
def close
|
@@ -175,24 +202,24 @@ class Mi100
|
|
175
202
|
end
|
176
203
|
|
177
204
|
def talk(str)
|
178
|
-
|
179
|
-
|
205
|
+
morsecoder = Morsecoder.new str
|
206
|
+
morsecoder.each {|frequency, duration| sound(frequency,duration)}
|
180
207
|
end
|
181
208
|
|
182
|
-
def
|
183
|
-
|
209
|
+
def morse_frequency
|
210
|
+
Morsecoder.default_frequency
|
184
211
|
end
|
185
212
|
|
186
|
-
def
|
187
|
-
|
213
|
+
def morse_frequency=(frequency)
|
214
|
+
Morsecoder.default_frequency = frequency
|
188
215
|
end
|
189
216
|
|
190
|
-
def
|
191
|
-
|
217
|
+
def morse_unit
|
218
|
+
Morsecoder.default_unit
|
192
219
|
end
|
193
220
|
|
194
|
-
def
|
195
|
-
|
221
|
+
def morse_unit=(millisec)
|
222
|
+
Morsecoder.default_unit = millisec
|
196
223
|
end
|
197
224
|
|
198
225
|
# Private methods
|
data/lib/mi100/morsecoder.rb
CHANGED
@@ -6,11 +6,12 @@
|
|
6
6
|
|
7
7
|
class Mi100
|
8
8
|
class Morsecoder
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
|
10
|
+
DEFAULT_MORSE_UNIT_MILLIS = 50
|
11
|
+
DEFAULT_MORSE_FREQUENCY = 4000
|
12
|
+
DEFAULT_LETTER_SPACE_DOTS = 3
|
13
|
+
DEFAULT_WORD_SPACE_DOTS = 7
|
14
|
+
|
14
15
|
MORSECODE = {
|
15
16
|
"1" => [1,3,3,3,3],
|
16
17
|
"2" => [1,1,3,3,3],
|
@@ -58,28 +59,63 @@ class Mi100
|
|
58
59
|
"(" => [3,1,3,3,1],
|
59
60
|
")" => [3,1,3,3,1,3]
|
60
61
|
}
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
62
|
+
|
63
|
+
|
64
|
+
@default_unit = DEFAULT_MORSE_UNIT_MILLIS
|
65
|
+
@default_frequency = DEFAULT_MORSE_FREQUENCY
|
66
|
+
@default_letter_space = DEFAULT_LETTER_SPACE_DOTS
|
67
|
+
@default_word_space = DEFAULT_WORD_SPACE_DOTS
|
68
|
+
|
69
|
+
class << self
|
70
|
+
|
71
|
+
attr_accessor :default_unit, :default_frequency
|
72
|
+
|
73
|
+
def to_morse_from(the_str, frequency = @default_frequency, unit = @default_unit)
|
74
|
+
letter_space = @default_letter_space
|
75
|
+
word_space = @default_word_space
|
76
|
+
morsecode = []
|
77
|
+
|
78
|
+
the_str.to_s.split(//).each do |char|
|
79
|
+
code = MORSECODE[char.upcase]
|
80
|
+
if code
|
81
|
+
code.each do |dots|
|
82
|
+
morsecode << {frequency: frequency, duration: unit * dots}
|
83
|
+
morsecode << {frequency: false, duration: unit * dots}
|
84
|
+
end
|
85
|
+
morsecode << {frequency: false, duration: unit * letter_space}
|
86
|
+
else
|
87
|
+
morsecode << {frequency: false, duration: unit * word_space}
|
75
88
|
end
|
76
|
-
morsecode << {frequency: false, duration: morseunit * 3}
|
77
|
-
else
|
78
|
-
morsecode << {frequency: false, duration: morseunit * 7}
|
79
89
|
end
|
90
|
+
|
91
|
+
morsecode
|
80
92
|
end
|
81
|
-
|
93
|
+
|
94
|
+
def reset
|
95
|
+
@default_unit = DEFAULT_MORSE_UNIT_MILLIS
|
96
|
+
@default_frequency = DEFAULT_MORSE_FREQUENCY
|
97
|
+
@default_letter_space = DEFAULT_LETTER_SPACE_DOTS
|
98
|
+
@default_word_space = DEFAULT_WORD_SPACE_DOTS
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
attr_accessor :str, :unit, :frequency
|
104
|
+
|
105
|
+
def initialize(str="HELLO WORLD", frequency = Morsecoder.default_frequency, unit=Morsecoder.default_unit)
|
106
|
+
@str = str
|
107
|
+
@frequency = frequency
|
108
|
+
@unit = unit
|
82
109
|
end
|
83
110
|
|
111
|
+
def to_morse
|
112
|
+
frequency = @frequency
|
113
|
+
unit = @unit
|
114
|
+
Morsecoder.to_morse_from(@str, frequency, unit)
|
115
|
+
end
|
116
|
+
|
117
|
+
def each
|
118
|
+
to_morse.each {|code| yield(code[:frequency], code[:duration])}
|
119
|
+
end
|
84
120
|
end
|
85
121
|
end
|
data/lib/mi100/version.rb
CHANGED
data/spec/mi100_spec.rb
CHANGED
@@ -1,11 +1,252 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mi100 do
|
4
|
+
|
4
5
|
it 'should have a version number' do
|
5
|
-
Mi100::VERSION.
|
6
|
+
expect(Mi100::VERSION).not_to be nil
|
7
|
+
end
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
Mi100.any_instance.stub(:initialize_serialport)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should create the instance' do
|
14
|
+
mi100 = Mi100.new "COM5"
|
15
|
+
expect(mi100).to be_a Mi100
|
6
16
|
end
|
17
|
+
|
18
|
+
it 'should send "H" on :ping' do
|
19
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_PING,1234])
|
20
|
+
mi100 = Mi100.new "COM5"
|
21
|
+
expect(mi100.ping).to eq(["H",1234])
|
22
|
+
expect(mi100).to have_received(:send_command_get_response).with("H")
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should send "H" and return rounded power level on :power' do
|
26
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_GET_POWER_LEVEL,1188])
|
27
|
+
mi100 = Mi100.new "COM5"
|
28
|
+
expect(mi100.power).to eq(1.19)
|
29
|
+
expect(mi100).to have_received(:send_command_get_response).with("H")
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should send "P" and get light level on :light' do
|
33
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_GET_LIGHT,1188])
|
34
|
+
mi100 = Mi100.new "COM5"
|
35
|
+
expect(mi100.light).to eq(1188)
|
36
|
+
expect(mi100).to have_received(:send_command_get_response).with("P")
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should send "F,duration" on :move with "FORWARD"' do
|
40
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_FORWARD,1234])
|
41
|
+
mi100 = Mi100.new "COM5"
|
42
|
+
expect(mi100.move "FORWARD").to eq(["F",1234])
|
43
|
+
expect(mi100).to have_received(:send_command_get_response).with("F,300")
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should send "B,duration" on move "BACKWARD"' do
|
47
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_BACKWARD,1234])
|
48
|
+
mi100 = Mi100.new "COM5"
|
49
|
+
expect(mi100.move "BACKWARD").to eq(["B",1234])
|
50
|
+
expect(mi100).to have_received(:send_command_get_response).with("B,300")
|
51
|
+
end
|
7
52
|
|
8
|
-
it 'should
|
9
|
-
|
53
|
+
it 'should send "R,140" on spin "RIGHT"' do
|
54
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_RIGHT,1234])
|
55
|
+
mi100 = Mi100.new "COM5"
|
56
|
+
expect(mi100.spin "RIGHT").to eq(["R",1234])
|
57
|
+
expect(mi100).to have_received(:send_command_get_response).with("R,140")
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should send "L,140" on spin "LEFT"' do
|
61
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_LEFT,1234])
|
62
|
+
mi100 = Mi100.new "COM5"
|
63
|
+
expect(mi100.spin "LEFT").to eq(["L",1234])
|
64
|
+
expect(mi100).to have_received(:send_command_get_response).with("L,140")
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should send "F,duration" on move_forward duration' do
|
68
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_FORWARD,1234])
|
69
|
+
mi100 = Mi100.new "COM5"
|
70
|
+
expect(mi100.move_forward 500).to eq(["F",1234])
|
71
|
+
expect(mi100).to have_received(:send_command_get_response).with("F,500")
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should send "B,duration" move_backward duration' do
|
75
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_BACKWARD,1234])
|
76
|
+
mi100 = Mi100.new "COM5"
|
77
|
+
expect(mi100.move_backward 500).to eq(["B",1234])
|
78
|
+
expect(mi100).to have_received(:send_command_get_response).with("B,500")
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should send "R,duration" spin_right duration' do
|
82
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_RIGHT,1234])
|
83
|
+
mi100 = Mi100.new "COM5"
|
84
|
+
expect(mi100.spin_right 500).to eq(["R",1234])
|
85
|
+
expect(mi100).to have_received(:send_command_get_response).with("R,500")
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should send "L,duration" on spin_left duration' do
|
89
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_LEFT,1234])
|
90
|
+
mi100 = Mi100.new "COM5"
|
91
|
+
expect(mi100.spin_left 500).to eq(["L",1234])
|
92
|
+
expect(mi100).to have_received(:send_command_get_response).with("L,500")
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should send "F, 300" on movef' do
|
96
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_FORWARD,1234])
|
97
|
+
mi100 = Mi100.new "COM5"
|
98
|
+
expect(mi100.movef).to eq(["F",1234])
|
99
|
+
expect(mi100).to have_received(:send_command_get_response).with("F,300")
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should send "B,300" on moveb' do
|
103
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_MOVE_BACKWARD,1234])
|
104
|
+
mi100 = Mi100.new "COM5"
|
105
|
+
expect(mi100.moveb).to eq(["B",1234])
|
106
|
+
expect(mi100).to have_received(:send_command_get_response).with("B,300")
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should send "R,140" spinr' do
|
110
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_RIGHT,1234])
|
111
|
+
mi100 = Mi100.new "COM5"
|
112
|
+
expect(mi100.spinr).to eq(["R",1234])
|
113
|
+
expect(mi100).to have_received(:send_command_get_response).with("R,140")
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'should send "L,140" on spinl' do
|
117
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_SPIN_LEFT,1234])
|
118
|
+
mi100 = Mi100.new "COM5"
|
119
|
+
expect(mi100.spinl).to eq(["L",1234])
|
120
|
+
expect(mi100).to have_received(:send_command_get_response).with("L,140")
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'should send "F,duration" on move_forward! duration in async (via sendln)' do
|
124
|
+
Mi100.any_instance.stub(:sendln => 6)
|
125
|
+
mi100 = Mi100.new "COM5"
|
126
|
+
expect(mi100.move_forward! 500).to eq(6)
|
127
|
+
expect(mi100).to have_received(:sendln).with("F,500")
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'should send "B,duration" on move_backward! duration in async' do
|
131
|
+
Mi100.any_instance.stub(:sendln => 6)
|
132
|
+
mi100 = Mi100.new "COM5"
|
133
|
+
expect(mi100.move_backward! 500).to eq(6)
|
134
|
+
expect(mi100).to have_received(:sendln).with("B,500")
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should send "R,duration" on spin_right! duration in async' do
|
138
|
+
Mi100.any_instance.stub(:sendln => 6)
|
139
|
+
mi100 = Mi100.new "COM5"
|
140
|
+
expect(mi100.spin_right! 500).to eq(6)
|
141
|
+
expect(mi100).to have_received(:sendln).with("R,500")
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'should send "L,duration" on spin_left! duration in async' do
|
145
|
+
Mi100.any_instance.stub(:sendln => 6)
|
146
|
+
mi100 = Mi100.new "COM5"
|
147
|
+
expect(mi100.spin_left! 500).to eq(6)
|
148
|
+
expect(mi100).to have_received(:sendln).with("L,500")
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'should send "D,100, 50, 50,duration on blink 100,50,50,duration' do
|
152
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_BLINK_LED,1234])
|
153
|
+
mi100 = Mi100.new "COM5"
|
154
|
+
expect(mi100.blink 100,50,50,100).to eq(["D",1234])
|
155
|
+
expect(mi100).to have_received(:send_command_get_response).with("D,100,50,50,100")
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'should send "S" on stop' do
|
159
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_STOP,1234])
|
160
|
+
mi100 = Mi100.new "COM5"
|
161
|
+
expect(mi100.stop).to eq(["S",1234])
|
162
|
+
expect(mi100).to have_received(:send_command_get_response).with("S")
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'should send "T,random frequency, 300" on tone' do
|
166
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_TONE,1234])
|
167
|
+
mi100 = Mi100.new "COM5"
|
168
|
+
expect(mi100.tone).to eq(["T",1234])
|
169
|
+
expect(mi100).to have_received(:send_command_get_response).with(/T,\d{2,4},300/)
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'should limit minimum tone frequency to 28 on tome' do
|
173
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_TONE,1234])
|
174
|
+
mi100 = Mi100.new "COM5"
|
175
|
+
mi100.tone 20, 500
|
176
|
+
expect(mi100).to have_received(:send_command_get_response).with("T,28,500")
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'should send "T,440,1000" on sound "la", 1000' do
|
180
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_TONE,1234])
|
181
|
+
mi100 = Mi100.new "COM5"
|
182
|
+
mi100.sound "la",1000
|
183
|
+
expect(mi100).to have_received(:send_command_get_response).with("T,440,1000")
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'sound should not call tone with false frequency' do
|
187
|
+
mi100 = Mi100.new "COM5"
|
188
|
+
mi100.stub(:tone)
|
189
|
+
mi100.sound false, 300
|
190
|
+
expect(mi100).not_to have_received(:tone)
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'should send three good tones on good' do
|
194
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_TONE,1234])
|
195
|
+
mi100 = Mi100.new "COM5"
|
196
|
+
mi100.good
|
197
|
+
expect(mi100).to have_received(:send_command_get_response).exactly(3).times
|
198
|
+
end
|
199
|
+
|
200
|
+
it 'should send one bad tone on bad' do
|
201
|
+
Mi100.any_instance.stub(:send_command_get_response => [Mi100::CMD_TONE,1234])
|
202
|
+
mi100 = Mi100.new "COM5"
|
203
|
+
mi100.bad
|
204
|
+
expect(mi100).to have_received(:send_command_get_response).once
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'should talk morse code' do
|
208
|
+
mi100 = Mi100.new "COM5"
|
209
|
+
mi100.stub(:tone)
|
210
|
+
mi100.talk "sos"
|
211
|
+
expect(mi100).to have_received(:tone).exactly(6).times.with(4000,50)
|
212
|
+
expect(mi100).to have_received(:tone).exactly(3).times.with(4000,150)
|
213
|
+
end
|
214
|
+
|
215
|
+
it 'should access to morse_frequency' do
|
216
|
+
mi100 = Mi100.new "COM5"
|
217
|
+
expect(mi100.morse_frequency).to eq(4000)
|
218
|
+
expect(mi100.morse_frequency = 440).to eq(440)
|
219
|
+
expect(mi100.morse_frequency).to eq(440)
|
220
|
+
end
|
221
|
+
|
222
|
+
it 'should access to morse_unit' do
|
223
|
+
mi100 = Mi100.new "COM5"
|
224
|
+
expect(mi100.morse_unit).to eq(50)
|
225
|
+
expect(mi100.morse_unit = 100).to eq(100)
|
226
|
+
expect(mi100.morse_unit).to eq(100)
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'should talk with new default frequency and unit' do
|
230
|
+
mi100 = Mi100.new "COM5"
|
231
|
+
mi100.stub(:tone)
|
232
|
+
mi100.talk "sos"
|
233
|
+
expect(mi100).to have_received(:tone).exactly(6).times.with(440,100)
|
234
|
+
expect(mi100).to have_received(:tone).exactly(3).times.with(440,300)
|
235
|
+
end
|
236
|
+
|
237
|
+
it 'should reset default frequency and unit' do
|
238
|
+
Mi100::Morsecoder.reset
|
239
|
+
expect(Mi100::Morsecoder.default_frequency).to eq(4000)
|
240
|
+
expect(Mi100::Morsecoder.default_unit).to eq(50)
|
241
|
+
mi100 = Mi100.new "COM5"
|
242
|
+
expect(mi100.morse_frequency).to eq(4000)
|
243
|
+
expect(mi100.morse_unit).to eq(50)
|
10
244
|
end
|
245
|
+
|
246
|
+
it 'should provide Morsecode.to_morse_from class method converting the string to the morse code array' do
|
247
|
+
morsecode = Mi100::Morsecoder.to_morse_from "sos"
|
248
|
+
expect(morsecode.size).to eq(21)
|
249
|
+
expect(morsecode[0]).to eq ({:frequency=>4000, :duration=>50})
|
250
|
+
end
|
251
|
+
|
11
252
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mi100
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-29 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &16171272 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *16171272
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &16171020 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *16171020
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &16170744 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *16170744
|
47
47
|
description: A ruby gem for controlling MI100 of monoxit through bluetooth virtual
|
48
48
|
serial port.
|
49
49
|
email:
|