2 * Copyright (c) 2019 G.camp,
4 * Contact: Jin Seog Bang <seog814@gmail.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include <service_app.h>
29 #include "sensor-data.h"
32 #define JSON_PATH "device_def.json"
34 #define SENSOR_URI_ILLUMINANCE "/capability/illuminanceMeasurement/main/0"
35 #define SENSOR_KEY_ILLUMINANCE "illuminance"
36 #define SENSOR_KEY_RANGE "range"
38 #define I2C_BUS_NUMBER (1)
39 #define SENSOR_GATHER_INTERVAL (1.0f)
44 typedef struct app_data_s {
45 Ecore_Timer *getter_illuminance;
46 sensor_data *illuminance_data;
50 static app_data *g_ad = NULL;
52 static inline int __get_lidar(void *data, unsigned int *illuminance_value)
55 unsigned int delay_usec = 20000; // 20mS delay
59 retv_if(!ad->illuminance_data, -1);
62 ret = resource_initial_LIDAR_sensor(I2C_BUS_NUMBER);
63 retv_if(ret != 0, -1);
64 ret = resource_two_read_set_LIDAR_sensor(I2C_BUS_NUMBER);
65 retv_if(ret != 0, -1);
69 ret = resource_read_LIDAR_sensor(I2C_BUS_NUMBER, illuminance_value);
70 retv_if(ret != 0, -1);
72 sensor_data_set_uint(ad->illuminance_data, *illuminance_value);
73 _D2("Distance value : %u", *illuminance_value);
78 static Eina_Bool __illuminance_to_lidar(void *data)
81 unsigned int illuminance_value = 0;
84 resource_write_led(26, value); //debug led on
86 _E("failed to get app_data");
90 if (!ad->illuminance_data) {
91 _E("failed to get illuminance_data");
95 ret = __get_lidar(ad, &illuminance_value);
96 retv_if(ret != 0, ECORE_CALLBACK_RENEW);
99 return ECORE_CALLBACK_RENEW;
102 void gathering_stop(void *data)
108 if (ad->getter_illuminance)
109 ecore_timer_del(ad->getter_illuminance);
112 void gathering_start(void *data)
120 ad->getter_illuminance = ecore_timer_add(SENSOR_GATHER_INTERVAL, __illuminance_to_lidar, ad);
121 if (!ad->getter_illuminance)
122 _E("Failed to add getter_illuminance");
125 static bool service_app_create(void *user_data)
127 app_data *ad = (app_data *)user_data;
129 ad->illuminance_data = sensor_data_new(SENSOR_DATA_TYPE_UINT);
130 if (!ad->illuminance_data)
133 resource_write_led(5, 1);
138 static void service_app_control(app_control_h app_control, void *user_data)
140 gathering_start(user_data);
143 static void service_app_terminate(void *user_data)
145 app_data *ad = (app_data *)user_data;
147 resource_write_led(5, 0);
149 resource_close_all();
153 sensor_data_free(ad->illuminance_data);
157 int main(int argc, char *argv[])
160 service_app_lifecycle_callback_s event_callback;
162 ad = calloc(1, sizeof(app_data));
167 event_callback.create = service_app_create;
168 event_callback.terminate = service_app_terminate;
169 event_callback.app_control = service_app_control;
171 return service_app_main(argc, argv, &event_callback, ad);