/* led.c */ extern void led_init(void); extern void led1_set(int v); extern void led2_set(int v); extern void led3_set(int v); extern void led5_set(int v); extern void led_clear(void); extern void led_set(void); extern void led_blink(unsigned ms); extern void led_tick(void); extern void led_slow_tick(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 void ticker_init(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 volatile ring_t usart2_rx_ring; extern volatile ring_t usart2_tx_ring; extern volatile ring_t usart1_rx_ring; extern volatile ring_t usart1_tx_ring; extern void usart2_isr(void); extern void usart2_queue(uint8_t d); extern void usart2_drain(void); extern int usart2_write(char *ptr, int len, int blocking); 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_rings_init(void); 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 _fstat(int file, struct stat *st); extern int _lseek(int file, int offset, int whence); extern int isatty(int file); extern void stdio_drain(void); /* lwip_glue.c */ extern struct netif if0; extern uint32_t sys_now(void); extern void dispatch_lwip(void); extern void start_lwip(void); extern sys_prot_t sys_arch_protect(void); extern void sys_arch_unprotect(sys_prot_t lev); /* steth.c */ extern void steth_calculate_mac(void); extern void eth_isr(void); extern err_t steth_lwip_init(struct netif *netif); extern void steth_init(void); extern void steth_slow_tick(void); /* msf.c */ extern uint64_t msf_last_happy; extern void exti1_isr(void); extern void msf_dispatch(void); extern void msf_init(void); /* abs.c */ /* pll.c */ extern void pll_set_offset(EPOCH epoch, uint64_t abs, uint64_t ptp); extern void pll_dispatch(uint64_t happy, uint64_t edge, uint64_t ptp_edge, const char *src); extern void pll_check(void); /* main.c */ extern int time_known; extern const struct rcc_clock_scale hse_10mhz_3v3_168; extern int main(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 double ra_normalize(double ra); extern double time_utc_to_ra(UTC u); extern double time_st_to_ra(ST st); extern ST time_ra_to_st(double ra); extern ST time_utc_to_lst(UTC u, double lon); extern int time_ra_cmp(double a, double b); extern EPOCH time_ra_to_next_epoch(EPOCH l, double tra); /* ntp.c */ extern void ntp_init(void); /* dcf77.c */ extern uint64_t dcf77_last_happy; extern void exti2_isr(void); extern void dcf77_dispatch(void); extern void dcf77_init(void); /* util.c */ extern int check_parity(uint8_t *d, unsigned s, unsigned e, uint8_t p); extern unsigned bcd(uint8_t *d, unsigned s, unsigned e); extern unsigned le_bcd(uint8_t *d, unsigned s, unsigned e); extern unsigned xtoi(char c); /* stats.c */ /* gps.c */ extern unsigned gps_sats_searching; extern unsigned gps_sats_inop; extern unsigned gps_sats_locked; extern unsigned gps_sats_with_e; extern int gps_initting; extern uint64_t gps_last_happy; extern char gps_info[60]; extern void exti9_5_isr(void); extern double gps_lat; extern double gps_lon; extern char gps_pos[128]; extern int gps_utc_diff; extern int gps_wday; extern char gps_svinfo[4096]; extern char gps_svin_info[128]; extern void gps_dispatch(void); extern int gps_init(void); extern int gps_almanac(void); extern void gps_dump_almanac(void); extern void gps_dump_eph(void); extern int gps_bs(void); extern void gps_reset(void); /* hexdump.c */ extern void hexdump(void *_d, int len); /* bits.c */ extern void dump_bits(char *wot, uint8_t *bits); /* max7219.c */ extern void max7219_cls(void); extern void max7219_refresh(void); extern uint8_t max7219_char_to_bits(unsigned v); extern void max7219_write_dd(int u, unsigned x, unsigned y); extern void max7219_write_string(const char *s, unsigned x, unsigned y); extern void max7219_write_dp(unsigned x, unsigned y); extern void max7219_write_hh(int v, unsigned x, unsigned y); extern void max7219_init(int on); /* report.c */ extern void report_time(const char *src, EPOCH e, uint64_t abs, const char *info); /* sysclk.c */ extern void sysclk_event(void); extern uint64_t sysclk_extend(uint32_t now); extern void sysclk_dispatch(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, int blocking); extern void cdcacm_set_config(usbd_device *usbd_dev, uint16_t wValue); extern void cdcacm_rings_init(void); /* usb.c */ extern uint8_t usbd_control_buffer[128]; extern usbd_device *usb_device; extern void otg_fs_isr(void); extern void usb_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); /* adc.c */ extern uint8_t pot_brightness; extern void adc_dispatch(void); extern void adc_init(void); /* dummy_kb.c */ extern const struct usb_interface_descriptor dummy_kb_iface; extern const struct usb_iface_assoc_descriptor dummy_kb_iface_assoc; /* ref.c */ extern uint64_t ref_last_update; extern int ref_valid; extern int ref_offset_known; extern uint64_t ref_extend_irq(uint32_t now); extern uint64_t ref_extend(uint32_t now); extern uint64_t ref_get_irq(void); extern uint64_t ref_get(void); extern void ref_slow_tick(void); extern uint64_t make_happy(uint64_t abs, int64_t shift); extern char ref_info[128]; extern void ref_dispatch(uint64_t edge, const char *src); extern void ref_set_offset(EPOCH epoch, uint64_t abs); extern EPOCH ref_decompose_diff(int64_t diff); extern EPOCH ref_decompose(uint64_t abs); /* ptp.c */ extern int ptp_offset_known; extern uint64_t ptp_to_u64(uint32_t l, uint32_t h); extern uint64_t ptp_get(void); extern char ptp_info[128]; extern void ptp_dispatch(uint64_t edge, const char *src); extern void ptp_set_offset(EPOCH epoch, uint64_t abs); extern EPOCH ptp_decompose_diff(int64_t diff); extern EPOCH ptp_decompose(uint64_t abs); extern void ptp_slow_tick(void); /* display.c */ extern void display_report_fix(char fix, char fix2); extern void display_report_svin(int valid, int active); extern void display_dispatch(void); /* httpd.c */ extern int fs_open_custom(struct fs_file *file, const char *name); extern void fs_close_custom(struct fs_file *file); extern void cgi_init(void); /* alarm.c */ extern EPOCH alarm; extern void alarm_dispatch(void); /* meteotime.c */ extern uint32_t meteotime_data[(((((37)*(60)*(24)))+(32 -1))/(32))]; extern void meteotime_save(UTC *u, uint8_t *bits); /* ephemeris.c */ extern Ephemeris ephemeris[32]; /* fp.c */ extern char *fd1(double f, int s, int bp, int dp); extern char *fd2(double f, int s, int bp, int dp); extern char *fd3(double f, int s, int bp, int dp);