+static void inline pattern_finished(unsigned char n)
+{
+ unsigned char i;
+
+ led_patterns[n] = NULL;
+
+ if (n < N_PWMLEDS) {
+ for (i = 0; i < N_PWMLEDS; i++)
+ if (led_patterns[i])
+ return;
+
+ /* all pwmleds finished; restart them */
+ for (i = 0; i < N_PWMLEDS; i++)
+ led_set_pattern(i, pattern_select(i));
+ } else if (n == 3) {
+ if (!led_patterns[4])
+ led_set_pattern(4, pattern_select(4));
+ } else if (n == 4) {
+ if (!led_patterns[3])
+ led_set_pattern(3, pattern_select(3));
+ } else {
+ led_set_pattern(n, pattern_select(n));
+ }
+}
+