sensord: create sensor-hal-devel package
[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 #define USE_DLOG_LOG
48
49 enum sf_log_type {
50         SF_LOG_PRINT_FILE               = 1,
51         SF_LOG_SYSLOG                   = 2,
52         SF_LOG_DLOG                     = 3,
53 };
54
55 enum sf_priority_type {
56         SF_LOG_ERR                      = 1,
57         SF_LOG_DBG                      = 2,
58         SF_LOG_INFO                     = 3,
59         SF_LOG_WARN                     = 4,
60 };
61
62 void sf_log(int type , int priority , const char *tag , const char *fmt , ...);
63
64 #define MICROSECONDS(tv)        ((tv.tv_sec * 1000000ll) + tv.tv_usec)
65
66 #ifndef __MODULE__
67 #include <string.h>
68 #define __MODULE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
69 #endif
70
71 //for new log system - dlog
72 #ifdef LOG_TAG
73         #undef LOG_TAG
74 #endif
75 #define LOG_TAG "SENSOR"
76
77 #if defined(_DEBUG) || defined(USE_FILE_DEBUG)
78
79 #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)
80
81 #endif
82
83 #if defined(USE_SYSLOG_DEBUG)
84
85 #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)
86 #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)
87 #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)
88 #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)
89
90 #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)
91 #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)
92 #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)
93 #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)
94 #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)
95
96
97 #elif defined(_DEBUG) || defined(USE_DLOG_DEBUG)
98
99 #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)
100 #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)
101 #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)
102 #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)
103
104 #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)
105 #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)
106 #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)
107 #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)
108 #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)
109
110 #elif defined(USE_FILE_DEBUG)
111
112 #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)
113 #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)
114 #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)
115 #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)
116
117 #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)
118 #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)
119 #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)
120 #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)
121 #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)
122
123 #elif defined(USE_DLOG_LOG)
124
125 #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)
126 #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)
127 #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)
128
129 #define DBG(...) do{} while(0)
130 #define DbgPrint(...) do{} while(0)
131
132
133 #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)
134 #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)
135 #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)
136 #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)
137 #define _T(...)
138
139 #else
140 #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)
141 #define WARN(...) do{} while(0)
142 #define DbgPrint(...) do{} while(0)
143 #define DBG(...) do{} while(0)
144 #define INFO(...) do{} while(0)
145
146 #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)
147 #define _W(...) do{} while(0)
148 #define _I(...) do{} while(0)
149 #define _D(...) do{} while(0)
150 #define _T(...) do{} while(0)
151
152 #endif
153
154
155 #if defined(_DEBUG)
156 #  define warn_if(expr, fmt, arg...) do { \
157                 if(expr) { \
158                         DBG("(%s) -> " fmt, #expr, ##arg); \
159                 } \
160         } while (0)
161 #  define ret_if(expr) do { \
162                 if(expr) { \
163                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
164                         return; \
165                 } \
166         } while (0)
167 #  define retv_if(expr, val) do { \
168                 if(expr) { \
169                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
170                         return (val); \
171                 } \
172         } while (0)
173 #  define retm_if(expr, fmt, arg...) do { \
174                 if(expr) { \
175                         ERR(fmt, ##arg); \
176                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
177                         return; \
178                 } \
179         } while (0)
180 #  define retvm_if(expr, val, fmt, arg...) do { \
181                 if(expr) { \
182                         ERR(fmt, ##arg); \
183                         DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
184                         return (val); \
185                 } \
186         } while (0)
187
188 #else
189 #  define warn_if(expr, fmt, arg...) do { \
190                 if(expr) { \
191                         ERR(fmt, ##arg); \
192                 } \
193         } while (0)
194 #  define ret_if(expr) do { \
195                 if(expr) { \
196                         return; \
197                 } \
198         } while (0)
199 #  define retv_if(expr, val) do { \
200                 if(expr) { \
201                         return (val); \
202                 } \
203         } while (0)
204 #  define retm_if(expr, fmt, arg...) do { \
205                 if(expr) { \
206                         ERR(fmt, ##arg); \
207                         return; \
208                 } \
209         } while (0)
210 #  define retvm_if(expr, val, fmt, arg...) do { \
211                 if(expr) { \
212                         ERR(fmt, ##arg); \
213                         return (val); \
214                 } \
215         } while (0)
216
217 #endif
218
219 const char* get_client_name(void);
220 bool get_proc_name(pid_t pid, char *process_name);
221
222 #ifdef __cplusplus
223 }
224 #endif
225
226 #endif /* _SENSOR_LOGS_H_ */