summaryrefslogtreecommitdiff
path: root/hid/pico/src/ph_ps2_phy.h
blob: a6a0fc13a96296c61d999f144a0aa2e549981d1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once

#include "ph_types.h"
#include "hardware/pio.h"
#include "pico/util/queue.h"

typedef void (*rx_callback)(u8 byte, u8 prev_byte);

typedef struct {
  PIO pio;
  uint sm;
  queue_t qbytes;
  queue_t qpacks;
  rx_callback rx;
  u8 last_rx;
  u8 last_tx;
  u8 sent;
  u8 busy;
} ph_ps2_phy;

void ph_ps2_phy_init(ph_ps2_phy* this, PIO pio, u8 data_pin, rx_callback rx);
void ph_ps2_phy_task(ph_ps2_phy* this);