#include "ball.h"
#include "main.h"
#include "cmsis_os.h"
#include "FreeRTOS.h"
#include "bsp_delay.h"
#include "go.h"

// PC6  ball_up_Pin读运球  检测到输出0,未检测到输出1
// PE13 down_Pin 下推
// PE14 paw_Pin  爪子
// PI6 ball_in2_Pin 读接球
// PI7 ball_in1_Pin 读接球
// PE11 key_Pin 收网
#define ballcome 1
#define balldown 0

extern GO go;
//光电识别
int ball_in(void) 
{
        return (HAL_GPIO_ReadPin(ball_up_GPIO_Port, ball_up_Pin));
}

int pass_ball(void)
{


        return (HAL_GPIO_ReadPin(ball_in1_GPIO_Port, ball_in1_Pin));
}

//运球
void handling_ball(int hand, int angle) 
{
   
     int ball_state =0;//有球
     int paw_state =0;//获取爪子开合状态
    if( hand==1)
    {
        HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_SET);
        paw_state =1;//爪子开
     //   osDelay(5);
        HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_RESET);//打出
        osDelay(500);
        angle=80;
        GO_TURN_ball(TURN,go,angle);//停止运球
        ball_state =1;//无球
        osDelay(500);
        HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_SET);//收回
        ball_state =ball_in();//获取爪子有无球状态
    }
    else if (hand==0)
    {
        angle=20;
        GO_TURN_ball(TURN,go,angle);//停止运球
    }
    if (paw_state==1&&ball_state==0)
    {
        HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_RESET);//爪子合
        osDelay(500);
        ball_state=1;//有球清除标志
        paw_state=0;//爪子合清除标志
	    hand=0;

    }
    
    
}

//接球
int catch_ball(int inball) 
{
    inball =pass_ball();
    if(inball==1)
    {
        //接球
        HAL_GPIO_WritePin(key_GPIO_Port, key_Pin, GPIO_PIN_SET);
        return ballcome;
    }
    else
    {
        HAL_GPIO_WritePin(key_GPIO_Port, key_Pin, GPIO_PIN_RESET);
        return balldown;
    }

    
}
