/* main.c */ extern int main(void); /* cdcacm.c */ extern ring_t cdcacm_rx_ring; extern ring_t cdcacm_tx_ring; extern const struct usb_interface_descriptor comm_iface; extern const struct usb_interface_descriptor data_iface; extern const struct usb_iface_assoc_descriptor cdc_iface_assoc; extern enum usbd_request_return_codes cdcacm_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, usbd_control_complete_callback *complete); extern void cdcacm_tick(void); extern int cdcacm_write(char *ptr, int len); extern void cdcacm_set_config(usbd_device *usbd_dev, uint16_t wValue); extern void cdcacm_rings_init(void); /* dfu.c */ extern const struct usb_dfu_descriptor dfu_function; extern const struct usb_interface_descriptor dfu_iface; extern const struct usb_iface_assoc_descriptor dfu_iface_assoc; extern enum usbd_request_return_codes dfu_control_request(usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, uint16_t *len, usbd_control_complete_callback *complete); /* ring.c */ extern void ring_init(ring_t *r, uint8_t *buf, size_t len); extern int ring_write_byte(ring_t *r, uint8_t c); extern int ring_empty(ring_t *r); extern int ring_read_byte(ring_t *r, uint8_t *c); extern int ring_write(ring_t *r, uint8_t *buf, size_t len); /* usart.c */ extern ring_t usart1_rx_ring; extern ring_t usart1_tx_ring; extern void usart1_isr(void); extern void usart1_kick(void); extern int _write(int file, char *ptr, int len); extern int usart_transact(uint32_t u, void *_b, size_t txl, size_t rxl); extern void usart_init(void); /* ticker.c */ extern volatile uint32_t ticks; extern void delay_us(uint32_t d); extern void sys_tick_handler(void); extern void ticker_init(void); extern void delay_ms(uint32_t d); /* dummy_kb.c */ extern const struct usb_interface_descriptor dummy_kb_iface; extern const struct usb_iface_assoc_descriptor dummy_kb_iface_assoc; /* usb.c */ extern uint8_t usbd_control_buffer[128]; extern usbd_device *usb_device; extern void usb_hp_can_tx_isr(void); extern void usb_lp_can_rx0_isr(void); extern void usb_init(void); /* rtc.c */ extern volatile unsigned rtc_ready; extern void rtc_isr(void); extern EPOCH rtc_get(void); extern void rtc_init(void); /* time_fn.c */ extern EPOCH time_epoch_sub(EPOCH a, EPOCH b); extern EPOCH time_epoch_add(EPOCH a, EPOCH b); extern UTC time_epoch_to_utc(EPOCH epoch); extern EPOCH time_utc_to_epoch(UTC u); extern void utc_to_str(char *dst, UTC *u); extern void time_print_utc(const char *p, UTC *u, const char *t); extern void time_print_epoch(const char *p, EPOCH e, const char *t); extern double time_utc_to_tjd(UTC u); extern EPOCH time_tjd_to_epoch(double tjd); extern UTC time_tjd_to_utc(double tjd); extern RA ra_normalize(RA r); extern RA time_utc_to_ra(UTC u); extern RA time_st_to_ra(ST st); extern ST time_ra_to_st(RA r); extern ST time_utc_to_lst(UTC u, double lon); extern MTIME time_to_metric(EPOCH e, UTC u); extern MTIME time_utc_to_metric(UTC u); extern MTIME time_epoch_to_metric(EPOCH e); extern void time_print_metric(const char *p, MTIME *m, const char *t); /* events.c */ extern double autumnal_equinox(unsigned y); /* hands.c */ extern unsigned hands_pos[2]; extern unsigned hands_ready; extern void hands_tick(void); /* motor.c */ extern void motor_tick(void); extern void motor_init(void); /* leds.c */ extern void led_tick(void); extern void leds_init(void); /* tmc2209.c */ extern int tmc2209_write(uint32_t uart, uint8_t tmc_addr, uint8_t reg, uint32_t value); extern int tmc2209_read(uint32_t uart, uint8_t tmc_addr, uint8_t reg, uint32_t *value); extern int tmc2209_config(uint32_t u); extern int tmc2209_init(void);