X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=blobdiff_plain;f=python%2Fftdi1.i;h=f397f84eb89c4d84adea104aa8c03f4f839c883c;hp=cc71a3c24b8b7e4d6e671a0b2942eb49b84a5a82;hb=3eca5150db07262c1c6eb737e12149201f631d47;hpb=f64b66d604c5d78886d47034fb2db2176fc24a09 diff --git a/python/ftdi1.i b/python/ftdi1.i index cc71a3c..f397f84 100644 --- a/python/ftdi1.i +++ b/python/ftdi1.i @@ -19,14 +19,16 @@ inline PyObject* charp2str(const char *v_, long len) #endif } -inline char * str2charp_size(PyObject* pyObj, int * size) +char * str2charp_size(PyObject* pyObj, int * size) { char * v_ = 0; + Py_ssize_t len = 0; #if PY_MAJOR_VERSION >= 3 - PyBytes_AsStringAndSize(pyObj, &v_, (Py_ssize_t*)size); + PyBytes_AsStringAndSize(pyObj, &v_, &len); #else - PyString_AsStringAndSize(pyObj, &v_, (Py_ssize_t*)size); + PyString_AsStringAndSize(pyObj, &v_, &len); #endif + *size = len; return v_; } %} @@ -60,17 +62,30 @@ inline char * str2charp_size(PyObject* pyObj, int * size) "usb_get_strings(context, device) -> (return_code, manufacturer, description, serial)" %enddef %feature("autodoc", ftdi_usb_get_strings_docstring) ftdi_usb_get_strings; +%feature("autodoc", ftdi_usb_get_strings_docstring) ftdi_usb_get_strings2; +%feature("autodoc", ftdi_usb_get_strings_docstring) ftdi_eeprom_get_strings; %apply char *OUTPUT { char * manufacturer, char * description, char * serial }; %cstring_bounded_output( char * manufacturer, 256 ); %cstring_bounded_output( char * description, 256 ); +%cstring_bounded_output( char * product, 256 ); %cstring_bounded_output( char * serial, 256 ); -%typemap(default,noblock=1) int mnf_len, int desc_len, int serial_len { $1 = 256; } +%typemap(default,noblock=1) int mnf_len, int desc_len, int product_len, int serial_len { $1 = 256; } int ftdi_usb_get_strings(struct ftdi_context *ftdi, struct libusb_device *dev, char * manufacturer, int mnf_len, char * description, int desc_len, char * serial, int serial_len); + int ftdi_usb_get_strings2(struct ftdi_context *ftdi, struct libusb_device *dev, + char * manufacturer, int mnf_len, + char * description, int desc_len, + char * serial, int serial_len); + int ftdi_eeprom_get_strings(struct ftdi_context *ftdi, + char *manufacturer, int mnf_len, + char *product, int product_len, + char *serial, int serial_len); + %clear char * manufacturer, char * description, char * serial; -%clear int mnf_len, int desc_len, int serial_len; +%clear char * product; +%clear int mnf_len, int desc_len, int product_len, int serial_len; %define ftdi_read_data_docstring "read_data(context) -> (return_code, buf)"