From 8c7ee88332652e7e79f6c1e4baacabe2183f7e8e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 2 Mar 2021 12:54:03 +0000 Subject: working, with hybrid FLL/PLL, new refclk input and support for max7219 displays, neo 5 and neo 7 and a bazillion other fixes --- app/prototypes.h | 68 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 22 deletions(-) (limited to 'app/prototypes.h') diff --git a/app/prototypes.h b/app/prototypes.h index 4b20c86..e6b631b 100644 --- a/app/prototypes.h +++ b/app/prototypes.h @@ -21,10 +21,10 @@ 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 rx2_ring; -extern volatile ring_t tx2_ring; -extern volatile ring_t rx1_ring; -extern volatile ring_t tx1_ring; +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); @@ -62,22 +62,10 @@ extern void exti1_isr(void); extern void msf_dispatch(void); extern void msf_init(void); /* abs.c */ -extern uint64_t abs_extend(uint32_t now); -extern void abs_meh(void); -extern uint64_t abs_get(void); -extern void abs_slow_tick(void); /* pll.c */ -extern int64_t pll_freq; -extern uint64_t pll_last_update; -extern int pll_valid; -extern int pll_ready; -extern void pll_meh(void); -extern uint64_t make_happy(uint64_t abs, int64_t shift); -extern void pll_dispatch(uint64_t happy, uint64_t edge, const char *src); -extern void pll_set_offset(EPOCH epoch, uint64_t abs); -extern EPOCH _pll_decompose(uint64_t abs); -extern EPOCH pll_decompose_diff(int64_t diff); -extern EPOCH pll_decompose(uint64_t abs); +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 int main(void); @@ -104,6 +92,11 @@ extern unsigned bcd(uint8_t *d, unsigned s, unsigned e); extern unsigned le_bcd(uint8_t *d, unsigned s, unsigned e); /* 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 void exti9_5_isr(void); extern double gps_lat; @@ -121,12 +114,10 @@ extern void hexdump(void *_d, int len); /* bits.c */ extern void dump_bits(char *wot, uint8_t *bits); /* max7219.c */ -extern unsigned fix_dots; -extern unsigned fix_dots_even; +extern void max7219_init(int on); extern void max7219_report_fix(char fix, char fix2); extern void max7219_report_svin(int valid, int active); extern void max7219_dispatch(void); -extern void max7219_init(int on, int brightness); /* report.c */ extern void report_time(const char *src, EPOCH e, uint64_t abs, const char *info); /* sysclk.c */ @@ -138,6 +129,8 @@ 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 int 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); @@ -150,4 +143,35 @@ 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 int 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 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 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); -- cgit v1.2.3