@@ -32,7 +32,13 @@ var fileNumber = 0;
3232var numberOfFilesSelected = 0 ;
3333var selectedFiles = "" ;
3434var showingFileList = false ;
35+ var obtainedMessageList = false ;
36+ var obtainedMessageListBase = false ;
37+ var showingMessageRTCMList = false ;
3538var fileTableText = "" ;
39+ var messageText = "" ;
40+ var lastMessageType = "" ;
41+ var lastMessageTypeBase = "" ;
3642
3743var recordsECEF = [ ] ;
3844var recordsGeodetic = [ ] ;
@@ -107,28 +113,6 @@ function parseIncoming(msg) {
107113 hide ( "ntpConfig" ) ;
108114
109115 ge ( "muxChannel2" ) . innerHTML = "Wheel/Dir Encoder" ;
110-
111- hide ( "msgUBX_NAV_SVIN" ) ; //Hide unsupported messages
112- hide ( "msgUBX_RTCM_1005" ) ;
113- hide ( "msgUBX_RTCM_1074" ) ;
114- hide ( "msgUBX_RTCM_1077" ) ;
115- hide ( "msgUBX_RTCM_1084" ) ;
116- hide ( "msgUBX_RTCM_1087" ) ;
117-
118- hide ( "msgUBX_RTCM_1094" ) ;
119- hide ( "msgUBX_RTCM_1097" ) ;
120- hide ( "msgUBX_RTCM_1124" ) ;
121- hide ( "msgUBX_RTCM_1127" ) ;
122- hide ( "msgUBX_RTCM_1230" ) ;
123-
124- hide ( "msgUBX_RTCM_4072_0" ) ;
125- hide ( "msgUBX_RTCM_4072_1" ) ;
126-
127- show ( "msgUBX_ESF_MEAS" ) ;
128- show ( "msgUBX_ESF_RAW" ) ;
129- show ( "msgUBX_ESF_STATUS" ) ;
130- show ( "msgUBX_ESF_ALG" ) ;
131- show ( "msgUBX_ESF_INS" ) ;
132116 }
133117 else if ( platformPrefix == "Facet L-Band" ) {
134118 show ( "baseConfig" ) ;
@@ -248,6 +232,35 @@ function parseIncoming(msg) {
248232 else if ( id . includes ( "fmNext" ) ) {
249233 sendFile ( ) ;
250234 }
235+ else if ( id . includes ( "UBX_" ) ) {
236+ var messageName = id ;
237+ var messageRate = val ;
238+ var messageNameLabel = "" ;
239+
240+ var messageData = messageName . split ( '_' ) ;
241+ if ( messageData . length >= 3 ) {
242+ var messageType = messageData [ 1 ] ; //UBX_RTCM_1074 = RTCM
243+ if ( lastMessageType != messageType ) {
244+ lastMessageType = messageType ;
245+ messageText += "<hr>" ;
246+ }
247+
248+ messageNameLabel = messageData [ 1 ] + "_" + messageData [ 2 ] ; //RTCM_1074
249+ if ( messageData . length == 4 ) {
250+ messageNameLabel = messageData [ 1 ] + "_" + messageData [ 2 ] + "_" + messageData [ 3 ] ; //RTCM_4072_1
251+ }
252+
253+ //Remove Base if seen
254+ messageNameLabel = messageNameLabel . split ( 'Base' ) . join ( '' ) ; //UBX_RTCM_1074Base
255+ }
256+
257+ messageText += "<div class='form-group row' id='msg" + messageName + "'>" ;
258+ messageText += "<label for='" + messageName + "' class='col-sm-4 col-6 col-form-label'>" + messageNameLabel + ":</label>" ;
259+ messageText += "<div class='col-sm-4 col-4'><input type='number' class='form-control'" ;
260+ messageText += "id='" + messageName + "' value='" + messageRate + "'>" ;
261+ messageText += "<p id='" + messageName + "Error' class='inlineError'></p>" ;
262+ messageText += "</div></div>" ;
263+ }
251264 else if ( id . includes ( "checkingNewFirmware" ) ) {
252265 checkingNewFirmware ( ) ;
253266 }
@@ -466,95 +479,11 @@ function validateFields() {
466479 ge ( "ntripClient_TransmitGGA" ) . checked = true ;
467480 }
468481
469- checkMessageValue ( "UBX_NMEA_DTM" ) ;
470- checkMessageValue ( "UBX_NMEA_GBS" ) ;
471- checkMessageValue ( "UBX_NMEA_GGA" ) ;
472- checkMessageValue ( "UBX_NMEA_GLL" ) ;
473- checkMessageValue ( "UBX_NMEA_GNS" ) ;
474-
475- checkMessageValue ( "UBX_NMEA_GRS" ) ;
476- checkMessageValue ( "UBX_NMEA_GSA" ) ;
477- checkMessageValue ( "UBX_NMEA_GST" ) ;
478- checkMessageValue ( "UBX_NMEA_GSV" ) ;
479- checkMessageValue ( "UBX_NMEA_RMC" ) ;
480-
481- checkMessageValue ( "UBX_NMEA_VLW" ) ;
482- checkMessageValue ( "UBX_NMEA_VTG" ) ;
483- checkMessageValue ( "UBX_NMEA_ZDA" ) ;
484-
485- checkMessageValue ( "UBX_NAV_ATT" ) ;
486- checkMessageValue ( "UBX_NAV_CLOCK" ) ;
487- checkMessageValue ( "UBX_NAV_DOP" ) ;
488- checkMessageValue ( "UBX_NAV_EOE" ) ;
489- checkMessageValue ( "UBX_NAV_GEOFENCE" ) ;
490-
491- checkMessageValue ( "UBX_NAV_HPPOSECEF" ) ;
492- checkMessageValue ( "UBX_NAV_HPPOSLLH" ) ;
493- checkMessageValue ( "UBX_NAV_ODO" ) ;
494- checkMessageValue ( "UBX_NAV_ORB" ) ;
495- checkMessageValue ( "UBX_NAV_POSECEF" ) ;
496-
497- checkMessageValue ( "UBX_NAV_POSLLH" ) ;
498- checkMessageValue ( "UBX_NAV_PVT" ) ;
499- checkMessageValue ( "UBX_NAV_RELPOSNED" ) ;
500- checkMessageValue ( "UBX_NAV_SAT" ) ;
501- checkMessageValue ( "UBX_NAV_SIG" ) ;
502-
503- checkMessageValue ( "UBX_NAV_STATUS" ) ;
504- checkMessageValue ( "UBX_NAV_SVIN" ) ;
505- checkMessageValue ( "UBX_NAV_TIMEBDS" ) ;
506- checkMessageValue ( "UBX_NAV_TIMEGAL" ) ;
507- checkMessageValue ( "UBX_NAV_TIMEGLO" ) ;
508-
509- checkMessageValue ( "UBX_NAV_TIMEGPS" ) ;
510- checkMessageValue ( "UBX_NAV_TIMELS" ) ;
511- checkMessageValue ( "UBX_NAV_TIMEUTC" ) ;
512- checkMessageValue ( "UBX_NAV_VELECEF" ) ;
513- checkMessageValue ( "UBX_NAV_VELNED" ) ;
514-
515- checkMessageValue ( "UBX_RXM_MEASX" ) ;
516- checkMessageValue ( "UBX_RXM_RAWX" ) ;
517- checkMessageValue ( "UBX_RXM_RLM" ) ;
518- checkMessageValue ( "UBX_RXM_RTCM" ) ;
519- checkMessageValue ( "UBX_RXM_SFRBX" ) ;
520-
521- checkMessageValue ( "UBX_MON_COMMS" ) ;
522- checkMessageValue ( "UBX_MON_HW2" ) ;
523- checkMessageValue ( "UBX_MON_HW3" ) ;
524- checkMessageValue ( "UBX_MON_HW" ) ;
525- checkMessageValue ( "UBX_MON_IO" ) ;
526-
527- checkMessageValue ( "UBX_MON_MSGPP" ) ;
528- checkMessageValue ( "UBX_MON_RF" ) ;
529- checkMessageValue ( "UBX_MON_RXBUF" ) ;
530- checkMessageValue ( "UBX_MON_RXR" ) ;
531- checkMessageValue ( "UBX_MON_TXBUF" ) ;
532-
533- checkMessageValue ( "UBX_TIM_TM2" ) ;
534- checkMessageValue ( "UBX_TIM_TP" ) ;
535- checkMessageValue ( "UBX_TIM_VRFY" ) ;
536-
537- checkMessageValue ( "UBX_RTCM_1005" ) ;
538- checkMessageValue ( "UBX_RTCM_1074" ) ;
539- checkMessageValue ( "UBX_RTCM_1077" ) ;
540- checkMessageValue ( "UBX_RTCM_1084" ) ;
541- checkMessageValue ( "UBX_RTCM_1087" ) ;
542-
543- checkMessageValue ( "UBX_RTCM_1094" ) ;
544- checkMessageValue ( "UBX_RTCM_1097" ) ;
545- checkMessageValue ( "UBX_RTCM_1124" ) ;
546- checkMessageValue ( "UBX_RTCM_1127" ) ;
547- checkMessageValue ( "UBX_RTCM_1230" ) ;
548-
549- checkMessageValue ( "UBX_RTCM_4072_0" ) ;
550- checkMessageValue ( "UBX_RTCM_4072_1" ) ;
551-
552- if ( platformPrefix == "Express Plus" ) {
553- checkMessageValue ( "UBX_ESF_MEAS" ) ;
554- checkMessageValue ( "UBX_ESF_RAW" ) ;
555- checkMessageValue ( "UBX_ESF_STATUS" ) ;
556- checkMessageValue ( "UBX_ESF_ALG" ) ;
557- checkMessageValue ( "UBX_ESF_INS" ) ;
482+ //Check all UBX message boxes
483+ var ubxMessages = document . querySelectorAll ( 'input[id^=UBX_]' ) ; //match all ids starting with UBX_
484+ for ( let x = 0 ; x < ubxMessages . length ; x ++ ) {
485+ var messageName = ubxMessages [ x ] . id ;
486+ checkMessageValue ( messageName ) ;
558487 }
559488
560489 //Base Config
@@ -663,31 +592,31 @@ function validateFields() {
663592
664593 //Ethernet
665594 if ( platformPrefix == "Reference Station" ) {
666- //if (ge("ethernetDHCP").checked == false) {
667- checkElementIPAddress ( "ethernetIP" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
668- checkElementIPAddress ( "ethernetDNS" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
669- checkElementIPAddress ( "ethernetGateway" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
670- checkElementIPAddress ( "ethernetSubnet" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
671- checkElementValue ( "ethernetHttpPort" , 0 , 65535 , "Must be 0 to 65535" , "collapseEthernetConfig" ) ;
672- checkElementValue ( "ethernetNtpPort" , 0 , 65535 , "Must be 0 to 65535" , "collapseEthernetConfig" ) ;
673- //}
674- //else {
675- // clearElement("ethernetIP", "192.168.0.123");
676- // clearElement("ethernetDNS", "192.168.4.100");
677- // clearElement("ethernetGateway", "192.168.0.1");
678- // clearElement("ethernetSubnet", "255.255.255.0");
679- // clearElement("ethernetHttpPort", 80);
680- // clearElement("ethernetNtpPort", 123);
681- //}
595+ //if (ge("ethernetDHCP").checked == false) {
596+ checkElementIPAddress ( "ethernetIP" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
597+ checkElementIPAddress ( "ethernetDNS" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
598+ checkElementIPAddress ( "ethernetGateway" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
599+ checkElementIPAddress ( "ethernetSubnet" , "Must be nnn.nnn.nnn.nnn" , "collapseEthernetConfig" ) ;
600+ checkElementValue ( "ethernetHttpPort" , 0 , 65535 , "Must be 0 to 65535" , "collapseEthernetConfig" ) ;
601+ checkElementValue ( "ethernetNtpPort" , 0 , 65535 , "Must be 0 to 65535" , "collapseEthernetConfig" ) ;
602+ //}
603+ //else {
604+ // clearElement("ethernetIP", "192.168.0.123");
605+ // clearElement("ethernetDNS", "192.168.4.100");
606+ // clearElement("ethernetGateway", "192.168.0.1");
607+ // clearElement("ethernetSubnet", "255.255.255.0");
608+ // clearElement("ethernetHttpPort", 80);
609+ // clearElement("ethernetNtpPort", 123);
610+ //}
682611 }
683612
684613 //NTP
685614 if ( platformPrefix == "Reference Station" ) {
686- checkElementValue ( "ntpPollExponent" , 3 , 17 , "Must be 3 to 17" , "collapseNTPConfig" ) ;
687- checkElementValue ( "ntpPrecision" , - 30 , 0 , "Must be -30 to 0" , "collapseNTPConfig" ) ;
688- checkElementValue ( "ntpRootDelay" , 0 , 10000000 , "Must be 0 to 10,000,000" , "collapseNTPConfig" ) ;
689- checkElementValue ( "ntpRootDispersion" , 0 , 10000000 , "Must be 0 to 10,000,000" , "collapseNTPConfig" ) ;
690- checkElementString ( "ntpReferenceId" , 1 , 4 , "Must be 1 to 4 chars" , "collapseNTPConfig" ) ;
615+ checkElementValue ( "ntpPollExponent" , 3 , 17 , "Must be 3 to 17" , "collapseNTPConfig" ) ;
616+ checkElementValue ( "ntpPrecision" , - 30 , 0 , "Must be -30 to 0" , "collapseNTPConfig" ) ;
617+ checkElementValue ( "ntpRootDelay" , 0 , 10000000 , "Must be 0 to 10,000,000" , "collapseNTPConfig" ) ;
618+ checkElementValue ( "ntpRootDispersion" , 0 , 10000000 , "Must be 0 to 10,000,000" , "collapseNTPConfig" ) ;
619+ checkElementString ( "ntpReferenceId" , 1 , 4 , "Must be 1 to 4 chars" , "collapseNTPConfig" ) ;
691620 }
692621
693622 //Port Config
@@ -872,12 +801,11 @@ function checkElementString(id, min, max, errorText, collapseID) {
872801function checkElementIPAddress ( id , errorText , collapseID ) {
873802 value = ge ( id ) . value ;
874803 var data = value . split ( '.' ) ;
875- if ( ( data . length != 4 )
804+ if ( ( data . length != 4 )
876805 || ( ( data [ 0 ] == "" ) || ( isNaN ( Number ( data [ 0 ] ) ) ) || ( data [ 0 ] < 0 ) || ( data [ 0 ] > 255 ) )
877806 || ( ( data [ 1 ] == "" ) || ( isNaN ( Number ( data [ 1 ] ) ) ) || ( data [ 1 ] < 0 ) || ( data [ 1 ] > 255 ) )
878807 || ( ( data [ 2 ] == "" ) || ( isNaN ( Number ( data [ 2 ] ) ) ) || ( data [ 2 ] < 0 ) || ( data [ 2 ] > 255 ) )
879- || ( ( data [ 3 ] == "" ) || ( isNaN ( Number ( data [ 3 ] ) ) ) || ( data [ 3 ] < 0 ) || ( data [ 3 ] > 255 ) ) )
880- {
808+ || ( ( data [ 3 ] == "" ) || ( isNaN ( Number ( data [ 3 ] ) ) ) || ( data [ 3 ] < 0 ) || ( data [ 3 ] > 255 ) ) ) {
881809 ge ( id + 'Error' ) . innerHTML = 'Error: ' + errorText ;
882810 ge ( collapseID ) . classList . add ( 'show' ) ;
883811 errorCount ++ ;
@@ -909,94 +837,12 @@ function zeroElement(id) {
909837}
910838
911839function zeroMessages ( ) {
912- zeroElement ( "UBX_NMEA_DTM" ) ;
913- zeroElement ( "UBX_NMEA_GBS" ) ;
914- zeroElement ( "UBX_NMEA_GGA" ) ;
915- zeroElement ( "UBX_NMEA_GLL" ) ;
916- zeroElement ( "UBX_NMEA_GNS" ) ;
917-
918- zeroElement ( "UBX_NMEA_GRS" ) ;
919- zeroElement ( "UBX_NMEA_GSA" ) ;
920- zeroElement ( "UBX_NMEA_GST" ) ;
921- zeroElement ( "UBX_NMEA_GSV" ) ;
922- zeroElement ( "UBX_NMEA_RMC" ) ;
923-
924- zeroElement ( "UBX_NMEA_VLW" ) ;
925- zeroElement ( "UBX_NMEA_VTG" ) ;
926- zeroElement ( "UBX_NMEA_ZDA" ) ;
927-
928- zeroElement ( "UBX_NAV_ATT" ) ;
929- zeroElement ( "UBX_NAV_CLOCK" ) ;
930- zeroElement ( "UBX_NAV_DOP" ) ;
931- zeroElement ( "UBX_NAV_EOE" ) ;
932- zeroElement ( "UBX_NAV_GEOFENCE" ) ;
933-
934- zeroElement ( "UBX_NAV_HPPOSECEF" ) ;
935- zeroElement ( "UBX_NAV_HPPOSLLH" ) ;
936- zeroElement ( "UBX_NAV_ODO" ) ;
937- zeroElement ( "UBX_NAV_ORB" ) ;
938- zeroElement ( "UBX_NAV_POSECEF" ) ;
939-
940- zeroElement ( "UBX_NAV_POSLLH" ) ;
941- zeroElement ( "UBX_NAV_PVT" ) ;
942- zeroElement ( "UBX_NAV_RELPOSNED" ) ;
943- zeroElement ( "UBX_NAV_SAT" ) ;
944- zeroElement ( "UBX_NAV_SIG" ) ;
945-
946- zeroElement ( "UBX_NAV_STATUS" ) ;
947- zeroElement ( "UBX_NAV_SVIN" ) ;
948- zeroElement ( "UBX_NAV_TIMEBDS" ) ;
949- zeroElement ( "UBX_NAV_TIMEGAL" ) ;
950- zeroElement ( "UBX_NAV_TIMEGLO" ) ;
951-
952- zeroElement ( "UBX_NAV_TIMEGPS" ) ;
953- zeroElement ( "UBX_NAV_TIMELS" ) ;
954- zeroElement ( "UBX_NAV_TIMEUTC" ) ;
955- zeroElement ( "UBX_NAV_VELECEF" ) ;
956- zeroElement ( "UBX_NAV_VELNED" ) ;
957-
958- zeroElement ( "UBX_RXM_MEASX" ) ;
959- zeroElement ( "UBX_RXM_RAWX" ) ;
960- zeroElement ( "UBX_RXM_RLM" ) ;
961- zeroElement ( "UBX_RXM_RTCM" ) ;
962- zeroElement ( "UBX_RXM_SFRBX" ) ;
963-
964- zeroElement ( "UBX_MON_COMMS" ) ;
965- zeroElement ( "UBX_MON_HW2" ) ;
966- zeroElement ( "UBX_MON_HW3" ) ;
967- zeroElement ( "UBX_MON_HW" ) ;
968- zeroElement ( "UBX_MON_IO" ) ;
969-
970- zeroElement ( "UBX_MON_MSGPP" ) ;
971- zeroElement ( "UBX_MON_RF" ) ;
972- zeroElement ( "UBX_MON_RXBUF" ) ;
973- zeroElement ( "UBX_MON_RXR" ) ;
974- zeroElement ( "UBX_MON_TXBUF" ) ;
975-
976- zeroElement ( "UBX_TIM_TM2" ) ;
977- zeroElement ( "UBX_TIM_TP" ) ;
978- zeroElement ( "UBX_TIM_VRFY" ) ;
979-
980- zeroElement ( "UBX_RTCM_1005" ) ;
981- zeroElement ( "UBX_RTCM_1074" ) ;
982- zeroElement ( "UBX_RTCM_1077" ) ;
983- zeroElement ( "UBX_RTCM_1084" ) ;
984- zeroElement ( "UBX_RTCM_1087" ) ;
985-
986- zeroElement ( "UBX_RTCM_1094" ) ;
987- zeroElement ( "UBX_RTCM_1097" ) ;
988- zeroElement ( "UBX_RTCM_1124" ) ;
989- zeroElement ( "UBX_RTCM_1127" ) ;
990- zeroElement ( "UBX_RTCM_1230" ) ;
991-
992- zeroElement ( "UBX_RTCM_4072_0" ) ;
993- zeroElement ( "UBX_RTCM_4072_1" ) ;
994-
995- zeroElement ( "UBX_ESF_MEAS" ) ;
996- zeroElement ( "UBX_ESF_RAW" ) ;
997- zeroElement ( "UBX_ESF_STATUS" ) ;
998- zeroElement ( "UBX_ESF_ALG" ) ;
999- zeroElement ( "UBX_ESF_INS" ) ;
840+
841+ var ubxMessages = document . querySelectorAll ( 'input[id^=UBX_]' ) ; //match all ids starting with UBX_
842+ for ( let x = 0 ; x < ubxMessages . length ; x ++ ) {
843+ var messageName = ubxMessages [ x ] . id ;
844+ zeroElement ( messageName ) ;
845+ }
1000846}
1001847function resetToNmeaDefaults ( ) {
1002848 zeroMessages ( ) ;
@@ -1547,6 +1393,40 @@ function getFileList() {
15471393 }
15481394}
15491395
1396+ function getMessageList ( ) {
1397+ if ( obtainedMessageList == false ) {
1398+ obtainedMessageList = true ;
1399+
1400+ ge ( "messageList" ) . innerHTML = "" ;
1401+ messageText = "" ;
1402+
1403+ xmlhttp = new XMLHttpRequest ( ) ;
1404+ xmlhttp . open ( "GET" , "/listMessages" , false ) ;
1405+ xmlhttp . send ( ) ;
1406+
1407+ parseIncoming ( xmlhttp . responseText ) ; //Process CSV data into HTML
1408+
1409+ ge ( "messageList" ) . innerHTML += messageText ;
1410+ }
1411+ }
1412+
1413+ function getMessageListBase ( ) {
1414+ if ( obtainedMessageListBase == false ) {
1415+ obtainedMessageListBase = true ;
1416+
1417+ ge ( "messageListBase" ) . innerHTML = "" ;
1418+ messageText = "" ;
1419+
1420+ xmlhttp = new XMLHttpRequest ( ) ;
1421+ xmlhttp . open ( "GET" , "/listMessagesBase" , false ) ;
1422+ xmlhttp . send ( ) ;
1423+
1424+ parseIncoming ( xmlhttp . responseText ) ; //Process CSV data into HTML
1425+
1426+ ge ( "messageListBase" ) . innerHTML += messageText ;
1427+ }
1428+ }
1429+
15501430function fileManagerDownload ( ) {
15511431 selectedFiles = document . querySelectorAll ( 'input[name=fileID]:checked' ) ;
15521432 numberOfFilesSelected = document . querySelectorAll ( 'input[name=fileID]:checked' ) . length ;
@@ -1887,7 +1767,7 @@ function convertInput(coordinate, coordinateInputType) {
18871767 var coordinateString = "" ;
18881768
18891769 if ( coordinateInputType == CoordinateTypes . COORDINATE_INPUT_TYPE_DD ) {
1890- coordinate = coordinate . toFixed ( 9 ) ;
1770+ coordinate = Number ( coordinate ) . toFixed ( 9 ) ;
18911771 return ( coordinate ) ;
18921772 }
18931773 else if ( coordinateInputType == CoordinateTypes . COORDINATE_INPUT_TYPE_DD_MM
0 commit comments