summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cproject50
-rw-r--r--.project2
-rw-r--r--src/controller.c104
3 files changed, 82 insertions, 74 deletions
diff --git a/.cproject b/.cproject
index 16fc66e..c5d1196 100644
--- a/.cproject
+++ b/.cproject
@@ -26,15 +26,15 @@
<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;"/>
@@ -62,19 +62,19 @@
<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"/>
@@ -83,15 +83,15 @@
<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;"/>
@@ -119,19 +119,19 @@
<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"/>
@@ -141,19 +141,19 @@
<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>
diff --git a/.project b/.project
index 3d6515d..5e5b0cf 100644
--- 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>
diff --git a/src/controller.c b/src/controller.c
index 683294c..90a54d0 100644
--- a/src/controller.c
+++ b/src/controller.c
@@ -28,6 +28,10 @@
#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
@@ -43,12 +47,8 @@
#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);