ai

Revision:
0:8ad510cbb76c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ai.cpp	Thu Apr 26 19:59:10 2012 +0000
@@ -0,0 +1,83 @@
+
+#include "ai.h"
+#include "rtos.h"
+#include "globals.h"
+
+AI::AI() :
+    thr_AI(aithreadwrapper,this,osPriorityNormal,1024) {
+    flag_terminate = false;
+    //printf("aistart\r\n");
+}
+
+void AI::settarget(float targetX, float targetY, float targetTheta, bool targetfacing){
+    targetlock.lock();
+    target.x = targetX;
+    target.y = targetY;
+    target.theta = targetTheta;
+    target.facing = targetfacing;
+    targetlock.unlock();
+}
+
+void AI::settarget(Target targetin){
+    targetlock.lock();
+    target = targetin;
+    targetlock.unlock();
+}
+
+AI::Target AI::gettarget(){
+    targetlock.lock();
+    Target temptarget = target;
+    targetlock.unlock();
+    return temptarget;
+}
+
+void AI::ai_thread () {
+    /*
+    //printf("aithreadstart\r\n");
+    Thread::signal_wait(0x01);
+    settarget(660, 400, PI/2, true);
+    
+    Thread::signal_wait(0x01);
+    settarget(660, 570, PI, true);
+    
+    Thread::signal_wait(0x01);
+    settarget(400, 870, PI, true);
+
+    Thread::signal_wait(0x01);
+    settarget(660, 870, PI, false);
+    
+    flag_terminate = true;
+    */
+
+    // goes to the mid
+    Thread::signal_wait(0x01);
+    settarget(1500, 1000, PI/2, true);
+
+    // left roll
+    Thread::signal_wait(0x01);
+    settarget(500, 1700, PI/2, true);
+
+    // mid
+    Thread::signal_wait(0x01);
+    settarget(1500, 1000, PI/2, true);
+
+    // map
+    Thread::signal_wait(0x01);
+    settarget(1500, 1700, PI/2, true);
+
+    // mid
+    Thread::signal_wait(0x01);
+    settarget(1500, 1000, -PI/2, true);
+
+    // home
+    Thread::signal_wait(0x01);
+    settarget(500, 500, 0, true);
+
+    Thread::signal_wait(0x01);
+    flag_terminate = true;
+    //OLED3 = true;
+
+    while (true) {
+        Thread::wait(osWaitForever);
+    }
+}
\ No newline at end of file