Merge branch 'tizen_3.0' into tizen
[sdk/target/sdbd.git] / src / transport.c
index 7811628..8d889e3 100755 (executable)
@@ -74,6 +74,20 @@ static void  dump_hex( const unsigned char*  ptr, size_t  len )
     *pb++ = '\0';
     DR("%s\n", buffer);
 }
+
+static const char *statename(atransport *t)
+{
+    switch(t->connection_state){
+    case CS_OFFLINE: return "offline";
+    case CS_BOOTLOADER: return "bootloader";
+    case CS_DEVICE: return "device";
+    case CS_HOST: return "host";
+    case CS_RECOVERY: return "recovery";
+    case CS_SIDELOAD: return "sideload";
+    case CS_NOPERM: return "no permissions";
+    default: return "unknown";
+    }
+}
 #endif
 
 void
@@ -365,7 +379,7 @@ static void *input_thread(void *_t)
             }
         } else {
             if(active) {
-                D("%s: transport got packet, sending to remote\n", t->serial);
+                D("%s: transport got packet, sending to remote, state(%s)\n", t->serial, statename(t));
 
 #ifdef SUPPORT_ENCRYPT
                if (t->encryption == ENCR_ON && p->msg.command != A_ENCR) // 현재 연결이 암호화 모드이고, 암호화 관련 메시지가 아닌 경우, 메시지를 암호화
@@ -865,20 +879,6 @@ atransport *acquire_one_transport(int state, transport_type ttype, const char* s
 }
 
 #if SDB_HOST
-static const char *statename(atransport *t)
-{
-    switch(t->connection_state){
-    case CS_OFFLINE: return "offline";
-    case CS_BOOTLOADER: return "bootloader";
-    case CS_DEVICE: return "device";
-    case CS_HOST: return "host";
-    case CS_RECOVERY: return "recovery";
-    case CS_SIDELOAD: return "sideload";
-    case CS_NOPERM: return "no permissions";
-    default: return "unknown";
-    }
-}
-
 int list_transports(char *buf, size_t  bufsize)
 {
     char*       p   = buf;
@@ -1068,23 +1068,24 @@ void broadcast_transport(apacket *p)
     atransport *t;
     sdb_mutex_lock(&transport_lock);
     for(t = transport_list.next; t != &transport_list; t = t->next) {
-        D("broadcast device transport:%d\n", t->connection_state);
-        apacket* ap = get_apacket();
-        copy_packet(ap, p);
-        send_packet(ap, t);
+        D("broadcast device transport:%s\n", statename(t));
+        if (t->connection_state != CS_OFFLINE && t->connection_state != CS_NOPERM) {
+            apacket* ap = get_apacket();
+            copy_packet(ap, p);
+            send_packet(ap, t);
         
-        if (ap->msg.command == A_STAT && ap->msg.arg1 == 0) {
-            // lock state message
-            if (ap->msg.arg0 == 0) {
-                // unlocked
-                t->connection_state = CS_DEVICE;
-            } else {
-                // locked
-                t->connection_state = CS_PWLOCK;
+            if (ap->msg.command == A_STAT && ap->msg.arg1 == 0) {
+                // lock state message
+                if (ap->msg.arg0 == 0) {
+                    // unlocked
+                    t->connection_state = CS_DEVICE;
+                } else {
+                    // locked
+                    t->connection_state = CS_PWLOCK;
+                }
             }
         }
-        
-     }
+    }
     sdb_mutex_unlock(&transport_lock);
 }