I see what you did. You avoid using the *ftdi_device_list* to open the devices. Instead you use *ftdi_usb_open_desc()*. Unfortunately that will not work for me. Some of my devices don't have a serial number. But perhaps I can make use of the *ftdi_usb_open_desc_index()* function in a similar way.
Thanks for the advice. Ales On Thu, Jun 2, 2016 at 12:10 PM, E.S. Rosenberg < [email protected]> wrote: > Hi Ales, > What I did was one device list loop (per VID/PID because I couldn't switch > to the newer libftdi at the time, I hope next time I can sit on that driver > the project will agree to change the dependency) which built a list of > device for which an ftdi_context should be initiated. > > You can have a look at the code here: > > https://github.com/OpenLightingProject/ola/blob/master/plugins/ftdidmx/FtdiWidget.cpp > <https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_OpenLightingProject_ola_blob_master_plugins_ftdidmx_FtdiWidget.cpp&d=CwMFaQ&c=IGDlg0lD0b-nebmJJ0Kp8A&r=-SmqadLCYk9IMhrst02n3mD42hRmzmdi2wTAlHCAlng&m=_RzWSLQDk-DCqy8DRmjA54ycI8-Bf86JOlDeOigQQO4&s=6Xi9tlEZMB9ntb0lqEcobDHOJsP2wiw_AibmRUSPcBc&e=> > > The FtdiInterface class is the final port while the FtdiWidget first > builds the list iirc. > HTH, > Eli > > 2016-06-02 18:58 GMT+03:00 Ales Fiala <[email protected]>: > >> Eli, >> >> Thanks. That validates my initial assessment. >> >> Still, I find the API overly cumbersome in trying to do this. I >> basically have to get a separate *ftdi_device_list* for each context, >> then discard all the other devices and only keep the one I want to assign >> to that context. There should be a way to only get the ftdi_device_list >> only once and then use the devices off that list with the multiple >> contexts. I hope I am explaining my concern clearly. >> >> Thanks again >> >> Ales >> >> >> On Thu, Jun 2, 2016 at 9:33 AM, E.S. Rosenberg < >> [email protected]> wrote: >> >>> That sounds correct, from my experience with the Open Lighting >>> Architecture ftdi driver you need a separate context for each port (I >>> modified it to support a 4-port single FTDI device), so devices would >>> definitely need their individual context. >>> >>> HTH, >>> Eli >>> >>> 2016-06-01 18:50 GMT+03:00 Ales Fiala <[email protected]>: >>> >>>> I am trying to understand how to open and use multiple FTDI devices in >>>> the same program. >>>> >>>> I am using *ftdi_usb_find_all()* to enumerate the devices and then >>>> *ftdi_usb_open_dev()* to open each one and identify it. Afterwards I >>>> close each device. I do this part with just one ftdi_context. >>>> >>>> Now that I found all the devices I want to open each selected device >>>> and keep it open for reading and writing. I notice that *ftdi_context* >>>> contains the following: >>>> >>>> - libusb_device_handle >>>> - readbuffer >>>> - eeprom >>>> >>>> All this makes me believe that I need a separate *ftdi_context* for >>>> each device that I want to access. Am I on the right track? >>>> >>>> Using the *ftdi_device_list* that I found above I want to create a new >>>> context for each device and open it. >>>> I tried doing >>>> >>>> ftdi_new(); >>>> ftdi_usb_open_dev(); >>>> >>>> for each device using the old device list. But I get a SIGSEGV >>>> somewhere in the depths of usb_open() in libusb. I am thinking it is >>>> because I used a device list created with one context and now am trying to >>>> open the same device using a different context. >>>> >>>> So how do I accomplish what I want? Any advice would be appreciated. >>>> >>>> Regards >>>> >>>> Ales Fiala >>>> >>>> >>>> >>>> ------------------------------ >>>> >>>> *libftdi* - see http://www.intra2net.com/en/developer/libftdi >>>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.intra2net.com_en_developer_libftdi&d=CwMFaQ&c=IGDlg0lD0b-nebmJJ0Kp8A&r=-SmqadLCYk9IMhrst02n3mD42hRmzmdi2wTAlHCAlng&m=SJ9F9dLCs0vx3I6DckAFo83KZhiPDFMjE1C9-utKTk4&s=CU0_5mo7o-iD5-jMvuQwUj8Fs3yYkpj3RFZYapJQ4RE&e=> >>>> for details. >>>> To unsubscribe send a mail to >>>> [email protected] >>>> >>>> >>> >>> ------------------------------ >>> >>> *libftdi* - see http://www.intra2net.com/en/developer/libftdi >>> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.intra2net.com_en_developer_libftdi&d=CwMFaQ&c=IGDlg0lD0b-nebmJJ0Kp8A&r=-SmqadLCYk9IMhrst02n3mD42hRmzmdi2wTAlHCAlng&m=SJ9F9dLCs0vx3I6DckAFo83KZhiPDFMjE1C9-utKTk4&s=CU0_5mo7o-iD5-jMvuQwUj8Fs3yYkpj3RFZYapJQ4RE&e=> >>> for details. >>> To unsubscribe send a mail to >>> [email protected] >>> >>> >> >> ------------------------------ >> >> *libftdi* - see http://www.intra2net.com/en/developer/libftdi >> <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.intra2net.com_en_developer_libftdi&d=CwMFaQ&c=IGDlg0lD0b-nebmJJ0Kp8A&r=-SmqadLCYk9IMhrst02n3mD42hRmzmdi2wTAlHCAlng&m=_RzWSLQDk-DCqy8DRmjA54ycI8-Bf86JOlDeOigQQO4&s=oRKUXFs1mZhUcyAStQUbAWpzHskquZsLT7_RjN_EUGE&e=> >> for details. >> To unsubscribe send a mail to [email protected] >> >> > > ------------------------------ > > *libftdi* - see http://www.intra2net.com/en/developer/libftdi > <https://urldefense.proofpoint.com/v2/url?u=http-3A__www.intra2net.com_en_developer_libftdi&d=CwMFaQ&c=IGDlg0lD0b-nebmJJ0Kp8A&r=-SmqadLCYk9IMhrst02n3mD42hRmzmdi2wTAlHCAlng&m=_RzWSLQDk-DCqy8DRmjA54ycI8-Bf86JOlDeOigQQO4&s=oRKUXFs1mZhUcyAStQUbAWpzHskquZsLT7_RjN_EUGE&e=> > for details. > To unsubscribe send a mail to [email protected] > > -- libftdi - see http://www.intra2net.com/en/developer/libftdi for details. To unsubscribe send a mail to [email protected]
