MCPcopy Create free account
hub / github.com/CopterExpress/clover / proceed

Function proceed

clover/src/led.cpp:81–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

79}
80
81void proceed(const ros::TimerEvent& event)
82{
83 counter++;
84 uint8_t r, g, b;
85 set_leds.request.leds.clear();
86 set_leds.request.leds.resize(led_count);
87
88 if (current_effect.effect == "blink" || current_effect.effect == "blink_fast") {
89 // enable on odd counter
90 if (counter % 2 != 0) {
91 fill(current_effect.r, current_effect.g, current_effect.b);
92 } else {
93 fill(0, 0, 0);
94 }
95
96 } else if (current_effect.effect == "fade") {
97 // fade all leds from starting state
98 double passed = std::min((event.current_real - start_time).toSec() / fade_period, 1.0);
99 double one_minus_passed = 1 - passed;
100 for (int i = 0; i < led_count; i++) {
101 set_leds.request.leds[i].index = i;
102 set_leds.request.leds[i].r = one_minus_passed * start_state.leds[i].r + passed * current_effect.r;
103 set_leds.request.leds[i].g = one_minus_passed * start_state.leds[i].g + passed * current_effect.g;
104 set_leds.request.leds[i].b = one_minus_passed * start_state.leds[i].b + passed * current_effect.b;
105 }
106 callSetLeds();
107 if (passed >= 1.0) {
108 // fade finished
109 timer.stop();
110 }
111
112 } else if (current_effect.effect == "wipe") {
113 set_leds.request.leds.resize(1);
114 set_leds.request.leds[0].index = counter - 1;
115 set_leds.request.leds[0].r = current_effect.r;
116 set_leds.request.leds[0].g = current_effect.g;
117 set_leds.request.leds[0].b = current_effect.b;
118 callSetLeds();
119 if (counter == led_count) {
120 // wipe finished
121 timer.stop();
122 }
123
124 } else if (current_effect.effect == "rainbow_fill") {
125 rainbow(counter % 255, r, g, b);
126 for (int i = 0; i < led_count; i++) {
127 set_leds.request.leds[i].index = i;
128 set_leds.request.leds[i].r = r;
129 set_leds.request.leds[i].g = g;
130 set_leds.request.leds[i].b = b;
131 }
132 callSetLeds();
133
134 } else if (current_effect.effect == "rainbow") {
135 for (int i = 0; i < led_count; i++) {
136 int pos = (int)round(counter + (255.0 * i / led_count)) % 255;
137 rainbow(pos % 255, r, g, b);
138 set_leds.request.leds[i].index = i;

Callers 1

setEffectFunction · 0.85

Calls 5

fillFunction · 0.85
callSetLedsFunction · 0.85
rainbowFunction · 0.85
resizeMethod · 0.80
stopMethod · 0.80

Tested by

no test coverage detected