diff libpwon/etmoff.c @ 953:ab54957dbe35

libpwon: implement -Petmoff mode
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 07 Jun 2023 20:06:12 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpwon/etmoff.c	Wed Jun 07 20:06:12 2023 +0000
@@ -0,0 +1,25 @@
+/*
+ * This libpwon module implements -Petmoff mode: set the baud rate to 115200
+ * and send out ETM command doing Iota poweroff, triggering a VRPC reboot cycle
+ * on the USB-charging phone.  The "wakeup shot" logic is a copy of what we do
+ * in rvinterf.
+ */
+
+#include <sys/types.h>
+#include <unistd.h>
+
+extern int target_fd;
+
+static u_char wakeup_shot[64];
+static u_char etm_devoff_pkt[9] =
+		{0x02, 0x14, 0x01, 0x67, 0x1E, 0x01, 0x00, 0x79, 0x02};
+
+void
+bootctrl_do_etmoff()
+{
+	set_fixed_baudrate("115200");
+	set_serial_nonblock(0);
+	write(target_fd, wakeup_shot, sizeof wakeup_shot);
+	usleep(100000);
+	write(target_fd, etm_devoff_pkt, sizeof etm_devoff_pkt);
+}