#include <stdbool.h>
#include "ps2_io.h"
#include "gpio_api.h"


static gpio_t clock;
static gpio_t data;

/*
 * Clock
 */
void clock_init(void)
{
    gpio_init(&clock, P0_9);
    gpio_mode(&clock, OpenDrain|PullNone);
}

void clock_lo(void)
{
    gpio_dir(&clock, PIN_OUTPUT);
    gpio_write(&clock, 0);
}
void clock_hi(void)
{
    gpio_dir(&clock, PIN_OUTPUT);
    gpio_write(&clock, 1);
}

bool clock_in(void)
{
    gpio_dir(&clock, PIN_INPUT);
    return gpio_read(&clock);
}

/*
 * Data
 */
void data_init(void)
{
    gpio_init(&data, P0_8);
    gpio_mode(&data, OpenDrain|PullNone);
}

void data_lo(void)
{
    gpio_dir(&data, PIN_OUTPUT);
    gpio_write(&data, 0);
}

void data_hi(void)
{
    gpio_dir(&data, PIN_OUTPUT);
    gpio_write(&data, 1);
}

bool data_in(void)
{
    gpio_dir(&data, PIN_INPUT);
    return gpio_read(&data);
}