+pattern_t *number_pattern(unsigned char num, unsigned char inv)
+{
+ if (num >= 10)
+ num = 10;
+
+ if (inv) {
+ return pattern_invnum
+ + sizeof(pattern_invnum)/sizeof(pattern_t)
+ - 2 - 2*num;
+ } else {
+ return pattern_num
+ + sizeof(pattern_num)/sizeof(pattern_t)
+ - 2 - 2*num;
+ }
+}
+
+static pattern_t *pattern_select(unsigned char n)
+{
+ switch(n) {
+ case 0: return pwmled0_pattern_select();
+ case 1: return pwmled1_pattern_select();
+ case 2: return pwmled2_pattern_select();
+ case 3: return status_led_pattern_select();
+ case 4: return illumination_led_pattern_select();
+ case 6: return laser_pattern_select();
+ default: return NULL;
+ }
+}
+
+void pattern_reload()