Marc Kleine-Budde wrote: > Wolfgang Grandegger wrote: >> Hi Fu, >> >> Luotao Fu wrote: >>> Hi folks, >>> >>> I was trying to integrate socketcan control in an application the last days >>> and >>> spent quite a lot of time getting clear how to deal with the netlink >>> interface. >> I can image. Such a library is on my to-do list since a long time, but >> so far I didn't find enough time to implement it. Thanks for the effort. >> >>> Besides I just couldn't remember the correct order of parameter when using >>> the >>> iproute tool for can ;-). So I stripped some code from the iproute package >>> and >>> put them with some own stuffs together in a library to access can >>> configuration >>> functions with netlink, which I call libsocketcan-nl. (nl stand for >>> netlink, not >>> netherland ;-)). The library provides some simple APIs to do common CAN >>> stuffs, >>> lacking of a proper documentation I'll start here with the content of the >>> header >>> file: >>> int scan_set_restart(const char *name); >> scan_do_restart() would be more appropriate. >> >>> int scan_set_bitrate(const char *name, __u32 bitrate); >>> int scan_set_restart_ms(const char *name, __u32 restart_ms); >>> int scan_set_ctrlmode(const char *name, __u32 mode, __u32 flags); >>> >>> int scan_get_state(const char *name, int *state); >>> int scan_get_restart_ms(const char *name, __u32 *restart_ms); >>> int scan_get_bittiming(const char *name, struct can_bittiming *bt); >>> int scan_get_ctrlmode(const char *name, struct can_ctrlmode *cm); >>> >>> Usage is quite straight forward. The functions await simply the name of the >>> can >>> interface and, if any, configuration values and return 0 for success and -1 >>> if >>> something went wrong. >>> >>> This library provides some benefits, which the hookup code in iproute >>> doesn't do: >>> * more clear error messages and takes care of special cases, e.g. >>> restarting a >>> device can only be done while the interface is in BUS_OFF. Neither kernel >>> nor >> Hm, you cannot restart the device when it's not bus-off. The driver does >> not allow that. See: >> >> http://lxr.linux.no/#linux+v2.6.31/drivers/net/can/dev.c#L376 >> >>> the iproute tool provides some useful hint if restarting failed. >>> * simple portabilty >>> * API for use in own applications. >>> >>> I updated the canutils tool to make use of this library. Now we can finally >>> again use the canconfig tool with really simple parameters: >>> >>> r...@target:~ canconfig can0 >>> can0 bitrate: 250000 >>> can0 state: ACTIVE >>> can0 restart_ms: 1000 >>> can0 mode: loopback[OFF], listen-only[OFF], tripple-sampling[OFF] >>> >>> Setting works as well, usage is just like in the older versions: >>> >>> r...@target:~ canconfig can0 bitrate 125000 >>> can0 bitrate: 125000 >>> r...@target:~ canconfig can0 mode loopback on >>> can0 mode: loopback[ON], listen-only[OFF], tripple-sampling[OFF] >>> >>> and so on. >>> >>> The repository of the library can be obtained at >>> git://git.pengutronix.de/git/tools/libsocketcan-nl.git >>> Repo of Canutils can be found at >>> git://git.pengutronix.de/git/tools/canutils.git >>> >>> Additionally I put the recent version of the library and the tool in our ftp >>> server. They might stay there only as long as as I don't have a proper >>> webspace >>> for the stuff: >>> ftp://ftp.pengutronix.de/pub/socketcan/ >>> >>> The library is still not complete. For example there's still no >>> documentation >>> for this, also we are only able to set the bitrate, but not the bittimings. >>> I >>> will add these stuffs later. >>> >>> Comments, tests and reviews are highly welcome. >> That's great news for the CAN users, especially if they want to do a >> manual restart of the CAN devices from their application. We should add >> the libsocketcan and canconfig to the SVN trunk a.s.a.p., or some more >> appropriate place, e.g. GIT at BerliOS (or kernel.org). I will do some >> testing when time permits. > > please don't add it to a svn, IMHO a seperate git is a good place.
Ack. I would vote for GIT at BerliOS. libsocketcan could be combined with can-utils, in principle. Wolfgang. _______________________________________________ Socketcan-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-users
