apa102_rbpi 1.1.pre → 1.1
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 +4 -4
- data/CHANGELOG.md +3 -1
- data/lib/apa102_rbpi/apa102.rb +8 -9
- data/lib/apa102_rbpi/strip.rb +25 -24
- data/lib/apa102_rbpi/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84c6e4842fcb0b1d796bd492e6661754fab72cfd
|
4
|
+
data.tar.gz: 9db2f05ceef04b434cb0204b6d8b806868fd24bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2140ca25427e8c847d551eb3b66025b07d44c98d2f45ed6b03e74699b38073292ee2ec19b9c50805dc36a4ea419b3e0be4ec4577b52b68e137df747ab29ff92
|
7
|
+
data.tar.gz: d736a1bfba1f89f943c670b9e9e9d897c901c6d7c422c0c4356ce0a2711ff0ed891b4c01e044b127e002310375780a1a7ca217db58678dd402f77aa68ef14107
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
3
|
## 1.1
|
4
|
-
- Improve
|
4
|
+
- Improve set_pixel performance
|
5
5
|
- Add a benchmark script
|
6
|
+
- `strip.mirrors` no longer writable
|
7
|
+
- Added `strip.clear_mirrors` method used to unmirror a strip.
|
6
8
|
|
7
9
|
## 1.0.1
|
8
10
|
- Fix bug with `set` not being required
|
data/lib/apa102_rbpi/apa102.rb
CHANGED
@@ -18,7 +18,7 @@ module Apa102Rbpi
|
|
18
18
|
red: 3,
|
19
19
|
green: 2,
|
20
20
|
blue: 1
|
21
|
-
|
21
|
+
}
|
22
22
|
@spi_hz = 8000000
|
23
23
|
@simulate = false
|
24
24
|
|
@@ -26,10 +26,7 @@ module Apa102Rbpi
|
|
26
26
|
@start_frame = [0x00] * 4
|
27
27
|
@end_frame = calculate_end_frame
|
28
28
|
|
29
|
-
|
30
29
|
@led_frames = []
|
31
|
-
@substrips = {}
|
32
|
-
@mirrors = {}
|
33
30
|
end
|
34
31
|
|
35
32
|
def simulate=(bool)
|
@@ -46,12 +43,8 @@ module Apa102Rbpi
|
|
46
43
|
@end_frame = calculate_end_frame
|
47
44
|
end
|
48
45
|
|
49
|
-
def calculate_end_frame
|
50
|
-
[0x00] * (@num_leds / 2.0).ceil
|
51
|
-
end
|
52
|
-
|
53
46
|
def show!
|
54
|
-
interface.begin do |s|
|
47
|
+
@interface.begin do |s|
|
55
48
|
s.clock(@spi_hz)
|
56
49
|
s.write(@start_frame + @led_frames + @end_frame)
|
57
50
|
end
|
@@ -60,6 +53,12 @@ module Apa102Rbpi
|
|
60
53
|
def print
|
61
54
|
::Apa102Rbpi::SpiSimulator.display(@led_frames)
|
62
55
|
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def calculate_end_frame
|
60
|
+
[0x00] * (@num_leds / 2.0).ceil
|
61
|
+
end
|
63
62
|
end
|
64
63
|
end
|
65
64
|
|
data/lib/apa102_rbpi/strip.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
module Apa102Rbpi
|
2
2
|
class Strip
|
3
|
-
|
4
|
-
require 'set'
|
5
|
-
|
6
|
-
attr_reader :mirrors, :head, :tail, :num_leds, :base
|
3
|
+
attr_reader :head, :tail, :num_leds, :base, :mirrors
|
7
4
|
attr_accessor :led_frame_rgb_offsets, :brightness
|
8
5
|
|
9
6
|
def initialize(len = Apa102Rbpi.base.num_leds, opts = {})
|
@@ -36,15 +33,21 @@ module Apa102Rbpi
|
|
36
33
|
@reverse
|
37
34
|
end
|
38
35
|
|
39
|
-
def mirror(
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
raise 'Strips must be of same length to be mirrored!'
|
36
|
+
def mirror(other_strip)
|
37
|
+
new_mirrors = @mirrors + other_strip.mirrors + Set.new([self, other_strip])
|
38
|
+
new_mirrors.each do |m|
|
39
|
+
m.mirrors += (new_mirrors - [m])
|
45
40
|
end
|
46
41
|
end
|
47
42
|
|
43
|
+
def clear_mirrors
|
44
|
+
@mirrors.each do |m|
|
45
|
+
m.mirrors -= [self]
|
46
|
+
end
|
47
|
+
|
48
|
+
@mirrors.clear
|
49
|
+
end
|
50
|
+
|
48
51
|
def show!
|
49
52
|
@base.show!
|
50
53
|
end
|
@@ -57,24 +60,16 @@ module Apa102Rbpi
|
|
57
60
|
else
|
58
61
|
raise 'Invalid color'
|
59
62
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
while(substrip = q.pop)
|
66
|
-
substrip.mirrors.each do |mirror|
|
67
|
-
unless seen.include?(mirror)
|
68
|
-
q.push(mirror)
|
69
|
-
seen.add(mirror)
|
70
|
-
end
|
71
|
-
substrip.set_color_helper(pos, color, is_hex, brightness || substrip.brightness)
|
72
|
-
end
|
63
|
+
|
64
|
+
set_pixel_helper(pos, color, is_hex, brightness || @brightness)
|
65
|
+
unless @mirrors.empty?
|
66
|
+
@mirrors.each do |strip|
|
67
|
+
strip.set_pixel_helper(pos, color, is_hex, brightness || strip.brightness)
|
73
68
|
end
|
74
69
|
end
|
75
70
|
end
|
76
71
|
|
77
|
-
def
|
72
|
+
def set_pixel_helper(pos, color, is_hex, brightness)
|
78
73
|
led_frame_hdr = (brightness & 0b00011111) | 0b11100000
|
79
74
|
idx = if @reverse
|
80
75
|
4 * ((@tail - pos) % @base.num_leds)
|
@@ -121,5 +116,11 @@ module Apa102Rbpi
|
|
121
116
|
clear
|
122
117
|
show!
|
123
118
|
end
|
119
|
+
|
120
|
+
protected
|
121
|
+
|
122
|
+
def mirrors=(m)
|
123
|
+
@mirrors = m
|
124
|
+
end
|
124
125
|
end
|
125
126
|
end
|
data/lib/apa102_rbpi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apa102_rbpi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- matl33t
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -135,9 +135,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
135
|
version: '0'
|
136
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- - "
|
138
|
+
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
140
|
+
version: '0'
|
141
141
|
requirements: []
|
142
142
|
rubyforge_project:
|
143
143
|
rubygems_version: 2.2.3
|