Add set functions
authorboyeon-son <bson1012@gmail.com>
Thu, 22 Nov 2018 06:20:50 +0000 (15:20 +0900)
committerboyeon-son <bson1012@gmail.com>
Thu, 22 Nov 2018 06:20:50 +0000 (15:20 +0900)
Change-Id: Ia7527310bc61a0517f01d35a98724294bb22cc64

.cproject
.project
src/controller.c

index 16fc66e..c5d1196 100644 (file)
--- a/.cproject
+++ b/.cproject
                                                                <option id="gnu.cpp.compiler.option.optimization.level.927516291" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
                                                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1484656362" 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.1001060053" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
-                                                               <option id="gnu.cpp.compiler.option.dialect.std.1328601870" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="false" valueType="enumerated"/>
-                                                               <option id="sbi.gnu.cpp.compiler.option.752658663" superClass="sbi.gnu.cpp.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                               <option id="gnu.cpp.compiler.option.dialect.std.1328601870" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="false" valueType="enumerated"/>
+                                                               <option id="sbi.gnu.cpp.compiler.option.752658663" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
                                                                        <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/>
                                                                </option>
-                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1317601758" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1317601758" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
                                                                        <listOptionValue builtIn="false" value="osp"/>
                                                                        <listOptionValue builtIn="false" value="Native_API"/>
                                                                </option>
-                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1381199239" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1381199239" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                </option>
-                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1068841642" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                               <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1068841642" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" 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=&quot;${SBI_SYSROOT}&quot;"/>
                                                                        <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
-                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1481967674" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                               <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.1481967674" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
                                                                        <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
                                                                        <listOptionValue builtIn="false" value="_DEBUG"/>
                                                                </option>
-                                                               <option id="gnu.cpp.compiler.option.include.paths.194754833" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option id="gnu.cpp.compiler.option.include.paths.194754833" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1893389969" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
                                                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1280615976" 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.440810614" 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.25875162" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
-                                                               <option id="gnu.c.compiler.option.dialect.std.1231802084" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="false" valueType="enumerated"/>
-                                                               <option id="sbi.gnu.c.compiler.option.1129862963" superClass="sbi.gnu.c.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
+                                                               <option id="gnu.c.compiler.option.dialect.std.1231802084" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="false" valueType="enumerated"/>
+                                                               <option id="sbi.gnu.c.compiler.option.1129862963" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" useByScannerDiscovery="false" valueType="userObjs">
                                                                        <listOptionValue builtIn="false" value="iot-headless-5.0-device.core_llvm40.armel"/>
                                                                </option>
-                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1715324858" superClass="sbi.gnu.c.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks.core.1715324858" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" useByScannerDiscovery="false" valueType="userObjs">
                                                                        <listOptionValue builtIn="false" value="osp"/>
                                                                        <listOptionValue builtIn="false" value="Native_API"/>
                                                                </option>
-                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1993317799" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1993317799" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
                                                                </option>
-                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.2122567201" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" valueType="stringList">
-                                                                       <listOptionValue builtIn="false" value="$(TC_COMPILER_MISC)"/>
-                                                                       <listOptionValue builtIn="false" value="$(RS_COMPILER_MISC)"/>
+                                                               <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.2122567201" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" useByScannerDiscovery="false" 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=&quot;$(SBI_SYSROOT)&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
                                                                        <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
-                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1953195779" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                               <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1953195779" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
                                                                        <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
                                                                        <listOptionValue builtIn="false" value="_DEBUG"/>
                                                                </option>
-                                                               <option id="gnu.c.compiler.option.include.paths.1327550699" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option id="gnu.c.compiler.option.include.paths.1327550699" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1767616947" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                                <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.726351699" 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.995372830" 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.757485109" 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.1283583507" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" useByScannerDiscovery="false" valueType="stringList">
-                                                                       <listOptionValue builtIn="false" value="$(TC_LINKER_MISC)"/>
-                                                                       <listOptionValue builtIn="false" value="$(RS_LINKER_MISC)"/>
+                                                               <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1283583507" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" useByScannerDiscovery="false" valueType="stringList">
+                                                                       <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+                                                                       <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
                                                                        <listOptionValue builtIn="false" value="-pie -lpthread "/>
-                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;$(SBI_SYSROOT)&quot;"/>
-                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;$(PROJ_PATH)/.exportMap&quot;"/>
-                                                                       <listOptionValue builtIn="false" value="-L&quot;$(SBI_SYSROOT)/usr/lib&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-Xlinker --version-script=&quot;${PROJ_PATH}/.exportMap&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
                                                                        <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
                                                                </option>
-                                                               <option id="gnu.cpp.link.option.paths.1531158283" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
+                                                               <option id="gnu.cpp.link.option.paths.1531158283" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
                                                                </option>
-                                                               <option id="gnu.cpp.link.option.libs.1983413821" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
+                                                               <option id="gnu.cpp.link.option.libs.1983413821" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
                                                                        <listOptionValue builtIn="false" value="st_thing_resource_api"/>
                                                                        <listOptionValue builtIn="false" value="st_thing_master_api"/>
                                                                </option>
index 3d6515d..5e5b0cf 100644 (file)
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-       <name>motion</name>
+       <name>motion-cp</name>
        <comment></comment>
        <projects>
        </projects>
index 683294c..90a54d0 100644 (file)
 
 #define LED_ON "on"
 #define LED_OFF "off"
+#define SENSOR_LED_INIT "off"
+#define SENSOR_MOTION_CH (46)
+#define SENSOR_LED_CH (130)
+#define SENSOR_GATHER_INTERVAL (50) //50ms
 
 #define USE_ST_SDK
 
 
 #define SENSOR_MOTION_URI "/capability/motionSensor/main/0"
 #define SENSOR_MOTION_KEY "value"
-#define SENSOR_MOTION_CH 46
 #define SENSOR_LED_URI "/capability/switch/main/0"
 #define SENSOR_LED_KEY "power"
-#define SENSOR_LED_INIT "off"
-#define SENSOR_LED_CH 130
-#define SENSOR_GATHER_INTERVAL (50) //50ms
 
 #endif /* USE_ST_SDK */
 
@@ -106,6 +106,26 @@ __resource_error_to_str(smartthings_resource_error_e error)
        return err_str;
 }
 
+static int __change_led_data(void *data, char *state) {
+       int ret = 0;
+       app_data *ad = data;
+
+       retv_if(!ad, -1);
+       retv_if(!ad->led_data, -1);
+
+       sensor_data_set_string(ad->led_data, state, strlen(state));
+
+       if (0 == strcmp(state, LED_ON)) {
+               ret = resource_write_led(SENSOR_LED_CH, 1);
+       } else {
+               ret = resource_write_led(SENSOR_LED_CH, 0);
+       }
+
+       retv_if(ret != 0, -1);
+
+       return 0;
+}
+
 static bool
 handle_get_motion(smartthings_payload_h resp_payload, void *user_data)
 {
@@ -114,8 +134,10 @@ handle_get_motion(smartthings_payload_h resp_payload, void *user_data)
 
        retv_if(!ad, false);
 
+       _D("Received a GET request for MOTION");
+
        sensor_data_get_bool(ad->motion_data, &value);
-       smartthings_payload_set_bool(resp_payload, SENSOR_MOTION_KEY, value);
+       smartthings_payload_set_bool(resp_payload, SENSOR_MOTION_KEY, ad->motion_data);
 
        _D("Value : %d", value);
 
@@ -127,43 +149,52 @@ handle_get_led(smartthings_payload_h resp_payload, void *user_data)
 {
        app_data *ad = user_data;
        const char *str = NULL;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
 
        retv_if(!ad, false);
 
-       sensor_data_get_string(ad->led_data, &str);
+       _D("Received a GET request for LED");
 
-       if (!str) {
-               str = SENSOR_LED_INIT;
-       }
+       error = smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, ad->led_data);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+               _E("smartthings_resource_notify() failed, [%s]",
+                       __resource_error_to_str(error));
 
-       smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, str);
 
        _D("Power : %s", str);
 
-//     free(str);
-
        return true;
 }
 
 static bool
-handle_set_led(smartthings_payload_h resp_payload, void *user_data)
+handle_set_led(smartthings_payload_h payload, smartthings_payload_h resp_payload, void *user_data)
 {
        app_data *ad = user_data;
-       const char *str = NULL;
+       char *str = NULL;
        int ret = 0;
+       int error = SMARTTHINGS_RESOURCE_ERROR_NONE;
 
        retv_if(!ad, false);
-       _D("set [%s:%s] == %s", SENSOR_LED_URI, SENSOR_LED_KEY, str);
 
-       smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, str);
+    _D("Received a SET request");
+
+    smartthings_payload_get_string(payload, SENSOR_LED_KEY, &str);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+               _E("smartthings_resource_notify() failed, [%s]",
+                       __resource_error_to_str(error));
 
-//     ret = __change_led_data(ad, strdup(str));
+       ret = __change_led_data(ad, strdup(str));
 
        retv_if(ret != 0, false);
 
-//     free(str);
+       free(str);
 
-       return true;
+       error = smartthings_payload_set_string(resp_payload, SENSOR_LED_KEY, ad->led_data);
+       if (error != SMARTTHINGS_RESOURCE_ERROR_NONE)
+               _E("smartthings_resource_notify() failed, [%s]",
+                       __resource_error_to_str(error));
+
+    return true;
 }
 
 static void
@@ -192,7 +223,7 @@ _request_cb(smartthings_resource_h handle, int req_id,
                        _E("No matching Resource uri to get");
        } else if (req_type == SMARTTHINGS_RESOURCE_REQUEST_SET) {
                if (0 == g_strcmp0(uri, SENSOR_LED_URI))
-                       result = handle_set_led(resp_payload, user_data);
+                       result = handle_set_led(payload, resp_payload, user_data);
                else
                        _E("No matching Resource uri to get");
        } else {
@@ -602,35 +633,10 @@ static gboolean __change_motion_sensor_data(gpointer user_data)
                // Notify observers of the Motion sensor resource
                st_thing_notify_resource(ad, SENSOR_MOTION_URI, SENSOR_MOTION_KEY, ad->motion_data);
 #endif
-
-       return TRUE;
+               return FALSE;
+//     return TRUE;
 }
 
-//static int __change_led_data(void *data, char *state) {
-//     int ret = 0;
-//     app_data *ad = data;
-//
-//     retv_if(!ad, -1);
-//     retv_if(!ad->led_data, -1);
-//
-//     sensor_data_set_string(ad->led_data, state, strlen(state));
-//
-//     if (0 == strcmp(state, LED_ON)) {
-//             ret = resource_write_led(SENSOR_LED_CH, 1);
-//     } else {
-//             ret = resource_write_led(SENSOR_LED_CH, 0);
-//     }
-//
-//     retv_if(ret != 0, -1);
-//
-//#ifdef USE_ST_SDK
-//     // Notify observers of the LED resource
-//             st_thing_notify_resource(ad, SENSOR_LED_URI, SENSOR_LED_KEY, ad->motion_data);
-//#endif
-//
-//     return 0;
-//}
-
 static void gathering_stop(void *data)
 {
        app_data *ad = data;
@@ -646,7 +652,9 @@ static void gathering_start(void *data)
 {
        app_data *ad = data;
        ret_if(!ad);
+
        ad->getter_motion = g_timeout_add(SENSOR_GATHER_INTERVAL, __change_motion_sensor_data, ad);
+
        if (!ad->getter_motion)
                _E("Failed to add getter_motion");
 }
@@ -698,7 +706,7 @@ static void service_app_terminate(void *user_data)
 #endif
 
        // Turn off LED light with __set_led()
-//     __change_led_data(ad, LED_OFF);
+       __change_led_data(ad, LED_OFF);
 
        // Free sensor Motion & LED data
        sensor_data_free(ad->motion_data);