From: greatim Date: Thu, 12 Jan 2017 06:49:37 +0000 (+0900) Subject: fix a bug that device is still offline when reboot (USB connected) X-Git-Tag: submit/tizen_3.0/20170126.054419~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d784d7cf0b5ef9184be46123361318cb0e26ffb;p=sdk%2Ftarget%2Fsdbd.git fix a bug that device is still offline when reboot (USB connected) modify broadcast_transport (send device status) not to send packet to offline devices Change-Id: Iabf9f6987a12f4f091089b5982c5f8cc45ab97f4 Signed-off-by: greatim --- diff --git a/src/transport.c b/src/transport.c index 7811628..8d889e3 100644 --- a/src/transport.c +++ b/src/transport.c @@ -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); }