CatPot 2015-2016 / Mbed 2 deprecated CatPot_2v10_T_Main

Dependencies:   mbed AQM1602 HMC6352 PID

Revision:
19:967207de919d
Parent:
18:3a42a931c95a
Child:
20:d69ce8f47f1d
--- a/main_processing/strategy/strategy.cpp	Tue Mar 15 12:03:51 2016 +0000
+++ b/main_processing/strategy/strategy.cpp	Wed Mar 16 02:58:31 2016 +0000
@@ -398,6 +398,10 @@
         sys.LineBlind=0;
         sys.PingBlind=0;
         
+        sys.HomeBlind=1;
+        sys.DriBlind=1;
+        
+        
         sys.ir_pow_table = 0;
         
         data.lnCorner[L_LINE]=data.lnCorner[R_LINE]=data.lnCorner[F_LINE]=data.lnCorner[B_LINE]=LINE_EMPTY;
@@ -410,16 +414,63 @@
         LineLiberate();
         LineRankClear();
         
+        cmps_set.AtkDeg=0;
+        
+        //sys.BallHoldJudgeFlag=0;
+        //sys.BallHoldFlag=0;
+        
+        
         sys.KickOffFlag=0;
     }
     //data
-    if(sys.IrFlag==1){ReadIr();sys.IrFlag=0;}
+    /*if(sys.IrFlag==1){ReadIr();sys.IrFlag=0;}
     if(sys.PidFlag==1){PidUpdate();sys.PidFlag=0;}
     if(sys.UswFlag==1){ReadPing();sys.UswFlag=0;}
-    if(sys.UswFlag2==1){ReadPing2();sys.UswFlag2=0;}
+    if(sys.UswFlag2==1){ReadPing2();sys.UswFlag2=0;}*/
+    if(sys.InfoFlag==1){ReadInfo();sys.InfoFlag=0;}
+    
     //if(sys.KickFlag==1){DriveSolenoid();}
     data.lnRaw = LineRaw;
     data.lnHold = LineHold;
+    data.ball = (BallCheckerA.read_u16()<20000);
+    
+    /*
+    if(sys.DriBlind==0){
+        if((data.ball==1)&&(sys.BallHoldJudgeFlag==0)){
+            sys.BallHoldJudgeFlag=1;
+            Ball_catch.attach(&AdmitBallHold, 1.0);
+        }
+        
+        if((data.ball==0)&&(sys.BallHoldFlag==1)&&(sys.BallHoldGiveUpFlag==0)){
+            sys.BallHoldGiveUpFlag=1;
+            Ball_leave.attach(&GiveUpBallHold, 1.0);
+        }
+        if((data.ball==1)&&(sys.BallHoldFlag==1)){
+            sys.BallHoldGiveUpFlag=0;
+            Ball_leave.detach();
+        }
+        
+        if((data.ping[B_PING]<30)&&(sys.BallHoldFlag==1)){
+            cmps_set.AtkDeg = 150;
+            Kick_now.attach(&DriveSolenoid, .125);
+            Front_now.attach(&FaceToFront, .75);
+            
+            sys.BallHoldJudgeFlag=0;
+            sys.BallHoldFlag=0;
+            Ball_catch.detach();
+            Ball_leave.detach();
+        }
+    }
+    else{
+        sys.BallHoldFlag=0;
+    }*/
+    
+    if(data.irNotice==IR_NONE){
+        sys.BackHomeFlag=(sys.HomeBlind==0);
+    }
+    else{
+        sys.BackHomeFlag=0;
+    }
     
     if(data.ping[B_PING]<=30){
         sys.ir_pow_table=1;
@@ -448,7 +499,6 @@
     ir_y_turn = ir_move_val[0][data.irNotice][data.irPosition][IR_Y_TURN];
     */
     
-    if(sys.IrBlind==1) data.irNotice=IR_NONE;
     if(data.irNotice==IR_CLOSER){
         ir_pow = sys.s_pow;
     }
@@ -462,6 +512,38 @@
         ir_pow = 0;
     }
     
+    if((sys.DriBlind==0)&&(data.irNotice==IR_CLOSER)&&((data.irPosition==10)||(data.irPosition==11)||(data.irPosition==12))){
+        sys.DribbleFlag=1;
+        ir_pow=20;
+        /*if(cmps_set.AtkDeg==0){
+            if(data.irPosition==10) cmps_set.AtkDeg=30;
+            if(data.irPosition==11) cmps_set.AtkDeg=0;
+            if(data.irPosition==12) cmps_set.AtkDeg=-30;
+        }
+        else if(cmps_set.AtkDeg>0){
+            if(data.irPosition==10) cmps_set.AtkDeg=0;
+            if(data.irPosition==11) cmps_set.AtkDeg=30;
+            if(data.irPosition==12) cmps_set.AtkDeg=0;
+            
+        }
+        else if(cmps_set.AtkDeg<0){
+            if(data.irPosition==10) cmps_set.AtkDeg=0;
+            if(data.irPosition==11) cmps_set.AtkDeg=-30;
+            if(data.irPosition==12) cmps_set.AtkDeg=0;
+        }*/
+    }
+    else{
+        sys.DribbleFlag=0;
+        cmps_set.AtkDeg=0;
+        
+        /*sys.BallHoldJudgeFlag=0;
+        sys.BallHoldFlag=0;
+        Ball_catch.detach();
+        Ball_leave.detach();*/
+    }
+    
+    if(sys.IrBlind==1) ir_pow=0;
+    
     
     if((data.ping[R_PING]<data.ping[L_PING])&&(data.irPosition==17)){
         ir_x_turn = -ir_x_turn;
@@ -501,8 +583,12 @@
         */
         
     }
-    if(data.FieldSpot==LINE_OUTSIDE) LED = 0x9;
-    if(data.FieldSpot==LINE_INSIDE) LED = 0x6;
+    //if(data.FieldSpot==LINE_OUTSIDE) LED = 0x9;
+    //if(data.FieldSpot==LINE_INSIDE) LED = 0x6;
+    
+    //LED = 0xFF*sys.BallHoldFlag;
+    
+    LED = 0xFF*(data.ping[B_PING]<30);
     
     //LED = ((data.lnOrder[0]!=LINE_EMPTY)<<2) | ((data.lnOrder[1]!=LINE_EMPTY)<<1) | ((data.lnOrder[2]!=LINE_EMPTY)<<0);