X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontroller.c;h=59120a98daebbf3e821d5d802cab07786b960fc3;hb=9f96d06386c769c3ff52d28b0e61974be6136d2b;hp=69a040e52e2ded69bad1f1a75a6b0954633c78f8;hpb=fe280c315017adbb5994ff99971dce680205d1f3;p=apps%2Fnative%2Fposition-finder-server.git diff --git a/src/controller.c b/src/controller.c index 69a040e..59120a9 100644 --- a/src/controller.c +++ b/src/controller.c @@ -1,72 +1,80 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Contact: Jin Yoon * Geunsun Lee * Eunyoung Lee * Junkyu Han * - * Licensed under the Apache License, Version 2.0 (the "License"); + * Licensed under the Flora License, Version 1.1 (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 + * http://floralicense.org/license/ * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, + * 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 -#include -#include #include #include +#include +#include +#include #include "log.h" -#include "controller.h" #include "resource.h" +#include "connectivity.h" +#include "controller.h" +#include "controller_util.h" +#include "webutil.h" -#define I2C_BUS_1 0x1 -#define GPIO_NOT_USED -1 -#define GPIO_ULTRASONIC_TRIG_NUM_1 20 -#define GPIO_ULTRASONIC_ECHO_NUM_1 21 -#define GPIO_INFRARED_MOTION_NUM_1 4 -#define I2C_ILLUMINANCE_FIRST_PIN_1 3 + +/** + * DO NOT EDIT: please don't edit the time interval. + */ +#define SENSORING_TIME_INTERVAL 2.0f + +/** + * TODO: You have to use the pin numbers below. + * You can change the pin numbers freely. + */ +#define TRIG_PIN_NUMBER 20 +#define ECHO_PIN_NUMBER 21 typedef struct app_data_s { - Ecore_Timer *getter_timer[PIN_MAX]; + Ecore_Timer *getter_timer; + connectivity_resource_s *resource_info; } app_data; -static Eina_Bool _infrared_motion_getter_timer(void *data) +static void _ultrasonic_sensor_read_cb(double value, void *data) { - int value = 0; + app_data *ad = data; + + /** + * TODO: Send the value of the ultrasonic sensor to the Client. + */ - retv_if(resource_read_infrared_motion_sensor(GPIO_INFRARED_MOTION_NUM_1, &value) == -1, ECORE_CALLBACK_CANCEL); - _I("Infrared Motion Value is [%d]", value); - return ECORE_CALLBACK_RENEW; -} -static Eina_Bool _ultrasonic_getter_timer(void *data) -{ - double value = 0; - retv_if(resource_read_ultrasonic_sensor(GPIO_ULTRASONIC_TRIG_NUM_1, GPIO_ULTRASONIC_ECHO_NUM_1, &value) == -1, ECORE_CALLBACK_CANCEL); - _I("Ultra Sonic Distance is [%d cm]", value); - return ECORE_CALLBACK_RENEW; } -static Eina_Bool _illuminance_getter_timer(void *data) +static Eina_Bool _control_sensors_cb(void *data) { - int value = 0; + app_data *ad = data; + + /** + * TODO: Prepare to read the value of the ultrasonic sensor. + */ + + + - retv_if(resource_read_illuminance_sensor(I2C_BUS_1, &value) == -1, ECORE_CALLBACK_CANCEL); - _I("Ultra Sonic Distance is [%d lux]", value); return ECORE_CALLBACK_RENEW; } @@ -75,48 +83,57 @@ static bool service_app_create(void *data) { app_data *ad = data; - /* One Pin Sensor */ - ad->getter_timer[GPIO_INFRARED_MOTION_NUM_1] = ecore_timer_add(3.0, _infrared_motion_getter_timer, ad); - if (!ad->getter_timer[GPIO_INFRARED_MOTION_NUM_1]) { - _D("Failed to add infrared motion getter timer"); - return false; - } + /** + * DO NOT EDIT: please don't edit the function below. + * Access only when modifying internal functions. + */ + controller_init_internal_functions(); + + /** + * TODO: Creates a connectivity resource and registers the resource in server. + */ + + + - /* Two Pins Sensor */ - ad->getter_timer[GPIO_ULTRASONIC_TRIG_NUM_1] = ecore_timer_add(1.0, _ultrasonic_getter_timer, ad); - if (!ad->getter_timer[GPIO_ULTRASONIC_TRIG_NUM_1]) { - _D("Failed to add ultra sonic getter timer"); - return false; - } - /* I2C Protocol Sensor */ - ad->getter_timer[I2C_ILLUMINANCE_FIRST_PIN_1] = ecore_timer_add(1.0, _illuminance_getter_timer, ad); - if (!ad->getter_timer[I2C_ILLUMINANCE_FIRST_PIN_1]) { - _D("Failed to add ultra sonic getter timer"); + /** + * Creates a timer to call the given function in the given period of time. + * In the control_sensors_cb(), each sensor reads the measured value or writes a specific value to the sensor. + */ + ad->getter_timer = ecore_timer_add(SENSORING_TIME_INTERVAL, _control_sensors_cb, ad); + if (!ad->getter_timer) { + _E("Failed to add a timer"); return false; } - return true; + return true; } static void service_app_terminate(void *data) { app_data *ad = (app_data *)data; - for (int i = 0; i < PIN_MAX; i++) { - if (ad->getter_timer[i]) { - ecore_timer_del(ad->getter_timer[i]); - } - } - resource_close_infrared_motion_sensor(GPIO_INFRARED_MOTION_NUM_1); - resource_close_ultrasonic_sensor(GPIO_ULTRASONIC_TRIG_NUM_1, GPIO_ULTRASONIC_ECHO_NUM_1); - resource_close_illuminance_sensor(); + if (ad->getter_timer) + ecore_timer_del(ad->getter_timer); + + /** + * Releases the resource about connectivity. + */ + connectivity_unset_resource(ad->resource_info); + + /** + * DO NOT EDIT: please don't edit the function below. + * Access only when modifying internal functions. + */ + controller_fini_internal_functions(); + free(ad); } static void service_app_control(app_control_h app_control, void *data) { - // Todo: add your code here. + /*APP_CONTROL*/ } static void service_app_lang_changed(app_event_info_h event_info, void *user_data) @@ -147,6 +164,7 @@ int main(int argc, char* argv[]) app_event_handler_h handlers[5] = {NULL, }; ad = calloc(1, sizeof(app_data)); + retv_if(!ad, -1); event_callback.create = service_app_create; event_callback.terminate = service_app_terminate;