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.4 2002/04/03 00:08:19 short
17 Found in "gnokii-working" directory, some November-patches version
19 Revision 1.25 2001/07/03 15:27:14 pkot
20 AT commands for SMS handling support (Tamas Bondar)
21 Small at-emulator code cleanup (me)
23 Revision 1.24 2001/06/28 00:28:46 pkot
24 Small docs updates (Pawel Kot)
34 /* Some general defines. */
48 #define ARRAY_LEN(x) (sizeof((x))/sizeof((x)[0]))
50 #define SAFE_STRNCPY(dest,src,n) do { \
51 strncpy((dest),(src),(n)); \
56 #define SAFE_STRNCPY_SIZEOF(dest,src) \
57 SAFE_STRNCPY((dest),(src),sizeof((dest)))
59 /* Stolen from <glib.h>: */
60 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
61 #define G_GNUC_PRINTF( format_idx, arg_idx ) \
62 __attribute__((format (printf, format_idx, arg_idx)))
64 #define G_GNUC_PRINTF( format_idx, arg_idx )
65 #endif /* !__GNUC__ */
67 #define GNOKII_MAX(a, b) (((a) > (b)) ? (a) : (b))
68 #define GNOKII_MIN(a, b) (((a) < (b)) ? (a) : (b))
70 /* A define to make debug printfs neat */
72 #define dprintf(a...) do { } while (0)
74 #define dprintf(a...) do { fprintf(stderr, a); fflush(stderr); } while (0)
77 /* Use gsprintf instead of sprintf and sprintf */
79 # define gsprintf(a, b, c...) snprintf(a, b, c)
81 # define gsprintf(a, b, c...) sprintf(a, c)
84 # define gvsprintf(a, b, c...) vsnprintf(a, b, c)
86 # define gvsprintf(a, b, c...) vsprintf(a, c)
89 # define gasprintf(a...) asprintf(a)
92 extern int gasprintf(char **destp,const char *fmt,...);
95 # define gvasprintf(a...) vasprintf(a)
98 extern int gvasprintf(char **destp,const char *fmt,va_list ap);
101 /* Get rid of long defines. Use #if __unices__ */
102 #define __unices__ defined(__svr4__) || defined(__FreeBSD__) || defined(__bsdi__)
104 /* This one is for NLS. */
107 #define _(x) gettext(x)
113 /* Definitions for u8, u16, u32 and u64, borrowed from
114 /usr/src/linux/include/asm-i38/types.h */
117 typedef unsigned char u8;
121 typedef unsigned short u16;
125 typedef unsigned int u32;
132 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
134 typedef unsigned long long u64;
138 typedef signed long long s64;
142 /* This one is for FreeBSD and similar systems without __ptr_t_ */
143 /* FIXME: autoconf should take care of this. */
146 typedef void * __ptr_t;
150 /* Add here any timer operations which are not supported by libc5 */
156 #include <sys/timeb.h>
157 #define timersub(a, b, result)
159 (result)->tv_sec = (a)->time - (b)->time;
160 (result)->tv_usec = ((a)->millitm - (b)->millitm) * 1000;
161 if ((result)->tv_usec < 0) {
163 (result)->tv_usec += 1000000;
166 #define gettimeofday(a, b) _ftime(a)
169 #include <sys/time.h>
172 #define timersub(a, b, result) \
174 (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
175 (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
176 if ((result)->tv_usec < 0) { \
177 --(result)->tv_sec; \
178 (result)->tv_usec += 1000000; \
184 #endif /* HAVE_TIMEOPS */
188 extern int GetLine(FILE *File, char *Line, int count);
190 /* For models table */
197 #define PM_CALLERGROUP 0x0001
198 #define PM_NETMONITOR 0x0002
199 #define PM_KEYBOARD 0x0004
200 #define PM_SMS 0x0008
201 #define PM_CALENDAR 0x0010
202 #define PM_DTMF 0x0020
203 #define PM_DATA 0x0040
204 #define PM_SPEEDDIAL 0x0080
205 #define PM_EXTPBK 0x0100
206 #define PM_AUTHENTICATION 0x0200
208 extern char *GetModel (const char *);
209 extern PhoneModel *GetPhoneModel (const char *);
211 #endif /* __misc_h */