1 /******************************************************************************
2  * $Id: AKFS_Common.h 580 2012-03-29 09:56:21Z yamada.rj $
3  ******************************************************************************
4  *
5  * Copyright (C) 2012 Asahi Kasei Microdevices Corporation, Japan
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 #ifndef AKFS_INC_COMMON_H
20 #define AKFS_INC_COMMON_H
21 
22 #ifdef WIN32
23 #ifndef _WIN32_WINNT
24 #define _WIN32_WINNT 0x0501
25 #endif
26 
27 #include <windows.h>
28 #include <stdio.h>
29 #include <stdlib.h>
30 #include <conio.h>
31 #include <stdarg.h>
32 #include <crtdbg.h>
33 #include "Android.h"
34 
35 #define DBG_LEVEL	DBG_LEVEL4
36 #define ENABLE_AKMDEBUG	1
37 
38 #else
39 #include <stdio.h>     /* frpintf */
40 #include <stdlib.h>    /* atoi */
41 #include <string.h>    /* memset */
42 #include <unistd.h>
43 #include <stdarg.h>    /* va_list */
44 #include <utils/Log.h> /* LOGV */
45 #include <errno.h>     /* errno */
46 
47 #endif
48 
49 /*** Constant definition ******************************************************/
50 #define AKM_TRUE	1	/*!< Represents true */
51 #define AKM_FALSE	0	/*!< Represents false */
52 #define AKM_SUCCESS	1	/*!< Represents success */
53 #define AKM_FAIL	0	/*!< Represents fail */
54 
55 #undef LOG_TAG
56 #define LOG_TAG "AKMD_FS"
57 
58 #define DBG_LEVEL0	0	/* Critical */
59 #define DBG_LEVEL1	1	/* Notice */
60 #define DBG_LEVEL2	2	/* Information */
61 #define DBG_LEVEL3	3	/* Debug */
62 #define DBG_LEVEL4	4	/* Verbose */
63 
64 #ifndef DBG_LEVEL
65 #define DBG_LEVEL	DBG_LEVEL0
66 #endif
67 
68 #define DATA_AREA01	0x0001
69 #define DATA_AREA02	0x0002
70 #define DATA_AREA03	0x0004
71 #define DATA_AREA04	0x0008
72 #define DATA_AREA05	0x0010
73 #define DATA_AREA06	0x0020
74 #define DATA_AREA07	0x0040
75 #define DATA_AREA08	0x0080
76 #define DATA_AREA09	0x0100
77 #define DATA_AREA10	0x0200
78 #define DATA_AREA11	0x0400
79 #define DATA_AREA12	0x0800
80 #define DATA_AREA13	0x1000
81 #define DATA_AREA14	0x2000
82 #define DATA_AREA15	0x4000
83 #define DATA_AREA16	0x8000
84 
85 
86 /* Debug area definition */
87 #define AKMDATA_DUMP		DATA_AREA01	/*<! Dump data */
88 #define AKMDATA_BDATA		DATA_AREA02	/*<! BDATA */
89 #define AKMDATA_MAG			DATA_AREA03 /*<! Magnetic Field */
90 #define AKMDATA_ACC			DATA_AREA04 /*<! Accelerometer */
91 #define AKMDATA_ORI			DATA_AREA05 /*<! Orientation */
92 #define AKMDATA_GETINTERVAL	DATA_AREA06
93 #define AKMDATA_LOOP		DATA_AREA07
94 #define AKMDATA_DRV			DATA_AREA08
95 
96 #ifndef ENABLE_AKMDEBUG
97 #define ENABLE_AKMDEBUG		0	/* Eanble debug output when it is 1. */
98 #endif
99 
100 #define OPMODE_CONSOLE		0x01
101 #define OPMODE_FST			0x02
102 
103 /***** Debug Level Output *************************************/
104 #if ENABLE_AKMDEBUG
105 #define AKMDEBUG(level, format, ...) \
106     (((level) <= DBG_LEVEL) \
107 	  ? (fprintf(stdout, (format), ##__VA_ARGS__)) \
108 	  : ((void)0))
109 #else
110 #define AKMDEBUG(level, format, ...)
111 #endif
112 
113 /***** Dbg Zone Output ***************************************/
114 #if ENABLE_AKMDEBUG
115 #define AKMDATA(flag, format, ...)  \
116 	((((int)flag) & g_dbgzone) \
117 	  ? (fprintf(stdout, (format), ##__VA_ARGS__)) \
118 	  : ((void)0))
119 #else
120 #define AKMDATA(flag, format, ...)
121 #endif
122 
123 /***** Log output ********************************************/
124 #ifdef AKM_LOG_ENABLE
125 #define AKM_LOG(format, ...)	ALOGD((format), ##__VA_ARGS__)
126 #else
127 #define AKM_LOG(format, ...)
128 #endif
129 
130 /***** Error output *******************************************/
131 #define AKMERROR \
132 	((g_opmode & OPMODE_CONSOLE) \
133 	  ? (fprintf(stderr, "%s:%d Error.\n", __FUNCTION__, __LINE__)) \
134 	  : (ALOGE("%s:%d Error.", __FUNCTION__, __LINE__)))
135 
136 #define AKMERROR_STR(api) \
137 	((g_opmode & OPMODE_CONSOLE) \
138 	  ? (fprintf(stderr, "%s:%d %s Error (%s).\n", \
139 	  		  __FUNCTION__, __LINE__, (api), strerror(errno))) \
140 	  : (ALOGE("%s:%d %s Error (%s).", \
141 	  		  __FUNCTION__, __LINE__, (api), strerror(errno))))
142 
143 /*** Type declaration *********************************************************/
144 
145 /*** Global variables *********************************************************/
146 extern int g_stopRequest;	/*!< 0:Not stop,  1:Stop */
147 extern int g_opmode;		/*!< 0:Daemon mode, 1:Console mode. */
148 extern int g_dbgzone;		/*!< Debug zone. */
149 
150 /*** Prototype of function ****************************************************/
151 
152 #endif /* AKMD_INC_AKCOMMON_H */
153 
154