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) {
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;
}
}
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);
}