apiotics_factory 1.0.20 → 1.0.21

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ce18cd9c7740a2e83af2b7a2ac74c46ef601390
4
- data.tar.gz: fd8875ead100d5258facc99acff93de4e0c5c158
3
+ metadata.gz: 44182e8ba90552a11de5d2f68f8feb30a121cd88
4
+ data.tar.gz: 35f3f10e57c52c7f582217595ae7c9e4e3f1e457
5
5
  SHA512:
6
- metadata.gz: a4d5151ef3c6476fa0f9f22bdceb68db07226b2e895881abb918f3c302585585f5445ac3a0147645066afde81de66acc22f90f064d9b9f75c4bf3c96e680e3e8
7
- data.tar.gz: 17c58b85be6aaf274141e8b5eb3fcdee542ff8da7e97f0fe905ab3b9b126f5181fbbe88b612522cccd47d0f9f79410d43b41cd39d5e60b78b7032cecdb5c4e11
6
+ metadata.gz: 51b7f7871601d299e211831ffd48bdd24fe7299745d01800a37421c8640af90e7224035c77f9dacda1322e4c987eb9783198d0f864d4695ed5a752351f4d1371
7
+ data.tar.gz: 04fc144a2887908179dadb0e0583faf2ebd9cba1d3c4a69e199e11573ddde6bde133aa5c970c9abf06ec49915174f683f27c65ebe9cce38c37512b1d2f3c7b66
@@ -1,3 +1,3 @@
1
1
  module ApioticsFactory
2
- VERSION = '1.0.20'
2
+ VERSION = '1.0.21'
3
3
  end
@@ -182,9 +182,14 @@ module GrovePi
182
182
  def self._read_analog(pin)
183
183
  self._ensure_init
184
184
  @_i2c_grove_pi.i2cset @_i2c_grove_pi.address, CMD_READ_ANALOG, pin, 0, 0
185
- bytes = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 3).chars
185
+ read_value = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 3)
186
186
  GrovePi.release_lock
187
- return (bytes[1].ord * 256) + bytes[2].ord
187
+ if read_value != nil
188
+ bytes = read_value.chars
189
+ return (bytes[1].ord * 256) + bytes[2].ord
190
+ else
191
+ return 65535
192
+ end
188
193
  end
189
194
 
190
195
  def self._write_analog(pin, value)
@@ -198,7 +203,11 @@ module GrovePi
198
203
  @_i2c_grove_pi.i2cset @_i2c_grove_pi.address, CMD_READ_DIGITAL, pin, 0, 0
199
204
  val = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 2)
200
205
  GrovePi.release_lock
201
- return val.chars[0].ord
206
+ if val != nil
207
+ return val.chars[0].ord
208
+ else
209
+ return 0
210
+ end
202
211
  end
203
212
 
204
213
  def self._write_digital(pin, value)
@@ -291,13 +300,19 @@ module GrovePi
291
300
  end
292
301
 
293
302
  bytes = []
294
- _bytes = @_i2c_slave_addresses[i2c_slave_address].i2cget(i2c_slave_address, length).chars
295
-
296
- for b in _bytes
297
- bytes << b.ord
303
+ read_value = @_i2c_slave_addresses[i2c_slave_address].i2cget(i2c_slave_address, length)
304
+ GrovePi.release_lock
305
+
306
+ if read_value != nil
307
+ _bytes = read_value.chars
308
+ for b in _bytes
309
+ bytes << b.ord
310
+ end
311
+ return bytes
312
+ else
313
+ return ["0".ord]
298
314
  end
299
- release_lock
300
- return bytes
315
+
301
316
  end
302
317
 
303
318
  def self.write_grove_pi_i2c(i2c_slave_address, *data)
@@ -322,9 +337,14 @@ module GrovePi
322
337
  begin
323
338
  self._ensure_init
324
339
  @_i2c_grove_pi.i2cset @_i2c_grove_pi.address, CMD_READ_FIRMWARE_VERSION, 0, 0, 0
325
- bytes = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 4).chars
326
- self.release_lock
327
- return [bytes[1].ord, bytes[2].ord, bytes[3].ord]
340
+ read_value = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 4)
341
+ GrovePi.release_lock
342
+ if read_value != nil
343
+ bytes = read_value.chars
344
+ return [bytes[1].ord, bytes[2].ord, bytes[3].ord]
345
+ else
346
+ raise "Firmware version could not be read."
347
+ end
328
348
  rescue Errno::EREMOTEIO
329
349
  next
330
350
  end
@@ -347,10 +367,16 @@ module GrovePi
347
367
  sleep(0.06) #firmware has a time of 50ms so wait for more than that
348
368
 
349
369
  @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 1)
350
- numbers = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 3).chars
351
-
352
370
  GrovePi.release_lock
353
- return (numbers[1].ord) * 256 + (numbers[2].ord)
371
+
372
+ read_value = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 3)
373
+
374
+ if read_value != nil
375
+ numbers = read_value.chars
376
+ return (numbers[1].ord) * 256 + (numbers[2].ord)
377
+ else
378
+ return 0
379
+ end
354
380
  end
355
381
 
356
382
 
@@ -384,19 +410,21 @@ module GrovePi
384
410
 
385
411
  # read 10 more bytes
386
412
  number = @_i2c_grove_pi.i2cget(@_i2c_grove_pi.address, 9)
387
-
413
+ GrovePi.release_lock
388
414
  if !number.nil?
389
415
  temp_value = number[1..4].unpack('f')[0].round(2) * 9/5 + 32 #convert to F
390
416
  humidity_value = number[5..8].unpack('f')[0].round(2)
417
+ return temp_value, humidity_value
418
+ else
419
+ return 0.0, -100.0
391
420
  end
392
-
393
421
  rescue Errno::EREMOTEIO
394
422
  next
395
423
  end
396
424
  end
397
425
  end
398
- GrovePi.release_lock
399
- return temp_value, humidity_value
426
+
427
+
400
428
  end
401
429
 
402
430
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apiotics_factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.20
4
+ version: 1.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Apiotics