cp2112 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -6
- data/lib/cp2112.rb +5 -0
- data/lib/cp2112/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5467902d6e8f89ff62a73acf8e28bb51a778cdc5ea652e7001c4bde10a62cae0
|
4
|
+
data.tar.gz: e8efdc37c5eb2e521c9c137b137f6b20a2f8d5e594efce07d5112759c1059e6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '058eaa9c4f60fe090ae5167b13873a4d0a03e3f90a5e4ee03ba2cbadcb0867dd27bc4b50effc20eb8f013e5128d90dd210f1229e15d91de35d424c83a0965b65'
|
7
|
+
data.tar.gz: bb77bcb5ace5927c926ed7349e53068564d8866a911b9930dfe7dae1e9633a1dfe2d14e025903e3442e10f6c971f4e84517f44c291b44215b3a64c21355cca18
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# CP2112
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/cp2112.svg)](https://badge.fury.io/rb/cp2112)
|
4
|
+
|
3
5
|
Ruby wrapper for Silicon Laboratories CP2112 USB(HID) i2c/SMBus bridge library
|
4
6
|
|
5
7
|
## Installation
|
@@ -41,18 +43,20 @@ raise unless (dev.getGpioConfig == gpio_new)
|
|
41
43
|
}
|
42
44
|
|
43
45
|
# Read via I2C
|
44
|
-
i2c_read = proc{|addr, size|
|
46
|
+
i2c_read = proc{|addr, size| # addr is shifted by 1 bit (0bAAAA_AAAx, A=0/1, x=ignored)
|
45
47
|
dev.readRequest(addr, size)
|
46
48
|
dev.forceReadResponse(size)
|
47
|
-
|
48
|
-
|
49
|
+
s0, buf, buf_read = dev.getReadResponse
|
50
|
+
raise unless s0 == CP2112::Return_Code::HID_SMBUS_S0_COMPLETE
|
51
|
+
buf[0...buf_read] # return is [byte, ...]
|
49
52
|
}
|
50
53
|
|
51
54
|
# Write via I2C
|
52
|
-
i2c_write = proc{|addr, data| #
|
53
|
-
dev.writeRequest(addr, data, data.size)
|
55
|
+
i2c_write = proc{|addr, data| # byte array data is expected; data = [byte, ...]
|
56
|
+
dev.writeRequest(addr, data.pack('C*'), data.size)
|
54
57
|
dev.transferStatusRequest
|
55
|
-
dev.getTransferStatusResponse
|
58
|
+
s0, s1 = dev.getTransferStatusResponse
|
59
|
+
raise unless s0 == CP2112::Return_Code::HID_SMBUS_S0_COMPLETE
|
56
60
|
}
|
57
61
|
|
58
62
|
# TODO: your i2c_read, i2c_write operation
|
data/lib/cp2112.rb
CHANGED
@@ -332,7 +332,12 @@ end
|
|
332
332
|
Device.send(:define_method, :initialize, proc{|*args| @device = CP2112::open(*args)[0]})
|
333
333
|
|
334
334
|
class <<self
|
335
|
+
def devices(vid = 0x0000, pid = 0x0000)
|
336
|
+
getNumDevices(vid, pid)[0]
|
337
|
+
end
|
335
338
|
def [](index, vid = 0x0000, pid = 0x0000)
|
339
|
+
lim = devices(vid, pid)
|
340
|
+
raise "Incorrect index (must be < #{lim})" unless lim > index
|
336
341
|
Device::new(index, vid, pid)
|
337
342
|
end
|
338
343
|
end
|
data/lib/cp2112/version.rb
CHANGED