aboutsummaryrefslogtreecommitdiff
path: root/kernel/bug/panic.c
blob: c82d0f0e78f8289e2affc6a9530c19ae70678646 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "bug/panic.h"
#include "bug/debug.h"
#include <avr/interrupt.h>

static inline void wait() {
  for (volatile long i = 0; i < 20000; ++i) {};
}

void panic() {
  cli();
  while(1) {
    for(int i = 0; i < DEBUG_LEDS; ++i) {
      debug_led((i - 1) % DEBUG_LEDS, 0);
      debug_led(i, 1);
      wait();
    }
    for(int i = DEBUG_LEDS - 1; i >= 0; --i) {
      debug_led((i + 1) % DEBUG_LEDS, 0);
      debug_led(i, 1);
      wait();
    }
  }
}