SDB: connecting remote target succeed if it is registered to device list.
authorshingil.kang <shingil.kang@samsung.com>
Tue, 10 Mar 2015 07:42:59 +0000 (16:42 +0900)
committerShingil Kang <shingil.kang@samsung.com>
Tue, 21 Jul 2015 05:19:41 +0000 (14:19 +0900)
Change-Id: Iad04f45f9cde59bc6d258c939d0b416c590d9092
Signed-off-by: shingil.kang <shingil.kang@samsung.com>
src/command_function.c
src/sockets.c

index fa871b1f0dcb20695ad61558899d25e90249c82b..c5176be444a2dfbadff4c3ce555b030d101c6a1e 100644 (file)
@@ -308,11 +308,27 @@ int __connect(int argc, char ** argv) {
     D(COMMANDLINE_MSG_FULL_CMD, argv[0], full_cmd);
     tmp = sdb_query(full_cmd);
     if(tmp) {
+        // check if port is opened
         printf("%s\n", tmp);
-        return 0;
-    } else {
-        return 1;
+        if(strstr(tmp, "connecting") == NULL)
+            return 0;
+
+        // check if device state is online for 3 sec
+        int i = 0;
+        for (i; i < 6; i++) {
+            sdb_sleep_ms(500);
+
+            snprintf(full_cmd, sizeof full_cmd, "host-serial:%s:get-state", argv[1]);
+            tmp = sdb_query(full_cmd);
+
+            if(!strcmp(tmp, STATE_DEVICE) || !strcmp(tmp, STATE_LOCKED) || !strcmp(tmp, STATE_SUSPENDED)) {
+                printf("connected to %s\n", argv[1]);
+                return 0;
+            }
+        }
     }
+    printf("failed to connect to %s\n", argv[1]);
+    return 1;
 }
 
 int device_con(int argc, char ** argv) {
index f02f074eefb39e985fdf0d7128e29505c085070e..361a28621f545760240bbd924f548783ad1a4870 100755 (executable)
@@ -1389,8 +1389,11 @@ static void connect_emulator(char* host, int port, char* buf, int buf_len) {
     char serial[100];
     snprintf(serial, sizeof(serial), "%s:%d", host, port);
 
-    if (acquire_one_transport(kTransportAny, serial, NULL)) {
-        snprintf(buf, buf_len, "%s is already connected", serial);
+    TRANSPORT* t;
+    if (t = acquire_one_transport(kTransportAny, serial, NULL)) {
+        if(t->connection_state != CS_OFFLINE) {
+            snprintf(buf, buf_len, "%s is already connected", serial);
+        }
         return;
     }
 
@@ -1399,5 +1402,5 @@ static void connect_emulator(char* host, int port, char* buf, int buf_len) {
     }
     register_socket_transport(fd, serial, host, port, kTransportConnect, NULL);
 
-    snprintf(buf, buf_len, "connected to %s", serial);
+    snprintf(buf, buf_len, "connecting to %s ...", serial);
 }