aboutsummaryrefslogtreecommitdiff
path: root/FT245.h
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2024-05-15 20:00:51 +0200
committerLeonard Kugis <leonard@kug.is>2024-05-15 20:00:51 +0200
commit97cbb9d36288f624906ad6697d44677a105fe864 (patch)
treef1f2c883580e904edfc9652b866278e3fe218672 /FT245.h
parent82de9a951b1a43c4abc71425be03877a43063584 (diff)
Implemented static and dynamic modes
Diffstat (limited to 'FT245.h')
-rw-r--r--FT245.h612
1 files changed, 410 insertions, 202 deletions
diff --git a/FT245.h b/FT245.h
index 4ccd118..b5438d3 100644
--- a/FT245.h
+++ b/FT245.h
@@ -6,6 +6,9 @@
#include <stdbool.h>
#include "circular_buffer.h"
+#define FT245_DRIVER_MODE_DYNAMIC 1
+#define FT245_DRIVER_MODE_STATIC 0
+
#define FT245_BUFFER_SIZE_TX 64
#define FT245_BUFFER_SIZE_RX 64
@@ -21,215 +24,420 @@ typedef struct ft245 {
// CLK state
bool clk_state;
uint8_t clk_count;
+#if(FT245_DRIVER_MODE_DYNAMIC == 1)
// To input
- void (*const DATA0_to_input)(void);
- void (*const DATA1_to_input)(void);
- void (*const DATA2_to_input)(void);
- void (*const DATA3_to_input)(void);
- void (*const DATA4_to_input)(void);
- void (*const DATA5_to_input)(void);
- void (*const DATA6_to_input)(void);
- void (*const DATA7_to_input)(void);
- void (*const DATA8_to_input)(void);
- void (*const DATA9_to_input)(void);
- void (*const DATA10_to_input)(void);
- void (*const DATA11_to_input)(void);
- void (*const DATA12_to_input)(void);
- void (*const DATA13_to_input)(void);
- void (*const DATA14_to_input)(void);
- void (*const DATA15_to_input)(void);
- void (*const DATA16_to_input)(void);
- void (*const DATA17_to_input)(void);
- void (*const DATA18_to_input)(void);
- void (*const DATA19_to_input)(void);
- void (*const DATA20_to_input)(void);
- void (*const DATA21_to_input)(void);
- void (*const DATA22_to_input)(void);
- void (*const DATA23_to_input)(void);
- void (*const DATA24_to_input)(void);
- void (*const DATA25_to_input)(void);
- void (*const DATA26_to_input)(void);
- void (*const DATA27_to_input)(void);
- void (*const DATA28_to_input)(void);
- void (*const DATA29_to_input)(void);
- void (*const DATA30_to_input)(void);
- void (*const DATA31_to_input)(void);
- void (*const BE0_to_input)(void);
- void (*const BE1_to_input)(void);
- void (*const BE2_to_input)(void);
- void (*const BE3_to_input)(void);
+ void (*DATA0_to_input)(void);
+ void (*DATA1_to_input)(void);
+ void (*DATA2_to_input)(void);
+ void (*DATA3_to_input)(void);
+ void (*DATA4_to_input)(void);
+ void (*DATA5_to_input)(void);
+ void (*DATA6_to_input)(void);
+ void (*DATA7_to_input)(void);
+ void (*DATA8_to_input)(void);
+ void (*DATA9_to_input)(void);
+ void (*DATA10_to_input)(void);
+ void (*DATA11_to_input)(void);
+ void (*DATA12_to_input)(void);
+ void (*DATA13_to_input)(void);
+ void (*DATA14_to_input)(void);
+ void (*DATA15_to_input)(void);
+ void (*DATA16_to_input)(void);
+ void (*DATA17_to_input)(void);
+ void (*DATA18_to_input)(void);
+ void (*DATA19_to_input)(void);
+ void (*DATA20_to_input)(void);
+ void (*DATA21_to_input)(void);
+ void (*DATA22_to_input)(void);
+ void (*DATA23_to_input)(void);
+ void (*DATA24_to_input)(void);
+ void (*DATA25_to_input)(void);
+ void (*DATA26_to_input)(void);
+ void (*DATA27_to_input)(void);
+ void (*DATA28_to_input)(void);
+ void (*DATA29_to_input)(void);
+ void (*DATA30_to_input)(void);
+ void (*DATA31_to_input)(void);
+ void (*BE0_to_input)(void);
+ void (*BE1_to_input)(void);
+ void (*BE2_to_input)(void);
+ void (*BE3_to_input)(void);
// To output
- void (*const DATA0_to_output)(void);
- void (*const DATA1_to_output)(void);
- void (*const DATA2_to_output)(void);
- void (*const DATA3_to_output)(void);
- void (*const DATA4_to_output)(void);
- void (*const DATA5_to_output)(void);
- void (*const DATA6_to_output)(void);
- void (*const DATA7_to_output)(void);
- void (*const DATA8_to_output)(void);
- void (*const DATA9_to_output)(void);
- void (*const DATA10_to_output)(void);
- void (*const DATA11_to_output)(void);
- void (*const DATA12_to_output)(void);
- void (*const DATA13_to_output)(void);
- void (*const DATA14_to_output)(void);
- void (*const DATA15_to_output)(void);
- void (*const DATA16_to_output)(void);
- void (*const DATA17_to_output)(void);
- void (*const DATA18_to_output)(void);
- void (*const DATA19_to_output)(void);
- void (*const DATA20_to_output)(void);
- void (*const DATA21_to_output)(void);
- void (*const DATA22_to_output)(void);
- void (*const DATA23_to_output)(void);
- void (*const DATA24_to_output)(void);
- void (*const DATA25_to_output)(void);
- void (*const DATA26_to_output)(void);
- void (*const DATA27_to_output)(void);
- void (*const DATA28_to_output)(void);
- void (*const DATA29_to_output)(void);
- void (*const DATA30_to_output)(void);
- void (*const DATA31_to_output)(void);
- void (*const BE0_to_output)(void);
- void (*const BE1_to_output)(void);
- void (*const BE2_to_output)(void);
- void (*const BE3_to_output)(void);
+ void (*DATA0_to_output)(void);
+ void (*DATA1_to_output)(void);
+ void (*DATA2_to_output)(void);
+ void (*DATA3_to_output)(void);
+ void (*DATA4_to_output)(void);
+ void (*DATA5_to_output)(void);
+ void (*DATA6_to_output)(void);
+ void (*DATA7_to_output)(void);
+ void (*DATA8_to_output)(void);
+ void (*DATA9_to_output)(void);
+ void (*DATA10_to_output)(void);
+ void (*DATA11_to_output)(void);
+ void (*DATA12_to_output)(void);
+ void (*DATA13_to_output)(void);
+ void (*DATA14_to_output)(void);
+ void (*DATA15_to_output)(void);
+ void (*DATA16_to_output)(void);
+ void (*DATA17_to_output)(void);
+ void (*DATA18_to_output)(void);
+ void (*DATA19_to_output)(void);
+ void (*DATA20_to_output)(void);
+ void (*DATA21_to_output)(void);
+ void (*DATA22_to_output)(void);
+ void (*DATA23_to_output)(void);
+ void (*DATA24_to_output)(void);
+ void (*DATA25_to_output)(void);
+ void (*DATA26_to_output)(void);
+ void (*DATA27_to_output)(void);
+ void (*DATA28_to_output)(void);
+ void (*DATA29_to_output)(void);
+ void (*DATA30_to_output)(void);
+ void (*DATA31_to_output)(void);
+ void (*BE0_to_output)(void);
+ void (*BE1_to_output)(void);
+ void (*BE2_to_output)(void);
+ void (*BE3_to_output)(void);
// Set
- void (*const CLK_set)(void);
- void (*const RXF_N_set)(void);
- void (*const TXE_N_set)(void);
- void (*const DATA0_set)(void);
- void (*const DATA1_set)(void);
- void (*const DATA2_set)(void);
- void (*const DATA3_set)(void);
- void (*const DATA4_set)(void);
- void (*const DATA5_set)(void);
- void (*const DATA6_set)(void);
- void (*const DATA7_set)(void);
- void (*const DATA8_set)(void);
- void (*const DATA9_set)(void);
- void (*const DATA10_set)(void);
- void (*const DATA11_set)(void);
- void (*const DATA12_set)(void);
- void (*const DATA13_set)(void);
- void (*const DATA14_set)(void);
- void (*const DATA15_set)(void);
- void (*const DATA16_set)(void);
- void (*const DATA17_set)(void);
- void (*const DATA18_set)(void);
- void (*const DATA19_set)(void);
- void (*const DATA20_set)(void);
- void (*const DATA21_set)(void);
- void (*const DATA22_set)(void);
- void (*const DATA23_set)(void);
- void (*const DATA24_set)(void);
- void (*const DATA25_set)(void);
- void (*const DATA26_set)(void);
- void (*const DATA27_set)(void);
- void (*const DATA28_set)(void);
- void (*const DATA29_set)(void);
- void (*const DATA30_set)(void);
- void (*const DATA31_set)(void);
- void (*const BE0_set)(void);
- void (*const BE1_set)(void);
- void (*const BE2_set)(void);
- void (*const BE3_set)(void);
+ void (*CLK_set)(void);
+ void (*RXF_N_set)(void);
+ void (*TXE_N_set)(void);
+ void (*DATA0_set)(void);
+ void (*DATA1_set)(void);
+ void (*DATA2_set)(void);
+ void (*DATA3_set)(void);
+ void (*DATA4_set)(void);
+ void (*DATA5_set)(void);
+ void (*DATA6_set)(void);
+ void (*DATA7_set)(void);
+ void (*DATA8_set)(void);
+ void (*DATA9_set)(void);
+ void (*DATA10_set)(void);
+ void (*DATA11_set)(void);
+ void (*DATA12_set)(void);
+ void (*DATA13_set)(void);
+ void (*DATA14_set)(void);
+ void (*DATA15_set)(void);
+ void (*DATA16_set)(void);
+ void (*DATA17_set)(void);
+ void (*DATA18_set)(void);
+ void (*DATA19_set)(void);
+ void (*DATA20_set)(void);
+ void (*DATA21_set)(void);
+ void (*DATA22_set)(void);
+ void (*DATA23_set)(void);
+ void (*DATA24_set)(void);
+ void (*DATA25_set)(void);
+ void (*DATA26_set)(void);
+ void (*DATA27_set)(void);
+ void (*DATA28_set)(void);
+ void (*DATA29_set)(void);
+ void (*DATA30_set)(void);
+ void (*DATA31_set)(void);
+ void (*BE0_set)(void);
+ void (*BE1_set)(void);
+ void (*BE2_set)(void);
+ void (*BE3_set)(void);
// Reset
- void (*const CLK_reset)(void);
- void (*const RXF_N_reset)(void);
- void (*const TXE_N_reset)(void);
- void (*const DATA0_reset)(void);
- void (*const DATA1_reset)(void);
- void (*const DATA2_reset)(void);
- void (*const DATA3_reset)(void);
- void (*const DATA4_reset)(void);
- void (*const DATA5_reset)(void);
- void (*const DATA6_reset)(void);
- void (*const DATA7_reset)(void);
- void (*const DATA8_reset)(void);
- void (*const DATA9_reset)(void);
- void (*const DATA10_reset)(void);
- void (*const DATA11_reset)(void);
- void (*const DATA12_reset)(void);
- void (*const DATA13_reset)(void);
- void (*const DATA14_reset)(void);
- void (*const DATA15_reset)(void);
- void (*const DATA16_reset)(void);
- void (*const DATA17_reset)(void);
- void (*const DATA18_reset)(void);
- void (*const DATA19_reset)(void);
- void (*const DATA20_reset)(void);
- void (*const DATA21_reset)(void);
- void (*const DATA22_reset)(void);
- void (*const DATA23_reset)(void);
- void (*const DATA24_reset)(void);
- void (*const DATA25_reset)(void);
- void (*const DATA26_reset)(void);
- void (*const DATA27_reset)(void);
- void (*const DATA28_reset)(void);
- void (*const DATA29_reset)(void);
- void (*const DATA30_reset)(void);
- void (*const DATA31_reset)(void);
- void (*const BE0_reset)(void);
- void (*const BE1_reset)(void);
- void (*const BE2_reset)(void);
- void (*const BE3_reset)(void);
+ void (*CLK_reset)(void);
+ void (*RXF_N_reset)(void);
+ void (*TXE_N_reset)(void);
+ void (*DATA0_reset)(void);
+ void (*DATA1_reset)(void);
+ void (*DATA2_reset)(void);
+ void (*DATA3_reset)(void);
+ void (*DATA4_reset)(void);
+ void (*DATA5_reset)(void);
+ void (*DATA6_reset)(void);
+ void (*DATA7_reset)(void);
+ void (*DATA8_reset)(void);
+ void (*DATA9_reset)(void);
+ void (*DATA10_reset)(void);
+ void (*DATA11_reset)(void);
+ void (*DATA12_reset)(void);
+ void (*DATA13_reset)(void);
+ void (*DATA14_reset)(void);
+ void (*DATA15_reset)(void);
+ void (*DATA16_reset)(void);
+ void (*DATA17_reset)(void);
+ void (*DATA18_reset)(void);
+ void (*DATA19_reset)(void);
+ void (*DATA20_reset)(void);
+ void (*DATA21_reset)(void);
+ void (*DATA22_reset)(void);
+ void (*DATA23_reset)(void);
+ void (*DATA24_reset)(void);
+ void (*DATA25_reset)(void);
+ void (*DATA26_reset)(void);
+ void (*DATA27_reset)(void);
+ void (*DATA28_reset)(void);
+ void (*DATA29_reset)(void);
+ void (*DATA30_reset)(void);
+ void (*DATA31_reset)(void);
+ void (*BE0_reset)(void);
+ void (*BE1_reset)(void);
+ void (*BE2_reset)(void);
+ void (*BE3_reset)(void);
// Toggle
- void (*const CLK_toggle)(void);
+ void (*CLK_toggle)(void);
// Read
- uint32_t (*const TXE_N_read)(void);
- uint32_t (*const RXF_N_read)(void);
- uint32_t (*const WR_N_read)(void);
- uint32_t (*const SIWU_N_read)(void);
- uint32_t (*const RD_N_read)(void);
- uint32_t (*const OE_N_read)(void);
- uint32_t (*const RST_N_read)(void);
- uint32_t (*const DATA0_read)(void);
- uint32_t (*const DATA1_read)(void);
- uint32_t (*const DATA2_read)(void);
- uint32_t (*const DATA3_read)(void);
- uint32_t (*const DATA4_read)(void);
- uint32_t (*const DATA5_read)(void);
- uint32_t (*const DATA6_read)(void);
- uint32_t (*const DATA7_read)(void);
- uint32_t (*const DATA8_read)(void);
- uint32_t (*const DATA9_read)(void);
- uint32_t (*const DATA10_read)(void);
- uint32_t (*const DATA11_read)(void);
- uint32_t (*const DATA12_read)(void);
- uint32_t (*const DATA13_read)(void);
- uint32_t (*const DATA14_read)(void);
- uint32_t (*const DATA15_read)(void);
- uint32_t (*const DATA16_read)(void);
- uint32_t (*const DATA17_read)(void);
- uint32_t (*const DATA18_read)(void);
- uint32_t (*const DATA19_read)(void);
- uint32_t (*const DATA20_read)(void);
- uint32_t (*const DATA21_read)(void);
- uint32_t (*const DATA22_read)(void);
- uint32_t (*const DATA23_read)(void);
- uint32_t (*const DATA24_read)(void);
- uint32_t (*const DATA25_read)(void);
- uint32_t (*const DATA26_read)(void);
- uint32_t (*const DATA27_read)(void);
- uint32_t (*const DATA28_read)(void);
- uint32_t (*const DATA29_read)(void);
- uint32_t (*const DATA30_read)(void);
- uint32_t (*const DATA31_read)(void);
- uint32_t (*const BE0_read)(void);
- uint32_t (*const BE1_read)(void);
- uint32_t (*const BE2_read)(void);
- uint32_t (*const BE3_read)(void);
+ uint32_t (*TXE_N_read)(void);
+ uint32_t (*RXF_N_read)(void);
+ uint32_t (*WR_N_read)(void);
+ uint32_t (*SIWU_N_read)(void);
+ uint32_t (*RD_N_read)(void);
+ uint32_t (*OE_N_read)(void);
+ uint32_t (*RST_N_read)(void);
+ uint32_t (*DATA0_read)(void);
+ uint32_t (*DATA1_read)(void);
+ uint32_t (*DATA2_read)(void);
+ uint32_t (*DATA3_read)(void);
+ uint32_t (*DATA4_read)(void);
+ uint32_t (*DATA5_read)(void);
+ uint32_t (*DATA6_read)(void);
+ uint32_t (*DATA7_read)(void);
+ uint32_t (*DATA8_read)(void);
+ uint32_t (*DATA9_read)(void);
+ uint32_t (*DATA10_read)(void);
+ uint32_t (*DATA11_read)(void);
+ uint32_t (*DATA12_read)(void);
+ uint32_t (*DATA13_read)(void);
+ uint32_t (*DATA14_read)(void);
+ uint32_t (*DATA15_read)(void);
+ uint32_t (*DATA16_read)(void);
+ uint32_t (*DATA17_read)(void);
+ uint32_t (*DATA18_read)(void);
+ uint32_t (*DATA19_read)(void);
+ uint32_t (*DATA20_read)(void);
+ uint32_t (*DATA21_read)(void);
+ uint32_t (*DATA22_read)(void);
+ uint32_t (*DATA23_read)(void);
+ uint32_t (*DATA24_read)(void);
+ uint32_t (*DATA25_read)(void);
+ uint32_t (*DATA26_read)(void);
+ uint32_t (*DATA27_read)(void);
+ uint32_t (*DATA28_read)(void);
+ uint32_t (*DATA29_read)(void);
+ uint32_t (*DATA30_read)(void);
+ uint32_t (*DATA31_read)(void);
+ uint32_t (*BE0_read)(void);
+ uint32_t (*BE1_read)(void);
+ uint32_t (*BE2_read)(void);
+ uint32_t (*BE3_read)(void);
+#endif // (FT245_DRIVER_MODE_DYNAMIC == 1)
} ft245_t;
-void ft245_init(ft245_t *ft245);
-void ft245_periodic(ft245_t *ft245);
-bool ft245_write_buffered(ft245_t *ft245, uint8_t *data, size_t size);
-bool ft245_read_buffered(ft245_t *ft245, uint8_t *data, size_t size);
-bool ft245_write_word_buffered(ft245_t *ft245, uint32_t word);
-bool ft245_read_word_buffered(ft245_t *ft245, uint32_t *word);
-size_t ft245_available_read(ft245_t *ft245);
-size_t ft245_available_write(ft245_t *ft245);
+#if(FT245_DRIVER_MODE_STATIC == 1)
+// To input
+extern void FT245_DATA0_to_input(void);
+extern void FT245_DATA1_to_input(void);
+extern void FT245_DATA2_to_input(void);
+extern void FT245_DATA3_to_input(void);
+extern void FT245_DATA4_to_input(void);
+extern void FT245_DATA5_to_input(void);
+extern void FT245_DATA6_to_input(void);
+extern void FT245_DATA7_to_input(void);
+extern void FT245_DATA8_to_input(void);
+extern void FT245_DATA9_to_input(void);
+extern void FT245_DATA10_to_input(void);
+extern void FT245_DATA11_to_input(void);
+extern void FT245_DATA12_to_input(void);
+extern void FT245_DATA13_to_input(void);
+extern void FT245_DATA14_to_input(void);
+extern void FT245_DATA15_to_input(void);
+extern void FT245_DATA16_to_input(void);
+extern void FT245_DATA17_to_input(void);
+extern void FT245_DATA18_to_input(void);
+extern void FT245_DATA19_to_input(void);
+extern void FT245_DATA20_to_input(void);
+extern void FT245_DATA21_to_input(void);
+extern void FT245_DATA22_to_input(void);
+extern void FT245_DATA23_to_input(void);
+extern void FT245_DATA24_to_input(void);
+extern void FT245_DATA25_to_input(void);
+extern void FT245_DATA26_to_input(void);
+extern void FT245_DATA27_to_input(void);
+extern void FT245_DATA28_to_input(void);
+extern void FT245_DATA29_to_input(void);
+extern void FT245_DATA30_to_input(void);
+extern void FT245_DATA31_to_input(void);
+extern void FT245_BE0_to_input(void);
+extern void FT245_BE1_to_input(void);
+extern void FT245_BE2_to_input(void);
+extern void FT245_BE3_to_input(void);
+// To output
+extern void FT245_DATA0_to_output(void);
+extern void FT245_DATA1_to_output(void);
+extern void FT245_DATA2_to_output(void);
+extern void FT245_DATA3_to_output(void);
+extern void FT245_DATA4_to_output(void);
+extern void FT245_DATA5_to_output(void);
+extern void FT245_DATA6_to_output(void);
+extern void FT245_DATA7_to_output(void);
+extern void FT245_DATA8_to_output(void);
+extern void FT245_DATA9_to_output(void);
+extern void FT245_DATA10_to_output(void);
+extern void FT245_DATA11_to_output(void);
+extern void FT245_DATA12_to_output(void);
+extern void FT245_DATA13_to_output(void);
+extern void FT245_DATA14_to_output(void);
+extern void FT245_DATA15_to_output(void);
+extern void FT245_DATA16_to_output(void);
+extern void FT245_DATA17_to_output(void);
+extern void FT245_DATA18_to_output(void);
+extern void FT245_DATA19_to_output(void);
+extern void FT245_DATA20_to_output(void);
+extern void FT245_DATA21_to_output(void);
+extern void FT245_DATA22_to_output(void);
+extern void FT245_DATA23_to_output(void);
+extern void FT245_DATA24_to_output(void);
+extern void FT245_DATA25_to_output(void);
+extern void FT245_DATA26_to_output(void);
+extern void FT245_DATA27_to_output(void);
+extern void FT245_DATA28_to_output(void);
+extern void FT245_DATA29_to_output(void);
+extern void FT245_DATA30_to_output(void);
+extern void FT245_DATA31_to_output(void);
+extern void FT245_BE0_to_output(void);
+extern void FT245_BE1_to_output(void);
+extern void FT245_BE2_to_output(void);
+extern void FT245_BE3_to_output(void);
+// Set
+extern void FT245_CLK_set(void);
+extern void FT245_RXF_N_set(void);
+extern void FT245_TXE_N_set(void);
+extern void FT245_DATA0_set(void);
+extern void FT245_DATA1_set(void);
+extern void FT245_DATA2_set(void);
+extern void FT245_DATA3_set(void);
+extern void FT245_DATA4_set(void);
+extern void FT245_DATA5_set(void);
+extern void FT245_DATA6_set(void);
+extern void FT245_DATA7_set(void);
+extern void FT245_DATA8_set(void);
+extern void FT245_DATA9_set(void);
+extern void FT245_DATA10_set(void);
+extern void FT245_DATA11_set(void);
+extern void FT245_DATA12_set(void);
+extern void FT245_DATA13_set(void);
+extern void FT245_DATA14_set(void);
+extern void FT245_DATA15_set(void);
+extern void FT245_DATA16_set(void);
+extern void FT245_DATA17_set(void);
+extern void FT245_DATA18_set(void);
+extern void FT245_DATA19_set(void);
+extern void FT245_DATA20_set(void);
+extern void FT245_DATA21_set(void);
+extern void FT245_DATA22_set(void);
+extern void FT245_DATA23_set(void);
+extern void FT245_DATA24_set(void);
+extern void FT245_DATA25_set(void);
+extern void FT245_DATA26_set(void);
+extern void FT245_DATA27_set(void);
+extern void FT245_DATA28_set(void);
+extern void FT245_DATA29_set(void);
+extern void FT245_DATA30_set(void);
+extern void FT245_DATA31_set(void);
+extern void FT245_BE0_set(void);
+extern void FT245_BE1_set(void);
+extern void FT245_BE2_set(void);
+extern void FT245_BE3_set(void);
+// Reset
+extern void FT245_CLK_reset(void);
+extern void FT245_RXF_N_reset(void);
+extern void FT245_TXE_N_reset(void);
+extern void FT245_DATA0_reset(void);
+extern void FT245_DATA1_reset(void);
+extern void FT245_DATA2_reset(void);
+extern void FT245_DATA3_reset(void);
+extern void FT245_DATA4_reset(void);
+extern void FT245_DATA5_reset(void);
+extern void FT245_DATA6_reset(void);
+extern void FT245_DATA7_reset(void);
+extern void FT245_DATA8_reset(void);
+extern void FT245_DATA9_reset(void);
+extern void FT245_DATA10_reset(void);
+extern void FT245_DATA11_reset(void);
+extern void FT245_DATA12_reset(void);
+extern void FT245_DATA13_reset(void);
+extern void FT245_DATA14_reset(void);
+extern void FT245_DATA15_reset(void);
+extern void FT245_DATA16_reset(void);
+extern void FT245_DATA17_reset(void);
+extern void FT245_DATA18_reset(void);
+extern void FT245_DATA19_reset(void);
+extern void FT245_DATA20_reset(void);
+extern void FT245_DATA21_reset(void);
+extern void FT245_DATA22_reset(void);
+extern void FT245_DATA23_reset(void);
+extern void FT245_DATA24_reset(void);
+extern void FT245_DATA25_reset(void);
+extern void FT245_DATA26_reset(void);
+extern void FT245_DATA27_reset(void);
+extern void FT245_DATA28_reset(void);
+extern void FT245_DATA29_reset(void);
+extern void FT245_DATA30_reset(void);
+extern void FT245_DATA31_reset(void);
+extern void FT245_BE0_reset(void);
+extern void FT245_BE1_reset(void);
+extern void FT245_BE2_reset(void);
+extern void FT245_BE3_reset(void);
+// Toggle
+extern void FT245_CLK_toggle(void);
+// Read
+extern uint32_t FT245_TXE_N_read(void);
+extern uint32_t FT245_RXF_N_read(void);
+extern uint32_t FT245_WR_N_read(void);
+extern uint32_t FT245_SIWU_N_read(void);
+extern uint32_t FT245_RD_N_read(void);
+extern uint32_t FT245_OE_N_read(void);
+extern uint32_t FT245_RST_N_read(void);
+extern uint32_t FT245_DATA0_read(void);
+extern uint32_t FT245_DATA1_read(void);
+extern uint32_t FT245_DATA2_read(void);
+extern uint32_t FT245_DATA3_read(void);
+extern uint32_t FT245_DATA4_read(void);
+extern uint32_t FT245_DATA5_read(void);
+extern uint32_t FT245_DATA6_read(void);
+extern uint32_t FT245_DATA7_read(void);
+extern uint32_t FT245_DATA8_read(void);
+extern uint32_t FT245_DATA9_read(void);
+extern uint32_t FT245_DATA10_read(void);
+extern uint32_t FT245_DATA11_read(void);
+extern uint32_t FT245_DATA12_read(void);
+extern uint32_t FT245_DATA13_read(void);
+extern uint32_t FT245_DATA14_read(void);
+extern uint32_t FT245_DATA15_read(void);
+extern uint32_t FT245_DATA16_read(void);
+extern uint32_t FT245_DATA17_read(void);
+extern uint32_t FT245_DATA18_read(void);
+extern uint32_t FT245_DATA19_read(void);
+extern uint32_t FT245_DATA20_read(void);
+extern uint32_t FT245_DATA21_read(void);
+extern uint32_t FT245_DATA22_read(void);
+extern uint32_t FT245_DATA23_read(void);
+extern uint32_t FT245_DATA24_read(void);
+extern uint32_t FT245_DATA25_read(void);
+extern uint32_t FT245_DATA26_read(void);
+extern uint32_t FT245_DATA27_read(void);
+extern uint32_t FT245_DATA28_read(void);
+extern uint32_t FT245_DATA29_read(void);
+extern uint32_t FT245_DATA30_read(void);
+extern uint32_t FT245_DATA31_read(void);
+extern uint32_t FT245_BE0_read(void);
+extern uint32_t FT245_BE1_read(void);
+extern uint32_t FT245_BE2_read(void);
+extern uint32_t FT245_BE3_read(void);
+#endif
+
+void FT245_init(ft245_t *ft245);
+void FT245_periodic(ft245_t *ft245);
+bool FT245_write_buffered(ft245_t *ft245, uint8_t *data, size_t size);
+bool FT245_read_buffered(ft245_t *ft245, uint8_t *data, size_t size);
+bool FT245_write_word_buffered(ft245_t *ft245, uint32_t word);
+bool FT245_read_word_buffered(ft245_t *ft245, uint32_t *word);
+size_t FT245_available_read(ft245_t *ft245);
+size_t FT245_available_write(ft245_t *ft245);
#endif \ No newline at end of file