lowl-ftdi.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef BFG_LOWL_FTDI_H
  2. #define BFG_LOWL_FTDI_H
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #include <libusb.h>
  6. #include "lowlevel.h"
  7. enum ft232r_reset_purge {
  8. FTDI_PURGE_RX = 1,
  9. FTDI_PURGE_TX = 2,
  10. FTDI_PURGE_BOTH = 3,
  11. };
  12. struct ft232r_device_handle;
  13. extern struct ft232r_device_handle *ft232r_open(const struct lowlevel_device_info *);
  14. extern struct ft232r_device_handle *ft232h_open_mpsse(const struct lowlevel_device_info *);
  15. extern void ft232r_close(struct ft232r_device_handle *);
  16. extern bool ft232r_purge_buffers(struct ft232r_device_handle *, enum ft232r_reset_purge);
  17. extern bool ft232r_set_bitmode(struct ft232r_device_handle *, uint8_t mask, uint8_t mode);
  18. extern ssize_t ft232r_flush(struct ft232r_device_handle *);
  19. extern ssize_t ft232r_write(struct ft232r_device_handle *, const void *data, size_t count);
  20. extern ssize_t ft232r_write_all(struct ft232r_device_handle *, const void *data, size_t count);
  21. extern ssize_t ft232r_read(struct ft232r_device_handle *, void *buf, size_t count);
  22. extern ssize_t ft232r_read_all(struct ft232r_device_handle *, void *data, size_t count);
  23. extern bool ft232r_get_pins(struct ft232r_device_handle *, uint8_t *pins);
  24. extern bool ft232r_set_cbus_bits(struct ft232r_device_handle *dev, bool sc, bool cs);
  25. extern bool ft232r_get_cbus_bits(struct ft232r_device_handle *dev, bool *out_sio0, bool *out_sio1);
  26. extern bool ft232h_mpsse_set_axbus(struct ft232r_device_handle *, uint8_t value, uint8_t directions, bool adbus);
  27. #define ft232h_mpsse_set_acbus(ftdi, val, dir) ft232h_mpsse_set_axbus(ftdi, val, dir, false)
  28. #define ft232h_mpsse_set_adbus(ftdi, val, dir) ft232h_mpsse_set_axbus(ftdi, val, dir, true)
  29. extern ssize_t ft232h_mpsse_readwrite_all(struct ft232r_device_handle *, void *read_data, const void *write_data, size_t count);
  30. #endif