API change

* parse struct can_ctrlmode directly to set_ctrl_mode
* add set_bittiming, change set_bitrate internally
* rename set_restart to do_restart
* rerangement

Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
pull/106/head^2
Luotao Fu 2009-11-25 11:04:52 +01:00
parent 6809185bf8
commit 14bb1061bc
2 changed files with 36 additions and 32 deletions

View File

@ -23,14 +23,16 @@
#include <linux/can/netlink.h> #include <linux/can/netlink.h>
int scan_set_restart(const char *name); int scan_do_restart(const char *name);
int scan_set_bitrate(const char *name, __u32 bitrate);
int scan_set_restart_ms(const char *name, __u32 restart_ms); int scan_set_restart_ms(const char *name, __u32 restart_ms);
int scan_set_ctrlmode(const char *name, __u32 mode, __u32 flags); int scan_set_bittiming(const char *name, struct can_bittiming *bt);
int scan_set_ctrlmode(const char *name, struct can_ctrlmode *cm);
int scan_set_bitrate(const char *name, __u32 bitrate);
int scan_get_state(const char *name, int *state);
int scan_get_restart_ms(const char *name, __u32 *restart_ms); 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_bittiming(const char *name, struct can_bittiming *bt);
int scan_get_ctrlmode(const char *name, struct can_ctrlmode *cm); int scan_get_ctrlmode(const char *name, struct can_ctrlmode *cm);
int scan_get_state(const char *name, int *state);
#endif #endif

View File

@ -62,9 +62,8 @@ struct req_info {
__u8 restart; __u8 restart;
__u8 disable_autorestart; __u8 disable_autorestart;
__u32 restart_ms; __u32 restart_ms;
__u32 bitrate; struct can_ctrlmode *ctrlmode;
__u32 ctrlmode; struct can_bittiming *bittiming;
__u32 ctrlflags;
}; };
static void static void
@ -388,9 +387,6 @@ static int do_set_nl_link(int fd, __u8 if_state, const char *name,
{ {
struct set_req req; struct set_req req;
struct can_bittiming bt;
struct can_ctrlmode cm;
const char *type = "can"; const char *type = "can";
memset(&req, 0, sizeof(req)); memset(&req, 0, sizeof(req));
@ -436,22 +432,19 @@ static int do_set_nl_link(int fd, __u8 if_state, const char *name,
addattr32(&req.n, 1024, IFLA_CAN_RESTART_MS, addattr32(&req.n, 1024, IFLA_CAN_RESTART_MS,
req_info->restart_ms); req_info->restart_ms);
if (req_info->bitrate > 0) {
memset(&bt, 0, sizeof(bt));
bt.bitrate = req_info->bitrate;
addattr_l(&req.n, 1024, IFLA_CAN_BITTIMING,
&bt, sizeof(bt));
}
if (req_info->restart) if (req_info->restart)
addattr32(&req.n, 1024, IFLA_CAN_RESTART, 1); addattr32(&req.n, 1024, IFLA_CAN_RESTART, 1);
if (req_info->ctrlmode) { if (req_info->bittiming != NULL) {
memset(&cm, 0, sizeof(cm)); addattr_l(&req.n, 1024, IFLA_CAN_BITTIMING,
cm.mask = req_info->ctrlmode; req_info->bittiming,
cm.flags = req_info->ctrlflags; sizeof(struct can_bittiming));
addattr_l(&req.n, 1024, IFLA_CAN_CTRLMODE, &cm, }
sizeof(cm));
if (req_info->ctrlmode != NULL) {
addattr_l(&req.n, 1024, IFLA_CAN_CTRLMODE,
req_info->ctrlmode,
sizeof(struct can_ctrlmode));
} }
/* mark end of data section */ /* mark end of data section */
@ -502,7 +495,7 @@ err_out:
return err; return err;
} }
int scan_set_restart(const char *name) int scan_do_restart(const char *name)
{ {
int fd; int fd;
int err = -1; int err = -1;
@ -562,11 +555,19 @@ int scan_set_restart_ms(const char *name, __u32 restart_ms)
return set_link(name, &req_info); return set_link(name, &req_info);
} }
int scan_set_ctrlmode(const char *name, __u32 mode, __u32 flags) int scan_set_ctrlmode(const char *name, struct can_ctrlmode *cm)
{ {
struct req_info req_info = { struct req_info req_info = {
.ctrlmode = mode, .ctrlmode = cm,
.ctrlflags = flags, };
return set_link(name, &req_info);
}
int scan_set_bittiming(const char *name, struct can_bittiming *bt)
{
struct req_info req_info = {
.bittiming = bt,
}; };
return set_link(name, &req_info); return set_link(name, &req_info);
@ -574,11 +575,12 @@ int scan_set_ctrlmode(const char *name, __u32 mode, __u32 flags)
int scan_set_bitrate(const char *name, __u32 bitrate) int scan_set_bitrate(const char *name, __u32 bitrate)
{ {
struct req_info req_info = { struct can_bittiming bt;
.bitrate = bitrate,
};
return set_link(name, &req_info); memset(&bt, 0, sizeof(bt));
bt.bitrate = bitrate;
return scan_set_bittiming(name, &bt);
} }
int scan_get_state(const char *name, int *state) int scan_get_state(const char *name, int *state)