summaryrefslogtreecommitdiff
path: root/drivers/misc/gpsip/cgdriver/CgTypes.h
blob: 0e4d13322c576c968bb3ccd3eaee2341ffe480a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/******************************************************************************
 *                                LEGAL NOTICE                                *
 *                                                                            *
 *  USE OF THIS SOFTWARE (including any copy or compiled version thereof) AND *
 *  DOCUMENTATION IS SUBJECT TO THE SOFTWARE LICENSE AND RESTRICTIONS AND THE *
 *  WARRANTY DISLCAIMER SET FORTH IN LEGAL_NOTICE.TXT FILE. IF YOU DO NOT     *
 *  FULLY ACCEPT THE TERMS, YOU MAY NOT INSTALL OR OTHERWISE USE THE SOFTWARE *
 *  OR DOCUMENTATION.                                                         *
 *  NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS NOTICE, INSTALLING OR    *
 *  OTHERISE USING THE SOFTWARE OR DOCUMENTATION INDICATES YOUR ACCEPTANCE OF *
 *  THE LICENSE TERMS AS STATED.                                              *
 *                                                                            *
 ******************************************************************************/
/* Version: 1.8.9\3686 */
/* Build  : 13 */
/* Date   : 12/08/2012 */
/**
	\file
	\brief CellGuide global types
	\attention This file should not be modified.
		If you think something is wrong here, please contact CellGuide
*/
#ifndef _CG_TYPES_H
#define _CG_TYPES_H

#ifdef	__cplusplus
extern "C" {
#endif /*__cplusplus*/

/** Unsigned 8 bit data */
typedef unsigned char   U8;
/** Unsigned 16 bit data */
typedef unsigned short  U16;
/** Unsigned 32 bit data*/
typedef unsigned long    U32;
/** Signed 8 bit data */
typedef signed char    S8;
/** Signed 16 bit data */
typedef signed short   S16;
/** Signed 32 bit data */
typedef signed long    S32;
/** 8-bit text data */
typedef char     	T8;
/** 16-bit text data */
typedef U16     T16;

#define CG_MAX_S32		(0x7FFFFFFF)
#define CG_MAX_S16		(0x7FFF)

#if !(defined (__BORLANDC__)) && !(defined (_MSC_VER)) && !(defined(TCC7801))
/** Boolean, TRUE/FALSE */
	#define BOOL U8
#endif /* !(defined (__BORLANDC__) && defined (_MSC_VER)) */

#if !(defined (__BORLANDC__)) && !(defined (_MSC_VER)) && !(defined (APPROACH5C))
    /**  void */
    typedef void    VOID;
#endif /* !(defined (__BORLANDC__) && defined (_MSC_VER)) */


#ifdef __BORLANDC__
	typedef int  	BOOL;
#endif

#ifdef _MSC_VER
	typedef int BOOL;
#endif


#ifdef TCC7801
	typedef int BOOL;
#endif


#if defined (_MSC_VER)
	//#define U64_ZERO 0
	//	typedef unsigned __int64 U64_32; /* unsigned 64 bit data */  // TODO Noam - made problems in hardware files...
	#define U64_ZERO {0,0}
	typedef struct {
		U32 low;
		U32 high;
	} U64_32;
	typedef __int64 S64; /* signed 64 bit data */
	typedef __int64 SINT64; /* signed 64 bit data */
	typedef unsigned __int64 U64; /* signed 64 bit data */
#elif defined (__LINUX__)
	#define U64_ZERO {0,0}
	typedef struct {
		U32 low;
		U32 high;
	} U64_32;
	typedef signed long long int S64; /* signed 64 bit data */
	typedef signed long long int SINT64; /* signed 64 bit data */
	typedef unsigned long long int U64; /* signed 64 bit data */
#elif /*defined (__BORLANDC__) || */defined(EN_64BIT_INTEGER)
	#define U64_ZERO 0
	typedef unsigned long long U64; /* unsigned 64 bit data */
	typedef long long S64; /* signed 64 bit data */
	typedef long long SINT64; /* signed 64 bit data */
#else
	// All that are not WCE not Linux (ADS1_2 for instance)
	#define U64_ZERO {0,0}
/** a structure for 64-bit integer	*/
	typedef struct {
		U32 low;
		U32 high;
	} U64_32;
	typedef unsigned long long U64; /* unsigned 64 bit data */
/** a structure for 64-bit signed integer	*/
	typedef struct {
		S32 low;
		S32 high;
	} S64;
	typedef long long SINT64; /* signed 64 bit data */
#endif

/** Single-precision floating point */
typedef float	FLOAT;
/** Double-precision floating point */
typedef double	DOUBLE;

typedef S16 DATA;
typedef S32 LDATA;

#ifndef NULL
	#define NULL 0
#endif

#ifndef TRUE
	#define TRUE 1
#endif
#ifndef FALSE
	#define FALSE 0
#endif

#if (defined(__TARGET_ARCH_4T) ||defined (__CW32__) || defined (__GCC32__) || defined (__UCSO__)  || defined (__LINUX__) ||\
		defined (__SYMBIAN__) ||defined (__NUCLEUS__) || defined (__BORLANDC__) || defined (_MSC_VER) || defined(MP_211) || defined(APPROACH5C)) ||\
		defined (__ARMEL__ )
#ifndef LITTLE_ENDIAN
	#define LITTLE_ENDIAN
#endif
#else
	#define  BIG_ENDIAN
#endif /*  */

/** file types for ADM (Assistance Data Manager)*/
typedef enum
{
    ECgAgpsBinaryFile  = 0,
    ECgAgpsRawBinaryFile,
    ECgAgpsAsciiFile,
    ECgAgpsAlmanacSemFile,
    ECgAgpsAlmanacYumaFile
} TCgFileType;


/* This type will be added if it is not exists in our target compiler */
typedef enum {
    cgFALSE = 0 ,
    cgTRUE = 0x7FFF
} cgBool ;

typedef U16 USHORT;
typedef U8 UCHAR;
typedef U32 ULONG;

// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
// TEMPORARY CODE - NOAM
//@@
/*************************************************************************************************
 Type: TCgAgpsIonosphere
 Description: Ionosphere data
*************************************************************************************************/

//@@
/*************************************************************************************************
 Type: TCgAgpsPosition
 Description: Geographical position
*************************************************************************************************/
// TODO NG 22/6/2010 should be replaced with TCgCoordinatesLLA (from CgCoordinates.h)
typedef struct SCgAgpsPosition
{
	DOUBLE latitude;	/** geographical latitude 	*/
	DOUBLE longitude;	/** geographical longitude 	*/
	DOUBLE altitude;	/** geographical altitude 	*/
} TCgAgpsPosition;

#define ALTITUDE_NOT_VALID (0xFFFF)
typedef struct
{
	S16 altitude;	/** height (from database) [meters] */
	U16 err;		/** Height expected error [meters]	*/
}TCgHeightData;

#ifdef __GCC32__
	#define __STRUCT_PACKED__	__attribute__ ((packed))
#else
	#define __STRUCT_PACKED__
#endif


typedef enum {
	ECG_BYTE_ORDER_1234 = 0x0,
	ECG_BYTE_ORDER_2143 = 0x1,
	ECG_BYTE_ORDER_3412 = 0x2,
	ECG_BYTE_ORDER_4321 = 0x3
} TCgByteOrder;

typedef enum {
	ECG_SWAP_NONE,
	ECG_SWAP_BYTES,
	ECG_SWAP_WORDS,
	ECG_SWAP_BYTES_AND_WORDS
}TCgByteSwapType;

// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#ifdef	__cplusplus
}
#endif /*__cplusplus*/

#endif /*_CG_AGPS_GENERAL_TYPES_H*/