rpi_pinin 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/rpi_pinin.rb +89 -0
- metadata +67 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8726d0bf63ceeba143de791ae04b776397e33f20
|
4
|
+
data.tar.gz: ea7bd528d0bff144a33980087193a6cb9aba9871
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c35c7c4134d1457df0a52138561be4071f093179b893cf674758e0fe7ff4425b57577b458cb7371805b327b6fdbd57aced9f44a635a07f510b8bdf2cc028917
|
7
|
+
data.tar.gz: 51402d1bfe10c9693267f4e1d1ad50730e29d7f706daa6817931a9340b67d45529d19273ef8f5050c3830591d0db7d8584c4e77324f165a9f335caa261dd3b55
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/lib/rpi_pinin.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: rpi_pinin.rb
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
class RPiPinIn
|
8
|
+
|
9
|
+
def initialize(id)
|
10
|
+
|
11
|
+
@id = id
|
12
|
+
unexport()
|
13
|
+
|
14
|
+
File.write '/sys/class/gpio/export', id
|
15
|
+
File.write "/sys/class/gpio/gpio#{id}/direction", 'out'
|
16
|
+
File.write "/sys/class/gpio/gpio#{id}/direction", 'high'
|
17
|
+
|
18
|
+
at_exit { unexport() }
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
# override this method if you wish
|
23
|
+
#
|
24
|
+
def on_change(value)
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
# override this method if you wish
|
29
|
+
#
|
30
|
+
def on_high()
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def watch_high()
|
35
|
+
|
36
|
+
watch() do |value|
|
37
|
+
|
38
|
+
if value == '1' then
|
39
|
+
|
40
|
+
yield if block_given?
|
41
|
+
on_high()
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def watch()
|
50
|
+
|
51
|
+
old_value = read_value()
|
52
|
+
|
53
|
+
loop do
|
54
|
+
|
55
|
+
value = read_value()
|
56
|
+
|
57
|
+
if value != old_value then
|
58
|
+
|
59
|
+
yield(value) if block_given?
|
60
|
+
on_change(value)
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
old_value = value
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
def to_s()
|
71
|
+
@id
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def read_value()
|
77
|
+
File.read("/sys/class/gpio/gpio#{@id}/value").chomp == '0' ? '1' : '0'
|
78
|
+
end
|
79
|
+
|
80
|
+
# to avoid "Device or resource busy @ fptr_finalize - /sys/class/gpio/export"
|
81
|
+
# we unexport the pins we used
|
82
|
+
#
|
83
|
+
def unexport()
|
84
|
+
|
85
|
+
return unless File.exists? '/sys/class/gpio/gpio' + @id.to_s
|
86
|
+
|
87
|
+
File.write "/sys/class/gpio/unexport", @id
|
88
|
+
end
|
89
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rpi_pinin
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE2MDQxMTE3NTEzM1oXDTE3MDQxMTE3NTEzM1owSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBAKZW3bNdPL5+gMEtDmj3S5tuNLFVGWlq+roFTXhjR6fl2l/6O8Eq/VpreD3N
|
19
|
+
x8+Uhcrg7g82lmWRe4elkY44TrIUiddqTXSBfQjJOVtmR+boCe+z62JbV1noQ1JH
|
20
|
+
i52GFuHLWwjbM6R09/2H1T1naLRTBaamJs9Otoc3xZUbaozqlHd7Ef351s0Gym9G
|
21
|
+
YzeHeYmEWetOkwV5TouvV5mhEzs03GR7662fI1Fwc4dakhNiwF6SBRwPjnxgPj7/
|
22
|
+
sQ6LVjsTCKt3xcN45ky55r7JygIMtjvsTqDWnwoTkaHWGqUWwLF4RrQ+u16afkLN
|
23
|
+
R5ZKBEBV18rLeAycAg+s86P4NOsCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUwO880tQnqac4ZdyvPJd/zfMuPgMwJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAYRnK0wzu
|
27
|
+
k4FiakF7i3BEB/5paJHNLjBtq1dGns5N6Lazdn0gcWtuqlCYNYFCDugE8VuHXoZG
|
28
|
+
sSetl8u2xtenBkhLdBDgdSLTlhqErxyaJWMzev9hFoZon7ByFOmO2us44dJa39cr
|
29
|
+
nth2qHaOqX/uWUH18KETGz1N7hisZNkl+ogPoNH7JDxvehV81VaStjxESOIqO0v6
|
30
|
+
OxlVo5Ka+VuFE5qdCBmuF4/iZ2jmSdQ7uLQZ8j39M74VlWu6S0QYy07ZGr0ql9v+
|
31
|
+
9Oh5kTRHGmS+rAppl7kr+5B23zGsyZypeBNXBco1AWMlnIkPo8XBFIYBeddBnFHa
|
32
|
+
WL47T3Gs0w9mvQ==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2016-04-11 00:00:00.000000000 Z
|
35
|
+
dependencies: []
|
36
|
+
description:
|
37
|
+
email: james@r0bertson.co.uk
|
38
|
+
executables: []
|
39
|
+
extensions: []
|
40
|
+
extra_rdoc_files: []
|
41
|
+
files:
|
42
|
+
- lib/rpi_pinin.rb
|
43
|
+
homepage: https://github.com/jrobertson/rpi_pinin
|
44
|
+
licenses:
|
45
|
+
- MIT
|
46
|
+
metadata: {}
|
47
|
+
post_install_message:
|
48
|
+
rdoc_options: []
|
49
|
+
require_paths:
|
50
|
+
- lib
|
51
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
requirements: []
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 2.4.8
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: Represents a Raspberry Pi GPIO pin in e.g. to read a button press.
|
67
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|