sensord: [2/4] add the refactored HAL interface
[platform/core/system/sensord.git] / src / shared / sensor_logs.h
1 /*
2  * libsensord-share
3  *
4  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
20 #ifndef _SENSOR_LOGS_H_
21 #define _SENSOR_LOGS_H_
22
23 #ifndef __cplusplus
24 #include <stdbool.h>
25 #endif /* !__cplusplus */
26
27 #ifdef __cplusplus
28 extern "C"
29 {
30 #endif
31
32 #include <sys/types.h>
33 #include <unistd.h>
34
35 #if !defined(PATH_MAX)
36 #define PATH_MAX 256
37 #endif
38
39 #if !defined(NAME_MAX)
40 #define NAME_MAX 256
41 #endif
42
43
44 #define EVENT_TYPE_SHIFT 16
45 #define SENSOR_TYPE_SHIFT 32
46
47 enum sf_log_type {
48         SF_LOG_PRINT_FILE               = 1,
49         SF_LOG_SYSLOG                   = 2,
50         SF_LOG_DLOG                     = 3,
51 };
52
53 enum sf_priority_type {
54         SF_LOG_ERR                      = 1,
55         SF_LOG_DBG                      = 2,
56         SF_LOG_INFO                     = 3,
57         SF_LOG_WARN                     = 4,
58 };
59
60 void sf_log(int type , int priority , const char *tag , const char *fmt , ...);
61
62 #define MICROSECONDS(tv)        ((tv.tv_sec * 1000000ll) + tv.tv_usec)
63
64 #ifndef __MODULE__
65 #include <string.h>
66 #define __MODULE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
67 #endif
68
69 //for new log system - dlog
70 #ifdef LOG_TAG
71         #undef LOG_TAG
72 #endif
73 #define LOG_TAG "SENSOR"
74
75 #if defined(_DEBUG) || defined(USE_FILE_DEBUG)
76
77 #define DbgPrint(fmt, arg...)   do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG , " [SF_MSG_PRT][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
78
79 #endif
80
81 #if defined(USE_SYSLOG_DEBUG)
82
83 #define ERR(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
84 #define WARN(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
85 #define INFO(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
86 #define DBG(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
87
88 #define _E(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
89 #define _W(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
90 #define _I(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
91 #define _D(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
92 #define _T(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
93
94
95 #elif defined(_DEBUG) || defined(USE_DLOG_DEBUG)
96
97 #define ERR(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
98 #define WARN(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
99 #define INFO(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
100 #define DBG(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
101
102 #define _E(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
103 #define _W(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
104 #define _I(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
105 #define _D(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
106 #define _T(fmt, arg...) do { sf_log(SF_LOG_SYSLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
107
108 #elif defined(USE_FILE_DEBUG)
109
110 #define ERR(fmt, arg...)        do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG, "[SF_MSG_ERR][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
111 #define WARN(fmt, arg...)       do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG, "[SF_MSG_WARN][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
112 #define DBG(fmt, arg...)        do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG, "[SF_MSG_DBG][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
113 #define INFO(fmt, arg...)       do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG, "[SF_MSG_INFO][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
114
115 #define _E(fmt, arg...) do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG ,"[SF_MSG_ERR][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
116 #define _W(fmt, arg...) do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG ,"[SF_MSG_WARN][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
117 #define _I(fmt, arg...) do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG ,"[SF_MSG_INFO][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
118 #define _D(fmt, arg...) do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG ,"[SF_MSG_DBG][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
119 #define _T(fmt, arg...) do { sf_log(SF_LOG_PRINT_FILE, 0, LOG_TAG ,"[SF_MSG_TEMP][%s:%d] " fmt"\n",__MODULE__, __LINE__, ##arg); } while(0)
120
121 #elif defined(USE_DLOG_LOG)
122
123 #define ERR(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
124 #define WARN(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
125 #define INFO(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
126
127 #define DBG(...) do{} while(0)
128 #define DbgPrint(...) do{} while(0)
129
130
131 #define _E(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
132 #define _W(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_WARN, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
133 #define _I(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_INFO, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
134 #define _D(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_DBG, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
135 #define _T(...)
136
137 #else
138 #define ERR(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
139 #define WARN(...) do{} while(0)
140 #define DbgPrint(...) do{} while(0)
141 #define DBG(...) do{} while(0)
142 #define INFO(...) do{} while(0)
143
144 #define _E(fmt, arg...) do { sf_log(SF_LOG_DLOG, SF_LOG_ERR, LOG_TAG, "%s:%s(%d)> " fmt, __MODULE__, __func__, __LINE__, ##arg); } while(0)
145 #define _W(...) do{} while(0)
146 #define _I(...) do{} while(0)
147 #define _D(...) do{} while(0)
148 #define _T(...) do{} while(0)
149
150 #endif
151
152
153 #if defined(_DEBUG)
154 #  define warn_if(expr, fmt, arg...) do { \
155                 if(expr) { \
156                         DBG("(%s) -> " fmt, #expr, ##arg); \
157                 } \
158         } while (0)
159 #  define ret_if(expr) do { \
160                 if(expr) { \
161                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
162                         return; \
163                 } \
164         } while (0)
165 #  define retv_if(expr, val) do { \
166                 if(expr) { \
167                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
168                         return (val); \
169                 } \
170         } while (0)
171 #  define retm_if(expr, fmt, arg...) do { \
172                 if(expr) { \
173                         ERR(fmt, ##arg); \
174                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
175                         return; \
176                 } \
177         } while (0)
178 #  define retvm_if(expr, val, fmt, arg...) do { \
179                 if(expr) { \
180                         ERR(fmt, ##arg); \
181                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
182                         return (val); \
183                 } \
184         } while (0)
185
186 #else
187 #  define warn_if(expr, fmt, arg...) do { \
188                 if(expr) { \
189                         ERR(fmt, ##arg); \
190                 } \
191         } while (0)
192 #  define ret_if(expr) do { \
193                 if(expr) { \
194                         return; \
195                 } \
196         } while (0)
197 #  define retv_if(expr, val) do { \
198                 if(expr) { \
199                         return (val); \
200                 } \
201         } while (0)
202 #  define retm_if(expr, fmt, arg...) do { \
203                 if(expr) { \
204                         ERR(fmt, ##arg); \
205                         return; \
206                 } \
207         } while (0)
208 #  define retvm_if(expr, val, fmt, arg...) do { \
209                 if(expr) { \
210                         ERR(fmt, ##arg); \
211                         return (val); \
212                 } \
213         } while (0)
214
215 #endif
216
217 struct sensor_data_t;
218 struct sensorhub_data_t;
219 typedef struct sensor_data_t sensor_data_t;
220 typedef struct sensorhub_data_t sensorhub_data_t;
221
222 const char* get_client_name(void);
223 bool get_proc_name(pid_t pid, char *process_name);
224 bool is_sensorhub_event(unsigned int event_type);
225 void copy_sensor_data(sensor_data_t *dest, sensor_data_t *src);
226 void copy_sensorhub_data(sensorhub_data_t *dest, sensorhub_data_t *src);
227
228 #ifdef __cplusplus
229 }
230 #endif
231
232 #endif /* _SENSOR_LOGS_H_ */