From a45ba4ef2cebc454c7d1218fd01c75f550807bfd Mon Sep 17 00:00:00 2001 From: "kh5325.kim" Date: Thu, 10 Oct 2013 16:36:54 +0900 Subject: [PATCH] send device name when incomming connection Change-Id: I3e8f2e3c18eeeee2008df2584538e929b0a949fd Signed-off-by: kh5325.kim --- src/sdb.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- src/sdb.h | 4 +++- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/sdb.c b/src/sdb.c index 0a6d7e7..aa75a82 100644 --- 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 @@ -36,7 +37,7 @@ #else #include "usb_vendors.h" #endif - +#include #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; diff --git a/src/sdb.h b/src/sdb.h index ad6acf1..01c8b40 100644 --- 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 "" + 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); -- 2.7.4