animatedledstrip-client 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/animation.rb +80 -0
- data/lib/animation_data.rb +64 -0
- data/lib/animation_sender.rb +26 -0
- data/lib/color_container.rb +25 -0
- data/lib/direction.rb +15 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8c23ae558840af80bfb0161f275df791382dc716934c261fc9dff7398a3a7c4d
|
4
|
+
data.tar.gz: a9ddabb34944385a0e252ce7367221c701859aeaaa6e1b8bbe469126a68d0557
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 14c61a66d1a36b55f56ed61b242b6040fe752d2b408be4ce5b364d0ba2f37280089760e94fd4467bca9dc73153717b5d20440ca6690e1f97c62d16a11f18432f
|
7
|
+
data.tar.gz: b8050a64d8ef24d47a0047f8edf4e55d1db80b43edba32d6eae4be8b901a0d94fe8bac89ab05fa5163526c326e6bd6cf946e3b6e90de39c5dae54ef5b8d060b4
|
data/lib/animation.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
module Animation
|
2
|
+
COLOR = 0
|
3
|
+
CUSTOM_ANIMATION = 1
|
4
|
+
CUSTOM_REPETITIVE_ANIMATION = 2
|
5
|
+
ALTERNATE = 3
|
6
|
+
BOUNCE = 4
|
7
|
+
BOUNCE_TO_COLOR = 5
|
8
|
+
CAT_TOY = 6
|
9
|
+
METEOR = 7
|
10
|
+
MULTIPIXEL_RUN = 8
|
11
|
+
MULTIPIXEL_RUN_TO_COLOR = 9
|
12
|
+
RIPPLE = 10
|
13
|
+
PIXEL_MARATHON = 11
|
14
|
+
PIXEL_RUN = 12
|
15
|
+
SMOOTH_CHASE = 13
|
16
|
+
SMOOTH_FADE = 14
|
17
|
+
SPARKLE = 15
|
18
|
+
SPARKLE_FADE = 16
|
19
|
+
SPARKLE_TO_COLOR = 17
|
20
|
+
SPLAT = 18
|
21
|
+
STACK = 19
|
22
|
+
STACK_OVERFLOW = 20
|
23
|
+
WIPE = 21
|
24
|
+
END_ANIMATION = 22
|
25
|
+
|
26
|
+
# @return [String]
|
27
|
+
def self.string(animation)
|
28
|
+
case animation
|
29
|
+
when COLOR
|
30
|
+
'COLOR'
|
31
|
+
when CUSTOM_ANIMATION
|
32
|
+
'CUSTOMANIMATION'
|
33
|
+
when CUSTOM_REPETITIVE_ANIMATION
|
34
|
+
'CUSTOMREPETITIVEANIMATION'
|
35
|
+
when ALTERNATE
|
36
|
+
'ALTERNATE'
|
37
|
+
when BOUNCE
|
38
|
+
'BOUNCE'
|
39
|
+
when BOUNCE_TO_COLOR
|
40
|
+
'BOUNCETOCOLOR'
|
41
|
+
when CAT_TOY
|
42
|
+
'CATTOY'
|
43
|
+
when METEOR
|
44
|
+
'METEOR'
|
45
|
+
when MULTIPIXEL_RUN
|
46
|
+
'MULTIPIXELRUN'
|
47
|
+
when MULTIPIXEL_RUN_TO_COLOR
|
48
|
+
'MULTIPIXELRUNTOCOLOR'
|
49
|
+
when RIPPLE
|
50
|
+
'RIPPLE'
|
51
|
+
when PIXEL_MARATHON
|
52
|
+
'PIXELMARATHON'
|
53
|
+
when PIXEL_RUN
|
54
|
+
'PIXELRUN'
|
55
|
+
when SMOOTH_CHASE
|
56
|
+
'SMOOTHCHASE'
|
57
|
+
when SMOOTH_FADE
|
58
|
+
'SMOOTHFADE'
|
59
|
+
when SPARKLE
|
60
|
+
'SPARKLE'
|
61
|
+
when SPARKLE_FADE
|
62
|
+
'SPARKLEFADE'
|
63
|
+
when SPARKLE_TO_COLOR
|
64
|
+
'SPARKLETOCOLOR'
|
65
|
+
when SPLAT
|
66
|
+
'SPLAT'
|
67
|
+
when STACK
|
68
|
+
'STACK'
|
69
|
+
when STACK_OVERFLOW
|
70
|
+
'STACKOVERFLOW'
|
71
|
+
when WIPE
|
72
|
+
'WIPE'
|
73
|
+
when END_ANIMATION
|
74
|
+
'ENDANIMATION'
|
75
|
+
else
|
76
|
+
'COLOR'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require_relative './imation.rb'
|
2
|
+
require_relative './rection.rb'
|
3
|
+
require_relative './lor_container.rb'
|
4
|
+
|
5
|
+
class AnimationData
|
6
|
+
attr_accessor :animation, :colors, :center,
|
7
|
+
:continuous, :delay, :delay_mod,
|
8
|
+
:direction, :distance, :end_pixel,
|
9
|
+
:id, :spacing, :start_pixel
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@animation = Animation::COLOR
|
13
|
+
@colors = []
|
14
|
+
@center = -1
|
15
|
+
@continuous = nil
|
16
|
+
@delay = -1
|
17
|
+
@delay_mod = 1.0
|
18
|
+
@direction = Direction::FORWARD
|
19
|
+
@distance = -1
|
20
|
+
@end_pixel = -1
|
21
|
+
@id = ''
|
22
|
+
@spacing = -1
|
23
|
+
@start_pixel = 0
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_color(color)
|
27
|
+
raise TypeError unless color.is_a? ColorContainer
|
28
|
+
|
29
|
+
colors.push(color)
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [String]
|
33
|
+
def json
|
34
|
+
raise TypeError unless @animation.is_a? Integer
|
35
|
+
raise TypeError unless @center.is_a? Integer
|
36
|
+
raise TypeError unless @continuous.is_a?(Integer) || @continuous.nil?
|
37
|
+
raise TypeError unless @delay.is_a? Integer
|
38
|
+
raise TypeError unless @delay_mod.is_a? Float
|
39
|
+
raise TypeError unless @direction.is_a? Integer
|
40
|
+
raise TypeError unless @distance.is_a? Integer
|
41
|
+
raise TypeError unless @end_pixel.is_a? Integer
|
42
|
+
raise TypeError unless @id.is_a? String
|
43
|
+
raise TypeError unless @spacing.is_a? Integer
|
44
|
+
raise TypeError unless @start_pixel.is_a? Integer
|
45
|
+
|
46
|
+
@colors.each { |cc| raise TypeError unless cc.is_a? ColorContainer }
|
47
|
+
|
48
|
+
str = "DATA:{\"animation\":\"#{Animation.string(@animation)}\","\
|
49
|
+
'"colors":['
|
50
|
+
@colors.each { |cc| str += "#{cc.json}," }
|
51
|
+
str.delete_suffix! ','
|
52
|
+
str + '],'\
|
53
|
+
"\"center\":#{@center},"\
|
54
|
+
"\"continuous\":#{@continuous.nil? ? 'null' : @continuous},"\
|
55
|
+
"\"delay\":#{@delay},"\
|
56
|
+
"\"delayMod\":#{delay_mod},"\
|
57
|
+
"\"direction\":\"#{Direction.string(@direction)}\","\
|
58
|
+
"\"distance\":#{@distance},"\
|
59
|
+
"\"endPixel\":#{@end_pixel},"\
|
60
|
+
"\"id\":\"#{@id}\","\
|
61
|
+
"\"spacing\":#{@spacing},"\
|
62
|
+
"\"startPixel\":#{@start_pixel}}"
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require_relative './animation_sender.rb'
|
3
|
+
|
4
|
+
class AnimationSender
|
5
|
+
attr_accessor :address, :port
|
6
|
+
|
7
|
+
def initialize(address, port)
|
8
|
+
@address = address
|
9
|
+
@port = port
|
10
|
+
end
|
11
|
+
|
12
|
+
def start
|
13
|
+
@socket = TCPSocket.new @address, @port
|
14
|
+
end
|
15
|
+
|
16
|
+
def end
|
17
|
+
@socket.close
|
18
|
+
end
|
19
|
+
|
20
|
+
def send_animation(animation)
|
21
|
+
raise TypeError unless animation.is_a? AnimationData
|
22
|
+
|
23
|
+
@socket.write animation.json
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class ColorContainer
|
2
|
+
attr_accessor :colors
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@colors = []
|
6
|
+
end
|
7
|
+
|
8
|
+
# @return [String]
|
9
|
+
def json
|
10
|
+
@colors.each { |c| raise TypeError unless c.is_a? Integer }
|
11
|
+
str = '{"colors":['
|
12
|
+
@colors.each do |c|
|
13
|
+
str.concat(c.to_s, ',')
|
14
|
+
end
|
15
|
+
str.delete_suffix! ','
|
16
|
+
str + ']}'
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_color(color)
|
20
|
+
raise TypeError unless color.is_a? Integer
|
21
|
+
|
22
|
+
@colors.push(color)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/direction.rb
ADDED
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: animatedledstrip-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Max Narvaez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-11-05 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email:
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/animation.rb
|
20
|
+
- lib/animation_data.rb
|
21
|
+
- lib/animation_sender.rb
|
22
|
+
- lib/color_container.rb
|
23
|
+
- lib/direction.rb
|
24
|
+
homepage:
|
25
|
+
licenses: []
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.7.6
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: Library for connecting to an AnimatedLEDStripServer
|
47
|
+
test_files: []
|