00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef GPS_H
00036 #define GPS_H
00037
00038 #include "global.h"
00039
00040
00041 typedef union union_float_u32
00042 {
00043 float f;
00044 unsigned long i;
00045 unsigned char b[4];
00046 } float_u32;
00047
00048 typedef union union_double_u64
00049 {
00050 double f;
00051 unsigned long long i;
00052 unsigned char b[8];
00053 } double_u64;
00054
00055 struct PositionLLA
00056 {
00057 float_u32 lat;
00058 float_u32 lon;
00059 float_u32 alt;
00060 float_u32 TimeOfFix;
00061 u16 updates;
00062 };
00063
00064 struct VelocityENU
00065 {
00066 float_u32 east;
00067 float_u32 north;
00068 float_u32 up;
00069 float_u32 TimeOfFix;
00070 u16 updates;
00071 };
00072
00073 struct VelocityHS
00074 {
00075 float_u32 heading;
00076 float_u32 speed;
00077 float_u32 TimeOfFix;
00078 u16 updates;
00079 };
00080
00081 struct PositionECEF
00082 {
00083 float_u32 x;
00084 float_u32 y;
00085 float_u32 z;
00086 float_u32 TimeOfFix;
00087 u16 updates;
00088 };
00089
00090 struct VelocityECEF
00091 {
00092 float_u32 x;
00093 float_u32 y;
00094 float_u32 z;
00095 float_u32 TimeOfFix;
00096 u16 updates;
00097 };
00098
00099 typedef struct struct_GpsInfo
00100 {
00101 float_u32 TimeOfWeek;
00102 u16 WeekNum;
00103 float_u32 UtcOffset;
00104 u08 numSVs;
00105
00106 struct PositionLLA PosLLA;
00107 struct PositionECEF PosECEF;
00108 struct VelocityECEF VelECEF;
00109 struct VelocityENU VelENU;
00110 struct VelocityHS VelHS;
00111
00112 } GpsInfoType;
00113
00114
00115 void gpsInit(void);
00116 GpsInfoType* gpsGetInfo(void);
00117 void gpsInfoPrint(void);
00118
00119 #endif