Add Camera Module
[apps/native/position-finder-server.git] / src / controller.c
index 5b391ce..7b35e9f 100644 (file)
 #include "resource.h"
 #include "connectivity.h"
 #include "controller.h"
+#include "controller_util.h"
+#include "webutil.h"
 
 #define CONNECTIVITY_KEY "opened"
 #define SENSORING_TIME_INTERVAL 5.0f
+#define CAMERA_TIME_INTERVAL 2
+#define TEST_CAMERA_SAVE 0
+#define CAMERA_ENABLED 0
 
 typedef struct app_data_s {
        Ecore_Timer *getter_timer;
        connectivity_resource_s *resource_info;
 } app_data;
 
+static void __resource_camera_capture_completed_cb(const void *image, unsigned int size, void *user_data)
+{
+       /* TODO */
+       const char *path = NULL;
+       const char *url = NULL;
+
+       controller_util_get_path(&path);
+
+       controller_util_get_image_address(&url);
+
+       web_util_noti_post_image_data(url, path, image, size);
+
+#if TEST_CAMERA_SAVE
+       FILE *fp = NULL;
+       char *data_path = NULL;
+       char file[256];
+
+       data_path = app_get_data_path();
+
+       snprintf(file, sizeof(file), "%sjjoggoba.jpg", data_path);
+       free(data_path);
+       _D("File : %s", file);
+
+       fp = fopen(file, "w");
+       if (!fp) {
+               _E("Failed to open file: %s", file);
+               return;
+       }
+
+       if (fwrite(image, size, 1, fp) != 1) {
+               _E("Failed to write image to file");
+               return;
+       }
+
+       fclose(fp);
+#endif
+}
+
 static Eina_Bool control_sensors_cb(void *data)
 {
        app_data *ad = data;
+       int value = 1;
+       int ret = 0;
+#if CAMERA_ENABLED
+       static unsigned int count = 0;
+
+       if (count % CAMERA_TIME_INTERVAL == 0) {
+               ret = resource_capture_camera(__resource_camera_capture_completed_cb, NULL);
+               if (ret < 0)
+                       _E("Failed to capture camera");
+       }
+
+       count++;
+#endif
 
-       if (connectivity_notify_bool(ad->resource_info, CONNECTIVITY_KEY, true) == -1)
+       /* This is example, get value from sensors first */
+       if (connectivity_notify_int(ad->resource_info, "Motion", value) == -1)
                _E("Cannot notify message");
 
        return ECORE_CALLBACK_RENEW;
@@ -52,6 +109,7 @@ static bool service_app_create(void *data)
 {
        app_data *ad = data;
        int ret = -1;
+       const char *path = NULL;
 
        /**
         * No modification required!!!
@@ -62,7 +120,15 @@ static bool service_app_create(void *data)
        /**
         * Create a connectivity resource and registers the resource in server.
         */
-       ret = connectivity_set_resource(NULL, "org.tizen.door", &ad->resource_info);
+       connectivity_set_protocol(CONNECTIVITY_PROTOCOL_HTTP);
+
+       controller_util_get_path(&path);
+       if (path == NULL) {
+               _E("Failed to get path");
+               return false;
+       }
+
+       ret = connectivity_set_resource(path, "org.tizen.door", &ad->resource_info);
        if (ret == -1) _E("Cannot broadcast resource");
 
        /**
@@ -75,16 +141,16 @@ static bool service_app_create(void *data)
                return false;
        }
 
-    return true;
+       return true;
 }
 
 static void service_app_terminate(void *data)
 {
        app_data *ad = (app_data *)data;
 
-       if (ad->getter_timer) {
+       if (ad->getter_timer)
                ecore_timer_del(ad->getter_timer);
-       }
+
 
        /**
         * Releases the resource about connectivity.
@@ -102,7 +168,7 @@ static void service_app_terminate(void *data)
 
 static void service_app_control(app_control_h app_control, void *data)
 {
-    // Todo: add your code here.
+       // Todo: add your code here.
 }
 
 static void service_app_lang_changed(app_event_info_h event_info, void *user_data)