diff options
-rw-r--r-- | .cproject | 205 | ||||
-rw-r--r-- | .project | 6 | ||||
-rw-r--r-- | .smartthingsapp | 0 | ||||
-rw-r--r-- | inc/sensor-data.h | 48 | ||||
-rw-r--r-- | inc/smartthings.h | 1656 | ||||
-rw-r--r-- | inc/smartthings_payload.h | 663 | ||||
-rw-r--r-- | inc/smartthings_resource.h | 364 | ||||
-rw-r--r-- | lib/libst_thing_master_api.so | bin | 0 -> 111204 bytes | |||
-rw-r--r-- | lib/libst_thing_resource_api.so | bin | 0 -> 72524 bytes | |||
-rw-r--r-- | project_def.prop | 6 | ||||
-rw-r--r-- | shared/res/master.json | 18 | ||||
-rw-r--r-- | shared/res/resource.json | 30 | ||||
-rw-r--r-- | shared/res/smart-ruler.png (renamed from shared/res/distance.png) | bin | 57662 -> 57662 bytes | |||
-rw-r--r-- | src/controller.c | 457 | ||||
-rw-r--r-- | src/resource/resource_led.c | 2 | ||||
-rw-r--r-- | src/sensor-data.c | 193 | ||||
-rw-r--r-- | tizen-manifest.xml | 10 |
17 files changed, 3300 insertions, 358 deletions
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> <storageModule moduleId="org.eclipse.cdt.core.settings"> - <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1560654178"> - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1560654178" moduleId="org.eclipse.cdt.core.settings" name="Debug"> + <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1767419561"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1767419561" moduleId="org.eclipse.cdt.core.settings" name="Debug"> <externalSettings/> <extensions> <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> @@ -16,20 +16,20 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactName="distance" 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.1560654178" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug"> - <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1560654178." name="/" resourcePath=""> - <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.774352616" 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.1628589585" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> - <builder autoBuildTarget="all" buildPath="${workspace_loc:/distance}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1475200105" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/> - <tool command="arm-linux-gnueabi-ar.exe" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1336315288" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> - <tool command="clang++.exe" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.361704919" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> - <option id="gnu.cpp.compiler.option.optimization.level.397913892" 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.1841145937" 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.418676123" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> - <option id="sbi.gnu.cpp.compiler.option.1538579148" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> + <configuration artifactName="smart-ruler" 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.1767419561" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.1767419561." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.608366243" 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.1372836567" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder autoBuildTarget="all" buildPath="${workspace_loc:/smart-ruler}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1695000222" 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.1750036265" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.294100276" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.1040860027" 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.666309766" 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.1095104188" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.1648496132" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.456978874" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.2121897279" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> @@ -57,34 +57,35 @@ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.239867861" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList"> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1065926759" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/> <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/> <listOptionValue builtIn="false" value=" -fPIE"/> <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/> <listOptionValue builtIn="false" value="-mthumb"/> </option> - <option id="gnu.cpp.compiler.option.include.paths.511928271" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <option id="gnu.cpp.compiler.option.include.paths.340875819" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1486014404" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs"> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1631861172" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs"> <listOptionValue builtIn="false" value="Native_API"/> + <listOptionValue builtIn="false" value="iot-things"/> </option> - <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.984257680" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols"> + <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.698518824" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols"> <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/> <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/> <listOptionValue builtIn="false" value="_DEBUG"/> </option> - <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.850558033" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.822425412" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> </tool> - <tool command="clang.exe" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1626862710" 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.408711205" 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.1455500882" 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.1565624103" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> - <option id="sbi.gnu.c.compiler.option.109775339" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1153563461" 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.1632010145" 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.134771029" 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.1299547730" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.2015222348" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.661861810" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1706736153" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> @@ -112,32 +113,33 @@ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.2119009412" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList"> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1086493784" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/> <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/> <listOptionValue builtIn="false" value=" -fPIE"/> <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/> <listOptionValue builtIn="false" value="-mthumb"/> </option> - <option id="gnu.c.compiler.option.include.paths.2123027308" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <option id="gnu.c.compiler.option.include.paths.1653298286" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks.core.391938697" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs"> + <option id="sbi.gnu.c.compiler.option.frameworks.core.520330281" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs"> <listOptionValue builtIn="false" value="Native_API"/> + <listOptionValue builtIn="false" value="iot-things"/> </option> - <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.819022565" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols"> + <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1440952004" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols"> <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/> <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/> <listOptionValue builtIn="false" value="_DEBUG"/> </option> - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.23562986" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1045414976" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> </tool> - <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1478538462" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/> - <tool command="clang++.exe" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.176847531" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> - <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1321895281" 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.1137566279" 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.1786433741" 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.992281494" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList"> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1966065490" 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.654142596" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.1482379199" 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.2138851770" 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.724680925" 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.1084550468" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/> <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/> <listOptionValue builtIn="false" value="-pie -lpthread "/> @@ -146,29 +148,32 @@ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> </option> - <option id="gnu.cpp.link.option.paths.393035231" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <option id="gnu.cpp.link.option.paths.1014683147" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> </option> - <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1474614885" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> + <option id="gnu.cpp.link.option.libs.1499768574" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> + <listOptionValue builtIn="false" value="st_thing_master_api"/> + <listOptionValue builtIn="false" value="st_thing_resource_api"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1863430401" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/> </inputType> </tool> - <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as.exe" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.600761983" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2051112355" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1831733255" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1081943507" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> </tool> - <tool id="org.tizen.nativecore.tool.fnmapgen.1973681559" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> - <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.97291780" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> - <tool id="org.tizen.nativecore.tool.ast.1774092373" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> - <tool id="org.tizen.nativecore.tool.ast.cpp.1329705201" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> - <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1307616516" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> - <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1163534157" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> - <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.685717626" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.499782194" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1503514888" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.186475280" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.7270091" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> + <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.418813881" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1967494690" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.2050922004" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> </toolChain> </folderInfo> <sourceEntries> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/> - <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> </sourceEntries> @@ -176,8 +181,8 @@ </storageModule> <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> </cconfiguration> - <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.1125298155"> - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1125298155" moduleId="org.eclipse.cdt.core.settings" name="Release"> + <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.app.release.671109902"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.671109902" moduleId="org.eclipse.cdt.core.settings" name="Release"> <externalSettings/> <extensions> <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> @@ -191,20 +196,20 @@ </extensions> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <configuration artifactName="distance" 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.1125298155" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release"> - <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1125298155." name="/" resourcePath=""> - <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.240470518" 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.1604793585" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> - <builder buildPath="${workspace_loc:/distance}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.2132148278" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/> - <tool command="arm-linux-gnueabi-ar.exe" id="org.tizen.nativecore.tool.sbi.gnu.archiver.123684046" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> - <tool command="clang++.exe" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.557274967" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> - <option id="gnu.cpp.compiler.option.optimization.level.1322807278" 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.580895105" 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.810935675" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> - <option id="sbi.gnu.cpp.compiler.option.2012240133" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> + <configuration artifactName="smart-ruler" 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.671109902" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.671109902." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1202745358" 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.1246019054" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder buildPath="${workspace_loc:/smart-ruler}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1374595280" 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.91446850" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.135158534" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.1112421462" 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.1402034196" 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.1184969426" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.1823237024" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.2050914031" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1167092329" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> @@ -232,29 +237,30 @@ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.410105683" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList"> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.500880514" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/> <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/> <listOptionValue builtIn="false" value=" -fPIE"/> <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/> <listOptionValue builtIn="false" value="-mthumb"/> </option> - <option id="gnu.cpp.compiler.option.include.paths.951198116" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <option id="gnu.cpp.compiler.option.include.paths.1913140941" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> </option> - <option id="sbi.gnu.cpp.compiler.option.frameworks.core.2052499508" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs"> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.2115191324" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs"> <listOptionValue builtIn="false" value="Native_API"/> + <listOptionValue builtIn="false" value="iot-things"/> </option> - <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.211838672" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1995727487" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> </tool> - <tool command="clang.exe" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1286251202" 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.1941414519" 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.1863089907" 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.547266416" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> - <option id="sbi.gnu.c.compiler.option.113049366" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.813490946" 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.1887374180" 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.2047465316" 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.800157825" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.94742594" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1519875041" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1317808884" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> @@ -282,27 +288,28 @@ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1227121558" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList"> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1801798017" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/> <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/> <listOptionValue builtIn="false" value=" -fPIE"/> <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/> <listOptionValue builtIn="false" value="-mthumb"/> </option> - <option id="gnu.c.compiler.option.include.paths.331301604" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <option id="gnu.c.compiler.option.include.paths.1199867361" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> </option> - <option id="sbi.gnu.c.compiler.option.frameworks.core.307000547" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs"> + <option id="sbi.gnu.c.compiler.option.frameworks.core.1477572414" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs"> <listOptionValue builtIn="false" value="Native_API"/> + <listOptionValue builtIn="false" value="iot-things"/> </option> - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.712782346" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2030515783" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> </tool> - <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1351925430" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/> - <tool command="clang++.exe" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.2133569283" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> - <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.815936884" 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.1016352204" 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.752688507" 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.1336349919" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList"> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1920830334" 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.1817824927" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.290586110" 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.401014487" 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.2025459720" 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.1228499355" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList"> <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/> <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/> <listOptionValue builtIn="false" value="-pie -lpthread "/> @@ -311,29 +318,32 @@ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> </option> - <option id="gnu.cpp.link.option.paths.823730876" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <option id="gnu.cpp.link.option.paths.726463127" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> </option> - <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.195870362" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> + <option id="gnu.cpp.link.option.libs.1151960347" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> + <listOptionValue builtIn="false" value="st_thing_master_api"/> + <listOptionValue builtIn="false" value="st_thing_resource_api"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1174267984" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/> </inputType> </tool> - <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as.exe" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.694758669" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1131901700" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.456470696" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1145831341" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> </tool> - <tool id="org.tizen.nativecore.tool.fnmapgen.124949279" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> - <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.346011842" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> - <tool id="org.tizen.nativecore.tool.ast.1447675537" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> - <tool id="org.tizen.nativecore.tool.ast.cpp.674290411" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> - <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.283078124" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> - <tool id="org.tizen.nativecore.tool.sbi.po.compiler.198792701" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> - <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1550005144" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.1542470663" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1541053185" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.496761582" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.390585247" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> + <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1378906088" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.673556173" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1425822428" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> </toolChain> </folderInfo> <sourceEntries> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/> - <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="shared"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> </sourceEntries> @@ -343,16 +353,17 @@ </cconfiguration> </storageModule> <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - <project id="distance.org.tizen.nativecore.target.sbi.gcc45.app.2139274665" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/> + <project id="smart-ruler.org.tizen.nativecore.target.sbi.gcc45.app.686293162" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/> </storageModule> <storageModule moduleId="scannerConfiguration"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1125298155"> + <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.1767419561"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> </scannerConfigBuildInfo> - <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.1560654178"> + <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.671109902"> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> </scannerConfigBuildInfo> </storageModule> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> </cproject> @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <projectDescription> - <name>distance</name> + <name>smart-ruler</name> <comment></comment> <projects> </projects> @@ -25,7 +25,7 @@ </natures> <filteredResources> <filter> - <id>1554345450339</id> + <id>1561687034261</id> <name></name> <type>26</type> <matcher> @@ -34,7 +34,7 @@ </matcher> </filter> <filter> - <id>1554345450354</id> + <id>1561687034262</id> <name></name> <type>6</type> <matcher> diff --git a/.smartthingsapp b/.smartthingsapp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.smartthingsapp diff --git a/inc/sensor-data.h b/inc/sensor-data.h deleted file mode 100644 index 9522d7a..0000000 --- a/inc/sensor-data.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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 __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 index 0000000..7206479 --- /dev/null +++ b/inc/smartthings.h @@ -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 index 0000000..988585d --- /dev/null +++ b/inc/smartthings_payload.h @@ -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 index 0000000..1968c50 --- /dev/null +++ b/inc/smartthings_resource.h @@ -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/lib/libst_thing_master_api.so b/lib/libst_thing_master_api.so Binary files differnew file mode 100644 index 0000000..aef594a --- /dev/null +++ b/lib/libst_thing_master_api.so diff --git a/lib/libst_thing_resource_api.so b/lib/libst_thing_resource_api.so Binary files differnew file mode 100644 index 0000000..245093f --- /dev/null +++ b/lib/libst_thing_resource_api.so diff --git a/project_def.prop b/project_def.prop index df430c3..5910a65 100644 --- a/project_def.prop +++ b/project_def.prop @@ -1,11 +1,11 @@ -APPNAME = distance +APPNAME = smart-ruler type = app profile = iot-headless-5.0 -USER_SRCS = src/distance.c +USER_SRCS = src/smart-ruler.c USER_DEFS = USER_INC_DIRS = inc USER_OBJS = -USER_LIBS = +USER_LIBS = lib/libst_thing_master_api.so, lib/libst_thing_resource_api.so USER_EDCS = diff --git a/shared/res/master.json b/shared/res/master.json new file mode 100644 index 0000000..341bb82 --- /dev/null +++ b/shared/res/master.json @@ -0,0 +1,18 @@ +{ + "devices": [ + { + "deviceType": "oic.wk.d", + "deviceName": "***Your Device Name***", + "mnid": "***Your MNID***", + "vid": "***Your Vendor ID***" + } + ], + "configuration": { + "easySetup": { + "mode": 1, + "setupId": "***Your Setup ID***" + }, + "otm": 2, + "crtType": 1 + } +}
\ No newline at end of file diff --git a/shared/res/resource.json b/shared/res/resource.json new file mode 100644 index 0000000..4fc3001 --- /dev/null +++ b/shared/res/resource.json @@ -0,0 +1,30 @@ +{ + "resources": { + "single": [ + { + "uri": "/capability/illuminanceMeasurement/main/0", + "types": [ + "oic.r.sensor.illuminance" + ], + "interfaces": [ + "oic.if.s", + "oic.if.baseline" + ] + } + ] + }, + "resourceTypes": [ + { + "type": "oic.r.sensor.illuminance", + "properties": [ + { + "key": "illuminance", + "type": "double", + "readOnly": 1, + "mandatory": true, + "isArray": false + } + ] + } + ] +}
\ No newline at end of file diff --git a/shared/res/distance.png b/shared/res/smart-ruler.png Binary files differindex 9765b1b..9765b1b 100644 --- a/shared/res/distance.png +++ b/shared/res/smart-ruler.png diff --git a/src/controller.c b/src/controller.c index 719e2d8..ee14ec5 100644 --- a/src/controller.c +++ b/src/controller.c @@ -19,16 +19,76 @@ #include <service_app.h> #include "log.h" -#include "sensor-data.h" #include "resource.h" #define SENSORING_TIME_INTERVAL (0.5) +// For using SmartThings SDK +#define USE_ST_SDK +#ifdef USE_ST_SDK +#include "smartthings.h" +#include "smartthings_resource.h" +#include "smartthings_payload.h" + +// Certification file and private key file stored in the resource directory +#define CERT_FILE "certificate.pem" +#define PRIV_FILE "privatekey.der" + +// URI and key information +#define SENSOR_LIDAR_URI "/capability/illuminanceMeasurement/main/0" +#define SENSOR_LIDAR_KEY "illuminance" +#endif /* USE_ST_SDK */ + typedef struct app_data_s { Ecore_Timer *getter_timer; - sensor_data *lidar_data; + unsigned int lidar_data; +#ifdef USE_ST_SDK + smartthings_h st_master_h; + smartthings_resource_h st_res_h; + smartthings_status_e status; +#endif /* USE_ST_SDK */ } app_data; +#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 _lidar_value_read_cb(void *data) { app_data *ad = data; @@ -41,22 +101,379 @@ static Eina_Bool _lidar_value_read_cb(void *data) service_app_exit(); } - if (!ad->lidar_data) { - _E("lidar_data is NULL"); - service_app_exit(); - } - resource_write_led(5, 1); ret = resource_read_lidar_v3(&lidar_value); retv_if(ret != 0, ECORE_CALLBACK_RENEW); resource_write_led(5, 0); _D("distance : %u cm", lidar_value); - sensor_data_set_uint(ad->lidar_data, lidar_value); + ad->lidar_data = lidar_value; + +#ifdef USE_ST_SDK + int error = SMARTTHINGS_RESOURCE_ERROR_NONE; + smartthings_payload_h resp_payload = NULL; + + if (ad->status != SMARTTHINGS_STATUS_REGISTERED_TO_CLOUD) + return ECORE_CALLBACK_RENEW; + + 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_double(resp_payload, SENSOR_LIDAR_KEY, ad->lidar_data); + if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) + _E("smartthings_payload_set_bool() failed, [%s]", + _resource_error_to_str(error)); + + error = smartthings_resource_notify(ad->st_res_h, SENSOR_LIDAR_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"); +#endif return ECORE_CALLBACK_RENEW; } +#ifdef USE_ST_SDK +/* SmartThings resource functions */ +static bool _handle_get_lidar(smartthings_payload_h resp_payload, void *user_data) +{ + int error = SMARTTHINGS_RESOURCE_ERROR_NONE; + app_data *ad = user_data; + + retv_if(!ad, false); + + _D("Received a GET request for LIDAR"); + + error = smartthings_payload_set_double(resp_payload, SENSOR_LIDAR_KEY, ad->lidar_data); + if (error != SMARTTHINGS_RESOURCE_ERROR_NONE) + _E("smartthings_payload_set_bool() failed, [%s]", + _resource_error_to_str(error)); + + 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)); + + if (req_type == SMARTTHINGS_RESOURCE_REQUEST_GET) { + if (!strncmp(uri, SENSOR_LIDAR_URI, strlen(SENSOR_LIDAR_URI))) + result = _handle_get_lidar(resp_payload, user_data); + else + _E("No matching Resource uri to get"); + } else if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) { + _E("No matching Resource uri to get"); + } 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) { + _E("smartthings_resource_send_response() failed, [%s]", + _resource_error_to_str(error)); + smartthings_payload_destroy(resp_payload); + 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"); + + return; +} + +static void _resource_connection_status_cb( + smartthings_resource_h handle, + smartthings_resource_connection_status_e status, void *user_data) +{ + app_data *ad = user_data; + + _D("status=[%d]", status); + + ret_if(!ad); + + if (status == SMARTTHINGS_RESOURCE_CONNECTION_STATUS_CONNECTED) { + int error = SMARTTHINGS_RESOURCE_ERROR_NONE; + 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; + + 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; + + 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) +{ + app_data *ad = user_data; + _D("status: [%d]", status); + ad->status = 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 = "smart-ruler-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, user_data); + 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; + } + + _I("Easysetup is starting now"); + 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 err = 0; + smartthings_h st_handle = NULL; + + retv_if(!ad, -1); + + if (ad->st_master_h) { + _I("Already initialized!"); + return 0; + } + + err = smartthings_initialize(&st_handle, _things_connection_status_cb, ad); + if (err) { + _E("smartthings_initialize() is failed, [%s]", + __master_error_to_str(err)); + 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 /* USE_ST_SDK */ + static void service_app_control(app_control_h app_control, void *user_data) { app_data *ad = user_data; @@ -75,10 +492,16 @@ static bool service_app_create(void *data) { app_data *ad = data; - ad->lidar_data = sensor_data_new(SENSOR_DATA_TYPE_UINT); - if (!ad->lidar_data) +#ifdef USE_ST_SDK + if (_init_master(ad)) return false; + if (_init_resource(ad)) { + _fini_master(ad); + return false; + } +#endif + return true; } @@ -86,12 +509,15 @@ static void service_app_terminate(void *data) { app_data *ad = data; +#ifdef USE_ST_SDK + _fini_resource(ad); + _fini_master(ad); +#endif + if (ad->getter_timer) ecore_timer_del(ad->getter_timer); resource_close_all(); - - sensor_data_free(ad->lidar_data); } int main(int argc, char* argv[]) @@ -101,7 +527,12 @@ int main(int argc, char* argv[]) service_app_lifecycle_callback_s event_callback; ad.getter_timer = NULL; - ad.lidar_data = NULL; + ad.lidar_data = 0; +#ifdef USE_ST_SDK + ad.st_master_h = NULL; + ad.st_res_h = NULL; + ad.status = 0; +#endif event_callback.create = service_app_create; event_callback.terminate = service_app_terminate; diff --git a/src/resource/resource_led.c b/src/resource/resource_led.c index 8f8768b..742d72c 100644 --- a/src/resource/resource_led.c +++ b/src/resource/resource_led.c @@ -48,7 +48,7 @@ int resource_write_led(int pin_num, int write_value) ret = peripheral_gpio_write(resource_get_info(pin_num)->sensor_h, write_value); retv_if(ret < 0, -1); - _I("LED Value : %s", write_value ? "ON":"OFF"); + //_I("LED Value : %s", write_value ? "ON":"OFF"); return 0; } diff --git a/src/sensor-data.c b/src/sensor-data.c deleted file mode 100644 index 47d487f..0000000 --- a/src/sensor-data.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * 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. - */ - -#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/tizen-manifest.xml b/tizen-manifest.xml index 0f05e53..4e70523 100644 --- a/tizen-manifest.xml +++ b/tizen-manifest.xml @@ -4,8 +4,18 @@ <service-application appid="org.example.smart-ruler" exec="smart-ruler" multiple="false" nodisplay="true" taskmanage="false" type="capp"> <label>smart-ruler</label> <icon>smart-ruler.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/appmanager.launch</privilege> + <privilege>http://tizen.org/privilege/softap</privilege> + <privilege>http://tizen.org/privilege/internet</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> |