summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/busp/test_busp.cc
diff options
context:
space:
mode:
authorschodet2003-05-05 19:20:25 +0000
committerschodet2003-05-05 19:20:25 +0000
commite5deeadfcd0dc50f607e388712f6d349a36c383c (patch)
tree619c28b56c92c1b128da88060dd579538352cfb1 /2003/i/buzz/src/busp/test_busp.cc
parent813f57da6ac8ee65fe32e944de62ec2a27574e83 (diff)
Activations des interruptions.
Ajout de la classe servo et IR.
Diffstat (limited to '2003/i/buzz/src/busp/test_busp.cc')
-rw-r--r--2003/i/buzz/src/busp/test_busp.cc99
1 files changed, 94 insertions, 5 deletions
diff --git a/2003/i/buzz/src/busp/test_busp.cc b/2003/i/buzz/src/busp/test_busp.cc
index 81bc21a..a63417b 100644
--- a/2003/i/buzz/src/busp/test_busp.cc
+++ b/2003/i/buzz/src/busp/test_busp.cc
@@ -7,6 +7,11 @@
#include <iostream>
#include <cstdlib>
+#include <cstring>
+#include <unistd.h>
+
+// Mode de controle des servos.
+void testServos (void);
int
main (int argc, char **argv)
@@ -21,17 +26,39 @@ main (int argc, char **argv)
// Ecriture.
addr = strtol (argv[1], 0, 0);
data = strtol (argv[2], 0, 0);
- cout << "write " << addr << " " << data << endl;
busp.write (addr, data);
break;
case 2:
- // Lecture.
- addr = strtol (argv[1], 0, 0);
- cout << "read " << addr << " = " << busp.read (addr) << endl;
+ if (strcmp (argv[1], "irq") == 0)
+ {
+ // Attend des interuptions.
+ cout << "irq" << endl;
+ char c;
+ cin >> c;
+ }
+ else if (strcmp (argv[1], "servo") == 0)
+ {
+ // Passe en mode contrôle servos.
+ testServos ();
+ }
+ else if (strcmp (argv[1], "reset") == 0)
+ {
+ // Ne fait rien, juste reset.
+ busp.reset ();
+ cout << "reset" << endl;
+ }
+ else
+ {
+ // Lecture.
+ addr = strtol (argv[1], 0, 0);
+ }
break;
default:
cerr << argv[0] << ": teste le bus parallèle." << endl
- << "\t" << argv[0] << " adresse [donnée]" << endl;
+ << "\t" << argv[0] << " <adresse> [<donnée>]" << endl
+ << "\t" << argv[0] << " reset" << endl
+ << "\t" << argv[0] << " irq" << endl
+ << "\t" << argv[0] << " servo" << endl;
return 1;
}
}
@@ -42,3 +69,65 @@ main (int argc, char **argv)
}
return 0;
}
+
+// Mode de controle des servos.
+void
+testServos (void)
+{
+ char c;
+ int diff, servo = 0;
+ cout << "Mode servos\n"
+ "0-9 : choix du servo.\n"
+ "y : -1, h : +1, u : -1, j : +1, i : -20, k : +20\n"
+ "r : reset, g<pos> : goto <pos>\n";
+ while (!cin.eof ())
+ {
+ cin >> c;
+ diff = 0;
+ switch (c)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ servo = c - '0';
+ break;
+ case 'y':
+ diff = -1;
+ break;
+ case 'h':
+ diff = 1;
+ break;
+ case 'u':
+ diff = -5;
+ break;
+ case 'j':
+ diff = 5;
+ break;
+ case 'i':
+ diff = -20;
+ break;
+ case 'k':
+ diff = 20;
+ break;
+ }
+ if (diff)
+ {
+ Busp::getInstance ().getServo ().move (servo, diff);
+ }
+ else if (c == 'g')
+ {
+ int pos;
+ cin >> pos;
+ Busp::getInstance ().getServo ().moveTo (servo, pos);
+ }
+ else if (c == 'r')
+ {
+ Busp::getInstance ().reset ();
+ }
+ }
+}