summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuotao Fu <l.fu@pengutronix.de>2010-01-06 16:23:33 +0100
committerLuotao Fu <l.fu@pengutronix.de>2010-01-06 16:23:33 +0100
commit22bb7f840e06e5f4f7117c1f85f96c0499caae3b (patch)
tree1146a0754f72d8568d90291dd76a493bb477eb46
parent1ce3affe6c9a5c5e7d44060d54f6829fc2fa872d (diff)
downloadcanutils-22bb7f840e06e5f4f7117c1f85f96c0499caae3b.tar.gz
canutils-22bb7f840e06e5f4f7117c1f85f96c0499caae3b.tar.xz
[canconfig] add one-shot mode
Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
-rw-r--r--src/canconfig.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/canconfig.c b/src/canconfig.c
index aacae7f..8dfdaa3 100644
--- a/src/canconfig.c
+++ b/src/canconfig.c
@@ -37,6 +37,10 @@
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif
+#ifndef CAN_CTRLMODE_ONE_SHOT
+#define CAN_CTRLMODE_ONE_SHOT 0x8
+#endif
+
const char *can_states[CAN_STATE_MAX] = {
"ERROR-ACTIVE",
"ERROR-WARNING",
@@ -350,10 +354,11 @@ static void cmd_stop(int argc, char *argv[], const char *name)
static inline void print_ctrlmode(__u32 cm_flags)
{
fprintf(stdout,
- "loopback[%s], listen-only[%s], tripple-sampling[%s]\n",
+ "loopback[%s], listen-only[%s], tripple-sampling[%s], one-shot[%s]\n",
(cm_flags & CAN_CTRLMODE_LOOPBACK) ? "ON" : "OFF",
(cm_flags & CAN_CTRLMODE_LISTENONLY) ? "ON" : "OFF",
- (cm_flags & CAN_CTRLMODE_3_SAMPLES) ? "ON" : "OFF");
+ (cm_flags & CAN_CTRLMODE_3_SAMPLES) ? "ON" : "OFF",
+ (cm_flags & CAN_CTRLMODE_ONE_SHOT) ? "ON" : "OFF");
}
static void do_show_ctrlmode(const char *name)
@@ -403,7 +408,12 @@ static void do_set_ctrlmode(int argc, char* argv[], const char *name)
NEXT_ARG();
set_ctrlmode("triple-sampling", *argv, &cm,
CAN_CTRLMODE_3_SAMPLES);
+ } else if (!strcmp(*argv, "one-shot")) {
+ NEXT_ARG();
+ set_ctrlmode("one-shot", *argv, &cm,
+ CAN_CTRLMODE_ONE_SHOT);
}
+
argc--, argv++;
}