pigpio 0.1.11 → 0.1.12
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 +5 -5
- data/.standard_todo.yml +51 -0
- data/README.md +1 -1
- data/Rakefile +3 -4
- data/ext/pigpio/extconf.rb +5 -5
- data/ext/pigpio/pigpio.c +10 -4
- data/lib/pigpio/bank.rb +25 -22
- data/lib/pigpio/bit_bang_serial.rb +21 -19
- data/lib/pigpio/bit_bang_serial_rx.rb +70 -19
- data/lib/pigpio/bit_bang_serial_tx.rb +47 -41
- data/lib/pigpio/buffer.rb +13 -12
- data/lib/pigpio/constant.rb +745 -748
- data/lib/pigpio/gpio.rb +37 -30
- data/lib/pigpio/i2c.rb +77 -60
- data/lib/pigpio/pwm.rb +48 -38
- data/lib/pigpio/serial.rb +35 -29
- data/lib/pigpio/spi.rb +37 -33
- data/lib/pigpio/user_gpio.rb +33 -27
- data/lib/pigpio/version.rb +1 -1
- data/lib/pigpio/wave.rb +100 -78
- data/lib/pigpio.rb +28 -18
- data/pigpio.gemspec +16 -17
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ea48e2455183f291ab01d01923f98291d1fc3cbdac8237e0bfb47c6918f1b94d
|
4
|
+
data.tar.gz: 4734cdafc9f127194a972f6fbe366a5c7be1554837d6bd4829ea9ce5ecf56b0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86aba3d72fe106c69facc776e655fb6237cbeb2ccb63ee00de8a4e7f5678f14f1dbdd3727b3d48539f6c75e06d61083a2711854d642d6799edf03d82155e3717
|
7
|
+
data.tar.gz: 19750b1ea68bd3fabbe2036fcba8924aded9edcf2e46c0a2fd3bf654d4920006729cdd051ed5cd6886c5affeeea433454968c7b774a6bd4eaba4a437020f7f02
|
data/.standard_todo.yml
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Auto generated files with errors to ignore.
|
2
|
+
# Remove from this list as you refactor files.
|
3
|
+
---
|
4
|
+
ignore:
|
5
|
+
- example/e-paper_spi/epd2in13b.rb:
|
6
|
+
- Style/MixinUsage
|
7
|
+
- example/loopback/spi.rb:
|
8
|
+
- Style/MixinUsage
|
9
|
+
- Lint/UselessAssignment
|
10
|
+
- example/loopback/uart.rb:
|
11
|
+
- Style/MixinUsage
|
12
|
+
- Lint/UselessAssignment
|
13
|
+
- example/sharp_memory_display/ls013b7dn05.rb:
|
14
|
+
- Lint/UselessAssignment
|
15
|
+
- Style/SafeNavigation
|
16
|
+
- Style/MixinUsage
|
17
|
+
- example/simple/callback.rb:
|
18
|
+
- Style/MixinUsage
|
19
|
+
- example/simple/led.rb:
|
20
|
+
- Style/MixinUsage
|
21
|
+
- example/simple/pwm.rb:
|
22
|
+
- Style/MixinUsage
|
23
|
+
- Style/InfiniteLoop
|
24
|
+
- example/simple/wave.rb:
|
25
|
+
- Style/MixinUsage
|
26
|
+
- example/ssd1306_i2c/ssd1306.rb:
|
27
|
+
- Style/MixinUsage
|
28
|
+
- lib/pigpio.rb:
|
29
|
+
- Naming/VariableName
|
30
|
+
- lib/pigpio/bank.rb:
|
31
|
+
- Naming/ConstantName
|
32
|
+
- lib/pigpio/constant.rb:
|
33
|
+
- Naming/ConstantName
|
34
|
+
- lib/pigpio/gpio.rb:
|
35
|
+
- Lint/UselessAssignment
|
36
|
+
- Naming/VariableName
|
37
|
+
- lib/pigpio/i2c.rb:
|
38
|
+
- Naming/VariableName
|
39
|
+
- lib/pigpio/pwm.rb:
|
40
|
+
- Lint/UselessAssignment
|
41
|
+
- lib/pigpio/serial.rb:
|
42
|
+
- Naming/ConstantName
|
43
|
+
- Lint/UselessAssignment
|
44
|
+
- Naming/VariableName
|
45
|
+
- lib/pigpio/spi.rb:
|
46
|
+
- Naming/VariableName
|
47
|
+
- lib/pigpio/user_gpio.rb:
|
48
|
+
- Lint/UselessAssignment
|
49
|
+
- Naming/VariableName
|
50
|
+
- spec/ext/extconf.rb:
|
51
|
+
- Style/GlobalVars
|
data/README.md
CHANGED
@@ -65,7 +65,7 @@ More sample for this circuit. : [Hare](./example/simple/readme.md)
|
|
65
65
|
|
66
66
|
More sample for other circuit. : [Hare](./example/readme.md)
|
67
67
|
|
68
|
-
More document : [GitHub Pages](https://nak1114.github.io/ruby-extension-pigpio/)
|
68
|
+
More document : [GitHub Pages](https://nak1114.github.io/ruby-extension-pigpio/Pigpio/IF.html)
|
69
69
|
|
70
70
|
## Development
|
71
71
|
|
data/Rakefile
CHANGED
@@ -9,10 +9,9 @@ end
|
|
9
9
|
|
10
10
|
RSpec::Core::RakeTask.new(:spec)
|
11
11
|
|
12
|
-
task :
|
12
|
+
task default: :spec
|
13
13
|
|
14
|
-
|
15
|
-
RDOC_FILES = FileList["ext/pigpio/pigpio.c","lib/**/*.rb"]
|
14
|
+
RDOC_FILES = FileList["ext/pigpio/pigpio.c", "lib/**/*.rb"]
|
16
15
|
|
17
16
|
Rake::RDocTask.new do |rd|
|
18
17
|
rd.main = "pigpio.c"
|
@@ -33,4 +32,4 @@ end
|
|
33
32
|
task :reset do
|
34
33
|
sh "git fetch origin"
|
35
34
|
sh "git reset --hard origin/master"
|
36
|
-
end
|
35
|
+
end
|
data/ext/pigpio/extconf.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
dir_config(
|
3
|
-
if find_header(
|
4
|
-
create_makefile(
|
5
|
-
end
|
1
|
+
require "mkmf"
|
2
|
+
dir_config("pigpio")
|
3
|
+
if find_header("pigpiod_if2.h", "/usr/include/") && find_library("pigpiod_if2", "gpio_read", "/usr/lib/")
|
4
|
+
create_makefile("pigpio/pigpio")
|
5
|
+
end
|
data/ext/pigpio/pigpio.c
CHANGED
@@ -3829,13 +3829,15 @@ void Init_pigpio(void){
|
|
3829
3829
|
/*
|
3830
3830
|
This class wrap gpioPulse_t.
|
3831
3831
|
*/
|
3832
|
-
cPulse = rb_define_class_under(cPigpio,"Pulse",
|
3832
|
+
cPulse = rb_define_class_under(cPigpio,"Pulse", rb_cObject);
|
3833
|
+
rb_undef_alloc_func(cPulse);
|
3833
3834
|
rb_define_singleton_method(cPulse, "make", pigpio_rbst_gpioPulse_make, 3);
|
3834
3835
|
|
3835
3836
|
/*
|
3836
3837
|
This class wrap bsc_xfer_t.
|
3837
3838
|
*/
|
3838
|
-
cBscXfer = rb_define_class_under(cPigpio,"BscXfer",
|
3839
|
+
cBscXfer = rb_define_class_under(cPigpio,"BscXfer", rb_cObject);
|
3840
|
+
rb_undef_alloc_func(cBscXfer);
|
3839
3841
|
rb_define_singleton_method(cBscXfer, "make", pigpio_rbst_bsc_xfer_make, 0);
|
3840
3842
|
rb_define_method(cBscXfer, "control=", pigpio_rbst_bsc_xfer_w_control, 1);
|
3841
3843
|
rb_define_method(cBscXfer, "control", pigpio_rbst_bsc_xfer_r_control, 0);
|
@@ -3847,13 +3849,15 @@ void Init_pigpio(void){
|
|
3847
3849
|
/*
|
3848
3850
|
The class of native queue.
|
3849
3851
|
*/
|
3850
|
-
cNativeQueue = rb_define_class_under(cAPI,"NativeQueue",
|
3852
|
+
cNativeQueue = rb_define_class_under(cAPI,"NativeQueue", rb_cObject);
|
3853
|
+
rb_undef_alloc_func(cNativeQueue);
|
3851
3854
|
rb_gc_register_address(&cNativeQueue);
|
3852
3855
|
|
3853
3856
|
/*
|
3854
3857
|
The class of callback.
|
3855
3858
|
*/
|
3856
|
-
cCallbackID = rb_define_class_under(cPigpio,"Callback",
|
3859
|
+
cCallbackID = rb_define_class_under(cPigpio,"Callback", rb_cObject);
|
3860
|
+
rb_undef_alloc_func(cCallbackID);
|
3857
3861
|
rb_define_method(cCallbackID, "id", pigpio_rbst_callback_id_r_id, 0);
|
3858
3862
|
rb_define_method(cCallbackID, "cancel", pigpio_rbst_callback_id_cancel, 0);
|
3859
3863
|
rb_gc_register_address(&cCallbackID);
|
@@ -3862,11 +3866,13 @@ void Init_pigpio(void){
|
|
3862
3866
|
The class of callback error.
|
3863
3867
|
*/
|
3864
3868
|
cCallbackError = rb_define_class_under(cPigpio,"CallbackError", rb_eException);
|
3869
|
+
rb_undef_alloc_func(cCallbackError);
|
3865
3870
|
rb_gc_register_address(&cCallbackError);
|
3866
3871
|
|
3867
3872
|
/*
|
3868
3873
|
The class of Rx buffer.
|
3869
3874
|
*/
|
3870
3875
|
cBuffer = rb_define_class_under(cPigpio,"Buffer", rb_cString);
|
3876
|
+
rb_undef_alloc_func(cBuffer);
|
3871
3877
|
rb_gc_register_address(&cBuffer);
|
3872
3878
|
}
|
data/lib/pigpio/bank.rb
CHANGED
@@ -1,22 +1,25 @@
|
|
1
|
-
class Pigpio
|
2
|
-
class Bank
|
3
|
-
Set={
|
4
|
-
read:
|
5
|
-
clear: [:clear_bank_1
|
6
|
-
set:
|
7
|
-
}
|
8
|
-
def initialize(pi,num)
|
9
|
-
@pi=pi
|
10
|
-
@num=num
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
1
|
+
class Pigpio
|
2
|
+
class Bank
|
3
|
+
Set = {
|
4
|
+
read: [:read_bank_1, :read_bank_2],
|
5
|
+
clear: [:clear_bank_1, :clear_bank_2],
|
6
|
+
set: [:set_bank_1, :set_bank_2]
|
7
|
+
}
|
8
|
+
def initialize(pi, num)
|
9
|
+
@pi = pi
|
10
|
+
@num = num
|
11
|
+
end
|
12
|
+
|
13
|
+
def read
|
14
|
+
IF.send(Set[:read][@num], @pi)
|
15
|
+
end
|
16
|
+
|
17
|
+
def clear(bits)
|
18
|
+
IF.send(Set[:clear][@num], @pi, bits)
|
19
|
+
end
|
20
|
+
|
21
|
+
def set(bits)
|
22
|
+
IF.send(Set[:set][@num], @pi, bits)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,19 +1,21 @@
|
|
1
|
-
require_relative "./bit_bang_serial_rx"
|
2
|
-
require_relative "./bit_bang_serial_tx"
|
3
|
-
|
4
|
-
class Pigpio
|
5
|
-
class BitBangSerial < BitBangSerialTx
|
6
|
-
attr_reader :rx
|
7
|
-
def initialize(rx,tx,baud=9600,data_bits=8,stop_bits=1,parity_type
|
8
|
-
super(tx,baud,data_bits,stop_bits)
|
9
|
-
@rx=BitBangSerialRx.new(rx,baud,data_bits)
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
1
|
+
require_relative "./bit_bang_serial_rx"
|
2
|
+
require_relative "./bit_bang_serial_tx"
|
3
|
+
|
4
|
+
class Pigpio
|
5
|
+
class BitBangSerial < BitBangSerialTx
|
6
|
+
attr_reader :rx
|
7
|
+
def initialize(rx, tx, baud = 9600, data_bits = 8, stop_bits = 1, parity_type = :none)
|
8
|
+
super(tx, baud, data_bits, stop_bits)
|
9
|
+
@rx = BitBangSerialRx.new(rx, baud, data_bits)
|
10
|
+
end
|
11
|
+
|
12
|
+
def close
|
13
|
+
super
|
14
|
+
@rx.close
|
15
|
+
end
|
16
|
+
|
17
|
+
def read(bufsize = 1)
|
18
|
+
@rx.read(bufsize)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,19 +1,70 @@
|
|
1
|
-
class Pigpio
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
1
|
+
class Pigpio
|
2
|
+
# Set a UserGPIO pin as a serial Rx.
|
3
|
+
class BitBangSerialRx
|
4
|
+
# UserGPIO#.
|
5
|
+
#
|
6
|
+
# This attribute is set at the time of ::new.
|
7
|
+
attr_reader :rx
|
8
|
+
|
9
|
+
# Set 0 if OK, otherwise PI_BAD_USER_GPIO, PI_BAD_WAVE_BAUD, PI_GPIO_IN_USE, PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
|
10
|
+
#
|
11
|
+
# This attribute is set at the time of ::new.
|
12
|
+
attr_reader :valid
|
13
|
+
|
14
|
+
# Set a UserGPIO pin as a serial Rx.
|
15
|
+
#
|
16
|
+
# The serial data recieves in a internal cyclic buffer and is read using #read method.
|
17
|
+
# It is the caller's responsibility to read data from the cyclic buffer in a timely fashion.
|
18
|
+
#
|
19
|
+
# [Parameter]
|
20
|
+
# [rx [ Pigpio::UserGPIO ]] Set This pgio as a serial Rx.
|
21
|
+
# [baud [ Integer ]] 50-250000 [bps]. default 9600.
|
22
|
+
# [data_bits [ Integer ]] 1-32 [bit/word]. default 8.
|
23
|
+
#
|
24
|
+
# See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read_open]
|
25
|
+
def initialize(rx, baud = 9600, data_bits = 8)
|
26
|
+
@rx = rx
|
27
|
+
@valid = IF.bb_serial_read_open(@rx.pi, @rx.gpio, baud, data_bits)
|
28
|
+
if @valid == 0
|
29
|
+
@valid = IF.bb_serial_invert(@rx.pi, @rx.gpio, 0)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# This method closes a GPIO for bit bang reading of serial data.
|
34
|
+
#
|
35
|
+
# [Return] [Integer] Returns 0 if OK, otherwise PI_BAD_USER_GPIO, or PI_NOT_SERIAL_GPIO.
|
36
|
+
#
|
37
|
+
# See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read_close]
|
38
|
+
def close
|
39
|
+
IF.bb_serial_read_close(@rx.pi, @rx.gpio)
|
40
|
+
end
|
41
|
+
|
42
|
+
# This method copies up to bufSize bytes of data read from the bit bang serial cyclic buffer to the buffer starting at returned value.
|
43
|
+
#
|
44
|
+
# [Parameter] [bufSize [ Integer ]] How many bytes receive.
|
45
|
+
# [Return] [ Pigpio::Buffer ] A copied buffer and status.
|
46
|
+
#
|
47
|
+
# The details of the returned status is the number of bytes copied if OK, otherwise PI_BAD_USER_GPIO or PI_NOT_SERIAL_GPIO.
|
48
|
+
#
|
49
|
+
# The bytes returned for each character depend upon the number of data bits +data_bits+ specified in the ::new method.
|
50
|
+
#
|
51
|
+
# * For +data_bits+ 1-8 there will be one byte per character.
|
52
|
+
# * For +data_bits+ 9-16 there will be two bytes per character.
|
53
|
+
# * For +data_bits+ 17-32 there will be four bytes per character.
|
54
|
+
#
|
55
|
+
# See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_read]
|
56
|
+
def read(bufsize = 1)
|
57
|
+
IF.bb_serial_read(@rx.pi, @rx.gpio, bufsize)
|
58
|
+
end
|
59
|
+
|
60
|
+
# This method inverts serial logic for big bang serial reads.
|
61
|
+
#
|
62
|
+
# [Parameter] [Integer] invert 0-1.1 invert, 0 normal.
|
63
|
+
# [Return] [Integer] Returns 0 if OK, otherwise PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
|
64
|
+
#
|
65
|
+
# See also: {pigpio site}[http://abyz.me.uk/rpi/pigpio/pdif2.html#bb_serial_invert]
|
66
|
+
def invert(invert = 1)
|
67
|
+
IF.bb_serial_invert(@rx.pi, @rx.gpio, invert)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -1,41 +1,47 @@
|
|
1
|
-
class Pigpio
|
2
|
-
class BitBangSerialTx
|
3
|
-
attr_reader :tx
|
4
|
-
def initialize(tx,baud=9600,data_bits=8,stop_bits=1)
|
5
|
-
@tx=tx
|
6
|
-
@baud=baud
|
7
|
-
@data_bits=data_bits
|
8
|
-
@stop_half_bits=(stop_bits*2).round.to_i
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
IF.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
return
|
21
|
-
IF.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
1
|
+
class Pigpio
|
2
|
+
class BitBangSerialTx
|
3
|
+
attr_reader :tx
|
4
|
+
def initialize(tx, baud = 9600, data_bits = 8, stop_bits = 1)
|
5
|
+
@tx = tx
|
6
|
+
@baud = baud
|
7
|
+
@data_bits = data_bits
|
8
|
+
@stop_half_bits = (stop_bits * 2).round.to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
def close
|
12
|
+
IF.wave_tx_stop(@tx.pi) if busy?
|
13
|
+
IF.wave_clear(@tx.pi)
|
14
|
+
end
|
15
|
+
|
16
|
+
def write(buf)
|
17
|
+
IF.wave_clear(@tx.pi)
|
18
|
+
IF.wave_add_new(@tx.pi)
|
19
|
+
ret = IF.wave_add_serial(@tx.pi, @tx.gpio, @baud, @data_bits, @stop_half_bits, 0, buf)
|
20
|
+
return ret if ret < 0
|
21
|
+
wid = IF.wave_create(@tx.pi)
|
22
|
+
return wid if wid < 0
|
23
|
+
IF.wave_send_once(@tx.pi, wid)
|
24
|
+
end
|
25
|
+
|
26
|
+
def sync
|
27
|
+
while busy?
|
28
|
+
sleep 0.1
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def write_sync(buf)
|
33
|
+
ret = write(buf)
|
34
|
+
return ret if ret < 0
|
35
|
+
sync
|
36
|
+
IF.wave_clear(@tx.pi)
|
37
|
+
end
|
38
|
+
|
39
|
+
def busy?
|
40
|
+
IF.wave_tx_busy(@tx.pi)
|
41
|
+
end
|
42
|
+
|
43
|
+
def stop
|
44
|
+
IF.wave_tx_stop(@tx.pi)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/pigpio/buffer.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
class Pigpio
|
2
|
-
class Buffer < String
|
3
|
-
attr_reader :ret_code
|
4
|
-
def initialize(ret_code,str=nil)
|
5
|
-
super(str)
|
6
|
-
@ret_code=ret_code
|
7
|
-
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
1
|
+
class Pigpio
|
2
|
+
class Buffer < String
|
3
|
+
attr_reader :ret_code
|
4
|
+
def initialize(ret_code, str = nil)
|
5
|
+
super(str)
|
6
|
+
@ret_code = ret_code
|
7
|
+
end
|
8
|
+
|
9
|
+
def valid?
|
10
|
+
@ret_code >= 0
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|