- pwmled_t *led = pwmleds + n;
-
- if (led->pwm == old_pwm) {
- if (led->probe_steady < PWMLED_PROBE_STEADY_COUNT)
- led->probe_steady++;
- } else {
- led->probe_steady = 0;
- }
-
- if (led->probe_steady < PWMLED_PROBE_STEADY_COUNT
- && old_pwm <= led->pwm)
- return 0;
-
- // probed OK
- led->mode_pwm[led->mode - 1] = led->pwm;
- led->err_sums[led->mode - 1] = 0;
-
- // next mode to probe?
- if (led->mode < N_PWMLED_MODES) {
- led->probe_steady = 0;
- led->err_sum = 0;
-
- led->mode++;
- led->target = adc_vals[n*N_PWMLED_MODES+led->mode-1];
-
- return 0;
- } else {
- unsigned char i;
-
- led->state = ST_OFF;
- pwm_off(n);
-
- log_byte(0xF0);
- log_byte(n);
- // log_word(jiffies);
-
- for (i = 0; i < N_PWMLED_MODES; i++)
- log_word(led->mode_pwm[i]);
-
- log_flush();
-
- // pattern_reload();
- // pwmled_set_mode(n, 2);
-
- return 1;
- }
-}
-
-static inline void pwmled_err(unsigned char n)
-{
- pwmleds[n].state = ST_DISABLED;
- pwm_off(n);