#include "common.h"

//#include "ALL_Variables.h"


void Init_All(void)
{
    gpio_init(KEY_Down, GPI, GPIO_HIGH, GPI_PULL_UP);//ĸʼ
    gpio_init(KEY_Left, GPI, GPIO_HIGH, GPI_PULL_UP);
    gpio_init(KEY_Right, GPI, GPIO_HIGH, GPI_PULL_UP);
    gpio_init(KEY_Enter, GPI, GPIO_HIGH, GPI_PULL_UP);

    gpio_init(LED1, GPO, GPIO_HIGH, GPO_PUSH_PULL);//ĸLED
    gpio_init(LED2, GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(LED3, GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(LED4, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    gpio_init(DIR_X_Left, GPO, GPIO_HIGH, GPO_PUSH_PULL);//ĸʼ
    gpio_init(DIR_X_Right,GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(DIR_Y, GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(DIR_Z, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    gpio_init(PWM_X_Left, GPO, GPIO_HIGH, GPO_PUSH_PULL);//PWMIOڳʼ
    gpio_init(PWM_X_Right,GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(PWM_Y, GPO, GPIO_HIGH, GPO_PUSH_PULL);
    gpio_init(PWM_Z, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    gpio_init(Chess_Gripper, GPO, GPIO_HIGH, GPO_PUSH_PULL);

    ips200_init(IPS200_TYPE_PARALLEL8);//˫

//    gpio_init(P21_2, GPO, GPIO_LOW, GPO_PUSH_PULL);
//    gpio_init(P21_4, GPO, GPIO_LOW, GPO_PUSH_PULL);
//    gpio_init(P21_3, GPO, GPIO_LOW, GPO_PUSH_PULL);
//    gpio_init(P21_5, GPO, GPIO_LOW, GPO_PUSH_PULL);
}


//-------------------------------------------------------------------------------------------------------------------
//      ״̬ɨ
// ʹʾ     Key_Scan();
// עϢ     ѭ PIT ж
// עϢ     key_press_timeʼΪСΪ̰û
// עϢ     ˺ڶʱ3еãִʱ״̬洢Key_State[]
//-------------------------------------------------------------------------------------------------------------------
void Key_Scan(void)
{
    uint8 i=0;
    for(i = 0;i<5; i ++)
    {
        if( !gpio_get_level(Key_index[i]))//¿ʼΪСΪ̰û
        {
            key_press_time[i]++;
            if(key_press_time[i]>=KEY_LongPress_Period)//ʱ䰴
            {
                Key_State[i]=KEY_LongPress;
            }
        }
        else
        {
            if((Key_State[i]!=KEY_LongPress) && (key_press_time[i]>=KEY_ShortPress_Period))
            {
                Key_State[i]=KEY_ShortPress;
            }
            else
            {
                Key_State[i]=KEY_Release;
            }
            key_press_time[i]=0;
         }
    }
}
//-------------------------------------------------------------------------------------------------------------------
//      ״̬ȡ
// ʹʾ     if(Key_Get(Key_Up)==KEY_Release);//԰״̬ж
// עϢ     ˺Ļ
//-------------------------------------------------------------------------------------------------------------------
KEY_State Key_Get(Key_index_enum pin)
{
    return Key_State[pin];
}
//-------------------------------------------------------------------------------------------------------------------
//      ״̬
// ʹʾ     Key_clear_state(Key_Up);
// עϢ     ˺ڰ״̬ȡĽβ;ʵֹ󣬰ɨɨ˰ʱѾ״̬㣬˺˫ر
//-------------------------------------------------------------------------------------------------------------------
void Key_clear_state (Key_index_enum key_n)
{
    Key_State[key_n] = KEY_Release;
}


