send device name when incomming connection 56/10756/1
authorkh5325.kim <kh5325.kim@samsung.com>
Thu, 10 Oct 2013 07:36:54 +0000 (16:36 +0900)
committerkh5325.kim <kh5325.kim@samsung.com>
Thu, 10 Oct 2013 07:36:54 +0000 (16:36 +0900)
Change-Id: I3e8f2e3c18eeeee2008df2584538e929b0a949fd
Signed-off-by: kh5325.kim <kh5325.kim@samsung.com>
src/sdb.c
src/sdb.h

index 0a6d7e7..aa75a82 100644 (file)
--- a/src/sdb.c
+++ b/src/sdb.c
@@ -29,6 +29,7 @@
 
 #include "sysdeps.h"
 #include "sdb.h"
+#include "strutils.h"
 
 #if !SDB_HOST
 #include <linux/prctl.h>
@@ -36,7 +37,7 @@
 #else
 #include "usb_vendors.h"
 #endif
-
+#include <system_info.h>
 #define PROC_CMDLINE_PATH "/proc/cmdline"
 #if SDB_TRACE
 SDB_MUTEX_DEFINE( D_lock );
@@ -299,7 +300,7 @@ static void send_close(unsigned local, unsigned remote, atransport *t)
     p->msg.arg1 = remote;
     send_packet(p, t);
 }
-
+static int device_status = 0; // 0:online, 1: password locked later
 static void send_connect(atransport *t)
 {
     D("Calling send_connect \n");
@@ -307,9 +308,24 @@ static void send_connect(atransport *t)
     cp->msg.command = A_CNXN;
     cp->msg.arg0 = A_VERSION;
     cp->msg.arg1 = MAX_PAYLOAD;
-    snprintf((char*) cp->data, sizeof cp->data, "%s::",
-            HOST ? "host" : sdb_device_banner);
+
+    char device_name[256]={0,};
+    int r = 0;
+
+    if (is_emulator()) {
+        r = get_emulator_name(device_name, sizeof device_name);
+    } else {
+        r = get_device_name(device_name, sizeof device_name);
+    }
+    if (r < 0) {
+        snprintf((char*) cp->data, sizeof cp->data, "%s::%s::%d", sdb_device_banner, DEFAULT_DEVICENAME, device_status);
+    } else {
+        snprintf((char*) cp->data, sizeof cp->data, "%s::%s::%d", sdb_device_banner, device_name, device_status);
+    }
+
+    D("CNXN data:%s\n", (char*)cp->data);
     cp->msg.data_length = strlen((char*) cp->data) + 1;
+
     send_packet(cp, t);
 #if SDB_HOST
         /* XXX why sleep here? */
@@ -401,6 +417,37 @@ int get_emulator_name(char str[], int str_size) {
     return 0;
 }
 
+int get_device_name(char str[], int str_size) {
+    char *value = NULL;
+    int r = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &value);
+    if (r != SYSTEM_INFO_ERROR_NONE) {
+        D("fail to get system model:%d\n", errno);
+        return -1;
+    } else {
+        s_strncpy(str, value, str_size);
+        D("returns model_name:%s\n", value);
+        if (value != NULL) {
+            free(value);
+        }
+        return 0;
+    }
+    /*
+    int fd = unix_open(USB_SERIAL_PATH, O_RDONLY);
+    if (fd < 0) {
+        D("fail to read:%s (%d)\n", USB_SERIAL_PATH, errno);
+        return -1;
+    }
+
+    if(read_line(fd, str, str_size)) {
+        D("device serial name: %s\n", str);
+        sdb_close(fd);
+        return 0;
+    }
+    sdb_close(fd);
+    */
+    return -1;
+}
+
 void parse_banner(char *banner, atransport *t)
 {
     char *type, *product, *end;
index ad6acf1..01c8b40 100644 (file)
--- a/src/sdb.h
+++ b/src/sdb.h
@@ -340,6 +340,7 @@ void set_root_privileges();
 
 int get_emulator_forward_port(void);
 int get_emulator_name(char str[], int str_size);
+int get_device_name(char str[], int str_size);
 /* packet allocator */
 apacket *get_apacket(void);
 void put_apacket(apacket *p);
@@ -489,12 +490,13 @@ int sendfailmsg(int fd, const char *reason);
 int handle_host_request(char *service, transport_type ttype, char* serial, int reply_fd, asocket *s);
 
 int is_emulator(void);
+#define DEFAULT_DEVICENAME "unknown"
 
 #if SDB_HOST /* tizen-specific */
 #define DEVICEMAP_SEPARATOR ":"
 #define DEVICENAME_MAX 256
 #define VMS_PATH OS_PATH_SEPARATOR_STR "vms" OS_PATH_SEPARATOR_STR // should include sysdeps.h above
-#define DEFAULT_DEVICENAME "<unknown>"
+
 void register_device_name(const char *device_type, const char *device_name, int port);
 int get_devicename_from_shdmem(int port, char *device_name);
 int read_line(const int fd, char* ptr, const size_t maxlen);