X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao-bringup%2Fcal-accel;fp=ao-bringup%2Fcal-accel;h=0000000000000000000000000000000000000000;hp=96e51e62df782b09622c45b971fb4e8ac88c6159;hb=01b5d271d21e0c60508c06f4af1ff34bf75bf9fe;hpb=3fb07b29d7bad57a52e4b0c75d623577ca1d4da3 diff --git a/ao-bringup/cal-accel b/ao-bringup/cal-accel deleted file mode 100755 index 96e51e62..00000000 --- a/ao-bringup/cal-accel +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/nickle - -import File; - -string timed_read(file f, int timeout) { - thread reader = fork func() { - try { - return fgets(f); - } catch Thread::signal(int i) { - return ""; - } - }(); - - thread killer = fork func() { - try { - sleep (timeout); - Thread::send_signal(reader, 1); - } catch Thread::signal(int i) { - return; - } - }(); - - poly v = Thread::join(reader); - Thread::send_signal(killer, 1); - Thread::join(killer); - if (is_string(v)) - return v; - return ""; -} - -void flush_input(file f) { - for (;;) { - string s = timed_read(f, 200); - if (s == "") - break; - } -} - -string[*] settings(file f) { - string[...] x = {}; - - flush_input(f); - fprintf (f, "c s\nv\n"); - flush(f); - for (;;) { - string l = File::fgets(f); - x[dim(x)] = l; - if (String::index(l, "software-version") == 0) - break; - } - return x; -} - -string[*] find_setting(string[*] s, string match) { - for (int i = 0; i < dim(s); i++) - if (String::index(s[i], match) == 0) - return String::split(s[i], " "); - return (string[*]) {}; -} - -bool -do_cal(file f) { - flush_input(f); - fprintf(f, "E 1\nc a 0\n"); - flush(f); - string s = ""; - bool worked = true; - bool running = false; - - thread put = fork func() { - try { - for (;;) { - putc(getchar(), f); - flush(f); - } - } catch Thread::signal(int i) { - return; - } - }(); - - for (;;) { - int c = getc(f); - if (c == '\n') - s = ""; - else - s = s + String::new(c); - putchar(c); flush(stdout); - if (String::index(s, "press a key...") >= 0) - running = true; - if (String::index(s, "Invalid") >= 0) - worked = false; - if (running && String::index(s, ">") >= 0) - break; - } - fprintf (f, "E 0\n"); - if (worked) - fprintf (f, "c w\n"); - sleep(200); - Thread::send_signal(put, 1); - Thread::join(put); - - return worked; -} - -void main () { - string name = argv[1]; - file f = open(name, "r+"); - - if (do_cal(f)) { - string[*] s = settings(f); - string[*] ac = find_setting(s, "Accel cal"); - printf ("Calibration value +1g %s -1g %s saved\n", ac[3], ac[5]); - exit (0); - } else { - printf ("Calibration failed\n"); - exit (1); - } -} - -main();