Remove the unused file and code
[apps/native/smart-ruler.git] / src / lidar-sensor.c
1 /*
2  * Copyright (c) 2019 G.camp,
3  *
4  * Contact: Jin Seog Bang <seog814@gmail.com>
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  */
18
19 #include <tizen.h>
20 #include <service_app.h>
21 #include <stdio.h>
22 #include <string.h>
23 #include <stdlib.h>
24 #include <pthread.h>
25 #include <unistd.h>
26 #include <Ecore.h>
27
28 #include "log.h"
29 #include "sensor-data.h"
30 #include "resource.h"
31
32 #define JSON_PATH "device_def.json"
33
34 #define SENSOR_URI_ILLUMINANCE "/capability/illuminanceMeasurement/main/0"
35 #define SENSOR_KEY_ILLUMINANCE "illuminance"
36 #define SENSOR_KEY_RANGE "range"
37
38 #define I2C_BUS_NUMBER (1)
39 #define SENSOR_GATHER_INTERVAL (1.0f)
40
41
42 // #define USE_ST_SDK
43
44 typedef struct app_data_s {
45         Ecore_Timer *getter_illuminance;
46         sensor_data *illuminance_data;
47
48 } app_data;
49
50 static app_data *g_ad = NULL;
51
52 static inline int __get_lidar(void *data, unsigned int *illuminance_value)
53 {
54         int ret = 0;
55         unsigned int delay_usec = 20000; // 20mS delay
56         app_data *ad = data;
57
58         retv_if(!ad, -1);
59         retv_if(!ad->illuminance_data, -1);
60
61
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);
66
67         usleep(delay_usec);
68
69         ret = resource_read_LIDAR_sensor(I2C_BUS_NUMBER, illuminance_value);
70         retv_if(ret != 0, -1);
71
72         sensor_data_set_uint(ad->illuminance_data, *illuminance_value);
73         _D2("Distance value : %u", *illuminance_value);
74
75         return 0;
76 }
77
78 static Eina_Bool __illuminance_to_lidar(void *data)
79 {
80         int ret = 0;
81         unsigned int illuminance_value = 0;
82         uint32_t value = 1;
83         app_data *ad = data;
84         resource_write_led(26, value); //debug led on
85         if (!ad) {
86                 _E("failed to get app_data");
87                 service_app_exit();
88         }
89 # if 1
90         if (!ad->illuminance_data) {
91                 _E("failed to get illuminance_data");
92                 service_app_exit();
93         }
94
95         ret = __get_lidar(ad, &illuminance_value);
96         retv_if(ret != 0, ECORE_CALLBACK_RENEW);
97 #endif 
98         
99         return ECORE_CALLBACK_RENEW;
100 }
101
102 void gathering_stop(void *data)
103 {
104         app_data *ad = data;
105
106         ret_if(!ad);
107
108         if (ad->getter_illuminance)
109                 ecore_timer_del(ad->getter_illuminance);
110 }
111
112 void gathering_start(void *data)
113 {
114         app_data *ad = data;
115
116         ret_if(!ad);
117
118         gathering_stop(ad);
119
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");
123 }
124
125 static bool service_app_create(void *user_data)
126 {
127         app_data *ad = (app_data *)user_data;
128
129         ad->illuminance_data = sensor_data_new(SENSOR_DATA_TYPE_UINT);
130         if (!ad->illuminance_data)
131                 return false;
132
133         resource_write_led(5, 1);
134
135         return true;
136 }
137
138 static void service_app_control(app_control_h app_control, void *user_data)
139 {
140         gathering_start(user_data);
141 }
142
143 static void service_app_terminate(void *user_data)
144 {
145         app_data *ad = (app_data *)user_data;
146
147         resource_write_led(5, 0);
148
149         resource_close_all();
150
151         gathering_stop(ad);
152
153         sensor_data_free(ad->illuminance_data);
154         free(ad);
155 }
156
157 int main(int argc, char *argv[])
158 {
159         app_data *ad = NULL;
160         service_app_lifecycle_callback_s event_callback;
161
162         ad = calloc(1, sizeof(app_data));
163         retv_if(!ad, -1);
164
165         g_ad = ad;
166
167         event_callback.create = service_app_create;
168         event_callback.terminate = service_app_terminate;
169         event_callback.app_control = service_app_control;
170
171         return service_app_main(argc, argv, &event_callback, ad);
172 }
173