* SocketCAN device enumeration API @ 2016-08-09 11:06 André Hartmann 2016-08-09 12:33 ` Mirza Krak 2016-08-09 14:04 ` Kurt Van Dijck 0 siblings, 2 replies; 6+ messages in thread From: André Hartmann @ 2016-08-09 11:06 UTC (permalink / raw) To: linux-can Hello all, I'm one of the developers working on the new QtSerialBus module [0], [1] which encapsulates different CAN hardware drivers (including SocketCAN) in a C++ API. For a new hardware enumerating function, I'd like to do the following: * Enumerate the currently available (i.e. ready to use) SocketCAN devices * Get hardware information/manufacturer/bus type for a device * Find out if a device is virtual * Find out if a device is CAN FD capable Is there already a possibility to do this from a C/C++ program? Some information can be parsed from the ip command output, but I'd rather use a real API. If not already possible, could such functionality be added to SocketCAN? Thanks in advance! Best regards, Andre [0] http://doc.qt.io/qt-5/qtserialbus-index.html [1] https://code.qt.io/qt/qtserialbus.git ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: SocketCAN device enumeration API 2016-08-09 11:06 SocketCAN device enumeration API André Hartmann @ 2016-08-09 12:33 ` Mirza Krak 2016-08-09 14:04 ` Kurt Van Dijck 1 sibling, 0 replies; 6+ messages in thread From: Mirza Krak @ 2016-08-09 12:33 UTC (permalink / raw) To: André Hartmann; +Cc: linux-can@vger.kernel.org 2016-08-09 13:06 GMT+02:00 André Hartmann <aha_1980@gmx.de>: > Hello all, > > I'm one of the developers working on the new QtSerialBus module [0], [1] > which encapsulates different CAN hardware drivers (including SocketCAN) in a > C++ API. Interesting. As a Qt user/developer I have wondered why this kind of module has not existed earlier :). > > For a new hardware enumerating function, I'd like to do the following: > > * Enumerate the currently available (i.e. ready to use) > SocketCAN devices > * Get hardware information/manufacturer/bus type for a device > * Find out if a device is virtual > * Find out if a device is CAN FD capable > > Is there already a possibility to do this from a C/C++ program? > Some information can be parsed from the ip command output, but I'd rather > use a real API. Most of it could probably be done from C/C++. Some of this has been discussed earlier. Did some digging and found [1]. There might all ready be something similar in Qt, see [2], which could probably partially work since SocketCAN devices are exposed as network devices. Other good resources could be libsocketcan [3] which uses netlink to configure and retrieve information about the devices. Best Regards Mirza [1]. https://marc.info/?l=linux-can&m=142757462432402&w=2 [3]. http://doc.qt.io/qt-4.8/qnetworkinterface.html#QNetworkInterface [3]. http://www.pengutronix.de/software/libsocketcan/download/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: SocketCAN device enumeration API 2016-08-09 11:06 SocketCAN device enumeration API André Hartmann 2016-08-09 12:33 ` Mirza Krak @ 2016-08-09 14:04 ` Kurt Van Dijck 2016-08-11 8:36 ` André Hartmann 1 sibling, 1 reply; 6+ messages in thread From: Kurt Van Dijck @ 2016-08-09 14:04 UTC (permalink / raw) To: André Hartmann; +Cc: linux-can --- Original message --- > Date: Tue, 9 Aug 2016 13:06:39 +0200 > From: André Hartmann <aha_1980@gmx.de> > To: linux-can@vger.kernel.org > Subject: SocketCAN device enumeration API > User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 > Thunderbird/45.2.0 > > Hello all, > > I'm one of the developers working on the new QtSerialBus module [0], [1] > which encapsulates different CAN hardware drivers (including SocketCAN) in a > C++ API. > > For a new hardware enumerating function, I'd like to do the following: > > * Enumerate the currently available (i.e. ready to use) > SocketCAN devices I did write myself an enumif() function (abstracted in libenumif) that you can find on http://github.com/kurt-vd/enumif You can easily enumerate only CAN interfaces, by hiding non-CAN interfaces. > * Get hardware information/manufacturer/bus type for a device > * Find out if a device is virtual > * Find out if a device is CAN FD capable This is IMHO best done using libsocketcan. Kind regards, Kurt ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: SocketCAN device enumeration API 2016-08-09 14:04 ` Kurt Van Dijck @ 2016-08-11 8:36 ` André Hartmann 2016-08-11 10:05 ` Kurt Van Dijck 0 siblings, 1 reply; 6+ messages in thread From: André Hartmann @ 2016-08-11 8:36 UTC (permalink / raw) To: linux-can; +Cc: Kurt Van Dijck, Mirza Krak Hello Kurt and Mirza, thanks for your pointers, I did already did search time, but haven't found much useful. Kurt, your library does exactly what I need. I was impressed (and a bit shocked), how much code is necessary to do this work. I think (parts of) your library would also make a good extension to libsocketcan, as it seems I'm not the only one asking, so there is definitely a need for this function. However, the only possiblity I see for me now, would be to ship a copy of libenumif along with Qt and to integrate it into Qt's build system for cross-platform builds. Thats where my problems begin. I neither know about the technical, nor the legal possibilities to do so :( The other possiblility according to Mirza's links seems to parse /sys/class/net/ - I will give this a try too. QNetworkInterface gives me a list of interfaces, but has the same problems like a simple getifaddrs(), you cannot find out if an interface is of type CAN. I also found this extension to libsocketcan: https://github.com/ajneu/libsocketcan/commit/26ef Is there any chance that this extension can be merged upstream? It contains the can_get_typekind function to query whether an interface is virtual or not. Best regards, Andre ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: SocketCAN device enumeration API 2016-08-11 8:36 ` André Hartmann @ 2016-08-11 10:05 ` Kurt Van Dijck 2016-08-11 10:31 ` André Hartmann 0 siblings, 1 reply; 6+ messages in thread From: Kurt Van Dijck @ 2016-08-11 10:05 UTC (permalink / raw) To: André Hartmann; +Cc: linux-can, Mirza Krak > Hello Kurt and Mirza, > > thanks for your pointers, I did already did search time, but haven't found > much useful. > > Kurt, your library does exactly what I need. I was impressed (and a bit > shocked), how much code is necessary to do this work. I too think netlink was as such not designed to be an end-user interface, but a generic mechanism to create libraries like libsocketcan, of libenumif. > I think (parts of) > your library would also make a good extension to libsocketcan, as it seems > I'm not the only one asking, so there is definitely a need for this > function. Well, libsocketcan could copy part of the code for easy CAN enumeration. libenumif is not really restricted to CAN, or any other type. > > However, the only possiblity I see for me now, would be to ship a copy of > libenumif along with Qt and to integrate it into Qt's build system for > cross-platform builds. When you ship libenumif along with QT, doesn't that imply that it should stay out of QT. Or did you mean to ship libenumif as shared object along with QT's shared objects? > > Thats where my problems begin. I neither know about the technical, nor the > legal possibilities to do so :( QT is not my technical competence. Legally, libenumif is shipped with LGPLv3. I don't see a problem shipping it. LGPL allows to use the library (as shared object) from non-GPL code AFAIK. Kurt ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: SocketCAN device enumeration API 2016-08-11 10:05 ` Kurt Van Dijck @ 2016-08-11 10:31 ` André Hartmann 0 siblings, 0 replies; 6+ messages in thread From: André Hartmann @ 2016-08-11 10:31 UTC (permalink / raw) To: linux-can; +Cc: Mirza Krak, Kurt Van Dijck Hi Kurt, > When you ship libenumif along with QT, doesn't that imply that it > should stay out of QT. > Or did you mean to ship libenumif as shared object along with QT's > shared objects? I don't know how this is handled in general in the Qt project, I'm just an external contributor. I just know, that they have the source of some libraries included in 3rdparty subdirs. That code is build together with Qt for all supported platforms (Linux specific code is not compiled for Windows). I guess, the generated shared object files are then distributed along with Qt. I assume the libraries source code needs to be copied into Qt's source tree, as otherwise lots of builds will break because of unsatisfied dependencies. Introducing more compile dependencies is a no-go I guess. So I will have to ask the Qt developer mailing list how to proceed. Best regards and thanks for your great work! Andre Am 11.08.2016 um 12:05 schrieb Kurt Van Dijck: >> Hello Kurt and Mirza, >> >> thanks for your pointers, I did already did search time, but haven't found >> much useful. >> >> Kurt, your library does exactly what I need. I was impressed (and a bit >> shocked), how much code is necessary to do this work. > > I too think netlink was as such not designed to be an end-user > interface, but a generic mechanism to create libraries like > libsocketcan, of libenumif. > >> I think (parts of) >> your library would also make a good extension to libsocketcan, as it seems >> I'm not the only one asking, so there is definitely a need for this >> function. > > Well, libsocketcan could copy part of the code for easy CAN enumeration. > libenumif is not really restricted to CAN, or any other type. > >> >> However, the only possiblity I see for me now, would be to ship a copy of >> libenumif along with Qt and to integrate it into Qt's build system for >> cross-platform builds. > > When you ship libenumif along with QT, doesn't that imply that it should > stay out of QT. > Or did you mean to ship libenumif as shared object along with QT's > shared objects? > >> >> Thats where my problems begin. I neither know about the technical, nor the >> legal possibilities to do so :( > > QT is not my technical competence. > Legally, libenumif is shipped with LGPLv3. I don't see a problem > shipping it. LGPL allows to use the library (as shared object) from > non-GPL code AFAIK. > > Kurt > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-08-11 10:31 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-08-09 11:06 SocketCAN device enumeration API André Hartmann 2016-08-09 12:33 ` Mirza Krak 2016-08-09 14:04 ` Kurt Van Dijck 2016-08-11 8:36 ` André Hartmann 2016-08-11 10:05 ` Kurt Van Dijck 2016-08-11 10:31 ` André Hartmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox