From c9089f58514b59cfc43e27796eb258cbabb2112b Mon Sep 17 00:00:00 2001 From: Richard Eoin Meadows Date: Fri, 11 Apr 2014 18:35:55 +0100 Subject: Added monitor option to toggle target power --- src/command.c | 12 ++++++++++++ src/platforms/native/platform.c | 8 +++++++- src/platforms/native/platform.h | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/command.c b/src/command.c index 8378576..0c97949 100644 --- a/src/command.c +++ b/src/command.c @@ -47,6 +47,7 @@ static bool cmd_swdp_scan(void); static bool cmd_targets(target *t); static bool cmd_morse(void); static bool cmd_connect_srst(target *t, int argc, const char **argv); +static bool cmd_target_power(target *t, int argc, const char **argv); #ifdef PLATFORM_HAS_TRACESWO static bool cmd_traceswo(void); #endif @@ -59,6 +60,7 @@ const struct command_s cmd_list[] = { {"targets", (cmd_handler)cmd_targets, "Display list of available targets" }, {"morse", (cmd_handler)cmd_morse, "Display morse error message" }, {"connect_srst", (cmd_handler)cmd_connect_srst, "Configure connect under SRST: (enable|disable)" }, + {"tpwr", (cmd_handler)cmd_target_power, "Supplies power to the target: (enable|disable)"}, #ifdef PLATFORM_HAS_TRACESWO {"traceswo", (cmd_handler)cmd_traceswo, "Start trace capture" }, #endif @@ -221,6 +223,16 @@ static bool cmd_connect_srst(target *t, int argc, const char **argv) connect_assert_srst = !strcmp(argv[1], "enable"); return true; } +static bool cmd_target_power(target *t, int argc, const char **argv) +{ + (void)t; + if (argc == 1) + gdb_outf("Target Power: %s\n", + !platform_target_get_power() ? "enabled" : "disabled"); + else + platform_target_set_power(!strncmp(argv[1], "enable", strlen(argv[1]))); + return true; +} #ifdef PLATFORM_HAS_TRACESWO static bool cmd_traceswo(void) diff --git a/src/platforms/native/platform.c b/src/platforms/native/platform.c index cb9e69e..224daf8 100644 --- a/src/platforms/native/platform.c +++ b/src/platforms/native/platform.c @@ -153,7 +153,13 @@ void platform_srst_set_val(bool assert) gpio_set_val(SRST_PORT, SRST_PIN, !assert); } } - +bool platform_target_get_power(void) { + return gpio_get(PWR_BR_PORT, PWR_BR_PIN); +} +void platform_target_set_power(bool power) +{ + gpio_set_val(PWR_BR_PORT, PWR_BR_PIN, !power); +} void platform_delay(uint32_t delay) { timeout_counter = delay; diff --git a/src/platforms/native/platform.h b/src/platforms/native/platform.h index 082f6ef..5ca0408 100644 --- a/src/platforms/native/platform.h +++ b/src/platforms/native/platform.h @@ -231,3 +231,5 @@ static inline uint16_t _gpio_get(uint32_t gpioport, uint16_t gpios) void assert_boot_pin(void); void setup_vbus_irq(void); void platform_srst_set_val(bool assert); +bool platform_target_get_power(void); +void platform_target_set_power(bool power); -- cgit v1.2.3