1- // var ws = new WebSocket("ws://192.168.1.228 /ws"); //WiFi mode
2- var ws = new WebSocket ( "ws://192.168.1 .1/ws" ) ; //AP Mode
1+ var ws = new WebSocket ( "ws://192.168.1.105 /ws" ) ; //WiFi mode
2+ // var ws = new WebSocket("ws://192.168.4 .1/ws"); //AP Mode
33
44ws . onmessage = function ( msg ) {
55 parseIncoming ( msg . data ) ;
@@ -24,19 +24,38 @@ function parseIncoming(msg) {
2424 if ( id . includes ( "sdMounted" ) ) {
2525 //Turn on/off SD area
2626 if ( val == "false" ) {
27- ge ( "sdMounted" ) . style . display = "none" ;
27+ hide ( "sdMounted" ) ;
2828 }
2929 else if ( val == "true" ) {
30- ge ( "sdMounted" ) . style . display = "block" ;
30+ show ( "sdMounted" ) ;
3131 }
3232 }
3333 else if ( id == "platformPrefix" ) {
3434 platformPrefix = val ;
35- ge ( id ) . innerHTML = "RTK " + val + " Setup" ;
36- document . title = "RTK " + val + " Setup" ;
35+ document . title = "RTK " + platformPrefix + " Setup" ;
3736
38- if ( platformPrefix == "Surveyor" ) ge ( "dataPortChannelDropdown" ) . style . display = "none" ;
39- if ( platformPrefix == "Express Plus" ) ge ( "muxChannel2" ) . innerHTML = "Wheel/Dir Encoder" ;
37+ if ( platformPrefix == "Surveyor" ) hide ( "dataPortChannelDropdown" ) ;
38+ if ( platformPrefix == "Express Plus" ) {
39+ ge ( "muxChannel2" ) . innerHTML = "Wheel/Dir Encoder" ;
40+
41+ hide ( "baseConfig" ) ; //Hide Base Config section
42+
43+ hide ( "msgUBX_NAV_SVIN" ) ; //Hide unsupported messages
44+ hide ( "msgUBX_RTCM_1005" ) ;
45+ hide ( "msgUBX_RTCM_1074" ) ;
46+ hide ( "msgUBX_RTCM_1077" ) ;
47+ hide ( "msgUBX_RTCM_1084" ) ;
48+ hide ( "msgUBX_RTCM_1087" ) ;
49+
50+ hide ( "msgUBX_RTCM_1094" ) ;
51+ hide ( "msgUBX_RTCM_1097" ) ;
52+ hide ( "msgUBX_RTCM_1124" ) ;
53+ hide ( "msgUBX_RTCM_1127" ) ;
54+ hide ( "msgUBX_RTCM_1230" ) ;
55+
56+ hide ( "msgUBX_RTCM_4072_0" ) ;
57+ hide ( "msgUBX_RTCM_4072_1" ) ;
58+ }
4059 }
4160 else if ( id . includes ( "sdFreeSpace" )
4261 || id . includes ( "sdUsedSpace" )
@@ -46,15 +65,15 @@ function parseIncoming(msg) {
4665 ge ( id ) . innerHTML = val ;
4766 }
4867 else if ( id . includes ( "firmwareFileName" ) ) {
49- ge ( "firmwareAvailable" ) . style . display = "block" ; //Turn on firmware area
68+ show ( "firmwareAvailable" ) ; //Turn on firmware area
5069
5170 ge ( id ) . innerHTML = val ;
52- if ( id . includes ( "0" ) ) ge ( "firmwareFile0" ) . style . display = "block" ;
53- if ( id . includes ( "1" ) ) ge ( "firmwareFile1" ) . style . display = "block" ;
54- if ( id . includes ( "2" ) ) ge ( "firmwareFile2" ) . style . display = "block" ;
55- if ( id . includes ( "3" ) ) ge ( "firmwareFile3" ) . style . display = "block" ;
56- if ( id . includes ( "4" ) ) ge ( "firmwareFile4" ) . style . display = "block" ;
57- if ( id . includes ( "5" ) ) ge ( "firmwareFile5" ) . style . display = "block" ;
71+ if ( id . includes ( "0" ) ) show ( "firmwareFile0" ) ;
72+ if ( id . includes ( "1" ) ) show ( "firmwareFile1" ) ;
73+ if ( id . includes ( "2" ) ) show ( "firmwareFile2" ) ;
74+ if ( id . includes ( "3" ) ) show ( "firmwareFile3" ) ;
75+ if ( id . includes ( "4" ) ) show ( "firmwareFile4" ) ;
76+ if ( id . includes ( "5" ) ) show ( "firmwareFile5" ) ;
5877 }
5978
6079 //Check boxes / radio buttons
@@ -67,20 +86,32 @@ function parseIncoming(msg) {
6786
6887 //All regular input boxes and values
6988 else {
70- ge ( id ) . value = val ;
89+ try {
90+ ge ( id ) . value = val ;
91+ } catch ( error ) {
92+ console . log ( "Issue with ID: " + id )
93+ }
7194 }
7295 }
7396 //console.log("Settings loaded");
7497
7598 //Force element updates
76- ge ( "measurementRateHz" ) . dispatchEvent ( new Event ( 'change' ) ) ;
77- ge ( "baseTypeSurveyIn" ) . dispatchEvent ( new Event ( 'change' ) ) ;
78- ge ( "baseTypeFixed" ) . dispatchEvent ( new Event ( 'change' ) ) ;
79- ge ( "fixedBaseCoordinateTypeECEF" ) . dispatchEvent ( new Event ( 'change' ) ) ;
80- ge ( "fixedBaseCoordinateTypeGeo" ) . dispatchEvent ( new Event ( 'change' ) ) ;
81- ge ( "enableLogging" ) . dispatchEvent ( new Event ( 'change' ) ) ;
82- ge ( "enableNtripServer" ) . dispatchEvent ( new Event ( 'change' ) ) ;
83- ge ( "dataPortChannel" ) . dispatchEvent ( new Event ( 'change' ) ) ;
99+ ge ( "measurementRateHz" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
100+ ge ( "baseTypeSurveyIn" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
101+ ge ( "baseTypeFixed" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
102+ ge ( "fixedBaseCoordinateTypeECEF" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
103+ ge ( "fixedBaseCoordinateTypeGeo" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
104+ ge ( "enableLogging" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
105+ ge ( "enableNtripServer" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
106+ ge ( "dataPortChannel" ) . dispatchEvent ( new CustomEvent ( 'change' ) ) ;
107+ }
108+
109+ function hide ( id ) {
110+ ge ( id ) . style . display = "none" ;
111+ }
112+
113+ function show ( id ) {
114+ ge ( id ) . style . display = "block" ;
84115}
85116
86117//Create CSV of all setting data
@@ -120,15 +151,19 @@ function sendFirmwareFile() {
120151}
121152
122153function showError ( id , errorText ) {
123- ge ( id + 'Error' ) . innerHTML = 'Error: ' + errorText ;
154+ ge ( id + 'Error' ) . innerHTML = '<br> Error: ' + errorText ;
124155}
125156
126157function clearError ( id ) {
127158 ge ( id + 'Error' ) . innerHTML = '' ;
128159}
129160
130- function successMessage ( id , msgText ) {
131- ge ( id + 'Error' ) . innerHTML = '<p style="color:green; display:inline;"><b>' + msgText + '</b></p>' ;
161+ function showSuccess ( id , msg ) {
162+ ge ( id + 'Success' ) . innerHTML = '<br>Success: ' + msg ;
163+ }
164+
165+ function clearSuccess ( id ) {
166+ ge ( id + 'Success' ) . innerHTML = '' ;
132167}
133168
134169var errorCount = 0 ;
@@ -142,8 +177,10 @@ function validateFields() {
142177 ge ( "collapseSystemConfig" ) . classList . remove ( 'show' ) ;
143178
144179 errorCount = 0 ;
180+
145181 //GNSS Config
146- checkElementValue ( "measurementRateHz" , 0.000122 , 10 , "Must be between 0.000122 and 10Hz" , "collapseGNSSConfig" ) ;
182+ checkElementValue ( "measurementRateHz" , 0.1 , 10 , "Must be between 0 and 10Hz" , "collapseGNSSConfig" ) ;
183+ checkConstellations ( ) ;
147184
148185 checkElementValue ( "UBX_NMEA_DTM" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
149186 checkElementValue ( "UBX_NMEA_GBS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
@@ -161,30 +198,31 @@ function validateFields() {
161198 checkElementValue ( "UBX_NMEA_VTG" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
162199 checkElementValue ( "UBX_NMEA_ZDA" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
163200
201+ checkElementValue ( "UBX_NAV_ATT" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
164202 checkElementValue ( "UBX_NAV_CLOCK" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
165203 checkElementValue ( "UBX_NAV_DOP" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
166204 checkElementValue ( "UBX_NAV_EOE" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
167205 checkElementValue ( "UBX_NAV_GEOFENCE" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
168- checkElementValue ( "UBX_NAV_HPPOSECEF" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
169206
207+ checkElementValue ( "UBX_NAV_HPPOSECEF" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
170208 checkElementValue ( "UBX_NAV_HPPOSLLH" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
171209 checkElementValue ( "UBX_NAV_ODO" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
172210 checkElementValue ( "UBX_NAV_ORB" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
173211 checkElementValue ( "UBX_NAV_POSECEF" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
174- checkElementValue ( "UBX_NAV_POSLLH" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
175212
213+ checkElementValue ( "UBX_NAV_POSLLH" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
176214 checkElementValue ( "UBX_NAV_PVT" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
177215 checkElementValue ( "UBX_NAV_RELPOSNED" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
178216 checkElementValue ( "UBX_NAV_SAT" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
179217 checkElementValue ( "UBX_NAV_SIG" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
180- checkElementValue ( "UBX_NAV_STATUS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
181218
219+ checkElementValue ( "UBX_NAV_STATUS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
182220 checkElementValue ( "UBX_NAV_SVIN" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
183221 checkElementValue ( "UBX_NAV_TIMEBDS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
184222 checkElementValue ( "UBX_NAV_TIMEGAL" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
185223 checkElementValue ( "UBX_NAV_TIMEGLO" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
186- checkElementValue ( "UBX_NAV_TIMEGPS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
187224
225+ checkElementValue ( "UBX_NAV_TIMEGPS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
188226 checkElementValue ( "UBX_NAV_TIMELS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
189227 checkElementValue ( "UBX_NAV_TIMEUTC" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
190228 checkElementValue ( "UBX_NAV_VELECEF" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
@@ -227,12 +265,19 @@ function validateFields() {
227265 checkElementValue ( "UBX_RTCM_4072_0" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
228266 checkElementValue ( "UBX_RTCM_4072_1" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
229267
268+ checkElementValue ( "UBX_ESF_MEAS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
269+ checkElementValue ( "UBX_ESF_RAW" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
270+ checkElementValue ( "UBX_ESF_STATUS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
271+ checkElementValue ( "UBX_ESF_ALG" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
272+ checkElementValue ( "UBX_ESF_INS" , 0 , 20 , "Must be between 0 and 20" , "collapseGNSSConfigMsg" ) ;
273+
230274 //Base Config
231275 checkElementValue ( "observationSeconds" , 60 , 600 , "Must be between 60 to 600" , "collapseBaseConfig" ) ;
232276 checkElementValue ( "observationPositionAccuracy" , 1 , 5.1 , "Must be between 1.0 to 5.0" , "collapseBaseConfig" ) ;
233- checkElementValue ( "fixedEcefX" , - 6400000 , 6400000 , "Must be -6400000 to 6400000" , "collapseBaseConfig" ) ;
234- checkElementValue ( "fixedEcefY" , - 6400000 , 6400000 , "Must be -6400000 to 6400000" , "collapseBaseConfig" ) ;
235- checkElementValue ( "fixedEcefZ" , - 6400000 , 6400000 , "Must be 6400000 to 6400000" , "collapseBaseConfig" ) ;
277+ checkElementValue ( "fixedEcefX" , - 5000000 , 5000000 , "Must be -5000000 to 5000000" , "collapseBaseConfig" ) ;
278+ checkElementValue ( "fixedEcefY" , - 5000000 , 5000000 , "Must be -5000000 to 5000000" , "collapseBaseConfig" ) ;
279+ if ( ge ( "fixedEcefZ" ) . value == 0.0 ) ge ( "fixedEcefZ" ) . value = 4084500 ;
280+ checkElementValue ( "fixedEcefZ" , 4084500 , 5000000 , "Must be 4084500 to 5000000" , "collapseBaseConfig" ) ;
236281 checkElementValue ( "fixedLat" , - 180 , 180 , "Must be -180 to 180" , "collapseBaseConfig" ) ;
237282 checkElementValue ( "fixedLong" , - 180 , 180 , "Must be -180 to 180" , "collapseBaseConfig" ) ;
238283 checkElementValue ( "fixedAltitude" , 0 , 8849 , "Must be 0 to 8849" , "collapseBaseConfig" ) ;
@@ -251,15 +296,32 @@ function validateFields() {
251296
252297 if ( errorCount == 1 ) {
253298 showError ( 'saveBtn' , "Please clear " + errorCount + " error" ) ;
299+ clearSuccess ( 'saveBtn' ) ;
254300 }
255301 else if ( errorCount > 1 ) {
256302 showError ( 'saveBtn' , "Please clear " + errorCount + " errors" ) ;
303+ clearSuccess ( 'saveBtn' ) ;
257304 }
258305 else {
259306 //Tell Arduino we're ready to save
260307 sendData ( ) ;
261- successMessage ( 'saveBtn' , "All saved" ) ;
308+ clearError ( 'saveBtn' ) ;
309+ showSuccess ( 'saveBtn' , "All saved!" ) ;
310+ }
311+ }
312+
313+ function checkConstellations ( ) {
314+ if ( ge ( "ubxConstellationsGPS" ) . checked == false
315+ && ge ( "ubxConstellationsGalileo" ) . checked == false
316+ && ge ( "ubxConstellationsBeiDou" ) . checked == false
317+ && ge ( "ubxConstellationsGLONASS" ) . checked == false
318+ ) {
319+ ge ( "collapseGNSSConfig" ) . classList . add ( 'show' ) ;
320+ showError ( 'ubxConstellations' , "Please choose one constellation" ) ;
321+ errorCount ++ ;
262322 }
323+ else
324+ clearError ( "ubxConstellations" ) ;
263325}
264326
265327function checkElementValue ( id , min , max , errorText , collapseID ) {
@@ -271,7 +333,7 @@ function checkElementValue(id, min, max, errorText, collapseID) {
271333 errorCount ++ ;
272334 }
273335 else
274- ge ( id + 'Error' ) . innerHTML = '' ;
336+ clearError ( id ) ;
275337}
276338function checkElementString ( id , min , max , errorText , collapseID ) {
277339 value = ge ( id ) . value ;
@@ -281,7 +343,7 @@ function checkElementString(id, min, max, errorText, collapseID) {
281343 errorCount ++ ;
282344 }
283345 else
284- ge ( id + 'Error' ) . innerHTML = '' ;
346+ clearError ( id ) ;
285347}
286348
287349function resetToFactoryDefaults ( ) {
@@ -290,8 +352,8 @@ function resetToFactoryDefaults() {
290352}
291353
292354function exitConfig ( ) {
293- ge ( "exitPage" ) . style . display = "block" ; //Show
294- ge ( "mainPage" ) . style . display = "none" ; //Hide main page
355+ show ( "exitPage" ) ;
356+ hide ( "mainPage" ) ;
295357 ws . send ( "exitToRoverMode,1," ) ;
296358}
297359
@@ -471,12 +533,10 @@ document.addEventListener("DOMContentLoaded", (event) => {
471533
472534 ge ( "dataPortChannel" ) . addEventListener ( "change" , function ( ) {
473535 if ( ge ( "dataPortChannel" ) . value == 0 ) {
474- //Show baud drop down
475- ge ( "dataPortBaudDropdown" ) . style . display = "block" ;
536+ show ( "dataPortBaudDropdown" ) ;
476537 }
477538 else {
478- //Hide baud drop down
479- ge ( "dataPortBaudDropdown" ) . style . display = "none" ;
539+ hide ( "dataPortBaudDropdown" ) ;
480540 }
481541 } ) ;
482542} )
0 commit comments