1 | #include "HSPOS.hpp"
|
---|
2 | //#pragma hdrstop
|
---|
3 |
|
---|
4 | /*
|
---|
5 | ** Author: Samuel R. Blackburn
|
---|
6 | ** Internet: sam_blackburn@pobox.com
|
---|
7 | **
|
---|
8 | ** You can use it any way you like as long as you don't try to sell it.
|
---|
9 | **
|
---|
10 | ** Copyright, 1996, Samuel R. Blackburn
|
---|
11 | **
|
---|
12 | ** $Workfile: HSPOS.cpp $
|
---|
13 | ** $Revision: 6 $
|
---|
14 | ** $Modtime: 10/12/98 6:39a $
|
---|
15 | */
|
---|
16 |
|
---|
17 |
|
---|
18 |
|
---|
19 | HSPOS::HSPOS()
|
---|
20 | {
|
---|
21 | Mnemonic = "HSPOS";
|
---|
22 | Empty();
|
---|
23 | }
|
---|
24 |
|
---|
25 | HSPOS::~HSPOS()
|
---|
26 | {
|
---|
27 | //Mnemonic.Empty();
|
---|
28 | Empty();
|
---|
29 | }
|
---|
30 |
|
---|
31 | void HSPOS::Empty( void )
|
---|
32 | {
|
---|
33 |
|
---|
34 |
|
---|
35 | //UTCTime.Empty();
|
---|
36 | Position.Empty();
|
---|
37 | depth = 0.0;
|
---|
38 | altitude = 0.0;
|
---|
39 | latitudeStdDev = 0.0;
|
---|
40 | longitudeStdDev = 0.0;
|
---|
41 | latLongCov = 0.0;
|
---|
42 | depthStdDev = 0.0;
|
---|
43 | UTMzone = 0;
|
---|
44 | UTMzoneChar = ' ';
|
---|
45 | eastindProjection = 0.0;
|
---|
46 | northingProjection = 0.0;
|
---|
47 | logMislignment = 0.0;
|
---|
48 | logScaleFactorError = 0.0;
|
---|
49 | compensationSoundVelocity = 0.0;
|
---|
50 | }
|
---|
51 |
|
---|
52 | BOOL HSPOS::Parse( const SENTENCE& sentence )
|
---|
53 | {
|
---|
54 | /*
|
---|
55 | ** HSPOS - Global Positioning System Fix Data
|
---|
56 | ** Time, Position and fix related data fora GPS receiver.
|
---|
57 | **
|
---|
58 | ** 1 2 3 4 5 6 7 8 9 10 11 12 1314 15 16 17 18
|
---|
59 | ** | | | | | | | | | | | | | | | | | |
|
---|
60 | ** $HSPOS_,hhmmss.ss,llmm.mmmmm,H,LLmm.mmmmm,D,d.dd,a.ad,x.xx,y.yy,z.zz,d.dd,nn,c,e.e,n.n,m.mmmm,s.ssss,vvvv.v<CR><LF>
|
---|
61 | **
|
---|
62 | ** Field Number:
|
---|
63 | ** 1) hhmmss.ss is the UTC absolute time
|
---|
64 | 2) llmm.mmmmm is the latitude in deg, decimal in min
|
---|
65 | 3) H N: north, S: south
|
---|
66 | 4) LLmm.mmmmm is the longitude in deg, decimal in min
|
---|
67 | 5) D E: east, W: west
|
---|
68 | 6) d.dd is the depth in meters
|
---|
69 | 7) a.aa is the altitude in meters (from DVL)
|
---|
70 | 8) x.xx is the latitude Std (meters)
|
---|
71 | 9) y.yy is the longitude Std (meters)
|
---|
72 | 10) z.zz is the latitude longitude covariance (meters)
|
---|
73 | 11) d.dd is the depth Std (meters)
|
---|
74 | 12) nn is the UTM zone integer
|
---|
75 | 13) c is the UTM zone character
|
---|
76 | 14) e.e is the easting projection
|
---|
77 | 15) n.n is the northing projection
|
---|
78 | 16) m.mmmm is the log misalignment estimation in degrees
|
---|
79 | 17) s.ssss is the log scale factor error estimation in %
|
---|
80 | 18) vvvv.v is the compensation sound velocity in m/s
|
---|
81 |
|
---|
82 |
|
---|
83 | */
|
---|
84 |
|
---|
85 | UTCTime = sentence.Field( 1 );
|
---|
86 | Time = sentence.Time( 1 );
|
---|
87 | Position.Parse( 2, 3, 4, 5, sentence );
|
---|
88 | depth = sentence.Double( 6 );
|
---|
89 | altitude = sentence.Double( 7 );
|
---|
90 | latitudeStdDev = sentence.Double( 8 );
|
---|
91 | longitudeStdDev = sentence.Double( 9 );
|
---|
92 | latLongCov = sentence.Double( 10 );
|
---|
93 | depthStdDev = sentence.Double( 11 );
|
---|
94 | UTMzone = sentence.Integer( 12 );
|
---|
95 | UTMzoneChar = sentence.Field(13).at(0);
|
---|
96 | eastindProjection = sentence.Double( 14 );
|
---|
97 | northingProjection = sentence.Double( 15 );
|
---|
98 | logMislignment = sentence.Double( 16 );
|
---|
99 | logScaleFactorError = sentence.Double( 17 );
|
---|
100 | compensationSoundVelocity = sentence.Double( 18 );
|
---|
101 |
|
---|
102 | return( TRUE );
|
---|
103 | }
|
---|
104 |
|
---|
105 | QString HSPOS::PlainEnglish( void ) const
|
---|
106 | {
|
---|
107 | QString return_string;
|
---|
108 |
|
---|
109 | return_string = "not yet available ";
|
---|
110 |
|
---|
111 | return( return_string );
|
---|
112 | }
|
---|
113 |
|
---|
114 | BOOL HSPOS::Write( SENTENCE& sentence )
|
---|
115 | {
|
---|
116 | /*
|
---|
117 | ** Let the parent do its thing
|
---|
118 | */
|
---|
119 |
|
---|
120 | RESPONSE::Write( sentence );
|
---|
121 |
|
---|
122 | sentence += UTCTime;
|
---|
123 | sentence += Position;
|
---|
124 | sentence += depth;
|
---|
125 | sentence += altitude;
|
---|
126 | sentence += latitudeStdDev;
|
---|
127 | sentence += longitudeStdDev;
|
---|
128 | sentence += latLongCov;
|
---|
129 | sentence += depthStdDev;
|
---|
130 | sentence += UTMzone;
|
---|
131 | sentence += UTMzoneChar;
|
---|
132 | sentence += eastindProjection;
|
---|
133 | sentence += northingProjection;
|
---|
134 | sentence += logMislignment;
|
---|
135 | sentence += logScaleFactorError;
|
---|
136 | sentence += compensationSoundVelocity;
|
---|
137 |
|
---|
138 | sentence.Finish();
|
---|
139 |
|
---|
140 | return( TRUE );
|
---|
141 | }
|
---|
142 |
|
---|
143 | const HSPOS& HSPOS::operator = ( const HSPOS& source )
|
---|
144 | {
|
---|
145 | UTCTime = source.UTCTime;
|
---|
146 | Position = source.Position;
|
---|
147 | depth = source.depth;
|
---|
148 | altitude = source.altitude;
|
---|
149 | latitudeStdDev = source.latitudeStdDev;
|
---|
150 | longitudeStdDev = source.longitudeStdDev;
|
---|
151 | latLongCov = source.latLongCov;
|
---|
152 | depthStdDev = source.depthStdDev;
|
---|
153 | UTMzone = source.UTMzone;
|
---|
154 | UTMzoneChar = source.UTMzoneChar;
|
---|
155 | eastindProjection = source.eastindProjection;
|
---|
156 | northingProjection = source.northingProjection;
|
---|
157 | logMislignment = source.logMislignment;
|
---|
158 | logScaleFactorError = source.logScaleFactorError;
|
---|
159 | compensationSoundVelocity = source.compensationSoundVelocity;
|
---|
160 |
|
---|
161 | return( *this );
|
---|
162 | }
|
---|