From: sung.goo.kim Date: Tue, 27 Oct 2015 05:40:20 +0000 (+0900) Subject: Register device/platform info when starting daemon X-Git-Tag: accepted/tizen/mobile/20151201.031626~59 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd6f4f9646f8294c580e4ed3d272a57b3e473a98;p=platform%2Fcore%2Fiot%2Fiotcon.git Register device/platform info when starting daemon Change-Id: Iaba1b80f42299b37c74717a31ad30c262f55090b --- diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt index 499aadb..e75437d 100644 --- a/daemon/CMakeLists.txt +++ b/daemon/CMakeLists.txt @@ -7,7 +7,7 @@ SET(DAEMON_SRCS ${DAEMON_SRCS} ${CMAKE_SOURCE_DIR}/common/ic-dbus.c) SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/common/ic-dbus.c PROPERTIES GENERATED TRUE) -pkg_check_modules(daemon_pkgs REQUIRED gio-2.0 dlog gio-unix-2.0 capi-system-info) +pkg_check_modules(daemon_pkgs REQUIRED gio-2.0 dlog gio-unix-2.0 capi-system-info capi-system-system-settings) INCLUDE_DIRECTORIES(${daemon_pkgs_INCLUDE_DIRS}) LINK_DIRECTORIES(${daemon_pkgs_LIBRARY_DIRS}) diff --git a/daemon/icd-ioty.c b/daemon/icd-ioty.c index b7d40db..81d8ff3 100644 --- a/daemon/icd-ioty.c +++ b/daemon/icd-ioty.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -38,13 +39,18 @@ #define ICD_UUID_LENGTH 37 static const char *ICD_SYSTEM_INFO_TIZEN_ID = "http://tizen.org/system/tizenid"; +static const char *ICD_SYSTEM_INFO_PLATFORM_NAME = "http://tizen.org/system/platform.name"; +static const char *ICD_SYSTEM_INFO_PLATFORM_VERSION = "http://tizen.org/feature/platform.version"; +static const char *ICD_SYSTEM_INFO_MANUF_NAME = "http://tizen.org/system/manufacturer"; +static const char *ICD_SYSTEM_INFO_MODEL_NAME = "http://tizen.org/system/model_name"; +static const char *ICD_SYSTEM_INFO_BUILD_STRING = "http://tizen.org/system/build.string"; typedef struct { char *device_name; char *tizen_device_id; } icd_tizen_info_s; -static icd_tizen_info_s icd_tizen_info; +static icd_tizen_info_s icd_tizen_info = {0}; static GMutex icd_csdk_mutex; @@ -823,71 +829,6 @@ int icd_ioty_observer_stop(OCDoHandle handle, GVariant *options) return IOTCON_ERROR_NONE; } - -int icd_ioty_register_device_info(char *device_name) -{ - OCStackResult result; - OCDeviceInfo device_info = {0}; - - RETV_IF(NULL == device_name, IOTCON_ERROR_INVALID_PARAMETER); - - device_info.deviceName = device_name; - - icd_ioty_csdk_lock(); - result = OCSetDeviceInfo(device_info); - icd_ioty_csdk_unlock(); - - if (OC_STACK_OK != result) { - ERR("OCSetDeviceInfo() Fail(%d)", result); - return icd_ioty_convert_error(result); - } - - icd_tizen_info.device_name = strdup(device_name); - - return IOTCON_ERROR_NONE; -} - - -int icd_ioty_register_platform_info(char *platform_id, - char *manufacturer_name, - char *manufacturer_url, - char *model_number, - char *date_of_manufacture, - char *platform_version, - char *os_version, - char *hw_version, - char *firmware_version, - char *support_url, - char *system_time) -{ - OCStackResult result; - OCPlatformInfo platform_info = {0}; - - platform_info.platformID = platform_id; - platform_info.manufacturerName = manufacturer_name; - platform_info.manufacturerUrl = manufacturer_url; - platform_info.modelNumber = model_number; - platform_info.dateOfManufacture = date_of_manufacture; - platform_info.platformVersion = platform_version; - platform_info.operatingSystemVersion = os_version; - platform_info.hardwareVersion = hw_version; - platform_info.firmwareVersion = firmware_version; - platform_info.supportUrl = support_url; - platform_info.systemTime = system_time; - - icd_ioty_csdk_lock(); - result = OCSetPlatformInfo(platform_info); - icd_ioty_csdk_unlock(); - - if (OC_STACK_OK != result) { - ERR("OCSetPlatformInfo() Fail(%d)", result); - return icd_ioty_convert_error(result); - } - - return IOTCON_ERROR_NONE; -} - - int icd_ioty_get_info(int type, const char *host_address, int conn_type, unsigned int signal_number, const char *bus_name) { @@ -955,6 +896,152 @@ static int _icd_ioty_get_tizen_id(char **tizen_device_id) return IOTCON_ERROR_NONE; } +static int _ioty_set_device_info() +{ + int ret; + char *device_name = NULL; + OCDeviceInfo device_info = {0}; + + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, &device_name); + if (SYSTEM_SETTINGS_ERROR_NONE != ret) { + ERR("system_settings_get_value_string() Fail(%d)", ret); + return IOTCON_ERROR_SYSTEM; + } + + device_info.deviceName = device_name; + + icd_ioty_csdk_lock(); + ret = OCSetDeviceInfo(device_info); + icd_ioty_csdk_unlock(); + + if (OC_STACK_OK != ret) { + ERR("OCSetDeviceInfo() Fail(%d)", ret); + free(device_name); + return icd_ioty_convert_error(ret); + } + + free(icd_tizen_info.device_name); + icd_tizen_info.device_name = device_name; + + _ioty_print_device_info(device_info); + + return IOTCON_ERROR_NONE; +} + +static void _icd_ioty_on_device_name_changed_cb(system_settings_key_e key, + void *user_data) +{ + FN_CALL; + int ret; + + ret = _ioty_set_device_info(); + if (IOTCON_ERROR_NONE != ret) { + ERR("_ioty_set_device_info() Fail(%d)", ret); + return; + } +} + +int icd_ioty_set_device_info() +{ + int ret; + + ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME, + _icd_ioty_on_device_name_changed_cb, NULL); + if (SYSTEM_SETTINGS_ERROR_NONE != ret) { + ERR("system_settings_set_changed_cb() Fail(%d)", ret); + return IOTCON_ERROR_SYSTEM; + } + + ret = _ioty_set_device_info(); + if (IOTCON_ERROR_NONE != ret) { + ERR("_ioty_set_device_info() Fail(%d)", ret); + return ret; + } + + return IOTCON_ERROR_NONE; +} + +static void _ioty_free_platform_info(OCPlatformInfo platform_info) +{ + free(platform_info.manufacturerName); + free(platform_info.manufacturerUrl); + free(platform_info.modelNumber); + free(platform_info.dateOfManufacture); + free(platform_info.platformVersion); + free(platform_info.operatingSystemVersion); + free(platform_info.hardwareVersion); + free(platform_info.firmwareVersion); + free(platform_info.supportUrl); + free(platform_info.systemTime); +} + +int icd_ioty_set_platform_info() +{ + int ret; + OCPlatformInfo platform_info = {0}; + + ret = system_info_get_platform_string(ICD_SYSTEM_INFO_PLATFORM_NAME, + &platform_info.platformID); + if (SYSTEM_INFO_ERROR_NONE != ret) { + ERR("system_info_get_platform_string() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return IOTCON_ERROR_SYSTEM; + } + + ret = system_info_get_platform_string(ICD_SYSTEM_INFO_MANUF_NAME, + &platform_info.manufacturerName); + if (SYSTEM_INFO_ERROR_NONE != ret) { + ERR("system_info_get_platform_string() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return IOTCON_ERROR_SYSTEM; + } + + ret = system_info_get_platform_string(ICD_SYSTEM_INFO_MODEL_NAME, + &platform_info.modelNumber); + if (SYSTEM_INFO_ERROR_NONE != ret) { + ERR("system_info_get_platform_string() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return IOTCON_ERROR_SYSTEM; + } + + ret = system_info_get_platform_string(ICD_SYSTEM_INFO_PLATFORM_VERSION, + &platform_info.platformVersion); + if (SYSTEM_INFO_ERROR_NONE != ret) { + ERR("system_info_get_platform_string() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return IOTCON_ERROR_SYSTEM; + } + + ret = system_info_get_platform_string(ICD_SYSTEM_INFO_BUILD_STRING, + &platform_info.firmwareVersion); + if (SYSTEM_INFO_ERROR_NONE != ret) { + ERR("system_info_get_platform_string() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return IOTCON_ERROR_SYSTEM; + } + + /* platform_info.manufacturerUrl */ + /* platform_info.dateOfManufacture */ + /* platform_info.operatingSystemVersion */ + /* platform_info.hardwareVersion */ + /* platform_info.supportUrl */ + /* platform_info.systemTime */ + + _ioty_print_platform_info(platform_info); + + icd_ioty_csdk_lock(); + ret = OCSetPlatformInfo(platform_info); + icd_ioty_csdk_unlock(); + + if (OC_STACK_OK != ret) { + ERR("OCSetPlatformInfo() Fail(%d)", ret); + _ioty_free_platform_info(platform_info); + return icd_ioty_convert_error(ret); + } + _ioty_free_platform_info(platform_info); + + return IOTCON_ERROR_NONE; +} int icd_ioty_set_tizen_info() { diff --git a/daemon/icd-ioty.h b/daemon/icd-ioty.h index 8d3f02d..0422544 100644 --- a/daemon/icd-ioty.h +++ b/daemon/icd-ioty.h @@ -99,23 +99,11 @@ OCDoHandle icd_ioty_observer_start(GVariant *resource, int observe_type, GVarian int icd_ioty_observer_stop(OCDoHandle handle, GVariant *options); -int icd_ioty_register_device_info(char *device_name); - -int icd_ioty_register_platform_info(char *platform_id, - char *manufacturer_name, - char *manufacturer_url, - char *model_number, - char *date_of_manufacture, - char *platform_version, - char *os_version, - char *hw_version, - char *firmware_version, - char *support_url, - char *system_time); - int icd_ioty_get_info(int type, const char *host_address, int conn_type, unsigned int signal_number, const char *bus_name); +int icd_ioty_set_device_info(); +int icd_ioty_set_platform_info(); int icd_ioty_set_tizen_info(); gboolean icd_ioty_get_tizen_info(icDbus *object, GDBusMethodInvocation *invocation, diff --git a/daemon/icd.c b/daemon/icd.c index 9f01b1a..9a57719 100644 --- a/daemon/icd.c +++ b/daemon/icd.c @@ -44,6 +44,22 @@ int main(int argc, char **argv) return -1; } + ret = icd_ioty_set_device_info(); + if (IOTCON_ERROR_NONE != ret) { + ERR("icd_ioty_set_device_info() Fail(%d)", ret); + icd_ioty_deinit(thread); + icd_dbus_deinit(id); + return -1; + } + + ret = icd_ioty_set_platform_info(); + if (IOTCON_ERROR_NONE != ret) { + ERR("icd_ioty_set_platform_info() Fail(%d)", ret); + icd_ioty_deinit(thread); + icd_dbus_deinit(id); + return -1; + } + ret = icd_ioty_set_tizen_info(); if (IOTCON_ERROR_NONE != ret) { ERR("icd_ioty_set_tizen_info() Fail(%d)", ret); diff --git a/packaging/iotcon-old.manifest b/packaging/iotcon-old.manifest index 00da368..6101ccc 100644 --- a/packaging/iotcon-old.manifest +++ b/packaging/iotcon-old.manifest @@ -12,6 +12,7 @@ + diff --git a/packaging/iotcon.spec b/packaging/iotcon.spec index 91d5277..b59f132 100644 --- a/packaging/iotcon.spec +++ b/packaging/iotcon.spec @@ -18,6 +18,7 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(capi-base-common) BuildRequires: pkgconfig(capi-system-info) +BuildRequires: pkgconfig(capi-system-system-settings) %if "%{tizen}" == "2.3" BuildRequires: python-xml %endif