@@ -22,6 +22,14 @@ MWNP.WPTYPE = {
2222 LAND : 8
2323} ;
2424
25+ MWNP . P3 = {
26+ ALT_TYPE : 0 , // Altitude (alt) : Relative (to home altitude) (0) or Absolute (AMSL) (1).
27+ USER_ACTION_1 : 1 , // WP Action 1
28+ USER_ACTION_2 : 2 , // WP Action 2
29+ USER_ACTION_3 : 3 , // WP Action 3
30+ USER_ACTION_4 : 4 , // WP Action 4
31+ }
32+
2533// Reverse WayPoint type dictionary
2634function swap ( dict ) {
2735 let rev_dict = { } ;
@@ -46,7 +54,6 @@ var dictOfLabelParameterPoint = {
4654} ;
4755
4856var waypointOptions = [ 'JUMP' , 'SET_HEAD' , 'RTH' ] ;
49- var initParam3 = 0 ;
5057
5158////////////////////////////////////
5259//
@@ -1809,13 +1816,21 @@ TABS.mission_control.initialize = function (callback) {
18091816
18101817 selectedFeature . setStyle ( getWaypointIcon ( selectedMarker , true ) ) ;
18111818
1819+ let P3Value = selectedMarker . getP3 ( ) ;
1820+
1821+ changeSwitchery ( $ ( '#pointP3Alt' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . ALT_TYPE ) ) ;
1822+ changeSwitchery ( $ ( '#pointP3UserAction1' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . USER_ACTION_1 ) ) ;
1823+ changeSwitchery ( $ ( '#pointP3UserAction2' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . USER_ACTION_2 ) ) ;
1824+ changeSwitchery ( $ ( '#pointP3UserAction3' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . USER_ACTION_3 ) ) ;
1825+ changeSwitchery ( $ ( '#pointP3UserAction4' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . USER_ACTION_4 ) ) ;
1826+
18121827 var altitudeMeters = app . ConvertCentimetersToMeters ( selectedMarker . getAlt ( ) ) ;
18131828
18141829 if ( tempSelectedMarkerIndex == null || tempSelectedMarkerIndex != selectedMarker . getLayerNumber ( ) ) {
18151830 ( async ( ) => {
18161831 const elevationAtWP = await selectedMarker . getElevation ( globalSettings ) ;
18171832 $ ( '#elevationValueAtWP' ) . text ( elevationAtWP ) ;
1818- const returnAltitude = checkAltElevSanity ( false , selectedMarker . getAlt ( ) , elevationAtWP , selectedMarker . getP3 ( ) ) ;
1833+ const returnAltitude = checkAltElevSanity ( false , selectedMarker . getAlt ( ) , elevationAtWP , P3Value ) ;
18191834 selectedMarker . setAlt ( returnAltitude ) ;
18201835 plotElevation ( ) ;
18211836 } ) ( )
@@ -1832,15 +1847,6 @@ TABS.mission_control.initialize = function (callback) {
18321847 $ ( '#pointP1' ) . val ( selectedMarker . getP1 ( ) ) ;
18331848 $ ( '#pointP2' ) . val ( selectedMarker . getP2 ( ) ) ;
18341849
1835- let P3Value = selectedMarker . getP3 ( ) ;
1836- initParam3 = 0 ; // Reset init bits for P3 before setting up checkboxes
1837-
1838- changeSwitchery ( $ ( '#pointP3Alt' ) , TABS . mission_control . isBitSet ( P3Value , 0 ) ) ;
1839- changeSwitchery ( $ ( '#pointP3UserAction1' ) , TABS . mission_control . isBitSet ( P3Value , 1 ) ) ;
1840- changeSwitchery ( $ ( '#pointP3UserAction2' ) , TABS . mission_control . isBitSet ( P3Value , 2 ) ) ;
1841- changeSwitchery ( $ ( '#pointP3UserAction3' ) , TABS . mission_control . isBitSet ( P3Value , 3 ) ) ;
1842- changeSwitchery ( $ ( '#pointP3UserAction4' ) , TABS . mission_control . isBitSet ( P3Value , 4 ) ) ;
1843- initParam3 = 31 ; // Set all bits for above P3 params to true, after setting checkboxes
18441850
18451851 // Selection box update depending on choice of type of waypoint
18461852 for ( var j in dictOfLabelParameterPoint [ selectedMarker . getAction ( ) ] ) {
@@ -1862,7 +1868,7 @@ TABS.mission_control.initialize = function (callback) {
18621868 if ( homeMarkers . length && HOME . getAlt ( ) != "N/A" ) {
18631869 ( async ( ) => {
18641870 const elevationAtWP = await tempWp . getElevation ( globalSettings ) ;
1865- tempWp . setAlt ( checkAltElevSanity ( false , settings . alt , elevationAtWP , 0 ) ) ;
1871+ tempWp . setAlt ( checkAltElevSanity ( false , settings . alt , elevationAtWP , false ) ) ;
18661872
18671873 mission . insertWaypoint ( tempWp , tempMarker . number ) ;
18681874 mission . update ( singleMissionActive ( ) ) ;
@@ -1897,7 +1903,7 @@ TABS.mission_control.initialize = function (callback) {
18971903 if ( homeMarkers . length && HOME . getAlt ( ) != "N/A" ) {
18981904 ( async ( ) => {
18991905 const elevationAtWP = await tempWp . getElevation ( globalSettings ) ;
1900- tempWp . setAlt ( checkAltElevSanity ( false , settings . alt , elevationAtWP , 0 ) ) ;
1906+ tempWp . setAlt ( checkAltElevSanity ( false , settings . alt , elevationAtWP , false ) ) ;
19011907
19021908 mission . put ( tempWp ) ;
19031909 mission . update ( singleMissionActive ( ) ) ;
@@ -2110,19 +2116,17 @@ TABS.mission_control.initialize = function (callback) {
21102116 P3Value = selectedMarker . getP3 ( ) ;
21112117
21122118 if ( disableMarkerEdit ) {
2113- changeSwitchery ( $ ( '#pointP3Alt' ) , TABS . mission_control . isBitSet ( P3Value , 0 ) ) ;
2119+ changeSwitchery ( $ ( '#pointP3Alt' ) , TABS . mission_control . isBitSet ( P3Value , MWNP . P3 . ALT_TYPE ) ) ;
21142120 }
21152121
2116- P3Value = TABS . mission_control . setBit ( P3Value , 0 , $ ( '#pointP3Alt' ) . prop ( "checked" ) ) ;
2117- selectedMarker . setP3 ( P3Value ) ;
2118-
2119- P3Value = TABS . mission_control . setBit ( P3Value , 0 , $ ( '#pointP3Alt' ) . prop ( "checked" ) ) ;
2120- selectedMarker . setP3 ( P3Value ) ;
2122+ P3Value = TABS . mission_control . setBit ( P3Value , MWNP . P3 . ALT_TYPE , $ ( '#pointP3Alt' ) . prop ( "checked" ) ) ;
21212123 ( async ( ) => {
21222124 const elevationAtWP = await selectedMarker . getElevation ( globalSettings ) ;
21232125 $ ( '#elevationValueAtWP' ) . text ( elevationAtWP ) ;
21242126 var altitude = Number ( $ ( '#pointAlt' ) . val ( ) ) ;
21252127 if ( P3Value != selectedMarker . getP3 ( ) ) {
2128+ selectedMarker . setP3 ( P3Value ) ;
2129+
21262130 if ( $ ( '#pointP3Alt' ) . prop ( "checked" ) ) {
21272131 if ( altitude < 0 ) {
21282132 altitude = settings . alt ;
@@ -2149,10 +2153,10 @@ TABS.mission_control.initialize = function (callback) {
21492153 $ ( '#pointP3UserAction1' ) . on ( 'change' , function ( event ) {
21502154 if ( selectedMarker ) {
21512155 if ( disableMarkerEdit ) {
2152- changeSwitchery ( $ ( '#pointP3UserAction1' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , 1 ) ) ;
2156+ changeSwitchery ( $ ( '#pointP3UserAction1' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_1 ) ) ;
21532157 }
21542158
2155- P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , 1 , $ ( '#pointP3UserAction1' ) . prop ( "checked" ) ) ;
2159+ P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_1 , $ ( '#pointP3UserAction1' ) . prop ( "checked" ) ) ;
21562160 selectedMarker . setP3 ( P3Value ) ;
21572161
21582162 mission . updateWaypoint ( selectedMarker ) ;
@@ -2164,10 +2168,10 @@ TABS.mission_control.initialize = function (callback) {
21642168 $ ( '#pointP3UserAction2' ) . on ( 'change' , function ( event ) {
21652169 if ( selectedMarker ) {
21662170 if ( disableMarkerEdit ) {
2167- changeSwitchery ( $ ( '#pointP3UserAction2' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , 2 ) ) ;
2171+ changeSwitchery ( $ ( '#pointP3UserAction2' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_2 ) ) ;
21682172 }
21692173
2170- P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , 2 , $ ( '#pointP3UserAction2' ) . prop ( "checked" ) ) ;
2174+ P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_2 , $ ( '#pointP3UserAction2' ) . prop ( "checked" ) ) ;
21712175 selectedMarker . setP3 ( P3Value ) ;
21722176
21732177 mission . updateWaypoint ( selectedMarker ) ;
@@ -2179,10 +2183,10 @@ TABS.mission_control.initialize = function (callback) {
21792183 $ ( '#pointP3UserAction3' ) . on ( 'change' , function ( event ) {
21802184 if ( selectedMarker ) {
21812185 if ( disableMarkerEdit ) {
2182- changeSwitchery ( $ ( '#pointP3UserAction3' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , 3 ) ) ;
2186+ changeSwitchery ( $ ( '#pointP3UserAction3' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_3 ) ) ;
21832187 }
21842188
2185- P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , 3 , $ ( '#pointP3UserAction3' ) . prop ( "checked" ) ) ;
2189+ P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_3 , $ ( '#pointP3UserAction3' ) . prop ( "checked" ) ) ;
21862190 selectedMarker . setP3 ( P3Value ) ;
21872191
21882192 mission . updateWaypoint ( selectedMarker ) ;
@@ -2194,10 +2198,10 @@ TABS.mission_control.initialize = function (callback) {
21942198 $ ( '#pointP3UserAction4' ) . on ( 'change' , function ( event ) {
21952199 if ( selectedMarker ) {
21962200 if ( disableMarkerEdit ) {
2197- changeSwitchery ( $ ( '#pointP3UserAction4' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , 4 ) ) ;
2201+ changeSwitchery ( $ ( '#pointP3UserAction4' ) , TABS . mission_control . isBitSet ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_4 ) ) ;
21982202 }
21992203
2200- P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , 4 , $ ( '#pointP3UserAction4' ) . prop ( "checked" ) ) ;
2204+ P3Value = TABS . mission_control . setBit ( selectedMarker . getP3 ( ) , MWNP . P3 . USER_ACTION_4 , $ ( '#pointP3UserAction4' ) . prop ( "checked" ) ) ;
22012205 selectedMarker . setP3 ( P3Value ) ;
22022206
22032207 mission . updateWaypoint ( selectedMarker ) ;
@@ -2410,7 +2414,7 @@ TABS.mission_control.initialize = function (callback) {
24102414
24112415 if ( markers . length && ! confirm ( chrome . i18n . getMessage ( 'confirm_delete_all_points' ) ) ) return ;
24122416 nwdialog . setContext ( document ) ;
2413- nwdialog . openFileDialog ( function ( result ) {
2417+ nwdialog . openFileDialog ( '.mission' , function ( result ) {
24142418 loadMissionFile ( result ) ;
24152419 } )
24162420 } ) ;
@@ -2805,11 +2809,14 @@ TABS.mission_control.initialize = function (callback) {
28052809 }
28062810
28072811 /* resetAltitude = true : For selected WPs only. Changes WP Altitude value back to previous value if setting below ground level.
2808- ^ resetAltitude = false : changes WP Altitude to value required to give ground clearance = default Altitude setting */
2809- function checkAltElevSanity ( resetAltitude , checkAltitude , elevation , P3Datum ) {
2812+ ^ resetAltitude = false : changes WP Altitude to value required to give ground clearance = default Altitude setting
2813+ ^ AbsAltCheck : check value for whether or not to use absolute altitude. This can be the P3 bitset or excplicitly set to true or false */
2814+ function checkAltElevSanity ( resetAltitude , checkAltitude , elevation , AbsAltCheck ) {
28102815 let groundClearance = "NO HOME" ;
28112816 let altitude = checkAltitude ;
2812- if ( P3Datum ) {
2817+ AbsAltCheck = ( typeof AbsAltCheck == "boolean" ) ? AbsAltCheck : TABS . mission_control . isBitSet ( AbsAltCheck , MWNP . P3 . ALT_TYPE ) ;
2818+
2819+ if ( AbsAltCheck ) {
28132820 if ( checkAltitude < 100 * elevation ) {
28142821 if ( resetAltitude ) {
28152822 alert ( chrome . i18n . getMessage ( 'MissionPlannerAltitudeChangeReset' ) ) ;
@@ -2941,11 +2948,7 @@ TABS.mission_control.isBitSet = function(bits, testBit) {
29412948}
29422949
29432950TABS . mission_control . setBit = function ( bits , bit , value ) {
2944- if ( ( initParam3 & ( 1 << bit ) ) != 0 ) {
2945- bits &= ~ ( 0 << bit ) ;
2946- bits |= ( value << bit ) ;
2947- }
2948- return bits ;
2951+ return value ? bits |= ( 1 << bit ) : bits &= ~ ( 1 << bit ) ;
29492952}
29502953
29512954// window.addEventListener("error", handleError, true);
0 commit comments