libftdi-ruby 0.0.3 → 0.0.4
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/README.md +5 -1
- data/example/bitread.rb +24 -0
- data/example/blink.rb +26 -0
- data/lib/ftdi.rb +24 -0
- data/lib/ftdi/version.rb +1 -1
- metadata +26 -9
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
## Description
|
2
|
+
|
1
3
|
Ruby bindings for [libftdi](http://www.intra2net.com/en/developer/libftdi/index.php) - an open source library to talk to [FTDI](http://www.ftdichip.com/) chips.
|
2
4
|
|
3
|
-
|
5
|
+
## Prerequisites
|
6
|
+
|
7
|
+
You must install `libftdi` itself in addition to this gem.
|
4
8
|
|
5
9
|
## Synopsys
|
6
10
|
|
data/example/bitread.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'ftdi'
|
4
|
+
|
5
|
+
ctx = Ftdi::Context.new
|
6
|
+
|
7
|
+
begin
|
8
|
+
ctx.usb_open(0x0403, 0x6001)
|
9
|
+
|
10
|
+
begin
|
11
|
+
ctx.set_bitmode(0x00, :bitbang)
|
12
|
+
#ctx.baudrate = 250000
|
13
|
+
|
14
|
+
100.times do
|
15
|
+
p ctx.read_pins
|
16
|
+
sleep 0.5
|
17
|
+
end
|
18
|
+
ensure
|
19
|
+
ctx.set_bitmode(0x00, :reset)
|
20
|
+
ctx.usb_close
|
21
|
+
end
|
22
|
+
rescue Ftdi::Error => e
|
23
|
+
$stderr.puts e.to_s
|
24
|
+
end
|
data/example/blink.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'ftdi'
|
4
|
+
|
5
|
+
ctx = Ftdi::Context.new
|
6
|
+
|
7
|
+
begin
|
8
|
+
ctx.usb_open(0x0403, 0x6001)
|
9
|
+
|
10
|
+
begin
|
11
|
+
ctx.set_bitmode(0xff, :bitbang)
|
12
|
+
#ctx.baudrate = 250000
|
13
|
+
|
14
|
+
10.times do
|
15
|
+
ctx.write_data [0xff]
|
16
|
+
sleep 0.5
|
17
|
+
ctx.write_data [0x00]
|
18
|
+
sleep 0.5
|
19
|
+
end
|
20
|
+
ensure
|
21
|
+
ctx.set_bitmode(0xff, :reset)
|
22
|
+
ctx.usb_close
|
23
|
+
end
|
24
|
+
rescue Ftdi::Error => e
|
25
|
+
$stderr.puts e.to_s
|
26
|
+
end
|
data/lib/ftdi.rb
CHANGED
@@ -37,6 +37,9 @@ module Ftdi
|
|
37
37
|
# @see Ftdi::Context#interface=
|
38
38
|
Interface = enum(:interface_any, :interface_a, :interface_b, :interface_c, :interface_d)
|
39
39
|
|
40
|
+
# Bitbang mode for {Ftdi::Context#set_bitmode}.
|
41
|
+
BitbangMode = enum(:reset, :bitbang, :mpsse, :syncbb, :mcu, :opto, :cbus, :syncff)
|
42
|
+
|
40
43
|
# Flow control: disable
|
41
44
|
# @see Ftdi::Context#flowctrl=
|
42
45
|
SIO_DISABLE_FLOW_CTRL = 0x0
|
@@ -267,6 +270,15 @@ module Ftdi
|
|
267
270
|
new_flowctrl
|
268
271
|
end
|
269
272
|
|
273
|
+
# Set Bitbang mode for ftdi chip.
|
274
|
+
# @param [Fixnum] bitmask to configure lines. HIGH/ON value configures a line as output.
|
275
|
+
# @param [BitbangMode] mode Bitbang mode: use the values defined in {Ftdi::Context#BitbangMode}
|
276
|
+
# @return [NilClass] nil
|
277
|
+
# @see BitbangMode
|
278
|
+
def set_bitmode(bitmask, mode)
|
279
|
+
check_result(Ftdi.ftdi_set_bitmode(ctx, bitmask, mode))
|
280
|
+
end
|
281
|
+
|
270
282
|
# Gets write buffer chunk size.
|
271
283
|
# @return [Fixnum] Write buffer chunk size.
|
272
284
|
# @raise [StatusCodeError] libftdi reports error.
|
@@ -339,6 +351,16 @@ module Ftdi
|
|
339
351
|
r
|
340
352
|
end
|
341
353
|
|
354
|
+
# Directly read pin state, circumventing the read buffer. Useful for bitbang mode.
|
355
|
+
# @return [Fixnum] Pins state
|
356
|
+
# @raise [StatusCodeError] libftdi reports error.
|
357
|
+
# @see #set_bitmode
|
358
|
+
def read_pins
|
359
|
+
p = FFI::MemoryPointer.new(:uchar, 1)
|
360
|
+
check_result(Ftdi.ftdi_read_pins(ctx, p))
|
361
|
+
p.read_uchar
|
362
|
+
end
|
363
|
+
|
342
364
|
# Gets used interface of the device.
|
343
365
|
# @return [Interface] Used interface of the device.
|
344
366
|
def interface
|
@@ -385,5 +407,7 @@ module Ftdi
|
|
385
407
|
attach_function :ftdi_read_data_set_chunksize, [ :pointer, :uint ], :int
|
386
408
|
attach_function :ftdi_read_data_get_chunksize, [ :pointer, :pointer ], :int
|
387
409
|
attach_function :ftdi_set_interface, [ :pointer, Interface ], :int
|
410
|
+
attach_function :ftdi_set_bitmode, [ :pointer, :int, :int ], :int
|
411
|
+
attach_function :ftdi_read_pins, [ :pointer, :pointer ], :int
|
388
412
|
end
|
389
413
|
|
data/lib/ftdi/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libftdi-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
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: 2012-
|
12
|
+
date: 2012-11-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: yard
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 0.7.5
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.7.5
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: redcarpet
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,7 +53,12 @@ dependencies:
|
|
43
53
|
version: 1.17.2
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.17.2
|
47
62
|
description: libftdi library bindings to talk to FTDI chips
|
48
63
|
email:
|
49
64
|
- akzhan.abdulin@gmail.com
|
@@ -57,6 +72,8 @@ files:
|
|
57
72
|
- LICENSE
|
58
73
|
- README.md
|
59
74
|
- Rakefile
|
75
|
+
- example/bitread.rb
|
76
|
+
- example/blink.rb
|
60
77
|
- lib/ftdi.rb
|
61
78
|
- lib/ftdi/version.rb
|
62
79
|
- libftdi-ruby.gemspec
|
@@ -81,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
98
|
version: '0'
|
82
99
|
requirements: []
|
83
100
|
rubyforge_project: libftdi-ruby
|
84
|
-
rubygems_version: 1.8.
|
101
|
+
rubygems_version: 1.8.24
|
85
102
|
signing_key:
|
86
103
|
specification_version: 3
|
87
104
|
summary: libftdi library bindings
|