7 A Linux/Unix toolset and driver for Nokia mobile phones.
9 Copyright (C) 1999, 2000 Hugh Blemings & Pavel JanÃk ml.
11 Released under the terms of the GNU GPL, see file COPYING for more details.
13 Header file for miscellaneous defines, typedefs etc.
16 Revision 1.1.1.1.6.2 2001/11/27 21:18:41 short
17 Update: orig2001_11_25_22_56 -> orig2001_11_27_05_17
20 Revision 1.1.1.1.2.1 2001/11/27 04:37:59 short
21 Update: orig2001_11_25_22_56 -> orig2001_11_27_05_17
23 Revision 1.1.1.2 2001/11/27 04:19:40 short
24 :pserver:cvs@pserver.samba.org:/cvsroot - gnokii - Tue Nov 27 05:17 CET 2001
26 Revision 1.27 2001/11/26 18:06:08 pkot
27 Checking for *printf functions, N_(x) for localization, generic ARRAY_LEN, SAFE_STRNCPY, G_GNUC_PRINTF (Jan Kratochvil)
29 Revision 1.26 2001/11/14 10:46:12 pkot
30 Small cleanup with __unices__
32 Revision 1.25 2001/07/03 15:27:14 pkot
33 AT commands for SMS handling support (Tamas Bondar)
34 Small at-emulator code cleanup (me)
36 Revision 1.24 2001/06/28 00:28:46 pkot
37 Small docs updates (Pawel Kot)
47 /* Some general defines. */
54 # define true (!false)
61 #define ARRAY_LEN(x) (sizeof((x)) / sizeof((x)[0]))
63 #define SAFE_STRNCPY(dest, src, n) do { \
64 strncpy((dest), (src), (n)); \
66 (dest)[(n)-1] = '\0'; \
69 #define SAFE_STRNCPY_SIZEOF(dest,src) \
70 SAFE_STRNCPY((dest), (src), sizeof((dest)))
72 /* Stolen from <glib.h>: */
73 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
74 # define G_GNUC_PRINTF( format_idx, arg_idx ) \
75 __attribute__((format (printf, format_idx, arg_idx)))
77 # define G_GNUC_PRINTF( format_idx, arg_idx )
78 #endif /* !__GNUC__ */
80 #define GNOKII_MAX(a, b) (((a) > (b)) ? (a) : (b))
81 #define GNOKII_MIN(a, b) (((a) < (b)) ? (a) : (b))
83 /* A define to make debug printfs neat */
85 # define dprintf(a...) do { } while (0)
87 # define dprintf(a...) do { fprintf(stderr, a); fflush(stderr); } while (0)
90 /* Use gsprintf instead of sprintf and sprintf */
92 # define gsprintf(a, b, c...) snprintf(a, b, c)
94 # define gsprintf(a, b, c...) sprintf(a, c)
97 # define gvsprintf(a, b, c...) vsnprintf(a, b, c)
99 # define gvsprintf(a, b, c...) vsprintf(a, c)
102 # define gasprintf(a...) asprintf(a)
105 extern int gasprintf(char **destp, const char *fmt,...);
107 #ifdef HAVE_VASPRINTF
108 # define gvasprintf(a...) vasprintf(a)
111 extern int gvasprintf(char **destp, const char *fmt, va_list ap);
114 /* Get rid of long defines. Use #if __unices__ */
115 #define __unices__ defined(__svr4__) || defined(__FreeBSD__) || defined(__bsdi__)
117 # include <strings.h>
118 # include <sys/file.h>
121 /* This one is for NLS. */
123 # include <libintl.h>
124 # define _(x) gettext(x)
125 # define N_(x) gettext_noop(x)
131 /* Definitions for u8, u16, u32 and u64, borrowed from
132 /usr/src/linux/include/asm-i38/types.h */
135 typedef unsigned char u8;
139 typedef unsigned short u16;
143 typedef unsigned int u32;
150 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
152 typedef unsigned long long u64;
156 typedef signed long long s64;
160 /* This one is for FreeBSD and similar systems without __ptr_t_ */
161 /* FIXME: autoconf should take care of this. */
163 typedef void * __ptr_t;
167 /* Add here any timer operations which are not supported by libc5 */
172 # include <windows.h>
173 # include <sys/timeb.h>
174 # define timersub(a, b, result)
176 (result)->tv_sec = (a)->time - (b)->time;
177 (result)->tv_usec = ((a)->millitm - (b)->millitm) * 1000;
178 if ((result)->tv_usec < 0) {
180 (result)->tv_usec += 1000000;
183 # define gettimeofday(a, b) _ftime(a)
186 # include <sys/time.h>
189 # define timersub(a, b, result) \
191 (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
192 (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
193 if ((result)->tv_usec < 0) { \
194 --(result)->tv_sec; \
195 (result)->tv_usec += 1000000; \
198 # endif /* timersub */
201 #endif /* HAVE_TIMEOPS */
205 extern int GetLine(FILE *File, char *Line, int count);
207 /* For models table */
214 #define PM_CALLERGROUP 0x0001
215 #define PM_NETMONITOR 0x0002
216 #define PM_KEYBOARD 0x0004
217 #define PM_SMS 0x0008
218 #define PM_CALENDAR 0x0010
219 #define PM_DTMF 0x0020
220 #define PM_DATA 0x0040
221 #define PM_SPEEDDIAL 0x0080
222 #define PM_EXTPBK 0x0100
223 #define PM_AUTHENTICATION 0x0200
225 extern char *GetModel (const char *);
226 extern PhoneModel *GetPhoneModel (const char *);
228 #endif /* __misc_h */