diff options
Diffstat (limited to 'board/twinkie/injector.c')
-rw-r--r-- | board/twinkie/injector.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/board/twinkie/injector.c b/board/twinkie/injector.c index 916bc1c65e..6c5116c9e6 100644 --- a/board/twinkie/injector.c +++ b/board/twinkie/injector.c @@ -189,6 +189,13 @@ static void fsm_wait(uint32_t w) wait_packet(inj_polarity, min_edges, timeout_ms * 1000); } +static void fsm_expect(uint32_t w) +{ + uint32_t timeout_ms = INJ_ARG0(w); + uint8_t cmd = INJ_ARG2(w); + + expect_packet(inj_polarity, cmd, timeout_ms * 1000); +} static void fsm_get(uint32_t w) { int store_idx = INJ_ARG0(w); @@ -243,6 +250,9 @@ static void fsm_set(uint32_t w) case INJ_SET_POLARITY: inj_polarity = guess_polarity(val); break; + case INJ_SET_TRACE: + set_trace_mode(val); + break; default: /* Do nothing */ break; @@ -278,6 +288,9 @@ static int fsm_run(int index) case INJ_CMD_JUMP: index = INJ_ARG0(w); continue; /* do not increment index */ + case INJ_CMD_EXPCT: + fsm_expect(w); + break; case INJ_CMD_NOP: default: /* Do nothing */ @@ -502,6 +515,25 @@ static int cmd_sink(int argc, char **argv) return EC_SUCCESS; } +static int cmd_trace(int argc, char **argv) +{ + if (argc < 1) + return EC_ERROR_PARAM_COUNT; + + if (!strcasecmp(argv[0], "on") || + !strcasecmp(argv[0], "1")) + set_trace_mode(TRACE_MODE_ON); + else if (!strcasecmp(argv[0], "raw")) + set_trace_mode(TRACE_MODE_RAW); + else if (!strcasecmp(argv[0], "off") || + !strcasecmp(argv[0], "0")) + set_trace_mode(TRACE_MODE_OFF); + else + return EC_ERROR_PARAM2; + + return EC_SUCCESS; +} + static int command_tw(int argc, char **argv) { if (!strcasecmp(argv[1], "send")) @@ -518,6 +550,8 @@ static int command_tw(int argc, char **argv) return cmd_resistor(argc - 2, argv + 2); else if (!strcasecmp(argv[1], "sink")) return cmd_sink(argc - 2, argv + 2); + else if (!strcasecmp(argv[1], "trace")) + return cmd_trace(argc - 2, argv + 2); else if (!strcasecmp(argv[1], "txclock")) return cmd_tx_clock(argc - 2, argv + 2); else if (!strncasecmp(argv[1], "rxthresh", 8)) |