92 lines
2.8 KiB
Plaintext
92 lines
2.8 KiB
Plaintext
//
|
|
// exSID_ftdiwrap.h
|
|
// A FTDI access wrapper for exSID USB - header file
|
|
//
|
|
// (C) 2016 Thibaut VARENE
|
|
// License: GPLv2 - http://www.gnu.org/licenses/gpl-2.0.html
|
|
//
|
|
|
|
/**
|
|
* @file
|
|
* FTDI access wrapper header file.
|
|
*/
|
|
|
|
#ifndef exSID_ftdiwrap_h
|
|
#define exSID_ftdiwrap_h
|
|
|
|
/** Allocate new ftdi handle. */
|
|
typedef void * (* xSfw_new_p)(void);
|
|
|
|
/** Free ftdi handle. */
|
|
typedef void (* xSfw_free_p)(void * ftdi);
|
|
|
|
/**
|
|
* Write data to FTDI.
|
|
* @param ftdi ftdi handle.
|
|
* @param buf write buffer.
|
|
* @param size number of bytes to write.
|
|
* @return number of bytes written or negative error value.
|
|
* @note there are performance constrains on the size of the buffer, see documentation.
|
|
*/
|
|
typedef int (* xSfw_write_data_p)(void * ftdi, const unsigned char * buf, int size);
|
|
|
|
/**
|
|
* Read data from FTDI.
|
|
* @param ftdi ftdi handle.
|
|
* @param buf read buffer.
|
|
* @param size number of bytes to read.
|
|
* @return number of bytes read or negative error value.
|
|
* @note there are performance constrains on the size of the buffer, see documentation.
|
|
*/
|
|
typedef int (* xSfw_read_data_p)(void * ftdi, unsigned char * buf, int size);
|
|
|
|
/**
|
|
* Open device by description.
|
|
* @param ftdi pointer to ftdi handle.
|
|
* @param vid target vendor id. Ignored by ftd2xx.
|
|
* @param pid target product id. Ignored by ftd2xx.
|
|
* @param desc Description string.
|
|
* @param serial target product serial. Ignored by ftd2xx.
|
|
* @return 0 on success or negative error value.
|
|
* @warning This is the only function to use a pointer to ftdi handle, this is
|
|
* rendered necessary because of libftd2xx silly way of doing things.
|
|
*/
|
|
typedef int (* xSfw_usb_open_desc_p)(void ** ftdi, int vid, int pid, const char * desc, const char * serial);
|
|
|
|
/** Purge FTDI buffers. */
|
|
typedef int (* xSfw_usb_purge_buffers_p)(void * ftdi);
|
|
|
|
/** Close FTDI device. */
|
|
typedef int (* xSfw_usb_close_p)(void * ftdi);
|
|
|
|
/**
|
|
* Get error string.
|
|
* @param ftdi ftdi handle.
|
|
* @return human-readable error string.
|
|
* @note only supported with libftdi.
|
|
*/
|
|
typedef char * (* xSfw_get_error_string_p)(void * ftdi);
|
|
|
|
#ifndef XSFW_WRAPDECL
|
|
#define XSFW_EXTERN extern
|
|
#else
|
|
#define XSFW_EXTERN /* nothing */
|
|
#endif
|
|
|
|
#define XSFW_PROTODEF(a) XSFW_EXTERN a ## _p a
|
|
|
|
XSFW_PROTODEF(xSfw_new); ///< Handle allocation callback
|
|
XSFW_PROTODEF(xSfw_free); ///< Handle deallocation callback
|
|
XSFW_PROTODEF(xSfw_write_data); ///< Data write callback
|
|
XSFW_PROTODEF(xSfw_read_data); ///< Data read callback
|
|
XSFW_PROTODEF(xSfw_usb_open_desc); ///< Device open callback
|
|
XSFW_PROTODEF(xSfw_usb_purge_buffers); ///< Device buffers purge callback
|
|
XSFW_PROTODEF(xSfw_usb_close); ///< Device close callback
|
|
XSFW_PROTODEF(xSfw_get_error_string); ///< Human readable error string callback
|
|
int xSfw_usb_setup(void *ftdi, int baudrate, int latency);
|
|
|
|
int xSfw_dlopen();
|
|
void xSfw_dlclose();
|
|
|
|
#endif /* exSID_ftdiwrap_h */
|