You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/01/29 11:44:50 UTC

[incubator-nuttx-apps] 01/02: system/adb: Support reset to bootloader and recovery mode

This is an automated email from the ASF dual-hosted git repository.

pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git

commit 53cd8cda1f06d040188877656384a6c9cf6eb765
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Jan 23 17:45:35 2022 +0800

    system/adb: Support reset to bootloader and recovery mode
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 system/adb/Kconfig    | 22 ++++++++++++++++------
 system/adb/adb_main.c | 13 ++++++++++++-
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/system/adb/Kconfig b/system/adb/Kconfig
index c9f13e9..87fa0b6 100644
--- a/system/adb/Kconfig
+++ b/system/adb/Kconfig
@@ -49,6 +49,16 @@ config ADBD_TOKEN_SIZE
 
 endif # ADBD_AUTHENTICATION
 
+if BOARDCTL_RESET
+config ADBD_RESET_RECOVERY
+	int "Reset argument for recovery"
+	default 1
+
+config ADBD_RESET_BOOTLOADER
+	int "Reset argument for bootloader"
+	default 2
+endif # BOARDCTL_RESET
+
 if ! BOARDCTL_UNIQUEID
 config ADBD_DEVICE_ID
 	string "Default adb device id"
@@ -148,11 +158,11 @@ config ADBD_BOARD_INIT
 		Setup board before running adb daemon.
 
 config ADBD_NET_INIT
-    bool "Network initialization"
-    default n
-    depends on NET
-    select NETUTILS_NETINIT
-    ---help---
-        This option enables/disables all network initialization in ADB server.
+	bool "Network initialization"
+	default n
+	depends on NET
+	select NETUTILS_NETINIT
+	---help---
+		This option enables/disables all network initialization in ADB server.
 
 endif # SYSTEM_ADBD
diff --git a/system/adb/adb_main.c b/system/adb/adb_main.c
index ca658fc..ff6c16a 100644
--- a/system/adb/adb_main.c
+++ b/system/adb/adb_main.c
@@ -54,7 +54,18 @@ void adb_log_impl(FAR const char *func, int line, FAR const char *fmt, ...)
 void adb_reboot_impl(const char *target)
 {
 #ifdef CONFIG_BOARDCTL_RESET
-  boardctl(BOARDIOC_RESET, 0);
+  if (strcmp(target, "recovery") == 0)
+    {
+      boardctl(BOARDIOC_RESET, CONFIG_ADBD_RESET_RECOVERY);
+    }
+  else if (strcmp(target, "bootloader") == 0)
+    {
+      boardctl(BOARDIOC_RESET, CONFIG_ADBD_RESET_BOOTLOADER);
+    }
+  else
+    {
+      boardctl(BOARDIOC_RESET, 0);
+    }
 #else
   adb_log("reboot not implemented\n");
 #endif