/* tims_keyboard.c */ extern int main(void); /* dfu.c */ extern const struct usb_dfu_descriptor dfu_function; extern const struct usb_interface_descriptor dfu_iface; extern int dfu_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, void (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req)); /* keyboard.c */ extern const struct usb_endpoint_descriptor keyboard_endpoint; extern const struct usb_interface_descriptor keyboard_iface; extern void keyboard_get_descriptor(uint8_t **buf, uint16_t *len); extern void keyboard_dispatch(int sc, int updown); extern void keyboard_error(void); extern int keyboard_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, void (**complete)(usbd_device *usbd_dev, struct usb_setup_data *req)); /* usb.c */ extern const struct usb_device_descriptor dev; extern const struct usb_interface ifaces[]; extern const struct usb_config_descriptor config; extern usbd_device *usbd_dev; extern int usb_is_suspended; extern int usb_wakeup_host(void); extern void usb_set_config(usbd_device *usbd_dev, uint16_t wValue); extern void usb_init(void); extern void usb_poll(void); extern void usb_run(void); /* consumer.c */ extern const struct usb_endpoint_descriptor consumer_endpoint; extern const struct usb_interface_descriptor consumer_iface; extern void consumer_get_descriptor(uint8_t **buf, uint16_t *len); extern void consumer_dispatch(int bit, int updown); extern void consumer_error(void); /* atkbd.c */ extern void atkbd_dispatch_error(void); extern void exti0_isr(void); extern void atkbd_set(int clk, int dat); extern int atkbd_send(uint8_t d); extern int atkbd_request_echo(void); extern int atkbd_set_leds(uint8_t leds); extern int atkbd_set_scanset(uint8_t scanset); extern int atkbd_set_mb(void); extern int atkbd_set_mbr(void); extern void atkbd_init(void); extern void atkbd_start(void); /* ring.c */ extern void ring_init(volatile ring_t *r, uint8_t *buf, size_t len); extern int ring_write_byte(volatile ring_t *r, uint8_t c); extern int ring_read_byte(volatile ring_t *r, uint8_t *c); extern int ring_write(volatile ring_t *r, uint8_t *buf, size_t len, int blocking); extern int ring_empty(volatile ring_t *r); /* usart.c */ extern ring_t rx1_ring; extern ring_t tx1_ring; extern void usart1_isr(void); extern void usart1_queue(uint8_t d); extern void usart1_drain(void); extern int usart1_write(char *ptr, int len, int blocking); extern void usart_init(void); /* stdio.c */ extern int _open(const char *name, int flags, int mode); extern int _close(int file); extern int _write(int file, char *buf, int nbytes); extern int _read(int file, char *buf, int nbytes); extern int _lseek(int file, int offset, int whence); extern int isatty(int file); extern void stdio_drain(void); /* ticker.c */ extern volatile uint32_t ticks; extern void delay_us(uint32_t d); extern void sys_tick_handler(void); extern void delay_ms(uint32_t d); extern int timed_out(uint32_t then, unsigned int ms); extern int timed_out_cycles(uint32_t then, unsigned int cycles); extern void ticker_init(void); /* keymap.c */ extern void scancode_error(void); extern void scancode_dispatch(int key, int updown);