X-Git-Url: http://developer.intra2net.com/git/?a=blobdiff_plain;f=bindings%2Fftdi1.i;h=ba9aca2da470735f1731aee794f3848fc10265d4;hb=e15345abbb5bfc4492a93551bc030e530f43f179;hp=f26a334da93a37fb7c477bfed9a4a712c71ed5c1;hpb=7aec58fb6798b5cde3971da38cbf956351093f48;p=libftdi diff --git a/bindings/ftdi1.i b/bindings/ftdi1.i index f26a334..ba9aca2 100644 --- a/bindings/ftdi1.i +++ b/bindings/ftdi1.i @@ -1,6 +1,24 @@ /* File: ftdi1.i */ %module(docstring="Python interface to libftdi1") ftdi1 +%feature("autodoc","1"); + +#ifdef DOXYGEN +%include "ftdi1_doc.i" +#endif + +%{ +#include "Python.h" + +PyObject* convertString( const char *v, Py_ssize_t len ) +{ +#if PY_MAJOR_VERSION >= 3 + return PyBytes_FromStringAndSize(v, len); +#else + return PyString_FromStringAndSize(v, len); +#endif +} +%} %include %include @@ -16,6 +34,10 @@ %typemap(newfree) struct ftdi_context *ftdi "ftdi_free($1);"; %delobject ftdi_free; +%define ftdi_usb_find_all_docstring +"usb_find_all(context, vendor, product) -> (return_code, devlist)" +%enddef +%feature("autodoc", ftdi_usb_find_all_docstring) ftdi_usb_find_all; %typemap(in,numinputs=0) SWIGTYPE** OUTPUT ($*ltype temp) %{ $1 = &temp; %} %typemap(argout) SWIGTYPE** OUTPUT %{ $result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj((void*)*$1,$*descriptor,0)); %} %apply SWIGTYPE** OUTPUT { struct ftdi_device_list **devlist }; @@ -23,6 +45,10 @@ int vendor, int product); %clear struct ftdi_device_list **devlist; +%define ftdi_usb_get_strings_docstring +"usb_get_strings(context, device) -> (return_code, manufacturer, description, serial)" +%enddef +%feature("autodoc", ftdi_usb_get_strings_docstring) ftdi_usb_get_strings; %apply char *OUTPUT { char * manufacturer, char * description, char * serial }; %cstring_bounded_output( char * manufacturer, 256 ); %cstring_bounded_output( char * description, 256 ); @@ -35,8 +61,12 @@ %clear char * manufacturer, char * description, char * serial; %clear int mnf_len, int desc_len, int serial_len; +%define ftdi_read_data_docstring +"read_data(context) -> (return_code, buf)" +%enddef +%feature("autodoc", ftdi_read_data_docstring) ftdi_read_data; %typemap(in,numinputs=1) (unsigned char *buf, int size) %{ $2 = PyInt_AsLong($input);$1 = (unsigned char*)malloc($2*sizeof(char)); %} -%typemap(argout) (unsigned char *buf, int size) %{ if(result<0) $2=0; $result = SWIG_Python_AppendOutput($result, PyString_FromStringAndSize((char*)$1, $2)); free($1); %} +%typemap(argout) (unsigned char *buf, int size) %{ if(result<0) $2=0; $result = SWIG_Python_AppendOutput($result, convertString((char*)$1, $2)); free($1); %} int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size); %clear (unsigned char *buf, int size); @@ -45,6 +75,10 @@ int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize); %clear unsigned int *chunksize; +%define ftdi_read_pins_docstring +"read_pins(context) -> (return_code, pins)" +%enddef +%feature("autodoc", ftdi_read_pins_docstring) ftdi_read_pins; %apply char *OUTPUT { unsigned char *pins }; int ftdi_read_pins(struct ftdi_context *ftdi, unsigned char *pins); %clear unsigned char *pins; @@ -62,14 +96,27 @@ %clear int* value; %typemap(in,numinputs=1) (unsigned char *buf, int size) %{ $2 = PyInt_AsLong($input);$1 = (unsigned char*)malloc($2*sizeof(char)); %} -%typemap(argout) (unsigned char *buf, int size) %{ if(result<0) $2=0; $result = SWIG_Python_AppendOutput($result, PyString_FromStringAndSize((char*)$1, $2)); free($1); %} +%typemap(argout) (unsigned char *buf, int size) %{ if(result<0) $2=0; $result = SWIG_Python_AppendOutput($result, convertString((char*)$1, $2)); free($1); %} int ftdi_get_eeprom_buf(struct ftdi_context *ftdi, unsigned char * buf, int size); %clear (unsigned char *buf, int size); +%define ftdi_read_eeprom_location_docstring +"read_eeprom_location(context, eeprom_addr) -> (return_code, eeprom_val)" +%enddef +%feature("autodoc", ftdi_read_eeprom_location_docstring) ftdi_read_eeprom_location; %apply short *OUTPUT { unsigned short *eeprom_val }; int ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val); %clear unsigned short *eeprom_val; +%define ftdi_read_eeprom_docstring +"read_eeprom(context) -> (return_code, eeprom)" +%enddef +%feature("autodoc", ftdi_read_eeprom_docstring) ftdi_read_eeprom; + +%define ftdi_read_chipid_docstring +"read_pins(context) -> (return_code, chipid)" +%enddef +%feature("autodoc", ftdi_read_chipid_docstring) ftdi_read_chipid; %apply int *OUTPUT { unsigned int *chipid }; int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid); %clear unsigned int *chipid; @@ -83,3 +130,7 @@ %{ #include %} + +%pythoncode %{ +__version__ = get_library_version().version_str +%}