add enable and disable adb after fastboot command in user mode for CTS

Change-Id: Ia6e94ed2c0baabb8e375f03b0b156a2f8082274f
(cherry picked from commit c8551282fd96001e91ad955187b1f81853ededd1)
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 9a98663..3cbdfb2 100755
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -189,6 +189,7 @@
 static const char *cust_sn_cmdline = " androidboot.customer_serialno=";
 static const char *factory_sn_cmdline = " androidboot.factory_serialno=";
 static const char *UsbAdbEnable = " androidboot.adb_enable=1";
+static const char *UsbAdbEnableCTS = " androidboot.adb_enable_cts=0";
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 static const char *auth_kernel = " androidboot.authorized_kernel=true";
@@ -312,7 +313,7 @@
 static device_info device = {DEVICE_MAGIC,0,0,0,0,{0},{0},{0},1,{0},0,{0}};
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
-static prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0};
+static prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0, 0};
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -402,6 +403,7 @@
 char cust_sn_buf[PRODINFO_MAX_SSN_LEN + 1];
 char factory_sn_buf[PRODINFO_MAX_SSN_LEN + 1];
 char AdbEnable[MAX_RSP_SIZE];
+char AdbEnableCTS[MAX_RSP_SIZE];
 #endif
 #if defined(ENABLE_PRODINFO_ACCESS)
 char sn_buf[PRODINFO_MAX_ISN_LEN + 1];
@@ -569,6 +571,7 @@
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
 	int AdbEnable = 0;
+	int AdbEnableCTS = 0;
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 	bool warm_boot = false;
@@ -706,11 +709,16 @@
 	if (prod.is_adb_enabled) {
 		dprintf(CRITICAL, "Device will enable adb\n");
 
-		prod.is_adb_enabled = 0;
+		if (prod.is_adb_enabled_cts) {
+			prod.is_adb_enabled = 1;
+		} else {
+			prod.is_adb_enabled = 0;
+		}
 		write_prod_info(&prod);
 
 		AdbEnable = 1;
 		cmdline_len += strlen(UsbAdbEnable);
+		cmdline_len += strlen(UsbAdbEnableCTS);
 	}
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
@@ -1170,6 +1178,12 @@
 			if (have_cmdline) --dst;
 			while ((*dst++ = *src++));
 		}
+
+                if (AdbEnableCTS) {
+                        src = UsbAdbEnableCTS;
+                        if (have_cmdline) --dst;
+                        while ((*dst++ = *src++));
+                }
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -3289,6 +3303,7 @@
 			memcpy(info->isn, "No_Serial_Number", PRODINFO_MAX_ISN_LEN);
 			memcpy(info->ssn, "No_Custer_Serial_Number", PRODINFO_MAX_SSN_LEN);
 			info->is_adb_enabled = 0;
+			info->is_adb_enabled_cts = 0;
 			write_prod_info(info);
 		}
 		memcpy(dev, info, sizeof(prod_info));
@@ -5043,6 +5058,24 @@
 	write_prod_info(&prod);
 	fastboot_okay("");
 }
+
+void CmdOemEnableAdbCTS(const char *arg, void *data, unsigned size)
+{
+        dprintf(INFO, "Enabling Adb CTS\n");
+        prod.is_adb_enabled = 1;
+        prod.is_adb_enabled_cts = 1;
+        write_prod_info(&prod);
+        fastboot_okay("");
+}
+
+void CmdOemDisableAdbCTS(const char *arg, void *data, unsigned size)
+{
+        dprintf(INFO, "disabling Adb CTS\n");
+        prod.is_adb_enabled = 0;
+        prod.is_adb_enabled_cts = 0;
+        write_prod_info(&prod);
+        fastboot_okay("");
+}
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -5590,6 +5623,8 @@
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
 						{"oem adb_enable", CmdOemEnableAdb},
+						{"oem adb_enable_cts", CmdOemEnableAdbCTS},
+						{"oem adb_disable_cts", CmdOemDisableAdbCTS},
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 						};
diff --git a/app/aboot/devinfo.h b/app/aboot/devinfo.h
index d264250..59342a4 100755
--- a/app/aboot/devinfo.h
+++ b/app/aboot/devinfo.h
@@ -74,6 +74,7 @@
 	unsigned char isn[PRODINFO_MAX_ISN_LEN];
 	unsigned char ssn[PRODINFO_MAX_SSN_LEN];
 	bool is_adb_enabled;
+	bool is_adb_enabled_cts;
 };
 
 void read_prod_info(prod_info *dev);
diff --git a/target/msm8953/init.c b/target/msm8953/init.c
index 7e1fe9f..7b2214f 100755
--- a/target/msm8953/init.c
+++ b/target/msm8953/init.c
@@ -423,7 +423,7 @@
 {
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
-	prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0};
+	prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0, 0};
 	if (target_is_emmc_boot()) {
 		read_prod_info(&prod);
 		snprintf((char *)buf, PRODINFO_MAX_SSN_LEN + 1, "%s", prod.ssn);