Change all the SmartThings APIs for Tizen 5.0 48/193648/1
authorJin Yoon <jinny.yoon@samsung.com>
Thu, 22 Nov 2018 23:56:27 +0000 (08:56 +0900)
committerJin Yoon <jinny.yoon@samsung.com>
Thu, 22 Nov 2018 23:56:45 +0000 (08:56 +0900)
Change-Id: I2816a7a9bdd554b493e37c1c356ba2342ed483d5

32 files changed:
.cproject
.gitignore
.project
.tproject
inc/log.h
inc/resource.h [deleted file]
inc/resource/resource_illuminance_sensor_internal.h [deleted file]
inc/resource_illuminance_sensor.h [moved from inc/resource/resource_illuminance_sensor.h with 80% similarity]
inc/resource_internal.h [deleted file]
inc/resource_servo_motor.h [moved from inc/resource/resource_servo_motor.h with 100% similarity]
inc/sensor-data.h [deleted file]
inc/smartthings.h [new file with mode: 0644]
inc/smartthings_payload.h [new file with mode: 0644]
inc/smartthings_resource.h [new file with mode: 0644]
inc/st_things.h [deleted file]
inc/st_things_types.h [deleted file]
lib/liboicdastack.so [deleted file]
lib/libsdkapi.so [deleted file]
lib/libst_thing_master_api.so [new file with mode: 0644]
lib/libst_thing_resource_api.so [new file with mode: 0644]
project_def.prop
res/device_def.json [deleted file]
shared/res/master.json [new file with mode: 0644]
shared/res/resource.json [new file with mode: 0644]
shared/res/st-things-blind.png [moved from shared/res/smart-blind.png with 100% similarity]
src/resource.c [deleted file]
src/resource_illuminance_sensor.c [moved from src/resource/resource_illuminance_sensor.c with 98% similarity]
src/resource_servo_motor.c [moved from src/resource/resource_servo_motor.c with 100% similarity]
src/sensor-data.c [deleted file]
src/smart-blind.c [deleted file]
src/st-things-blind.c [new file with mode: 0644]
tizen-manifest.xml

index f557db1..98fe846 100644 (file)
--- a/.cproject
+++ b/.cproject
@@ -3,9 +3,9 @@
        
     <storageModule moduleId="org.eclipse.cdt.core.settings">
                        
-        <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1579263345">
+        <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.517511004">
                                
-            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1579263345" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.517511004" moduleId="org.eclipse.cdt.core.settings" name="Debug">
                                                
                 <externalSettings/>
                                                
                                
             <storageModule moduleId="cdtBuildSystem" version="4.0.0">
                                                
-                <configuration artifactName="smart-blind" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1579263345" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+                <configuration artifactName="st-things-blind" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.517511004" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
                                                        
-                    <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1579263345." name="/" resourcePath="">
+                    <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.517511004." name="/" resourcePath="">
                                                                        
-                        <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.611539762" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+                        <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.1738414698" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
                                                                                
-                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.588449540" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1550188899" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
                                                                                
-                            <builder autoBuildTarget="all" buildPath="${workspace_loc:/smart-blind}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.961972489" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                            <builder autoBuildTarget="all" buildPath="${workspace_loc:/st-things-blind}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1207061844" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
                                                                                
-                            <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.786630560" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                            <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1190623628" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
                                                                                
-                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1437279340" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.2054459449" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
                                                                                                
-                                <option id="gnu.cpp.compiler.option.optimization.level.1282139812" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                <option id="gnu.cpp.compiler.option.optimization.level.727658358" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1579999524" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1555247421" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1485987024" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1602542145" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.1109780928" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                <option id="sbi.gnu.cpp.compiler.option.798319540" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="iot-headless-4.0-device.core_llvm40.armel"/>
+                                    <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.854556687" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1054429808" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1671438041" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.72724830" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.compiler.option.include.paths.124356411" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                <option id="gnu.cpp.compiler.option.include.paths.2129474266" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1482965669" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks.core.448459700" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
                                                                                                        
                                     <listOptionValue builtIn="false" value="Native_API"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1008357656" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+                                <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1682411468" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
                                                                                                        
                                     <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1382562720" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1346236454" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.512673844" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                            <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.751446670" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
                                                                                                
-                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.427976708" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1778892846" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.494109188" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1634210950" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.142082601" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.2033502355" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.133441897" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                <option id="sbi.gnu.c.compiler.option.983607482" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="iot-headless-4.0-device.core_llvm40.armel"/>
+                                    <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.792268531" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.277854613" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1631838969" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.177897637" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.c.compiler.option.include.paths.1655724879" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                <option id="gnu.c.compiler.option.include.paths.462584618" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks.core.1521997791" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                <option id="sbi.gnu.c.compiler.option.frameworks.core.273905295" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
                                                                                                        
                                     <listOptionValue builtIn="false" value="Native_API"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1595744898" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+                                <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1216768176" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
                                                                                                        
                                     <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1134833125" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.800612007" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.259387756" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                            <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.211686208" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
                                                                                
-                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1609529239" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1790261113" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.491091650" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.2130791992" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1512920854" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.512587570" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1057977747" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.279739635" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1272757498" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1211287379" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
                                                                                                        
-                                    <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/../iot-things-4.0-device.core/usr/lib&quot;"/>
-                                                                                                       
                                     <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.link.option.paths.1369147518" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                <option id="gnu.cpp.link.option.paths.675534973" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.link.option.libs.1082130017" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                <option id="gnu.cpp.link.option.libs.1115435437" superClass="gnu.cpp.link.option.libs" valueType="libs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="oicdastack"/>
+                                    <listOptionValue builtIn="false" value="st_thing_master_api"/>
                                                                                                        
-                                    <listOptionValue builtIn="false" value="sdkapi"/>
+                                    <listOptionValue builtIn="false" value="st_thing_resource_api"/>
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1218710096" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.906985510" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
                                                                                                        
                                     <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                                                        
                                                                                        
                             </tool>
                                                                                
-                            <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1720579698" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                            <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.613714131" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1044397358" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1843308659" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.fnmapgen.1047853461" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                            <tool id="org.tizen.nativecore.tool.fnmapgen.208341868" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1260194585" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                            <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.2142380119" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.ast.1676405848" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                            <tool id="org.tizen.nativecore.tool.ast.1064117708" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.ast.cpp.757839070" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                            <tool id="org.tizen.nativecore.tool.ast.cpp.1852281520" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1231386660" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.873724887" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.po.compiler.230537812" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1922060306" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1565517199" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.564080767" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
                                                                        
                         </toolChain>
                                                                
                        
         </cconfiguration>
                        
-        <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.502396447">
+        <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1007476895">
                                
-            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.502396447" moduleId="org.eclipse.cdt.core.settings" name="Release">
+            <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1007476895" moduleId="org.eclipse.cdt.core.settings" name="Release">
                                                
                 <externalSettings/>
                                                
                                
             <storageModule moduleId="cdtBuildSystem" version="4.0.0">
                                                
-                <configuration artifactName="smart-blind" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.502396447" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+                <configuration artifactName="st-things-blind" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1007476895" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
                                                        
-                    <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.502396447." name="/" resourcePath="">
+                    <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1007476895." name="/" resourcePath="">
                                                                        
-                        <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1835949389" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+                        <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.644833988" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
                                                                                
-                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1474242873" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+                            <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.731741126" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
                                                                                
-                            <builder buildPath="${workspace_loc:/smart-blind}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1319584467" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+                            <builder buildPath="${workspace_loc:/st-things-blind}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.630437265" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
                                                                                
-                            <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1688011617" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+                            <tool command="arm-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.656919980" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
                                                                                
-                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.265781889" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1167200149" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
                                                                                                
-                                <option id="gnu.cpp.compiler.option.optimization.level.1840608126" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                <option id="gnu.cpp.compiler.option.optimization.level.1985697369" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.2039835250" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1839357599" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1616887854" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.258144366" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.1897469350" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+                                <option id="sbi.gnu.cpp.compiler.option.1091452133" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="iot-headless-4.0-device.core_llvm40.armel"/>
+                                    <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.349764408" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1076567149" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.644139045" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.315673615" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.compiler.option.include.paths.1742746573" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+                                <option id="gnu.cpp.compiler.option.include.paths.1961482406" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.cpp.compiler.option.frameworks.core.138538818" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+                                <option id="sbi.gnu.cpp.compiler.option.frameworks.core.69525267" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
                                                                                                        
                                     <listOptionValue builtIn="false" value="Native_API"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.345410264" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.791265284" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.2081951283" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+                            <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.485776507" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
                                                                                                
-                                <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.325436731" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+                                <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1794125919" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.245781463" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+                                <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.1536737003" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.84228738" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1702636031" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.298053056" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+                                <option id="sbi.gnu.c.compiler.option.1573347583" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="iot-headless-4.0-device.core_llvm40.armel"/>
+                                    <listOptionValue builtIn="false" value="iot-headed-5.0-device.core_llvm40.armel"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1495113514" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.20239652" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/asp/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/attach-panel&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cbhm&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/csr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dali-toolkit&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/device-certificate-manager&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-buffer-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-con-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-file-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-imf-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-input-evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-ipc-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ector-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eom&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-client-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/feedback&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/geofence&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/harfbuzz&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotcon&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/iotjs&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/maps&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/privacy-privilege-manager/&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/rpc-port&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/SDL2&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                                                        
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tef&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/tzsh&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui-viewmgr&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vulkan&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_service&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_dali&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/widget_viewer_evas&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+                                                                                                       
+                                    <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/yaca&quot;"/>
+                                                                                                       
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.165770040" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+                                <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.626220923" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.c.compiler.option.include.paths.2038091548" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+                                <option id="gnu.c.compiler.option.include.paths.325501834" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="sbi.gnu.c.compiler.option.frameworks.core.201431878" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+                                <option id="sbi.gnu.c.compiler.option.frameworks.core.922689476" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
                                                                                                        
                                     <listOptionValue builtIn="false" value="Native_API"/>
                                                                                                        
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2075162554" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1650778668" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1628103167" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+                            <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1626355888" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
                                                                                
-                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.816180912" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+                            <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1819968181" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
                                                                                                
-                                <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.315063264" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+                                <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.1539448517" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1363552698" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1405941598" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
                                                                                                
-                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.108222538" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+                                <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.1880524135" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
                                                                                                
-                                <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1838858372" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+                                <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.405343440" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
                                                                                                        
                                     <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
                                                                                                        
                                                                                                        
                                     <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
                                                                                                        
-                                    <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/../iot-things-4.0-device.core/usr/lib&quot;"/>
-                                                                                                       
                                     <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.link.option.paths.630690609" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+                                <option id="gnu.cpp.link.option.paths.2025338633" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
                                                                                                        
                                     <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
                                                                                                
                                 </option>
                                                                                                
-                                <option id="gnu.cpp.link.option.libs.1849184143" superClass="gnu.cpp.link.option.libs" valueType="libs">
+                                <option id="gnu.cpp.link.option.libs.2043484873" superClass="gnu.cpp.link.option.libs" valueType="libs">
                                                                                                        
-                                    <listOptionValue builtIn="false" value="oicdastack"/>
+                                    <listOptionValue builtIn="false" value="st_thing_master_api"/>
                                                                                                        
-                                    <listOptionValue builtIn="false" value="sdkapi"/>
+                                    <listOptionValue builtIn="false" value="st_thing_resource_api"/>
                                                                                                
                                 </option>
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1007940209" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1237128589" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
                                                                                                        
                                     <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                                                        
                                                                                        
                             </tool>
                                                                                
-                            <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1919490904" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                            <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.799565107" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
                                                                                                
-                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.596118887" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1228624632" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                                                        
                             </tool>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.fnmapgen.237114660" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+                            <tool id="org.tizen.nativecore.tool.fnmapgen.1933542097" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1379592682" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+                            <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1536932164" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.ast.1860833120" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+                            <tool id="org.tizen.nativecore.tool.ast.935052046" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.ast.cpp.113871631" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+                            <tool id="org.tizen.nativecore.tool.ast.cpp.1845925780" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1740391544" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1789803520" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1845280329" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1777649595" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
                                                                                
-                            <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1192681958" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+                            <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1389808993" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
                                                                        
                         </toolChain>
                                                                
        
     <storageModule moduleId="cdtBuildSystem" version="4.0.0">
                        
-        <project id="smart-blind.org.tizen.nativecore.target.sbi.gcc45.app.1161948160" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+        <project id="st-things-blind.org.tizen.nativecore.target.sbi.gcc45.app.266583644" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
                
     </storageModule>
        
                        
         <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                        
-        <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.502396447">
+        <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.517511004">
                                
             <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                        
         </scannerConfigBuildInfo>
                        
-        <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.1579263345">
+        <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1007476895">
                                
             <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                        
index 2fd2277..61124d7 100644 (file)
@@ -4,3 +4,4 @@
 /res/certificate.pem
 /res/privatekey.der
 /crash-info/
+/.package-stamp
index 580a699..5c156ac 100644 (file)
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-       <name>smart-blind</name>
+       <name>st-things-blind</name>
        <comment></comment>
        <projects>
        </projects>
@@ -25,7 +25,7 @@
        </natures>
        <filteredResources>
                <filter>
-                       <id>1532670384450</id>
+                       <id>1542779804631</id>
                        <name></name>
                        <type>26</type>
                        <matcher>
@@ -34,7 +34,7 @@
                        </matcher>
                </filter>
                <filter>
-                       <id>1532670384528</id>
+                       <id>1542779804641</id>
                        <name></name>
                        <type>6</type>
                        <matcher>
index f857534..903a965 100644 (file)
--- a/.tproject
+++ b/.tproject
@@ -2,7 +2,7 @@
 <tproject xmlns="http://www.tizen.org/tproject">
     <platforms>
         <platform>
-            <name>iot-headless-4.0</name>
+            <name>iot-headed-5.0</name>
         </platform>
     </platforms>
     <package>
index d958e2e..bb327cb 100644 (file)
--- a/inc/log.h
+++ b/inc/log.h
  * limitations under the License.
  */
 
-#ifndef __POSITION_FINDER_SERVER_H__
-#define __POSITION_FINDER_SERVER_H__
 
-#include <dlog.h>
+#ifndef __LOG_H__
+#define  __LOG_H__
 
-#ifdef  LOG_TAG
-#undef  LOG_TAG
-#endif
-#define LOG_TAG "TT"
-
-#if !defined(_D)
-#define _D(fmt, arg...) dlog_print(DLOG_DEBUG, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
-#endif
+#include <dlog.h>
 
-#if !defined(DBG)
-#define DBG(fmt, arg...) dlog_print(DLOG_DEBUG, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#ifdef __cplusplus
+extern "C" {
 #endif
 
-#if !defined(_I)
-#define _I(fmt, arg...) dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#ifdef  LOG_TAG
+#undef  LOG_TAG
 #endif
+#define LOG_TAG "STAPP"
 
-#if !defined(_W)
-#define _W(fmt, arg...) dlog_print(DLOG_WARN, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
-#endif
+#define _E(fmt, args...) dlog_print(DLOG_ERROR, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args)
+#define _W(fmt, args...) dlog_print(DLOG_WARN, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args)
+#define _I(fmt, args...)  dlog_print(DLOG_INFO, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args)
+#define _D(fmt, args...) dlog_print(DLOG_DEBUG, LOG_TAG, "%s : %s(%d) > "fmt"\n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args)
 
-#if !defined(_E)
-#define _E(fmt, arg...) dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
-#endif
+#define START dlog_print(DLOG_DEBUG, LOG_TAG, "%s : %s(%d) >>>>>>>> called", rindex(__FILE__, '/') + 1, __func__, __LINE__)
+#define END dlog_print(DLOG_DEBUG, LOG_TAG, "%s : %s(%d) <<<<<<<< ended", rindex(__FILE__, '/') + 1, __func__, __LINE__)
 
 #define retvm_if(expr, val, fmt, arg...) do { \
        if (expr) { \
@@ -97,6 +90,9 @@
        } \
 }
 
+#ifdef __cplusplus
+}
+#endif
 
 
-#endif /* __POSITION_FINDER_SERVER_H__ */
+#endif /* __LOG_H__ */
diff --git a/inc/resource.h b/inc/resource.h
deleted file mode 100755 (executable)
index cf59cb9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __POSITION_FINDER_RESOURCE_H__
-#define __POSITION_FINDER_RESOURCE_H__
-
-#include <peripheral_io.h>
-
-#include "resource_internal.h"
-#include "resource/resource_illuminance_sensor.h"
-#include "resource/resource_servo_motor.h"
-
-#endif /* __POSITION_FINDER_RESOURCE_H__ */
diff --git a/inc/resource/resource_illuminance_sensor_internal.h b/inc/resource/resource_illuminance_sensor_internal.h
deleted file mode 100644 (file)
index 0bfec0a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_INTERNAL_H__
-#define __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_INTERNAL_H__
-
-/**
- * @brief Destory the i2c handle and changes the gpio pin state to the close(0).
- */
-extern void resource_close_illuminance_sensor(void);
-
-#endif /* __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_INTERNAL_H__ */
-
similarity index 80%
rename from inc/resource/resource_illuminance_sensor.h
rename to inc/resource_illuminance_sensor.h
index 05523ca..c77293c 100644 (file)
@@ -16,8 +16,8 @@
  * limitations under the License.
  */
 
-#ifndef __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_H__
-#define __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_H__
+#ifndef __RESOURCE_ILLUMINANCE_SENSOR_H__
+#define __RESOURCE_ILLUMINANCE_SENSOR_H__
 
 /**
  * @brief Reads the value of i2c bus connected illuminance sensor.
  */
 extern int resource_read_illuminance_sensor(int i2c_bus, uint32_t *out_value);
 
-#endif /* __POSITION_FINDER_RESOURCE_ILLUMINANCE_SENSOR_H__ */
+/**
+ * @brief Destory the i2c handle and changes the gpio pin state to the close(0).
+ */
+extern void resource_close_illuminance_sensor(void);
+
+#endif /* __RESOURCE_ILLUMINANCE_SENSOR_H__ */
 
diff --git a/inc/resource_internal.h b/inc/resource_internal.h
deleted file mode 100755 (executable)
index acea1e1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __POSITION_FINDER_RESOURCE_INTERNAL_H__
-#define __POSITION_FINDER_RESOURCE_INTERNAL_H__
-
-#include <peripheral_io.h>
-
-#include "resource/resource_illuminance_sensor_internal.h"
-
-#define PIN_MAX 40
-
-struct _resource_s {
-       int opened;
-       peripheral_gpio_h sensor_h;
-       void (*close) (int);
-};
-typedef struct _resource_s resource_s;
-
-typedef void (*resource_read_cb)(double value, void *data);
-
-struct _resource_read_cb_s {
-       resource_read_cb cb;
-       void *data;
-       int pin_num;
-};
-typedef struct _resource_read_cb_s resource_read_s;
-
-extern resource_s *resource_get_info(int pin_num);
-extern void resource_close_all(void);
-
-#endif /* __POSITION_FINDER_RESOURCE_INTERNAL_H__ */
diff --git a/inc/sensor-data.h b/inc/sensor-data.h
deleted file mode 100644 (file)
index d6b3001..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __SENSOR_DATA_H__
-#define  __SENSOR_DATA_H__
-
-#include <stdbool.h>
-
-typedef enum {
-       SENSOR_DATA_TYPE_NONE = 0,
-       SENSOR_DATA_TYPE_INT,
-       SENSOR_DATA_TYPE_UINT,
-       SENSOR_DATA_TYPE_BOOL,
-       SENSOR_DATA_TYPE_DOUBLE,
-       SENSOR_DATA_TYPE_STR,
-} sensor_data_type_e;
-
-typedef struct __sensor_data_s sensor_data;
-
-sensor_data *sensor_data_new(sensor_data_type_e type);
-void sensor_data_free(sensor_data *data);
-
-int sensor_data_set_int(sensor_data *data, int value);
-int sensor_data_set_uint(sensor_data *data, unsigned int value);
-int sensor_data_set_bool(sensor_data *data, bool value);
-int sensor_data_set_double(sensor_data *data, double value);
-int sensor_data_set_string(sensor_data *data, const char *value, unsigned int size);
-
-int sensor_data_get_int(sensor_data *data, int *value);
-int sensor_data_get_uint(sensor_data *data, unsigned int *value);
-int sensor_data_get_bool(sensor_data *data, bool *value);
-int sensor_data_get_double(sensor_data *data, double *value);
-int sensor_data_get_string(sensor_data *data, const char **value);
-
-#endif /* __SENSOR_DATA_H__ */
diff --git a/inc/smartthings.h b/inc/smartthings.h
new file mode 100644 (file)
index 0000000..7206479
--- /dev/null
@@ -0,0 +1,1656 @@
+/*****************************************************************
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************/
+
+
+#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__
+#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <tizen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup CAPI_SMARTTHINGS_THING_MASTER_MODULE
+ * @{
+ */
+
+/**
+ * @brief Definition for the max length of SSID for access point.
+ * @since_ses 1
+ */
+#define SMARTTHINGS_SSID_LEN_MAX 32
+
+/**
+ * @brief Definition for the max length of cloud information.
+ * @since_ses 1
+ */
+#define SMARTTHINGS_CLOUD_INFO_LEN_MAX 128
+
+/**
+ * @brief Enumeration for the SmartThings error.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_ERROR_NONE = TIZEN_ERROR_NONE,                                /**< Successful */
+       SMARTTHINGS_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,      /**< Invalid parameter */
+       SMARTTHINGS_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,              /**< Out of memory */
+       SMARTTHINGS_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED,      /**< Permission denied */
+       SMARTTHINGS_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA,                          /**< No data */
+       SMARTTHINGS_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED,              /**< Not supported */
+       SMARTTHINGS_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN - 1,             /**< Operation failed */
+       SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE = TIZEN_ERROR_UNKNOWN -2            /**< Service unavailable */
+} smartthings_error_e;
+
+/**
+ * @brief Enumeration for SmartThings status.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_STATUS_NOT_READY = -1,                   /**< Service agent is not ready */
+       SMARTTHINGS_STATUS_INIT = 0,                         /**< Initial state of SmartThings Thing */
+       SMARTTHINGS_STATUS_ES_STARTED,                       /**< Easy-setup is started */
+       SMARTTHINGS_STATUS_ES_DONE,                          /**< Easy-setup is done */
+       SMARTTHINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER,  /**< Easy-setup failed due to Ownership-Transfer failure */
+       SMARTTHINGS_STATUS_CONNECTING_TO_AP,                 /**< Connecting to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_CONNECTED_TO_AP,                  /**< Connected to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_CONNECTING_TO_AP_FAILED,          /**< Failed to connect to target Wi-Fi access point */
+       SMARTTHINGS_STATUS_REGISTERING_TO_CLOUD,             /**< Trying to sign up, sign in and publish resources to cloud */
+       SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD,              /**< Publish resources to cloud is complete. Now the thing is ready to be controlled via cloud */
+       SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN,    /**< Failed to sign in to cloud */
+       SMARTTHINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES     /**< Failed to publish resources to cloud */
+} smartthings_status_e;
+
+/**
+ * @brief Enumeration for RPC connection status.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_CONNECTION_STATUS_CONNECTED = 0,            /**< Connection is connected */
+       SMARTTHINGS_CONNECTION_STATUS_DISCONNECTED,             /**< Connection is disconnected */
+       SMARTTHINGS_CONNECTION_STATUS_REJECTED,                 /**< Connection is rejected */
+} smartthings_connection_status_e;
+
+/**
+ * @brief The Wi-Fi mode.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_MODE_11A = (1 << 0),   /**< Wi-Fi 11A */
+       SMARTTHINGS_WIFI_MODE_11B = (1 << 1),   /**< Wi-Fi 11B */
+       SMARTTHINGS_WIFI_MODE_11G = (1 << 2),   /**< Wi-Fi 11G */
+       SMARTTHINGS_WIFI_MODE_11N = (1 << 3),   /**< Wi-Fi 11N */
+       SMARTTHINGS_WIFI_MODE_11AC = (1 << 4)   /**< Wi-Fi 11AC */
+} smartthings_wifi_mode_e;
+
+/**
+ * @brief The Wi-Fi frequency band.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_FREQ_24G = (1 << 0),       /**< Wi-Fi 2.4GHz */
+       SMARTTHINGS_WIFI_FREQ_5G = (1 << 1),        /**< Wi-Fi 5GHz */
+} smartthings_wifi_freq_e;
+
+/**
+ * @brief The Wi-Fi authentication type of access point.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_AUTHTYPE_NONE = 0, /**< No authentication */
+       SMARTTHINGS_WIFI_AUTHTYPE_WEP,      /**< WEP */
+       SMARTTHINGS_WIFI_AUTHTYPE_WPA_PSK,  /**< WPA-PSK */
+       SMARTTHINGS_WIFI_AUTHTYPE_WPA2_PSK  /**< WPA2-PSK */
+} smartthings_wifi_authtype_e;
+
+/**
+ * @brief The Wi-Fi encryption type of access point.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_WIFI_ENCTYPE_NONE = 0,      /**< No encryption */
+       SMARTTHINGS_WIFI_ENCTYPE_WEP_64,        /**< WEP 64 */
+       SMARTTHINGS_WIFI_ENCTYPE_WEP_128,       /**< WEP 128 */
+       SMARTTHINGS_WIFI_ENCTYPE_TKIP,          /**< TKIP */
+       SMARTTHINGS_WIFI_ENCTYPE_AES,           /**< AES */
+       SMARTTHINGS_WIFI_ENCTYPE_TKIP_AES       /**< TKIP/AES */
+} smartthings_wifi_enctype_e;
+
+/**
+ * @brief The SmartThings handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_s *smartthings_h;
+
+/**
+ * @brief The access point information handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_ap_info_s *smartthings_ap_info_h;
+
+/**
+ * @brief The device provisioning information handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_device_prov_info_s *smartthings_device_prov_info_h;
+
+/**
+ * @brief The cloud information handle for cloud sign-up.
+ * @since_ses 1
+ */
+typedef struct smartthings_cloud_info_s *smartthings_cloud_info_h;
+
+/**
+ * @brief The access point list handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_ap_list_s *smartthings_ap_list_h;
+
+/**
+ * @brief Callback for status of connection to SmartThings Thing agent.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can see connection status as #smartthings_connection_status_e enumeration value.
+ *
+ * @param[in] result The result of connection operation
+ * @param[in] handle The SmartThings handle
+ * @param[in] status The status of connection
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_initialize()
+ */
+typedef void (*smartthings_connection_status_cb)(smartthings_h handle, smartthings_connection_status_e status, void *user_data);
+
+/**
+ * @brief Callback for SmartThings Thing status.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can see SmartThings status as #smartthings_status_e enumeration value.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] status The status of SmartThings
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_status_changed_cb()
+ * @see smartthings_unset_status_changed_cb()
+ */
+typedef void (*smartthings_status_changed_cb)(smartthings_h handle, smartthings_status_e status, void *user_data);
+
+/**
+ * @brief Callback for getting user's input regarding mutual verification.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can send a confirmation for mutual verification as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_user_confirm_cb()
+ * @see smartthings_unset_user_confirm_cb()
+ */
+typedef void (*smartthings_user_confirm_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for getting user's opinion regarding device reset.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can sends a confirmation for reset as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+typedef void (*smartthings_reset_confirm_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for result of reset operation.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can check reset operation succeeds or fails.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] result The result of reset
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_reset_result_cb()
+ * @see smartthings_unset_reset_result_cb()
+ */
+typedef void (*smartthings_reset_result_cb)(smartthings_h handle, bool result, void *user_data);
+
+/**
+ * @brief Callback for carrying the randomly generated PIN information.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a pin can be used only in the callback. To use outside, make a copy.
+ * @remarks When callback is called, user can see PIN value and length.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] pin The PIN data in string format
+ * @param[in] size The PIN length of @a pin
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_pin_cb()
+ * @see smartthings_unset_pin_cb()
+ */
+typedef void (*smartthings_pin_generated_cb)(smartthings_h handle, const char* pin, size_t size, void *user_data);
+
+/**
+ * @brief Callback for informing the application to close the PIN display.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can know PIN based ownership transfer is finished.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_pin_cb()
+ * @see smartthings_unset_pin_cb()
+ */
+typedef void (*smartthings_pin_display_close_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Callback for informing Wi-Fi AP information to connect.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a ap_info_h should not be released.
+ * @remarks The @a ap_info_h will be released when smartthings_unset_wifi_ap_provisioning_cb() is called.
+ * @remarks When callback is called, user can get Wi-Fi provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] ap_info_h The AP information handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+typedef void (*smartthings_wifi_ap_provisioning_cb)(smartthings_h handle, smartthings_ap_info_h ap_info_h, void *user_data);
+
+/**
+ * @brief Callback for informing device provisioning information.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks The @a dev_prov_h should not be released.
+ * @remarks The @a dev_prov_h will be released when smartthings_unset_device_provisioning_cb() is called.
+ * @remarks When callback is called, user can get device provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_prov_h The device provisioning information handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+typedef void (*smartthings_device_provisioning_cb)(smartthings_h handle, smartthings_device_prov_info_h dev_prov_h, void *user_data);
+
+/**
+ * @brief Callback for informing the scan AP list request.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user scans access points, sets AP list and sends it to agent.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] req_id The request ID
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_scan_ap_cb()
+ * @see smartthings_unset_scan_ap_cb()
+ */
+typedef void (*smartthings_scan_ap_cb)(smartthings_h handle, int req_id, void *user_data);
+
+/**
+ * @brief Callback for informing the stop soft AP request.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user stops soft AP.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_set_stop_soft_ap_cb()
+ * @see smartthings_unset_stop_soft_ap_cb()
+ */
+typedef void (*smartthings_stop_soft_ap_cb)(smartthings_h handle, void *user_data);
+
+/**
+ * @brief Creates a handle and connects to agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a handle must be released using smartthings_deinitialize().
+ * @remarks Ths function returns #SMARTTHINGS_ERROR_PERMISSION_DENIED\n
+ *          if the application has no app-defined privilege for 'http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master'.
+ *
+ * @param[out] handle The SmartThings handle to be newly created on success
+ * @param[in] connection_status_cb The RPC connection status callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_NOT_SUPPORTED Not supported
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_deinitialize()
+ */
+int smartthings_initialize(smartthings_h *handle,
+                                               smartthings_connection_status_cb connection_status_cb,
+                                               void *user_data);
+
+/**
+ * @brief Deinitializes a handle and disconnects from the agent.
+ * @since_ses 1
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_initialize()
+ */
+int smartthings_deinitialize(smartthings_h handle);
+
+/**
+ * @brief Starts SmartThings Thing operation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_stop()
+ */
+int smartthings_start(smartthings_h handle);
+
+/**
+ * @brief Stops SmartThings Thing operation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_start()
+ */
+int smartthings_stop(smartthings_h handle);
+
+/**
+ * @brief Sets thing status changed callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when SmartThings status is changed.
+ * @remarks When callback is called, user can get SmartThings status as #smartthings_status_e enumeration value.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] status_cb The status changed callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_status_changed_cb()
+ */
+int smartthings_set_status_changed_cb(smartthings_h handle,
+                                                               smartthings_status_changed_cb status_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets thing status changed callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_status_changed_cb()
+ */
+int smartthings_unset_status_changed_cb(smartthings_h handle);
+
+/**
+ * @brief Sets test certificate files.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks These files should be placed in 'res' directory of application.
+ * @remarks This function is needed only for using test certificate.
+ * @remarks This function can be used before smartthings_start()
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] certificate The certificate file
+ * @param[in] private_key The private key file
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_certificate_file(smartthings_h handle, const char *certificate, const char *private_key);
+
+/**
+ * @brief Sets device property for Easy-setup.
+ * @since_ses 1
+ *
+ * @remarks This function can be used before smartthings_start()
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_name The device name
+ * @param[in] wifi_mode The supported Wi-Fi mode (bit masked value for #smartthings_wifi_mode_e)
+ * @param[in] wifi_freq The supported Wi-Fi frequency (bit masked value for #smartthings_wifi_freq_e)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_set_device_property(smartthings_h handle, const char* dev_name, int wifi_mode, int wifi_freq);
+
+/**
+ * @brief Gets a device ID.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a device_id should be released using free().
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[out] device_id The device ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_get_device_id(smartthings_h handle, char **device_id);
+
+/**
+ * @brief Gets a Easy-setup status.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[out] is_completed The status of Easy-setup whether it is completed or not
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_get_easysetup_status(smartthings_h handle, bool *is_completed);
+
+/**
+ * @brief Starts Easy-setup mode.
+ *
+ * @details This function requests for turning on soft AP to SmartThings Thing agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/softap
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_stop_easysetup()
+ */
+int smartthings_start_easysetup(smartthings_h handle);
+
+/**
+ * @brief Stops Easy-setup mode.
+ *
+ * @details This function requests for turning off soft AP to SmartThings Thing agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/softap
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_start_easysetup()
+ */
+int smartthings_stop_easysetup(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting user confirmation for mutual verification based just work ownership transfer.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when it needs user's confirm for mutual verification based just work ownership transfer.
+ * @remarks When callback is called, user can send a confirmation for mutual verification based just work ownership transfer as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm_cb The user confirm callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_user_confirm_cb()
+ */
+int smartthings_set_user_confirm_cb(smartthings_h handle,
+                                                               smartthings_user_confirm_cb confirm_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets user confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_user_confirm_cb()
+ */
+int smartthings_unset_user_confirm_cb(smartthings_h handle);
+
+/**
+ * @brief Sets reset confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when it needs user's confirm for reset.
+ * @remarks When callback is called, user can send a confirmation for reset as true or false.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm_cb The reset confirm callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+int smartthings_set_reset_confirm_cb(smartthings_h handle,
+                                                               smartthings_reset_confirm_cb confirm_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets reset confirmation callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ */
+int smartthings_unset_reset_confirm_cb(smartthings_h handle);
+
+/**
+ * @brief Sets reset result callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when reset operation returns its result.
+ * @remarks When callback is called, user can check reset operation succeeds or fails.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] reset_result_cb The reset result callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_reset_result_cb()
+ */
+int smartthings_set_reset_result_cb(smartthings_h handle,
+                                                               smartthings_reset_result_cb reset_result_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets reset result callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_result_cb()
+ */
+int smartthings_unset_reset_result_cb(smartthings_h handle);
+
+
+/**
+ * @brief Sets callback for getting randomly generated PIN for the PIN-based ownership transfer request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks @a generated_cb callback is called when PIN is generated.
+ * @remarks @a close_cb callback is called when PIN based ownership transfer is finished.
+ * @remarks When @a generated_cb callback is called, user can see PIN value and length.
+ * @remarks When @a close_cb callback is called, user can know PIN based ownership transfer is finished.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] generated_cb The PIN generation callback to register
+ * @param[in] close_cb The PIN display close callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_pin_cb()
+ */
+int smartthings_set_pin_cb(smartthings_h handle,
+                                                               smartthings_pin_generated_cb generated_cb,
+                                                               smartthings_pin_display_close_cb close_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets PIN callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_pin_cb()
+ */
+int smartthings_unset_pin_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting Wi-Fi AP information during Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when Wi-Fi provisioning event occurs.
+ * @remarks When callback is called, user can get Wi-Fi provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] wifi_ap_cb The Wi-Fi AP callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_set_wifi_ap_provisioning_cb(smartthings_h handle,
+                                                               smartthings_wifi_ap_provisioning_cb wifi_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for getting Wi-Fi AP information during Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ */
+int smartthings_unset_wifi_ap_provisioning_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for getting device provisioning information.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when device provisioning event occurs.
+ * @remarks When callback is called, user can get device provisioning information.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] dev_prov_cb The device provisioning callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_set_device_provisioning_cb(smartthings_h handle,
+                                                               smartthings_device_provisioning_cb dev_prov_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for getting device provisioning information.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ */
+int smartthings_unset_device_provisioning_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for informing the scan AP list request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when GET request for access point list.
+ * @remarks When callback is called, user scans access points, sets AP list and sends it to agent.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] scan_ap_cb The callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_scan_ap_cb()
+ * @see smartthings_send_ap_list()
+ */
+int smartthings_set_scan_ap_cb(smartthings_h handle,
+                                                               smartthings_scan_ap_cb scan_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for informing the scan AP list request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_scan_ap_cb()
+ */
+int smartthings_unset_scan_ap_cb(smartthings_h handle);
+
+/**
+ * @brief Sets callback for informing the stop soft AP request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks Only one callback function can be set with this function.
+ * @remarks If multiple callbacks are set, the last one is registered only.
+ * @remarks Callback is called when POST request for stopping soft AP.
+ * @remarks When callback is called, user stops soft AP.
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] stop_soft_ap_cb The callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_unset_stop_soft_ap_cb()
+ */
+int smartthings_set_stop_soft_ap_cb(smartthings_h handle,
+                                                               smartthings_stop_soft_ap_cb stop_soft_ap_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets callback for informing the stop soft AP request.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_stop_soft_ap_cb()
+ */
+int smartthings_unset_stop_soft_ap_cb(smartthings_h handle);
+
+/**
+ * @brief Sends a user confirmation for MUTUAL VERIFICATION BASED JUST WORK Ownership transfer.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm The user confirmation for OTM(ownership transfer method)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_user_confirm_cb()
+ * @see smartthings_unset_user_confirm_cb()
+ */
+int smartthings_send_user_confirm(smartthings_h handle, bool confirm);
+
+
+/**
+ * @brief Sends a reset confirmation.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] confirm The reset confirmation
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_confirm_cb()
+ * @see smartthings_unset_reset_confirm_cb()
+ */
+int smartthings_send_reset_confirm(smartthings_h handle, bool confirm);
+
+/**
+ * @brief Sends a reset command for resetting the device's Cloud signup and Easy-setup.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_set_reset_result_cb()
+ * @see smartthings_unset_reset_result_cb()
+ */
+int smartthings_reset(smartthings_h handle);
+
+/**
+ * @brief Gets SSID of access point.
+ * @since_ses 1
+ *
+ * @remarks The @a ssid should be released using free().
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] ssid The SSID name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_ssid(smartthings_ap_info_h ap_info_h, char **ssid);
+
+/**
+ * @brief Gets password of access point.
+ * @since_ses 1
+ *
+ * @remarks The @a pwd should be released using free().
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] pwd The password
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_password(smartthings_ap_info_h ap_info_h, char **pwd);
+
+/**
+ * @brief Gets authentification type of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] authtype The authentification type
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_authtype(smartthings_ap_info_h ap_info_h, smartthings_wifi_authtype_e *authtype);
+
+/**
+ * @brief Gets encryption type of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] enctype The encryption type
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_enctype(smartthings_ap_info_h ap_info_h, smartthings_wifi_enctype_e *enctype);
+
+/**
+ * @brief Gets channel information of access point.
+ * @since_ses 1
+ *
+ * @param[in] ap_info_h The SmartThings AP information handle
+ * @param[out] channel The frequency channel
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_wifi_ap_provisioning_cb()
+ * @see smartthings_unset_wifi_ap_provisioning_cb()
+ */
+int smartthings_apinfo_get_channel(smartthings_ap_info_h ap_info_h, int *channel);
+
+/**
+ * @brief Gets language of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a language should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] language The IETF language tag using ISO 639X
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_language(smartthings_device_prov_info_h dev_prov_h, char **language);
+
+/**
+ * @brief Gets country of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a country should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] country The ISO Country Code (ISO 3166-1 Alpha-2)
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_country(smartthings_device_prov_info_h dev_prov_h, char **country);
+
+/**
+ * @brief Gets datetime of device provisioing information.
+ * @since_ses 1
+ *
+ * @remarks The @a datetime should be released using free().
+ *
+ * @param[in] dev_prov_h The SmartThings device provisioning information handle
+ * @param[out] datetime The date and time
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ *
+ * @see smartthings_set_device_provisioning_cb()
+ * @see smartthings_unset_device_provisioning_cb()
+ */
+int smartthings_devinfo_get_datetime(smartthings_device_prov_info_h dev_prov_h, char **datetime);
+
+/**
+ * @brief Creates a SmartThings AP list handle.
+ * @since_ses 1
+ *
+ * @remarks The @a ap_list_h must be released using smartthings_aplist_destroy().
+ *
+ * @param[out] ap_list_h The SmartThings AP list handle to be newly created on success
+ * @param[in] count The count of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ *
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_create(smartthings_ap_list_h *ap_list_h, unsigned int count);
+
+/**
+ * @brief Destroys a SmartThings AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ */
+int smartthings_aplist_destroy(smartthings_ap_list_h ap_list_h);
+
+/**
+ * @brief Sets SSID at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] ssid The SSID of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_ssid(smartthings_ap_list_h ap_list_h, int idx, const char *ssid);
+
+/**
+ * @brief Sets BSSID at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] bssid The BSSID of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_bssid(smartthings_ap_list_h ap_list_h, int idx, const char *bssid);
+
+/**
+ * @brief Sets authentification type at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] authtype The authentification type of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_authtype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_authtype_e authtype);
+
+/**
+ * @brief Sets encryption type at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] enctype The encryption type of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_enctype(smartthings_ap_list_h ap_list_h, int idx, smartthings_wifi_enctype_e enctype);
+
+/**
+ * @brief Sets frequency channel at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] channel The frequency channel of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_channel(smartthings_ap_list_h ap_list_h, int idx, int channel);
+
+/**
+ * @brief Sets signal level at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] signal_level The signal level of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_signal_level(smartthings_ap_list_h ap_list_h, int idx, int signal_level);
+
+/**
+ * @brief Sets max speed rate at the specific index of AP list handle.
+ * @since_ses 1
+ *
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] idx The index
+ * @param[in] max_rate The max speed rate of AP
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ */
+int smartthings_aplist_set_max_rate(smartthings_ap_list_h ap_list_h, int idx, int max_rate);
+
+/**
+ * @brief Sends the scanned AP list.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] ap_list_h The SmartThings AP list handle
+ * @param[in] req_id The request ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_aplist_create()
+ * @see smartthings_aplist_destroy()
+ * @see smartthings_set_scan_ap_cb()
+ */
+int smartthings_send_ap_list(smartthings_h handle, smartthings_ap_list_h ap_list_h, int req_id);
+
+/**
+ * @brief Creates a SmartThings cloud information handle.
+ * @since_ses 1
+ *
+ * @remarks The @a cloud_info_h must be released using smartthings_cloudinfo_destroy().
+ *
+ * @param[out] cloud_info_h The SmartThings cloud information handle to be newly created on success
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_OUT_OF_MEMORY Out of memory
+ *
+ * @see smartthings_cloudinfo_destroy()
+ */
+int smartthings_cloudinfo_create(smartthings_cloud_info_h *cloud_info_h);
+
+/**
+ * @brief Destroys a SmartThings cloud information handle.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_cloudinfo_create()
+ */
+int smartthings_cloudinfo_destroy(smartthings_cloud_info_h cloud_info_h);
+
+/**
+ * @brief Sets region of cloud information.
+ * @since_ses 1
+ *
+ * @remarks The @a region can be set to one of "global" or "china".
+ * @remarks If it doesn't use this function, the @a region will be set to "global" internally.
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] region The region name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_region(smartthings_cloud_info_h cloud_info_h, const char *region);
+
+/**
+ * @brief Sets authentification provider of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] auth_provider The authentification provider
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_auth_provider(smartthings_cloud_info_h cloud_info_h, const char *auth_provider);
+
+/**
+ * @brief Sets access token of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] access_token The access token
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_access_token(smartthings_cloud_info_h cloud_info_h, const char *access_token);
+
+/**
+ * @brief Sets refresh token of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] refresh_token The refresh token
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_refresh_token(smartthings_cloud_info_h cloud_info_h, const char *refresh_token);
+
+/**
+ * @brief Sets user ID of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] user_id The user ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_user_id(smartthings_cloud_info_h cloud_info_h, const char *user_id);
+
+/**
+ * @brief Sets client ID of cloud information.
+ * @since_ses 1
+ *
+ * @param[in] cloud_info_h The SmartThings cloud information handle
+ * @param[in] client_id The client ID
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_cloudinfo_set_client_id(smartthings_cloud_info_h cloud_info_h, const char *client_id);
+
+/**
+ * @brief Requests to sign up to cloud.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] cloud_info_h The handle for cloud signup
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_sign_up_cloud(smartthings_h handle, smartthings_cloud_info_h cloud_info_h);
+
+/**
+ * @brief Sets preconfigured PIN.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] pin The PIN code to preconfigure
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_preconfigured_pin(smartthings_h handle, const char* pin);
+
+/**
+ * @brief Sets MOT(multiple ownership transfer) status.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] handle The SmartThings handle
+ * @param[in] enable The MOT(multiple ownership transfer) status
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_set_mot_status(smartthings_h handle, bool enable);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_H__ */
diff --git a/inc/smartthings_payload.h b/inc/smartthings_payload.h
new file mode 100644 (file)
index 0000000..988585d
--- /dev/null
@@ -0,0 +1,663 @@
+/*****************************************************************
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************/
+
+
+#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__
+#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file smartthings_payload.h
+ */
+
+/**
+ * @addtogroup CAPI_SMARTTHINGS_THING_PAYLOAD_MODULE
+ * @{
+ */
+
+/**
+ * @brief The SmartThings payload handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_payload_s *smartthings_payload_h;
+
+/**
+ * @brief Creates a SmartThings payload handle.
+ * @since_ses 1
+ *
+ * @remarks The @a payload must be released using smartthings_payload_destroy().
+ * @remarks If the @a payload is set to parent payload as an object or object array
+ *          using smartthings_payload_set_object() or smartthings_payload_set_object_array(),
+ *          the @a payload must not be released.
+
+ * @param[out] payload The SmartThings payload handle to be newly created on success
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ *
+ * @see smartthings_payload_destroy()
+ */
+int smartthings_payload_create(smartthings_payload_h *payload);
+
+/**
+ * @brief Destroys a SmartThings payload handle and releases all its resources.
+ * @since_ses 1
+ *
+ * @remarks If the @a payload has child payload, its child payload will be released as well.
+ *
+ * @param[in] payload The SmartThings payload handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_create()
+ */
+int smartthings_payload_destroy(smartthings_payload_h payload);
+
+/**
+ * @brief Sets an integer value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_int(smartthings_payload_h payload, const char *attr_name, int value);
+
+/**
+ * @brief Sets a boolean value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_bool(smartthings_payload_h payload, const char *attr_name, bool value);
+
+/**
+ * @brief Sets a double value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_double(smartthings_payload_h payload, const char *attr_name, double value);
+
+/**
+ * @brief Sets a string value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_string(smartthings_payload_h payload, const char *attr_name, const char *value);
+
+/**
+ * @brief Sets a byte string value and length for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ * @param[in] length The size of value
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ */
+int smartthings_payload_set_byte_string(smartthings_payload_h payload, const char *attr_name, const char *value, unsigned int length);
+
+/**
+ * @brief Sets an object value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a value is SmartThings payload handle.
+ * @remarks The function replaces any existing value for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] value The value to set
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_object(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h value);
+
+/**
+ * @brief Sets an integer array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing array for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] array The array associated with the given attribute name
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_int_array(smartthings_payload_h payload, const char *attr_name, const int *array, unsigned int length);
+
+/**
+ * @brief Sets a boolean array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing array for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] array The array associated with the given attribute name
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_bool_array(smartthings_payload_h payload, const char *attr_name, const bool *array, unsigned int length);
+
+/**
+ * @brief Sets a double array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing array for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] array The array associated with the given attribute name
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_double_array(smartthings_payload_h payload, const char *attr_name, const double *array, unsigned int length);
+
+/**
+ * @brief Sets a string array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing array for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] array The array associated with the given attribute name
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_set_string_array(smartthings_payload_h payload, const char *attr_name, const char **array, unsigned int length);
+
+/**
+ * @brief Sets an object array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The function replaces any existing array for the given @a attr_name.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[in] array The array associated with the given attribute name
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ */
+int smartthings_payload_set_object_array(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h *array, unsigned int length);
+
+/**
+ * @brief Adds a payload for child resource of collection resource.
+ * @since_ses 1
+ *
+ * @remarks The @a resource_uri is key value, one of several child resources of the collection resource.
+ * @remarks The @a value is SmartThings payload handle.
+ * @remarks The function replaces any existing payload for the given @a resource_uri.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] resource_uri The resource URI of child resource
+ * @param[in] value The payload associated with the given resource URI
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int smartthings_payload_add_collection_object(smartthings_payload_h payload, const char *resource_uri, smartthings_payload_h value);
+
+/**
+ * @brief Gets an integer value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_int(smartthings_payload_h payload, const char *attr_name, int *value);
+
+/**
+ * @brief Gets a boolean value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_bool(smartthings_payload_h payload, const char *attr_name, bool *value);
+
+/**
+ * @brief Gets a double value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_double(smartthings_payload_h payload, const char *attr_name, double *value);
+
+/**
+ * @brief Gets a string value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a value should be released using free().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_string(smartthings_payload_h payload, const char *attr_name, char **value);
+
+/**
+ * @brief Gets a byte string value and length for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a value should be released using free().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ * @param[out] length The size of value
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_byte_string(smartthings_payload_h payload, const char *attr_name, char **value, unsigned int *length);
+
+/**
+ * @brief Gets an object value for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a value is SmartThings payload handle.
+ * @remarks The @a value must be released using smartthings_payload_release_object().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] value The value associated with the given attribute name
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_object(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h *value);
+
+/**
+ * @brief Gets an integer array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a array must be released using smartthings_payload_release_int_array().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] array The array associated with the given attribute name
+ * @param[out] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ *
+ * @see smartthings_payload_release_int_array()
+ */
+int smartthings_payload_get_int_array(smartthings_payload_h payload, const char *attr_name, int **array, unsigned int *length);
+
+/**
+ * @brief Gets a boolean array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a array must be released using smartthings_payload_release_bool_array().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] array The array associated with the given attribute name
+ * @param[out] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ *
+ * @see smartthings_payload_release_bool_array()
+ */
+int smartthings_payload_get_bool_array(smartthings_payload_h payload, const char *attr_name, bool **array, unsigned int *length);
+
+/**
+ * @brief Gets a double array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a array must be released using smartthings_payload_release_double_array().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] array The array associated with the given attribute name
+ * @param[out] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ *
+ * @see smartthings_payload_release_double_array()
+ */
+int smartthings_payload_get_double_array(smartthings_payload_h payload, const char *attr_name, double **array, unsigned int *length);
+
+/**
+ * @brief Gets a string array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a array must be released using smartthings_payload_release_string_array().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] array The array associated with the given attribute name
+ * @param[out] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ *
+ * @see smartthings_payload_release_string_array()
+ */
+int smartthings_payload_get_string_array(smartthings_payload_h payload, const char *attr_name, char ***array, unsigned int *length);
+
+/**
+ * @brief Gets an object array for the attribute name.
+ * @since_ses 1
+ *
+ * @remarks The @a attr_name is key value, one of several properties of the resource type.
+ * @remarks The @a array is a list of SmartThings payload handle.
+ * @remarks The @a array must be released using smartthings_payload_release_object_array().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] attr_name The attribute name
+ * @param[out] array The array associated with the given attribute name
+ * @param[out] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ *
+ * @see smartthings_payload_release_object_array()
+ */
+int smartthings_payload_get_object_array(smartthings_payload_h payload, const char *attr_name, smartthings_payload_h **array, unsigned int *length);
+
+/**
+ * @brief Gets a payload for child resource of collection resource.
+ * @since_ses 1
+ *
+ * @remarks The @a resource_uri is key value, one of several child resources of the collection resource.
+ * @remarks The @a value is SmartThings payload handle.
+ * @remarks The @a value must be released using smartthings_payload_release_object().
+ *
+ * @param[in] payload The SmartThings payload handle
+ * @param[in] resource_uri The resource URI of child resource
+ * @param[out] value The payload associated with the given resource URI
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NO_DATA No data
+ */
+int smartthings_payload_get_collection_object(smartthings_payload_h payload, const char *resource_uri, smartthings_payload_h *value);
+
+/**
+ * @brief Releases an integer array of the SmartThings payload.
+ * @since_ses 1
+ *
+ * @param[in] array The array to release
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_int_array()
+ */
+int smartthings_payload_release_int_array(int *array);
+
+/**
+ * @brief Releases a boolean array of the SmartThings payload.
+ * @since_ses 1
+ *
+ * @param[in] array The array to release
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_bool_array()
+ */
+int smartthings_payload_release_bool_array(bool *array);
+
+/**
+ * @brief Releases a double array of the SmartThings payload.
+ * @since_ses 1
+ *
+ * @param[in] array The array to release
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_double_array()
+ */
+int smartthings_payload_release_double_array(double *array);
+
+/**
+ * @brief Releases a string array of the SmartThings payload.
+ * @since_ses 1
+ *
+ * @param[in] array The array to release
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_string_array()
+ */
+int smartthings_payload_release_string_array(char **array, unsigned int length);
+
+/**
+ * @brief Releases an object array of the SmartThings payload.
+ * @since_ses 1
+ *
+ * @param[in] array The array to release
+ * @param[in] length The length of @a array
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_object_array()
+ */
+int smartthings_payload_release_object_array(smartthings_payload_h *array, unsigned int length);
+
+/**
+ * @brief Releases a SmartThings payload.
+ * @since_ses 1
+ *
+ * @remarks The function is different with smartthings_payload_destroy().
+ * @remarks The function releases only payload value that is obtained by smartthings_payload_get_object().
+ *
+ * @param[in] payload The payload to release
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_payload_get_object()
+ */
+int smartthings_payload_release_object(smartthings_payload_h payload);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_PAYLOAD_H__ */
diff --git a/inc/smartthings_resource.h b/inc/smartthings_resource.h
new file mode 100644 (file)
index 0000000..1968c50
--- /dev/null
@@ -0,0 +1,364 @@
+/*****************************************************************
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************/
+
+
+#ifndef __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__
+#define __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <tizen.h>
+#include <smartthings_payload.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file smartthings_resource.h
+ */
+
+/**
+ * @addtogroup CAPI_SMARTTHINGS_THING_RESOURCE_MODULE
+ * @{
+ */
+
+/**
+ * @brief Enumeration for the SmartThings resource error.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_RESOURCE_ERROR_NONE = TIZEN_ERROR_NONE,                                /**< Successful */
+       SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,      /**< Invalid parameter */
+       SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,              /**< Out of memory */
+       SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED,      /**< Permission denied */
+       SMARTTHINGS_RESOURCE_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA,                          /**< No data */
+       SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED,                      /**< Not supported */
+       SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED = TIZEN_ERROR_UNKNOWN - 1,             /**< Operation failed */
+       SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE = TIZEN_ERROR_UNKNOWN -2            /**< Service unavailable */
+} smartthings_resource_error_e;
+
+/**
+ * @brief Enumeration for the request type of resource and collection resource.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_RESOURCE_REQUEST_GET = 0,              /**< Get request type */
+       SMARTTHINGS_RESOURCE_REQUEST_SET = 1,              /**< Set request type */
+       SMARTTHINGS_RESOURCE_REQUEST_COLLECTION_GET = 2,   /**< Get request type for collection */
+       SMARTTHINGS_RESOURCE_REQUEST_COLLECTION_SET = 3    /**< Set request type for collection */
+} smartthings_resource_req_type_e;
+
+/**
+ * @brief Enumeration for RPC connection status.
+ * @since_ses 1
+ */
+typedef enum {
+       SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED = 0,          /**< Connection is connected */
+       SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED,           /**< Connection is disconnected */
+       SMARTTHINGS_RESOURCE_CONNECTION_STATUS_REJECTED,               /**< Connection is rejected */
+} smartthings_resource_connection_status_e;
+
+/**
+ * @brief The SmartThings resource handle.
+ * @since_ses 1
+ */
+typedef struct smartthings_resource_s *smartthings_resource_h;
+
+/**
+ * @brief Callback for status of connection to SmartThings Thing agent.
+ * @since_ses 1
+ *
+ * @remarks The @a handle should not be released.
+ * @remarks The @a handle is the same object for which the callback was set/added.
+ * @remarks The @a handle will be released when smartthings_deinitialize() is called.
+ * @remarks When callback is called, user can see connection status as #smartthings_connection_status_e enumeration value.
+ *
+ * @param[in] result The result of connection operation
+ * @param[in] handle The SmartThings handle
+ * @param[in] status The status of connection
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_resource_initialize()
+ */
+typedef void (*smartthings_resource_connection_status_cb)(smartthings_resource_h handle, smartthings_resource_connection_status_e status, void *user_data);
+
+/**
+ * @brief Callback for handling request(GET/SET) messages.
+ * @since_ses 1
+ *
+ * @remarks The @a payload is NULL when @a req_type is #SMARTTHINGS_RESOURCE_REQUEST_GET.
+ * @remarks The @a payload can be used only in the callback. To use outside, make a copy.
+ * @remarks The @a st_h should not be released.
+ * @remarks The @a st_h is the same object for which the callback was set/added.
+ * @remarks The @a st_h will be released when smartthings_resource_deinitialize() is called.
+ * @remarks The @a payload should not be released.
+ * @remarks The @a uri can be used only in the callback. To use outside, make a copy.
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] req_id The request ID of request message
+ * @param[in] uri The resource URI
+ * @param[in] req_type The request type for request message
+ * @param[in] payload The payload for SET request message
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_resource_set_request_cb()
+ * @see smartthings_resource_unset_request_cb()
+ */
+typedef void (*smartthings_resource_request_cb)(smartthings_resource_h st_h, int req_id, const char *uri,
+                                                                                               smartthings_resource_req_type_e req_type,
+                                                                                               smartthings_payload_h payload, void *user_data);
+
+/**
+ * @brief Callback for status of resource registration to cloud.
+ * @since_ses 1
+ *
+ * @remarks This callback will be called when status of resource registration is changed.
+ * @remarks The @a st_h should not be released.
+ * @remarks The @a st_h is the same object for which the callback was set/added.
+ * @remarks The @a st_h will be released when smartthings_resource_deinitialize() is called.
+ * @remarks The @a is_registered will be true when resources are registered to cloud.
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] is_registered The status of resource registration to cloud
+ * @param[in] user_data The user data passed from the callback registration function
+ *
+ * @see smartthings_resource_set_cloud_registration_status_cb()
+ * @see smartthings_resource_unset_cloud_registration_status_cb()
+ */
+typedef void (*smartthings_resource_cloud_registration_status_cb)(smartthings_resource_h st_h, bool is_registered, void *user_data);
+
+
+/**
+ * @brief Initializes a resource handle and connects to agent.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a st_h must be released using smartthings_resource_deinitialize().
+ * @remarks Ths function returns #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED\n
+ *          if the application has no app-defined privilege for 'http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource'.
+ *
+ * @param[out] st_h The SmartThings resource handle to be newly created on success
+ * @param[in] connection_status_cb The connection status callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED Not supported
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_resource_deinitialize()
+ */
+int smartthings_resource_initialize(smartthings_resource_h *st_h,
+                                                                  smartthings_resource_connection_status_cb connection_status_cb,
+                                                                  void *user_data);
+
+/**
+ * @brief Deinitializes a resource handle and disconnects from the agent.
+ * @since_ses 1
+ *
+ * @param[in] st_h The SmartThings resource handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see smartthings_resource_initialize()
+ */
+int smartthings_resource_deinitialize(smartthings_resource_h st_h);
+
+/**
+ * @brief Sets resource request callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] req_cb The request callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_resource_unset_request_cb()
+ */
+int smartthings_resource_set_request_cb(smartthings_resource_h st_h,
+                                                               smartthings_resource_request_cb req_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets resource request callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] st_h The SmartThings resource handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_resource_set_request_cb()
+ */
+int smartthings_resource_unset_request_cb(smartthings_resource_h st_h);
+
+/**
+ * @brief Sends response for resource request message.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] req_id The request ID of request message
+ * @param[in] uri The resource URI
+ * @param[in] payload The payload of response message
+ * @param[in] result The result of response
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_resource_send_response(smartthings_resource_h st_h, int req_id, const char *uri, smartthings_payload_h payload, bool result);
+
+/**
+ * @brief Notifies resource change.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing \n
+ *            %http://tizen.org/privilege/internet
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] uri The resource URI
+ * @param[in] payload The payload of response message
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_resource_notify(smartthings_resource_h st_h, const char *uri, smartthings_payload_h payload);
+
+/**
+ * @brief Gets resource URIs.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @remarks The @a uris should be released using free().
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[out] count The resource count
+ * @param[out] uris The resource URI list
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ */
+int smartthings_resource_get_uris(smartthings_resource_h st_h, int *count, char ***uris);
+
+/**
+ * @brief Sets cloud registration callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] st_h The SmartThings resource handle
+ * @param[in] reg_cb The callback to register
+ * @param[in] user_data The user data to be passed to the callback function
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_resource_unset_cloud_registration_status_cb()
+ */
+int smartthings_resource_set_cloud_registration_status_cb(smartthings_resource_h st_h,
+                                                               smartthings_resource_cloud_registration_status_cb reg_cb,
+                                                               void *user_data);
+
+/**
+ * @brief Unsets cloud registration callback.
+ * @since_ses 1
+ * @privilege %http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource \n
+ *            %http://tizen.org/privilege/appmanager.launch \n
+ *            %http://tizen.org/privilege/datasharing
+ *
+ * @param[in] st_h The SmartThings resource handle
+ *
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_NONE Successful
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE Service unavailable
+ *
+ * @see smartthings_resource_set_cloud_registration_status_cb()
+ */
+int smartthings_resource_unset_cloud_registration_status_cb(smartthings_resource_h st_h);
+
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __SAMSUNG_EXPERIENCE_SERVICE_SMARTTHINGS_RESOURCE_H__ */
diff --git a/inc/st_things.h b/inc/st_things.h
deleted file mode 100644 (file)
index 31340a5..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __ST_THINGS_H__
-#define __ST_THINGS_H__
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifdef __ST_THINGS_RTOS__
-#include <st_things/st_things_types.h>
-#else
-#include "st_things_types.h"
-#endif // __ST_THINGS_RTOS__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @brief Set prefix paths (ReadOnly and ReadWrite) for configuration files for the device.
- *            This is Optional API, and should be used if relative location is used in
- *            filePath variable in JSON Configuration file.
- * @param[in] ro_path Prefix Path for Read Only directory location.
- * @param[in] rw_path Prefix Path for Read Write directory location.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter(both ro_path and rw_path are NULL).
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED Stack already initialized.
- *         To set Prefix Paths, stack should be deinitilized first by calling st_things_deinitialize().
- * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running.
- *         To set Prefix Paths, stack should be stopped first by calling st_things_stop()
- *         and then deinitialized by calling st_things_deinitialize().
- */
-int st_things_set_configuration_prefix_path(const char* ro_path, const char* rw_path);
-
-/**
- * @brief Initializes things stack and returns whether easy-setup is completed or not.
- *            Easy-setup enable users to acquire the ownership of things and to connect the things with the cloud.
- *            After performing easy-setup, users can access things from anywhere through the cloud.
- *            In things stack, easy-setup is a primary and the first operation to be performed on the thing.
- *            Application running on the thing can know whether easy-setup is done already or not.
- *            If easy-setup is done, app can start the things stack by calling st_things_start().
- *            If easy-setup is not done, app can either wait for the user interaction before starting the things stack or
- *            start the things stack directly without waiting for any events(This case is for those things which doesn't
- *            support input capability and for all other unknown cases).
- *            To use a new json file after initialization, stack should be deinitialized
- *            and stopped(if its started already).
- * @param[in] json_path Path to Json file which defines a thing. Definition includes the device information,
- *                                       resources and their properties, configuration info for connectivity and easy-setup, etc.
- * @param[out] easysetup_complete Indicates whether easysetup is completed already or not.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED Stack already initialized.
- *         To initialize again, stack should be deinitilized first by calling st_things_deinitialize().
- * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running.
- *         To initialize again, stack should be stopped first by calling st_things_stop()
- *         and then deinitialized by calling st_things_deinitialize().
- */
-int st_things_initialize(const char *json_path, bool *easysetup_complete);
-
-/**
- * @brief Deinitializes things stack.
- *        Stack should have been initialized before calling this API.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized.
- *         Initialize the stack by calling st_things_initialize().
- * @retval #ST_THINGS_ERROR_STACK_RUNNING Stack is currently running.
- *         Before deinitialize, stack needs to be stopped by calling st_things_stop().
- */
-int st_things_deinitialize(void);
-
-/**
- * @brief Callback for handling GET request.
- * @param[in]  req_msg GET request message.
- * @param[out] resp_rep Representation that will be set to payload of response.
- * @return @c true in case of success, otherwise @c false
- */
-typedef bool (*st_things_get_request_cb)(st_things_get_request_message_s *req_msg, st_things_representation_s *resp_rep);
-
-/**
- * @brief Callback for handling SET(POST) request.
- * @param[in]  req_msg SET request message.
- * @param[out] resp_rep Representation that will be set to payload of response.
- * @return @c true in case of success, otherwise @c false
- */
-typedef bool (*st_things_set_request_cb)(st_things_set_request_message_s *req_msg, st_things_representation_s *resp_rep);
-
-/**
- * @brief Callback registration function for handling request messages.
- * @details The callbacks ensure that a request message will be carried with one of the resource uris from json file of st_things_start().
- * @remarks Only one callback function can be set with this API.\n
- *          If multiple callbacks are set, the last one is registered only.\n
- *          And the callbacks are called in the internal thread, which is not detached,\n
- *          so application should return it to get the next callbacks.
- * @param[in] get_cb Reference of the callback function to handle GET request.
- * @param[in] set_cb Reference of the callback function to handle SET(POST) request.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- */
-int st_things_register_request_cb(st_things_get_request_cb get_cb, st_things_set_request_cb set_cb);
-
-/**
- * @brief Starts things stack.
- *            Parses the thing definition(whose path is passed to st_things_initialize(), configures the thing,
- *            creates the resources and prepares it for easy-setup.
- *            If easy-setup is not done yet, onboarding will be started using either SoftAP or BLE connection.
- *                Onboarding creates an ad-hoc network between the thing and the client for performing easy-setup.
- *            If easy-setup is already done, thing will be connected with the cloud.
- *            Application can know whether easy-setup is done or not through st_things_initialize API.
- *            Stack should have been initialized before calling this API.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful.
- *         It is also used for the case that the stack is started already.
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized.
- *         Initialize the stack by calling st_things_initialize().
- */
-int st_things_start(void);
-
-/**
- * @brief Stops things stack.
- *            Removes all the data being used internally and releases all the memory allocated for the stack.
- *            Stack should have been initialized and started before calling this API.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not initialized.
- *         Initialize the stack by calling st_things_initialize().
- * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started.
- *         Start the stack by calling st_things_start().
- */
-int st_things_stop(void);
-
-/**
- * @brief Callback for getting user's opinion regarding device reset.
- * @return @c true to confirm, otherwise @c to deny
- */
-typedef bool (*st_things_reset_confirm_cb)(void);
-
-/**
- * @brief Callback for carrying the result of reset.
- * @param[in] is_success Result of Stack-reset. (true : success, false : failure)
- */
-typedef void (*st_things_reset_result_cb)(bool is_success);
-
-/**
- * @brief Callback registration function for Reset-Confirmation and Reset-Result functions.
- * @remarks Only one callback function can be set with this API.\n
- *          If multiple callbacks are set, the last one is registered only.\n
-            And the callbacks are called in the internal thread, which is not detached,\n
- *          so application should return it to get the next callbacks.
- * @param[in] confirm_cb Callback function that will be called to get the user's input when reset is triggered.
- * @param[in] result_cb Callback function that will be called after the reset process is done.
- *                      This parameter can be NULL if notification for result of reset is not needed.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- */
-int st_things_register_reset_cb(st_things_reset_confirm_cb confirm_cb, st_things_reset_result_cb result_cb);
-
-/**
- * @brief Reset all the data related to security and cloud being used in the stack.
- *        Stack should have been initialized and started before calling this API.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not intialized.
- *         Initialize the stack by calling st_things_initialize().
- * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started.
- *         Start the stack by calling st_things_start().
- */
-int st_things_reset(void);
-
-/**
- * @brief Callback for carrying the randomly generated PIN info.
- * @details Device should show the PIN on display.
- * @param[in] pin_data PIN data in string format.
- * @param[in] pin_size Length of the PIN String.
- */
-typedef void (*st_things_pin_generated_cb)(const char *pin_data, const size_t pin_size);
-
-/**
- * @brief Callback for informing the application to close the PIN display.
- */
-typedef void (*st_things_pin_display_close_cb)(void);
-
-/**
- * @brief Callback registration function for getting randomly generated PIN for the PIN-Based Ownership Transfer Request.
- * @remarks Only one callback function can be set with this API.\n
- *          If multiple callbacks are set, the last one is registered only.\n
- *          And the callbacks are called in the internal thread, which is not detached,\n
- *          so application should return it to get the next callbacks.
- * @param[in] generated_cb Callback function that will be called when device receives a Ownership Transfer request from client.
- * @param[in] close_cb Callback function that will be called when Ownership Transfer is done so device can stop showing PIN on display.
- *                     This parameter can be NULL if stop triggering is not needed.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- */
-int st_things_register_pin_handling_cb(st_things_pin_generated_cb generated_cb, st_things_pin_display_close_cb close_cb);
-
-/**
- * @brief Callback for getting user's input regarding mutual verification.
- * @return @c true true in cse of confirmed, otherwise @c false
- */
-typedef bool (*st_things_user_confirm_cb)(void);
-
-/**
- * @brief Callback registration function for getting user confirmation for MUTUAL VERIFICATION BASED JUST WORK Ownership transfer.
- * @remarks Only one callback function can be set with this API.\n
- *          If multiple callbacks are set, the last one is registered only.\n
- *          And the callbacks are called in the internal thread, which is not detached,\n
- *          so application should return it to get the next callbacks.
- * @param[in] confirm_cb Callback function that will be called when device receives a confirm request from client.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- */
-int st_things_register_user_confirm_cb(st_things_user_confirm_cb confirm_cb);
-
-/**
- * @brief Callback for getting the current state of ST Things.
- * @param[in]  things_status ST Things State
- */
-typedef void (*st_things_status_change_cb)(st_things_status_e things_status);
-
-/**
- * @brief Callback registration function for getting notified when ST Things state changes.
- * @remarks Only one callback function can be set with this API.\n
- *          If multiple callbacks are set, the last one is registered only.\n
- *          And the callbacks are called in the internal thread, which is not detached,\n
- *          so application should return it to get the next callbacks.
- * @param[in] status_cb Refernce of the callback function to get ST Things status
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
- */
-int st_things_register_things_status_change_cb(st_things_status_change_cb status_cb);
-
-/**
- * @brief Notify the observers of a specific resource.
- *        Stack should have been initialized and started before calling this API.
- * @param[in]  resource_uri Resource URI of the resource which will be notified to observers.
- * @return @c 0 on success, otherwise a negative error value
- * @retval #ST_THINGS_ERROR_NONE Successful
- * @retval #ST_THINGS_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #ST_THINGS_ERROR_OPERATION_FAILED Operation failed
-  * @retval #ST_THINGS_ERROR_STACK_NOT_INITIALIZED Stack is not intialized.
- *         Initialize the stack by calling st_things_initialize().
- * @retval #ST_THINGS_ERROR_STACK_NOT_STARTED Stack is not started.
- *         Start the stack by calling st_things_start().
- */
-int st_things_notify_observers(const char *resource_uri);
-
-/**
- * @brief Create an instance of representation.
- * @remarks To destroy an instance, st_things_destroy_representation_inst() should be used.
- * @return a pointer of the created representation, otherwise a null pointer if the memory is insufficient.
- */
-st_things_representation_s *st_things_create_representation_inst(void);
-
-/**
- * @brief Destroy an instance of representation.
- * @param[in]  rep Representation that will be destroyed.
- */
-void st_things_destroy_representation_inst(st_things_representation_s *rep);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __ST_THINGS_H__ */
diff --git a/inc/st_things_types.h b/inc/st_things_types.h
deleted file mode 100644 (file)
index 867f0ac..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __ST_THINGS_TYPES_H__
-#define __ST_THINGS_TYPES_H__
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <stdbool.h>
-
-/**
- * @brief Enumeration for ST Things error code.
- */
-typedef enum {
-    ST_THINGS_ERROR_NONE                         =  0, /**< Successful */
-    ST_THINGS_ERROR_INVALID_PARAMETER            = -1, /**< Invalid parameter (If parameter is null or empty)*/
-    ST_THINGS_ERROR_OPERATION_FAILED             = -2, /**< Operation Failed */
-    ST_THINGS_ERROR_STACK_NOT_INITIALIZED        = -3, /**< Stack is not yet initialized*/
-    ST_THINGS_ERROR_STACK_ALREADY_INITIALIZED    = -4, /**< Stack is already initialized*/
-    ST_THINGS_ERROR_STACK_NOT_STARTED            = -5, /**< Stack is not yet started*/
-    ST_THINGS_ERROR_STACK_RUNNING                = -6, /**< Stack is currently running*/
-} st_things_error_e;
-
-/**
- * @brief Enumeration for ST Things status.
- */
-typedef enum {
-    ST_THINGS_STATUS_INIT = 0,                         /**< Initial state of ST Things */
-    ST_THINGS_STATUS_ES_STARTED,                       /**< Easy-setup is started */
-    ST_THINGS_STATUS_ES_DONE,                          /**< Easy-setup is done */
-    ST_THINGS_STATUS_ES_FAILED_ON_OWNERSHIP_TRANSFER,  /**< Easy-setup failed due to Ownership-Transfer failure */
-    ST_THINGS_STATUS_CONNECTING_TO_AP,                 /**< Connecting to target Wi-Fi access point */
-    ST_THINGS_STATUS_CONNECTED_TO_AP,                  /**< Connected to target Wi-Fi access point */
-    ST_THINGS_STATUS_CONNECTING_TO_AP_FAILED,          /**< Failed to connect to target Wi-Fi access point */
-    ST_THINGS_STATUS_REGISTERING_TO_CLOUD,             /**< Trying to Sign-up/Sign-in/Publish-Resource(s) to Cloud */
-    ST_THINGS_STATUS_REGISTERED_TO_CLOUD,              /**< Publish resource(s) to cloud is complete. Now the Thing is ready to be controlled via Cloud */
-    ST_THINGS_STATUS_REGISTERING_FAILED_ON_SIGN_IN,    /**< Failed to sign-in to Cloud */
-    ST_THINGS_STATUS_REGISTERING_FAILED_ON_PUB_RES     /**< Failed to publish resources to Cloud */
-} st_things_status_e;
-
-/**
- * @brief Structure for Representation.
- */
-typedef struct _st_things_representation
-{
-    void*   payload; /**< Payload of representation */
-
-    /**
-     * @brief API for getting the value of string type property with a key.
-     * @remarks This API will return deep-copied string value as out parameter, so application must free it after use.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value String value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_str_value)            (struct _st_things_representation* rep, const char* key, char** value);
-
-    /**
-     * @brief API for getting the value of boolean type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value Bool value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_bool_value)           (struct _st_things_representation* rep, const char* key, bool* value);
-
-    /**
-     * @brief API for getting the value of integer type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value Integer value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_int_value)            (struct _st_things_representation* rep, const char* key, int64_t* value);
-
-    /**
-     * @brief API for getting the value of double type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value Double value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_double_value)         (struct _st_things_representation* rep, const char* key, double* value);
-
-    /**
-     * @brief API for getting the value of byte array type property with a key.
-     * @remarks This API will return deep-copied byte value as out parameter, so application must free it after use.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value Byte value
-     * @param[out] size Size of Byte value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_byte_value)           (struct _st_things_representation* rep, const char* key, uint8_t** value, size_t* size);
-
-    /**
-     * @brief API for getting the value of object type property with a key.
-     * @remarks This API will return deep-copied object value as out parameter, so application must free it after use.\n
-     *          To free an object, st_things_destroy_representation_inst() in st_things.h should be used.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[out] value Object value
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_object_value)         (struct _st_things_representation* rep, const char* key, struct _st_things_representation** value);
-
-    /**
-     * @brief API for setting the value of string type property with a key.
-     * @remarks This API will deep-copy the string value inside, so application still has an ownership of memory for the string value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value String value.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_str_value)            (struct _st_things_representation* rep, const char* key, const char* value);
-
-    /**
-     * @brief API for setting the value of boolean type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value Bool value.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_bool_value)           (struct _st_things_representation* rep, const char* key, bool value);
-
-    /**
-     * @brief API for setting the value of integer type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value Integer value.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_int_value)            (struct _st_things_representation* rep, const char* key, int64_t value);
-
-    /**
-     * @brief API for setting the value of double type property with a key.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value Double value.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_double_value)         (struct _st_things_representation* rep, const char* key, double value);
-
-    /**
-     * @brief API for setting the value of byte array type property with a key.
-     * @remarks This API will deep-copy the byte value inside, so application still has an ownership of memory for the byte value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value Byte value.
-     * @param[in]  size Size of Byte value.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_byte_value)           (struct _st_things_representation* rep, const char* key, const uint8_t* value, size_t size);
-
-    /**
-     * @brief API for setting the value of object type property with a key.
-     * @remarks This API will deep-copy the object value inside, so application still has an ownership of memory for the object value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the value.
-     * @param[in]  value Object value.
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*set_object_value)         (struct _st_things_representation* rep, const char* key, const struct _st_things_representation* value);
-
-    /**
-     * @brief API for getting the value of string array type property with a key.
-     * @remarks This API will return deep-copied array value as out parameter, so application must free it after use.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the array type of value.
-     * @param[out] array Reference of the string array to where the value will be copied.
-     * @param[out] length Total number of elements in the array.
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_str_array_value)      (struct _st_things_representation* rep, const char* key, char*** array, size_t* length);
-
-    /**
-     * @brief API for getting the value of integer array type property with a key.
-     * @remarks This API will return deep-copied array value as out parameter, so application must free it after use.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the array type of value.
-     * @param[out] array Reference of the integer array where the value will be copied.
-     * @param[out] length Total number of elements in the array.
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_int_array_value)      (struct _st_things_representation* rep, const char* key, int64_t** array, size_t* length);
-
-    /**
-     * @brief API for getting the value of double array type property with a key.
-     * @remarks This API will return deep-copied array value as out parameter, so application must free it after use.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which will represent the array type of value.
-     * @param[out] array Reference of the double array where the value will be copied.
-     * @param[out] length Total number of elements in the array.
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_double_array_value)   (struct _st_things_representation* rep, const char* key, double** array, size_t* length);
-
-    /**
-     * @brief API for getting the value of object array type property with a key.
-     * @remarks This API will return deep-copied array value as out parameter, so application must free it after use.\n
-     *          To free each object in array, st_things_destroy_representation_inst() in st_things.h should be used.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the array type of value.
-     * @param[out] array Reference of the object array where the value will be copied.
-     * @param[out] length Total number of elements in the array.
-     * @return @c true if value exist, otherwise @c false
-     */
-    bool    (*get_object_array_value)   (struct _st_things_representation* rep, const char* key, struct _st_things_representation*** array, size_t* length);
-
-    /**
-     * @brief API for setting the value of string array type property with a key.
-     * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[in]  array String array type value.
-     * @param[in]  length Total number of elements in the array.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_str_array_value)      (struct _st_things_representation* rep, const char* key, const char** array, size_t length);
-
-    /**
-     * @brief API for setting the value of integer array type property with a key.
-     * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[in]  array Integer array type value.
-     * @param[in]  length Total number of elements in the array.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_int_array_value)      (struct _st_things_representation* rep, const char* key, const int64_t* array, size_t length);
-
-    /**
-     * @brief API for setting the value of double array type property with a key.
-     * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[in]  array Double array type value.
-     * @param[in]  length Total number of elements in the array.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_double_array_value)   (struct _st_things_representation* rep, const char* key, const double* array, size_t length);
-
-    /**
-     * @brief API for setting the value of object array type property with a key.
-     * @remarks This API will deep-copy the array value inside, so application still has an ownership of memory for the array value.
-     * @param[in]  rep Instance of Representation.
-     * @param[in]  key Property Name which represents the value.
-     * @param[in]  array Object array type value.
-     * @param[in]  length Total number of elements in the array.
-     * @return @c true if setting value is successful, otherwise @c false
-     */
-    bool    (*set_object_array_value)   (struct _st_things_representation* rep, const char* key, const struct _st_things_representation** array, size_t length);
-
-} st_things_representation_s;
-
-/**
- * @brief Structure for representing the Get Request Message.
- */
-typedef struct _st_things_get_request_message
-{
-    char*                               resource_uri;   /**< Resource URI */
-    char*                               query;          /**< One or more query parameters of the request message. Ex: key1=value1;key2=value2;... */
-    char*                               property_key;   /**< One or more property key that application needs to set a value for response. Ex: key1;key2;... */
-
-    /**
-     * @brief API for getting the value of a specific query from the query parameters of the request.
-     * @param[in]  req_msg Instance of get request message.
-     * @param[in]  key Name of the query.(ex: key1, key2, etc)
-     * @param[out] value Value of the query.(value1, value2, etc)
-     * @return @c true if query exist, otherwise @c false
-     */
-    bool    (*get_query_value)          (struct _st_things_get_request_message* req_msg, const char* key, char** value);
-
-    /**
-     * @brief API for checking whether the request has a specific property key or not.
-     * @param[in]  req_msg Instance of get request message.
-     * @param[in]  key Name of the property.
-     * @return @c true if the property key exists, otherwise @c false
-     */
-    bool    (*has_property_key)         (struct _st_things_get_request_message* req_msg, const char* key);
-
-} st_things_get_request_message_s;
-
-/**
- * @brief Structure for representing the Set Request Message.
- */
-typedef struct _st_things_set_request_message
-{
-    char*                               resource_uri;   /**< Resource URI */
-    char*                               query;          /**< One or more query parameters of the request message. Ex: key1=value1?key2=value2?... */
-    struct _st_things_representation*   rep;            /**< Representation of the set request message */
-
-    /**
-     * @brief API for getting the value of a specific query from the query parameters of the request.
-     * @param[in]  req_msg Instance of request message.
-     * @param[in]  key Name of the query.(ex: key1, key2, etc)
-     * @param[out] value Value of the query.(value1, value2, etc)
-     * @return @c true if query exist, otherwise @c false
-     */
-    bool    (*get_query_value)          (struct _st_things_set_request_message* req_msg, const char* key, char** value);
-
-} st_things_set_request_message_s;
-
-#endif /* __ST_THINGS_TYPES_H__ */
diff --git a/lib/liboicdastack.so b/lib/liboicdastack.so
deleted file mode 100644 (file)
index 4a5cc91..0000000
Binary files a/lib/liboicdastack.so and /dev/null differ
diff --git a/lib/libsdkapi.so b/lib/libsdkapi.so
deleted file mode 100644 (file)
index 47ca354..0000000
Binary files a/lib/libsdkapi.so and /dev/null differ
diff --git a/lib/libst_thing_master_api.so b/lib/libst_thing_master_api.so
new file mode 100644 (file)
index 0000000..aef594a
Binary files /dev/null and b/lib/libst_thing_master_api.so differ
diff --git a/lib/libst_thing_resource_api.so b/lib/libst_thing_resource_api.so
new file mode 100644 (file)
index 0000000..245093f
Binary files /dev/null and b/lib/libst_thing_resource_api.so differ
index 4f221b5..aab904b 100644 (file)
@@ -1,11 +1,11 @@
-APPNAME = smart-blind
+APPNAME = st-things-blind
 
 type = app
-profile = iot-headless-4.0
+profile = iot-headed-5.0
 
-USER_SRCS = src/smart-blind.c
+USER_SRCS = src/st-things-blind.c
 USER_DEFS =
-USER_INC_DIRS = inc, inc/sdk
+USER_INC_DIRS = inc
 USER_OBJS =
-USER_LIBS = lib/liboicdastack.so, lib/libsdkapi.so
+USER_LIBS = lib/libst_thing_master_api.so, lib/libst_thing_resource_api.so
 USER_EDCS =
diff --git a/res/device_def.json b/res/device_def.json
deleted file mode 100644 (file)
index 8e11803..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-  "device": [
-    {
-      "specification": {
-        "device": {
-          "deviceType": "oic.d.light",
-          "deviceName": "*** YOUR DEVICE NAME ***",
-          "specVersion": "core.1.1.0",
-          "dataModelVersion": "res.1.1.0"
-        },
-        "platform": {
-          "manufacturerName": "*** YOUR MNID ***",
-          "manufacturerUrl": "http://www.samsung.com/sec/",
-          "manufacturingDate": "2017-08-31",
-          "modelNumber": "BLIND-01",
-          "platformVersion": "1.0",
-          "osVersion": "1.0",
-          "hardwareVersion": "1.0",
-          "firmwareVersion": "1.0",
-          "vendorId": "*** YOUR VENDOR ID ***"
-        }
-      },
-      "resources": {
-        "single": [
-          {
-            "uri": "/capability/illuminanceMeasurement/main/0",
-            "types": [
-              "oic.r.sensor.illuminance"
-            ],
-            "interfaces": [
-              "oic.if.s",
-              "oic.if.baseline"
-            ],
-            "policy": 3
-          },
-          {
-            "uri": "/capability/doorControl/main/0",
-            "types": [
-              "x.com.st.doorcontrol"
-            ],
-            "interfaces": [
-              "oic.if.baseline",
-              "oic.if.a"
-            ],
-            "policy": 3
-          }
-        ]
-      }
-    }
-  ],
-  "resourceTypes": [
-    {
-      "type": "oic.r.sensor.illuminance",
-      "properties": [
-        {
-          "key": "illuminance",
-          "type": 2,
-          "mandatory": true,
-          "rw": 1
-        }
-      ]
-    },
-    {
-      "type": "x.com.st.doorcontrol",
-      "properties": [
-        {
-          "key": "doorState",
-          "type": 3,
-          "mandatory": true,
-          "rw": 3
-        }
-      ]
-    }
-  ],
-  "configuration": {
-    "easySetup": {
-      "connectivity": {
-        "type": 1,
-        "softAP": {
-          "setupId": "*** YOUR SETUPID ***",
-          "artik": false
-        }
-      },
-      "ownershipTransferMethod": 2
-    },
-    "wifi": {
-      "interfaces": 15,
-      "frequency": 1
-    },
-    "filePath": {
-      "svrdb": "artikserversecured.dat",
-      "provisioning": "provisioning.dat",
-      "certificate": "certificate.pem",
-      "privateKey": "privatekey.der"
-    }
-  }
-}
\ No newline at end of file
diff --git a/shared/res/master.json b/shared/res/master.json
new file mode 100644 (file)
index 0000000..2061f1e
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "devices": [
+    {
+      "deviceType": "oic.d.light",
+      "deviceName": "Smart_Blind",
+      "mnid": "***Your MNID***",
+      "vid": "Blind_Vendor"
+    }
+  ],
+  "configuration": {
+    "easySetup": {
+      "mode": 1,
+      "setupId": "***Your Setup ID"
+    },
+    "otm": 2,
+    "crtType": 1
+  }
+}
diff --git a/shared/res/resource.json b/shared/res/resource.json
new file mode 100644 (file)
index 0000000..aa2cde5
--- /dev/null
@@ -0,0 +1,52 @@
+{
+  "resources": {
+    "single": [
+      {
+        "uri": "/capability/illuminanceMeasurement/main/0",
+        "types": [
+          "oic.r.sensor.illuminance"
+        ],
+        "interfaces": [
+          "oic.if.s",
+          "oic.if.baseline"
+        ]
+      },
+      {
+        "uri": "/capability/doorControl/main/0",
+        "types": [
+          "x.com.st.doorcontrol"
+        ],
+        "interfaces": [
+          "oic.if.baseline",
+          "oic.if.a"
+        ]
+      }
+    ]
+  },
+  "resourceTypes": [
+    {
+      "type": "oic.r.sensor.illuminance",
+      "properties": [
+        {
+          "key": "illuminance",
+          "type": "double",
+          "readOnly": 1,
+          "mandatory": true,
+          "isArray": false
+        }
+      ]
+    },
+    {
+      "type": "x.com.st.doorcontrol",
+      "properties": [
+        {
+          "key": "doorState",
+          "type": "string",
+          "readOnly": 3,
+          "mandatory": true,
+          "isArray": false
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/resource.c b/src/resource.c
deleted file mode 100644 (file)
index ad85e27..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <peripheral_io.h>
-
-#include "log.h"
-#include "resource.h"
-
-static resource_s resource_info[PIN_MAX] = { {0, NULL, NULL}, };
-
-resource_s *resource_get_info(int pin_num)
-{
-       return &resource_info[pin_num];
-}
-
-void resource_close_all(void)
-{
-       int i = 0;
-       for (i = 0; i < PIN_MAX; i++) {
-               if (!resource_info[i].opened) continue;
-               _I("GPIO[%d] is closing...", i);
-
-               if (resource_info[i].close)
-                       resource_info[i].close(i);
-       }
-       resource_close_illuminance_sensor();
-}
similarity index 98%
rename from src/resource/resource_illuminance_sensor.c
rename to src/resource_illuminance_sensor.c
index 975a8e5..2e2e53e 100644 (file)
@@ -22,7 +22,6 @@
 #include <sys/time.h>
 
 #include "log.h"
-#include "resource_internal.h"
 
 #define I2C_PIN_MAX 28
 /* I2C */
diff --git a/src/sensor-data.c b/src/sensor-data.c
deleted file mode 100644 (file)
index d135979..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <pthread.h>
-#include "log.h"
-#include "sensor-data.h"
-
-struct __sensor_data_s {
-       sensor_data_type_e type;
-       union {
-               int int_val;
-               unsigned int uint_val;
-               bool b_val;
-               double d_val;
-               char *str_val;
-       } value;
-       pthread_mutex_t mutex;
-};
-
-sensor_data *sensor_data_new(sensor_data_type_e type)
-{
-       sensor_data *data = NULL;
-       retv_if(type == SENSOR_DATA_TYPE_NONE, NULL);
-
-       data = calloc(1, sizeof(sensor_data));
-       retv_if(!data, NULL);
-
-       data->type = type;
-       pthread_mutex_init(&data->mutex, NULL);
-
-       return data;
-}
-
-void sensor_data_free(sensor_data *data)
-{
-       ret_if(!data);
-
-       if (data->type == SENSOR_DATA_TYPE_STR) {
-               pthread_mutex_lock(&data->mutex);
-               free(data->value.str_val);
-               data->value.str_val = NULL;
-               pthread_mutex_unlock(&data->mutex);
-       }
-       pthread_mutex_destroy(&data->mutex);
-
-       free(data);
-}
-
-int sensor_data_set_int(sensor_data *data, int value)
-{
-       retv_if(!data, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_INT, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       data->value.int_val = value;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_set_uint(sensor_data *data, unsigned int value)
-{
-       retv_if(!data, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_UINT, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       data->value.uint_val = value;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_set_bool(sensor_data *data, bool value)
-{
-       retv_if(!data, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_BOOL, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       data->value.b_val = value;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_set_double(sensor_data *data, double value)
-{
-       retv_if(!data, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_DOUBLE, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       data->value.d_val = value;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_set_string(sensor_data *data, const char *value, unsigned int size)
-{
-       char *temp = NULL;
-       retv_if(!data, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_STR, -1);
-       retv_if(!value, -1);
-       retv_if(size == 0, -1);
-
-       temp = strndup(value, size);
-       retv_if(!temp, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       free(data->value.str_val);
-       data->value.str_val = temp;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_get_int(sensor_data *data, int *value)
-{
-       retv_if(!data, -1);
-       retv_if(!value, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_INT, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       *value = data->value.int_val;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_get_uint(sensor_data *data, unsigned int *value)
-{
-       retv_if(!data, -1);
-       retv_if(!value, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_UINT, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       *value = data->value.uint_val;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_get_bool(sensor_data *data, bool *value)
-{
-       retv_if(!data, -1);
-       retv_if(!value, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_BOOL, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       *value = data->value.b_val;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_get_double(sensor_data *data, double *value)
-{
-       retv_if(!data, -1);
-       retv_if(!value, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_DOUBLE, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       *value = data->value.d_val;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
-
-int sensor_data_get_string(sensor_data *data, const char **value)
-{
-       retv_if(!data, -1);
-       retv_if(!value, -1);
-       retv_if(data->type != SENSOR_DATA_TYPE_STR, -1);
-
-       pthread_mutex_lock(&data->mutex);
-       *value = data->value.str_val;
-       pthread_mutex_unlock(&data->mutex);
-
-       return 0;
-}
diff --git a/src/smart-blind.c b/src/smart-blind.c
deleted file mode 100644 (file)
index 9c49b53..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
- *
- * Contact: Jin Yoon <jinny.yoon@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <tizen.h>
-#include <service_app.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <Ecore.h>
-
-#include "st_things.h"
-#include "log.h"
-#include "sensor-data.h"
-#include "resource.h"
-
-#define JSON_PATH "device_def.json"
-
-#define SENSOR_URI_ILLUMINANCE "/capability/illuminanceMeasurement/main/0"
-#define SENSOR_KEY_ILLUMINANCE "illuminance"
-#define SENSOR_KEY_RANGE "range"
-
-#define SENSOR_URI_DOOR "/capability/doorControl/main/0"
-#define SENSOR_KEY_DOOR "doorState"
-#define SENSOR_POWER_INITIALIZING BLIND_DOWN
-
-#define I2C_BUS_NUMBER (1)
-#define SENSOR_GATHER_INTERVAL (5.0f)
-
-// If you want to use SmartThings, Please uncomment this define */
-//#define USE_ST_SDK
-
-typedef struct app_data_s {
-       Ecore_Timer *getter_illuminance;
-       sensor_data *illuminance_data;
-       sensor_data *power_data;
-} app_data;
-
-static app_data *g_ad = NULL;
-
-#define ILLUMINATION_CRITERIA 1000
-
-// HS-53 Servo Motor Duty Cycle : 0.54ms ~ 2.1ms
-// Spec Duty Cycle : 0.553ms ~ 2.227ms(https://www.servocity.com/hitec-hs-53-servo)
-#define SERVO_MOTOR_DUTY_CYCLE_COUNTER_CLOCKWISE 1.0
-#define SERVO_MOTOR_DUTY_CYCLE_CLOCKWISE 2.0
-
-#define BLIND_UP "opening"
-#define BLIND_DOWN "closing"
-
-static inline int __get_illuminance(void *data, unsigned int *illuminance_value)
-{
-       int ret = 0;
-       app_data *ad = data;
-
-       retv_if(!ad, -1);
-       retv_if(!ad->illuminance_data, -1);
-
-       ret = resource_read_illuminance_sensor(I2C_BUS_NUMBER, illuminance_value);
-       retv_if(ret != 0, -1);
-
-       sensor_data_set_uint(ad->illuminance_data, *illuminance_value);
-       _D("Illuminance value : %u", *illuminance_value);
-
-#ifdef USE_ST_SDK
-       st_things_notify_observers(SENSOR_URI_ILLUMINANCE);
-#endif
-
-       return 0;
-}
-
-static int __set_servo_motor(void *data, int on)
-{
-       double duty_cycle = 0;
-       int ret = 0;
-       const char *power_value = NULL;
-       app_data *ad = data;
-
-       retv_if(!ad, -1);
-       retv_if(!ad->illuminance_data, -1);
-
-       if (on) {
-               duty_cycle = SERVO_MOTOR_DUTY_CYCLE_CLOCKWISE;
-               power_value = BLIND_UP;
-       } else {
-               duty_cycle = SERVO_MOTOR_DUTY_CYCLE_COUNTER_CLOCKWISE;
-               power_value = BLIND_DOWN;
-       }
-
-       ret = resource_set_servo_motor_value(duty_cycle);
-       retv_if(ret != 0, -1);
-
-       sensor_data_set_string(ad->power_data, power_value, strlen(power_value));
-
-#ifdef USE_ST_SDK
-       st_things_notify_observers(SENSOR_URI_DOOR);
-#endif
-
-       return 0;
-}
-
-static Eina_Bool __illuminance_to_servo_motor(void *data)
-{
-       int ret = 0;
-       unsigned int illuminance_value = 0;
-
-       app_data *ad = data;
-
-       if (!ad) {
-               _E("failed to get app_data");
-               service_app_exit();
-       }
-
-       if (!ad->illuminance_data) {
-               _E("failed to get illuminance_data");
-               service_app_exit();
-       }
-
-       ret = __get_illuminance(ad, &illuminance_value);
-       retv_if(ret != 0, ECORE_CALLBACK_RENEW);
-
-#if 1 // If you want to control MOTOR from Cloud, please deactivate these codes.
-       int on = 0;
-
-       if (illuminance_value < ILLUMINATION_CRITERIA) {
-               on = 0;
-       } else {
-               on = 1;
-       }
-
-       ret = __set_servo_motor(ad, on);
-       retv_if(ret != 0, ECORE_CALLBACK_RENEW);
-#endif
-
-       return ECORE_CALLBACK_RENEW;
-}
-
-void gathering_stop(void *data)
-{
-       app_data *ad = data;
-
-       ret_if(!ad);
-
-       if (ad->getter_illuminance)
-               ecore_timer_del(ad->getter_illuminance);
-}
-
-void gathering_start(void *data)
-{
-       app_data *ad = data;
-
-       ret_if(!ad);
-
-       gathering_stop(ad);
-
-       ad->getter_illuminance = ecore_timer_add(SENSOR_GATHER_INTERVAL, __illuminance_to_servo_motor, ad);
-       if (!ad->getter_illuminance)
-               _E("Failed to add getter_illuminance");
-}
-
-#ifdef USE_ST_SDK
-static bool handle_reset_request(void)
-{
-       _D("Received a request for RESET.");
-       return false;
-}
-
-static void handle_reset_result(bool result)
-{
-       _D("Reset %s.\n", result ? "succeeded" : "failed");
-}
-
-static bool handle_ownership_transfer_request(void)
-{
-       _D("Received a request for Ownership-transfer.");
-       return true;
-}
-
-static void handle_things_status_change(st_things_status_e things_status)
-{
-       _D("Things status is changed: %d", things_status);
-
-       if (things_status == ST_THINGS_STATUS_REGISTERED_TO_CLOUD) {
-               ecore_main_loop_thread_safe_call_async(gathering_start, g_ad);
-       }
-}
-
-static bool handle_get_request(st_things_get_request_message_s* req_msg, st_things_representation_s* resp_rep)
-{
-       _D("resource_uri [%s]", req_msg->resource_uri);
-       retv_if(!g_ad, false);
-
-       if (0 == strcmp(req_msg->resource_uri, SENSOR_URI_ILLUMINANCE)) {
-               if (req_msg->has_property_key(req_msg, SENSOR_KEY_ILLUMINANCE)) {
-                       unsigned int value = 0;
-                       sensor_data_get_uint(g_ad->illuminance_data, &value);
-                       resp_rep->set_int_value(resp_rep, SENSOR_KEY_ILLUMINANCE, value);
-               }
-               return true;
-       } else if (0 == strcmp(req_msg->resource_uri, SENSOR_URI_DOOR)) {
-               if (req_msg->has_property_key(req_msg, SENSOR_KEY_DOOR)) {
-                       const char *str = NULL;
-                       sensor_data_get_string(g_ad->power_data, &str);
-                       if (!str) {
-                               str = SENSOR_POWER_INITIALIZING;
-                       }
-                       resp_rep->set_str_value(resp_rep, SENSOR_KEY_DOOR, str);
-                       _D("Power : %s", str);
-               }
-               return true;
-       }
-       _E("not supported uri");
-       return false;
-}
-
-static bool handle_set_request(st_things_set_request_message_s* req_msg, st_things_representation_s* resp_rep)
-{
-       _D("resource_uri [%s]", req_msg->resource_uri);
-       retv_if(!g_ad, false);
-
-               if (0 == strcmp(req_msg->resource_uri, SENSOR_URI_DOOR)) {
-               int ret = 0;
-               char *str = NULL;
-
-               if (req_msg->rep->get_str_value(req_msg->rep, SENSOR_KEY_DOOR, &str)) {
-                       retv_if(!str, false);
-                       _D("set [%s:%s] == %s", SENSOR_URI_DOOR, SENSOR_KEY_DOOR, str);
-
-                       sensor_data_set_string(g_ad->power_data, str, strlen(str));
-                       resp_rep->set_str_value(resp_rep, SENSOR_KEY_DOOR, str);
-
-                       if (0 == strcmp(str, "opening")) {
-                               ret = __set_servo_motor(g_ad, 1);
-                       } else {
-                               ret = __set_servo_motor(g_ad, 0);
-                       }
-                       free(str);
-                       retv_if(ret != 0, false);
-               } else {
-                       _E("cannot get a string value");
-               }
-
-               return true;
-       }
-       return false;
-}
-
-static int __st_things_init(void)
-{
-       bool easysetup_complete = false;
-       char app_json_path[128] = {'\0', };
-       char *app_res_path = NULL;
-       char *app_data_path = NULL;
-
-       app_res_path = app_get_resource_path();
-       if (!app_res_path) {
-               _E("app_res_path is NULL!!");
-               return -1;
-       }
-
-       app_data_path = app_get_data_path();
-       if (!app_data_path) {
-               _E("app_data_path is NULL!!");
-               free(app_res_path);
-               return -1;
-       }
-
-       snprintf(app_json_path, sizeof(app_json_path), "%s%s", app_res_path, JSON_PATH);
-
-       if (0 != st_things_set_configuration_prefix_path(app_res_path, app_data_path)) {
-               _E("st_things_set_configuration_prefix_path() failed!!");
-               free(app_res_path);
-               free(app_data_path);
-               return -1;
-       }
-
-       free(app_res_path);
-       free(app_data_path);
-
-       if (0 != st_things_initialize(app_json_path, &easysetup_complete)) {
-               _E("st_things_initialize() failed!!");
-               return -1;
-       }
-
-       _D("easysetup_complete:[%d] ", easysetup_complete);
-
-       st_things_register_request_cb(handle_get_request, handle_set_request);
-       st_things_register_reset_cb(handle_reset_request, handle_reset_result);
-       st_things_register_user_confirm_cb(handle_ownership_transfer_request);
-       st_things_register_things_status_change_cb(handle_things_status_change);
-
-       return 0;
-}
-
-static int __st_things_deinit(void)
-{
-       st_things_deinitialize();
-       return 0;
-}
-
-static int __st_things_start(void)
-{
-       st_things_start();
-       return 0;
-}
-
-static int __st_things_stop(void)
-{
-       st_things_stop();
-       return 0;
-}
-#endif /* USE_ST_SDK */
-
-static bool service_app_create(void *user_data)
-{
-       app_data *ad = (app_data *)user_data;
-
-       ad->illuminance_data = sensor_data_new(SENSOR_DATA_TYPE_UINT);
-       if (!ad->illuminance_data)
-               return false;
-
-       ad->power_data = sensor_data_new(SENSOR_DATA_TYPE_STR);
-       if (!ad->power_data)
-               return false;
-       sensor_data_set_string(g_ad->power_data, SENSOR_POWER_INITIALIZING, strlen(SENSOR_POWER_INITIALIZING));
-
-#ifdef USE_ST_SDK
-       if (__st_things_init())
-               return false;
-#endif
-
-       return true;
-}
-
-static void service_app_control(app_control_h app_control, void *user_data)
-{
-#ifdef USE_ST_SDK
-       __st_things_start();
-#else
-       gathering_start(user_data);
-#endif
-}
-
-static void service_app_terminate(void *user_data)
-{
-       app_data *ad = (app_data *)user_data;
-
-       resource_close_illuminance_sensor();
-       resource_close_servo_motor();
-
-#ifdef USE_ST_SDK
-       __st_things_stop();
-       __st_things_deinit();
-#else
-       gathering_stop(ad);
-#endif
-
-       sensor_data_free(ad->illuminance_data);
-       free(ad);
-}
-
-int main(int argc, char *argv[])
-{
-       app_data *ad = NULL;
-       service_app_lifecycle_callback_s event_callback;
-
-       ad = calloc(1, sizeof(app_data));
-       retv_if(!ad, -1);
-
-       g_ad = ad;
-
-       event_callback.create = service_app_create;
-       event_callback.terminate = service_app_terminate;
-       event_callback.app_control = service_app_control;
-
-       return service_app_main(argc, argv, &event_callback, ad);
-}
-
diff --git a/src/st-things-blind.c b/src/st-things-blind.c
new file mode 100644 (file)
index 0000000..9319f5b
--- /dev/null
@@ -0,0 +1,662 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Contact: Jin Yoon <jinny.yoon@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <tizen.h>
+#include <service_app.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <Ecore.h>
+
+#include "log.h"
+#include "resource_illuminance_sensor.h"
+#include "resource_servo_motor.h"
+
+#define USE_ST_SDK
+
+#ifdef USE_ST_SDK
+#include "smartthings.h"
+#include "smartthings_resource.h"
+#include "smartthings_payload.h"
+
+// Certificate file name in 'res' directory
+#define CERT_FILE "certificate.pem"
+// Private key file name in 'res' directory
+#define PRIV_FILE "privatekey.der"
+
+// SmartThings resource info for illuminance Sensor
+#define SENSOR_URI_ILLUMINANCE "/capability/illuminanceMeasurement/main/0"
+#define SENSOR_KEY_ILLUMINANCE "illuminance"
+
+// SmartThings resource info for servo-motor
+#define SENSOR_URI_DOOR "/capability/doorControl/main/0"
+#define SENSOR_KEY_DOOR "doorState"
+#define BLIND_UP "opening"
+#define BLIND_DOWN "closing"
+#define SENSOR_POWER_INITIALIZING BLIND_DOWN
+#endif /* USE_ST_SDK */
+
+// Peripheral info for Illuminance Sensor
+#define I2C_BUS_NUMBER (1)
+#define SENSOR_GATHER_INTERVAL (5.0f)
+
+// Peripheral info for Servo-motor(HS-53)
+// Duty Cycle : 0.54ms ~ 2.1ms
+// Spec Duty Cycle : 0.553ms ~ 2.227ms(https://www.servocity.com/hitec-hs-53-servo)
+#define SERVO_MOTOR_DUTY_CYCLE_COUNTER_CLOCKWISE 1.0
+#define SERVO_MOTOR_DUTY_CYCLE_CLOCKWISE 2.0
+
+typedef struct app_data_s {
+       uint32_t illuminance_value;
+       char *motor_string;
+       Ecore_Timer *getter_illuminance;
+#ifdef USE_ST_SDK
+       smartthings_h st_master_h;
+       smartthings_resource_h st_res_h;
+       smartthings_resource_connection_status_e st_res_conn_status;
+#endif /* USE_ST_SDK */
+} app_data;
+
+static app_data *g_ad = NULL;
+
+#ifdef USE_ST_SDK
+static const char *_resource_error_to_str(smartthings_resource_error_e error)
+{
+       const char *err_str = NULL;
+
+       switch (error) {
+       case SMARTTHINGS_RESOURCE_ERROR_NONE:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_NONE";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_INVALID_PARAMETER";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_OUT_OF_MEMORY";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_PERMISSION_DENIED";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_NO_DATA:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_NO_DATA";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_OPERATION_FAILED:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_NOT_SUPPORTED";
+               break;
+       case SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE:
+               err_str = "SMARTTHINGS_RESOURCE_ERROR_SERVICE_UNAVAILABLE";
+               break;
+       default:
+               err_str = "Unknown error";
+               break;
+       }
+
+       return err_str;
+}
+#endif
+
+static Eina_Bool _get_illuminance(void *data)
+{
+       int ret = 0;
+       app_data *ad = data;
+
+       retv_if(!ad, ECORE_CALLBACK_CANCEL);
+
+       ret = resource_read_illuminance_sensor(I2C_BUS_NUMBER, &ad->illuminance_value);
+       retv_if(ret != 0, ECORE_CALLBACK_CANCEL);
+
+       _D("Illuminance value : %u", ad->illuminance_value);
+
+#ifdef USE_ST_SDK
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+       smartthings_payload_h resp_payload = NULL;
+
+       error = smartthings_payload_create(&resp_payload);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE || !resp_payload) {
+               _E("smartthings_payload_create() failed, [%s]",
+                       _resource_error_to_str(error));
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       error = smartthings_payload_set_int(resp_payload, SENSOR_KEY_ILLUMINANCE, (int)ad->illuminance_value);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+               _E("smartthings_payload_set_int() failed, [%s]",
+                       _resource_error_to_str(error));
+
+       error = smartthings_resource_notify(ad->st_res_h, SENSOR_URI_ILLUMINANCE, resp_payload);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+               _E("smartthings_resource_notify() failed, [%s]",
+                       _resource_error_to_str(error));
+
+       if (smartthings_payload_destroy(resp_payload))
+               _E("smartthings_payload_destroy() failed");
+#endif
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void _stop_gathering(void *data)
+{
+       app_data *ad = data;
+
+       ret_if(!ad);
+
+       if (ad->getter_illuminance) {
+               ecore_timer_del(ad->getter_illuminance);
+               ad->getter_illuminance = NULL;
+       }
+}
+
+static void _start_gathering(void *data)
+{
+       app_data *ad = data;
+
+       ret_if(!ad);
+
+       _stop_gathering(ad);
+
+       ad->getter_illuminance = ecore_timer_add(SENSOR_GATHER_INTERVAL, _get_illuminance, ad);
+       if (!ad->getter_illuminance)
+               _E("Failed to add getter_illuminance");
+}
+
+#ifdef USE_ST_SDK
+/* SmartThings resource functions */
+static bool _handle_get_request_on_resource_capability_illuminancemeasurement_main_0(smartthings_payload_h resp_payload, void *user_data)
+{
+       app_data *ad = user_data;
+       int ret = 0;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+
+       retv_if(!resp_payload, false);
+       retv_if(!ad, false);
+
+       ret = resource_read_illuminance_sensor(I2C_BUS_NUMBER, &ad->illuminance_value);
+       retv_if(ret != 0, false);
+
+    _D("Received a GET request : Illuminance is %u", ad->illuminance_value);
+
+       error = smartthings_payload_set_int(resp_payload, SENSOR_KEY_ILLUMINANCE, (int)ad->illuminance_value);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+               _E("smartthings_payload_set_int() failed, [%s]",
+                       _resource_error_to_str(error));
+               return false;
+       }
+
+    return true;
+}
+
+static bool _handle_get_request_on_resource_capability_doorcontrol_main_0(smartthings_payload_h resp_payload, void *user_data)
+{
+       app_data *ad = user_data;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+
+       retv_if(!resp_payload, false);
+       retv_if(!ad, false);
+
+       _D("Received a GET request");
+
+       error = smartthings_payload_set_string(resp_payload, SENSOR_KEY_DOOR, ad->motor_string);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+               _E("smartthings_payload_set_string() failed, [%s]",
+                       _resource_error_to_str(error));
+               return false;
+       }
+
+       return true;
+}
+
+static int _set_servo_motor(int on)
+{
+       double duty_cycle = 0;
+       int ret = 0;
+
+       if (on)
+               duty_cycle = SERVO_MOTOR_DUTY_CYCLE_CLOCKWISE;
+       else
+               duty_cycle = SERVO_MOTOR_DUTY_CYCLE_COUNTER_CLOCKWISE;
+
+       ret = resource_set_servo_motor_value(duty_cycle);
+       retv_if(ret != 0, -1);
+
+       return 0;
+}
+
+static bool _handle_set_request_on_resource_capability_doorcontrol_main_0(smartthings_payload_h payload, smartthings_payload_h resp_payload, void *user_data)
+{
+       app_data *ad = user_data;
+       char *str = NULL;
+       int ret = 0;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+
+       retv_if(!payload, false);
+       retv_if(!resp_payload, false);
+       retv_if(!ad, false);
+
+    _D("Received a SET request");
+
+    error = smartthings_payload_get_string(payload, SENSOR_KEY_DOOR, &str);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+               _E("smartthings_payload_get_string() failed, [%s]",
+                       _resource_error_to_str(error));
+       }
+
+    if (!str || strncmp(str, BLIND_DOWN, strlen(BLIND_DOWN))) {
+               ad->motor_string = BLIND_UP;
+               ret = _set_servo_motor(1);
+    } else {
+               ad->motor_string = BLIND_DOWN;
+               ret = _set_servo_motor(0);
+       }
+       free(str);
+
+       error = smartthings_payload_set_string(resp_payload, SENSOR_KEY_DOOR, ad->motor_string);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+               _E("smartthings_payload_set_string() failed, [%s]",
+                       _resource_error_to_str(error));
+               return false;
+       }
+
+    return true;
+}
+
+
+static void _request_cb(smartthings_resource_h handle, int req_id,
+       const char *uri, smartthings_resource_req_type_e req_type,
+       smartthings_payload_h payload, void *user_data)
+{
+       smartthings_payload_h resp_payload = NULL;
+       bool result = false;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+
+       _D("request on %s, type[%d], id[%d]", uri, req_type, req_id);
+
+       error = smartthings_payload_create(&resp_payload);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE || !resp_payload) {
+               _E("smartthings_payload_create() failed, [%s]",
+                       _resource_error_to_str(error));
+               return;
+       }
+
+       if (req_type == SMARTTHINGS_RESOURCE_REQUEST_GET) {
+               if (!strncmp(uri, SENSOR_URI_ILLUMINANCE, strlen(SENSOR_URI_ILLUMINANCE)))
+                       result = _handle_get_request_on_resource_capability_illuminancemeasurement_main_0(resp_payload, user_data);
+               else if (!strncmp(uri, SENSOR_URI_DOOR, strlen(SENSOR_URI_DOOR)))
+                       result = _handle_get_request_on_resource_capability_doorcontrol_main_0(resp_payload, user_data);
+               else
+                       _E("No matching Resource uri to get");
+       } else if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) {
+               if (!strncmp(uri, SENSOR_URI_DOOR, strlen(SENSOR_URI_DOOR)))
+                       result = _handle_set_request_on_resource_capability_doorcontrol_main_0(payload, resp_payload, user_data);
+               else
+                       _E("No matching Resource uri to set");
+       } else {
+               _E("Invalid request type - %d", req_type);
+               smartthings_payload_destroy(resp_payload);
+               return;
+       }
+
+       error = smartthings_resource_send_response(handle, req_id, uri, resp_payload, result);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+               smartthings_payload_destroy(resp_payload);
+               _E("smartthings_payload_destroy() failed, [%s]",
+                       _resource_error_to_str(error));
+               return;
+       }
+
+       if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) {
+               error = smartthings_resource_notify(handle, uri, resp_payload);
+               if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+                       _E("smartthings_resource_notify() failed, [%s]",
+                       _resource_error_to_str(error));
+       }
+
+       if (smartthings_payload_destroy(resp_payload))
+               _E("smartthings_payload_destroy failed");
+}
+
+static void _resource_connection_status_cb(smartthings_resource_h handle,
+       smartthings_resource_connection_status_e status, void *user_data)
+{
+       app_data *ad = user_data;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
+
+       ret_if(!ad);
+
+       ad->st_res_conn_status = status;
+       _D("status=[%d]", status);
+
+       if (status == SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED) {
+               error = smartthings_resource_set_request_cb(handle, _request_cb, ad);
+               if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) {
+                       _E("smartthings_resource_set_request_cb() is failed");
+                       return;
+               }
+       } else {
+               _E("connection failed");
+       }
+}
+
+static int _init_resource(app_data *ad)
+{
+       smartthings_resource_h st_res_h = NULL;
+       int error = 0;
+
+       retv_if(!ad, -1);
+
+       if (ad->st_res_h) {
+               _I("Already initialized!");
+               return 0;
+       }
+
+       error = smartthings_resource_initialize(&st_res_h,
+                               _resource_connection_status_cb, ad);
+       if (error) {
+               _E("smartthings_resource_initialize() is failed, [%s]",
+                       _resource_error_to_str(error));
+               return -1;
+       }
+
+       ad->st_res_h = st_res_h;
+       ad->st_res_conn_status = SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED;
+
+       return 0;
+}
+
+static int _fini_resource(app_data *ad)
+{
+       retv_if(!ad, -1);
+
+       if (!ad->st_res_h)
+               return 0;
+
+       smartthings_resource_unset_request_cb(ad->st_res_h);
+       smartthings_resource_deinitialize(ad->st_res_h);
+
+       ad->st_res_h = NULL;
+       ad->st_res_conn_status = SMARTTHINGS_RESOURCE_CONNECTION_STATUS_DISCONNECTED;
+
+       return 0;
+}
+
+/* smartthings master functions */
+static const char *_master_error_to_str(smartthings_error_e error)
+{
+       const char *err_str = NULL;
+
+       switch (error) {
+       case SMARTTHINGS_ERROR_NONE:
+               err_str = "SMARTTHINGS_ERROR_NONE";
+               break;
+       case SMARTTHINGS_ERROR_INVALID_PARAMETER:
+               err_str = "SMARTTHINGS_ERROR_INVALID_PARAMETER";
+               break;
+       case SMARTTHINGS_ERROR_OUT_OF_MEMORY:
+               err_str = "SMARTTHINGS_ERROR_OUT_OF_MEMORY";
+               break;
+       case SMARTTHINGS_ERROR_PERMISSION_DENIED:
+               err_str = "SMARTTHINGS_ERROR_PERMISSION_DENIED";
+               break;
+       case SMARTTHINGS_ERROR_NO_DATA:
+               err_str = "SMARTTHINGS_ERROR_NO_DATA";
+               break;
+       case SMARTTHINGS_ERROR_NOT_SUPPORTED:
+               err_str = "SMARTTHINGS_ERROR_NOT_SUPPORTED";
+               break;
+       case SMARTTHINGS_ERROR_OPERATION_FAILED:
+               err_str = "SMARTTHINGS_ERROR_OPERATION_FAILED";
+               break;
+       case SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE:
+               err_str = "SMARTTHINGS_ERROR_SERVICE_UNAVAILABLE";
+               break;
+       default:
+               err_str = "Unknown error";
+               break;
+       }
+
+       return err_str;
+}
+
+static void _user_confirm_cb(smartthings_h handle, void *user_data)
+{
+       if (smartthings_send_user_confirm(handle, true) != 0)
+               _E("smartthings_send_user_confirm() is failed");
+}
+
+static void _reset_confirm_cb(smartthings_h handle, void *user_data)
+{
+       if (smartthings_send_reset_confirm(handle, true) != 0)
+               _E("smartthings_send_reset_confirm() is failed");
+}
+
+static void _reset_result_cb(smartthings_h handle, bool result, void *user_data)
+{
+       _I("reset result = [%d]", result);
+}
+
+static void _thing_status_cb(smartthings_h handle, smartthings_status_e status, void *user_data)
+{
+       _D("status: [%d]", status);
+}
+
+static void _things_connection_status_cb(smartthings_h handle, smartthings_connection_status_e status,
+       void *user_data)
+{
+       _D("status = [%d]", status);
+
+       if (status == SMARTTHINGS_CONNECTION_STATUS_CONNECTED) {
+               int err = 0;
+               bool is_es_completed = false;
+               const char* dev_name = "co2-app";
+               int wifi_mode = SMARTTHINGS_WIFI_MODE_11B
+                       | SMARTTHINGS_WIFI_MODE_11G
+                       | SMARTTHINGS_WIFI_MODE_11N;
+
+               int wifi_freq = SMARTTHINGS_WIFI_FREQ_24G
+                       | SMARTTHINGS_WIFI_FREQ_5G;
+
+               err = smartthings_set_device_property(
+                                       handle, dev_name, wifi_mode, wifi_freq);
+               if (err) {
+                       _E("smartthings_set_device_property() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_set_certificate_file(handle, CERT_FILE, PRIV_FILE);
+               if (err) {
+                       _E("smartthings_set_certificate_file() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_set_user_confirm_cb(handle, _user_confirm_cb, NULL);
+               if (err) {
+                       _E("smartthings_set_user_confirm_cb() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_set_reset_confirm_cb(handle, _reset_confirm_cb, NULL);
+               if (err) {
+                       _E("smartthings_set_reset_confirm_cb() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_set_reset_result_cb(handle, _reset_result_cb, NULL);
+               if (err) {
+                       _E("smartthings_set_reset_result_cb() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_set_status_changed_cb(handle, _thing_status_cb, NULL);
+               if (err) {
+                       _E("smartthings_set_status_changed_callback() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_start(handle);
+               if (err) {
+                       _E("smartthings_start() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               err = smartthings_get_easysetup_status(handle, &is_es_completed);
+               if (err) {
+                       _E("smartthings_get_easysetup_status() is failed, [%s]",
+                               _master_error_to_str(err));
+                       return;
+               }
+
+               if (is_es_completed == true) {
+                       _I("Easysetup is already done");
+                       return;
+               }
+
+               err = smartthings_start_easysetup(handle);
+               if (err) {
+                       _E("smartthings_start_easysetup() is failed, [%s]",
+                               _master_error_to_str(err));
+                       smartthings_stop(handle);
+                       return;
+               }
+       } else {
+                       _E("connection failed");
+       }
+}
+
+static int _init_master(app_data *ad)
+{
+       int error = SMARTTHINGS_ERROR_NONE;
+       smartthings_h st_handle = NULL;
+
+       retv_if(!ad, -1);
+
+       if (ad->st_master_h) {
+               _I("Already initialized!");
+               return 0;
+       }
+
+       error = smartthings_initialize(&st_handle, _things_connection_status_cb, NULL);
+       if (error) {
+               _E("smartthings_initialize() is failed, [%s]",
+                       _master_error_to_str(error));
+               return -1;
+       }
+
+       ad->st_master_h = st_handle;
+
+       return 0;
+}
+
+int _fini_master(app_data *ad)
+{
+       retv_if(!ad, -1);
+
+       if (!ad->st_master_h) {
+               _I("handle is already NULL");
+               return 0;
+       }
+
+       smartthings_unset_user_confirm_cb(ad->st_master_h);
+       smartthings_unset_reset_confirm_cb(ad->st_master_h);
+       smartthings_unset_reset_result_cb(ad->st_master_h);
+       smartthings_unset_status_changed_cb(ad->st_master_h);
+
+       smartthings_stop_easysetup(ad->st_master_h);
+       smartthings_stop(ad->st_master_h);
+
+       if (smartthings_deinitialize(ad->st_master_h) != 0)  {
+               _E("smartthings_deinitialize() is failed");
+               return -1;
+       }
+       ad->st_master_h = NULL;
+
+       return 0;
+}
+#endif
+
+static bool service_app_create(void *user_data)
+{
+#ifdef USE_ST_SDK
+       app_data *ad = user_data;
+
+       ad->illuminance_value = 100;
+       ad->motor_string = BLIND_UP;
+
+       if (_init_master(ad))
+               return false;
+
+       if (_init_resource(ad)) {
+               _fini_master(ad);
+               return false;
+       }
+#endif
+
+       return true;
+}
+
+static void service_app_terminate(void *user_data)
+{
+       app_data *ad = user_data;
+       if (!ad)
+               return;
+
+       _stop_gathering(ad);
+       resource_close_servo_motor();
+       resource_close_illuminance_sensor();
+
+#ifdef USE_ST_SDK
+       _fini_resource(ad);
+       _fini_master(ad);
+#endif
+
+       free(ad);
+}
+
+static void service_app_control(app_control_h app_control, void *user_data)
+{
+       app_data *ad = user_data;
+       _start_gathering(ad);
+}
+
+int main(int argc, char *argv[])
+{
+       app_data *ad = NULL;
+       service_app_lifecycle_callback_s event_callback;
+
+       ad = calloc(1, sizeof(app_data));
+       retv_if(!ad, -1);
+
+       g_ad = ad;
+
+       event_callback.create = service_app_create;
+       event_callback.terminate = service_app_terminate;
+       event_callback.app_control = service_app_control;
+
+       return service_app_main(argc, argv, &event_callback, ad);
+}
index b8c9cb7..8113545 100644 (file)
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="4.0" package="org.example.smart-blind" version="1.0.0">
-    <profile name="iot-headless"/>
-    <service-application appid="org.example.smart-blind" auto-restart="false" exec="smart-blind" multiple="false" nodisplay="true" on-boot="false" taskmanage="false" type="capp">
-        <label>smart-blind</label>
-        <icon>smart-blind.png</icon>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.0" package="org.example.st-things-blind" version="1.0.0">
+    <profile name="iot-headed"/>
+    <service-application appid="org.example.st-things-blind" exec="st-things-blind" multiple="false" nodisplay="true" on-boot="true" taskmanage="false" type="capp">
+        <label>st-things-blind</label>
+        <icon>st-things-blind.png</icon>
+        <metadata key="http://tizen.org/iot/metadata/master" value="shared/res/master.json"/>
+        <metadata key="http://tizen.org/iot/metadata/resource" value="shared/res/resource.json"/>
         <background-category value="background-network"/>
+        <background-category value="iot-communication"/>
     </service-application>
     <privileges>
-        <privilege>http://tizen.org/privilege/network.get</privilege>
-        <privilege>http://tizen.org/privilege/network.set</privilege>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+        <privilege>http://tizen.org/privilege/softap</privilege>
         <privilege>http://tizen.org/privilege/internet</privilege>
-        <privilege>http://tizen.org/privilege/alarm.set</privilege>
-        <privilege>http://tizen.org/privilege/network.profile</privilege>
+        <privilege>http://tizen.org/privilege/datasharing</privilege>
         <privilege>http://tizen.org/privilege/peripheralio</privilege>
+        <appdefined-privilege>http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.resource</appdefined-privilege>
+        <appdefined-privilege>http://com.samsung.tizen.smartthings-thing/appdefined/smartthings-thing.master</appdefined-privilege>
     </privileges>
 </manifest>