@@ -309,6 +309,7 @@ OSD.initData = function() {
309309 video_system : null ,
310310 unit_mode : null ,
311311 alarms : [ ] ,
312+ car : [ ] ,
312313 statItems : [ ] ,
313314 warnings : [ ] ,
314315 displayItems : [ ] ,
@@ -2208,6 +2209,7 @@ OSD.msp = {
22082209 result . push16 ( OSD . data . alarms . cap . value ) ;
22092210 result . push16 ( 0 ) ; // This value is unused by the firmware with configurable timers
22102211 result . push16 ( OSD . data . alarms . alt . value ) ;
2212+
22112213
22122214 let warningFlags = 0 ;
22132215 for ( let i = 0 ; i < OSD . data . warnings . length ; i ++ ) {
@@ -2232,6 +2234,19 @@ OSD.msp = {
22322234 result . push8 ( OSD . data . parameters . cameraFrameWidth ) ;
22332235 result . push8 ( OSD . data . parameters . cameraFrameHeight ) ;
22342236 }
2237+ if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_46 ) ) {
2238+ result . push8 ( OSD . data . car . scale . value ) ;
2239+ result . push8 ( OSD . data . car . width . value ) ;
2240+ result . push8 ( OSD . data . car . channel . value ) ;
2241+ result . push8 ( OSD . data . car . dots . value ) ;
2242+
2243+ result . push8 ( OSD . data . car . sbar_scale . value ) ;
2244+ result . push8 ( OSD . data . car . sbar_low . value ) ;
2245+ result . push8 ( OSD . data . car . sbar_mid_low . value ) ;
2246+ result . push8 ( OSD . data . car . sbar_mid . value ) ;
2247+ result . push8 ( OSD . data . car . sbar_mid_high . value ) ;
2248+ result . push8 ( OSD . data . car . sbar_high . value ) ;
2249+ }
22352250 }
22362251 return result ;
22372252 } ,
@@ -2324,7 +2339,7 @@ OSD.msp = {
23242339 d . alarms [ 'alt' ] = { display_name : i18n . getMessage ( 'osdTimerAlarmOptionAltitude' ) , value : view . readU16 ( ) } ;
23252340 }
23262341 }
2327-
2342+
23282343 d . state = { } ;
23292344 d . state . haveSomeOsd = ( d . flags !== 0 ) ;
23302345 d . state . haveMax7456Configured = bit_check ( d . flags , 4 ) ;
@@ -2444,6 +2459,22 @@ OSD.msp = {
24442459 d . parameters . cameraFrameHeight = view . readU8 ( ) ;
24452460 }
24462461
2462+ if ( semver . gte ( FC . CONFIG . apiVersion , API_VERSION_1_46 ) ) {
2463+ d . car = { } ;
2464+ d . car [ 'scale' ] = { display_name : i18n . getMessage ( 'osdCarOptionScale' ) , value : view . readU8 ( ) } ;
2465+ d . car [ 'width' ] = { display_name : i18n . getMessage ( 'osdCarOptionWidth' ) , value : view . readU8 ( ) } ;
2466+ d . car [ 'channel' ] = { display_name : i18n . getMessage ( 'osdCarOptionChannel' ) , value : view . readU8 ( ) } ;
2467+ d . car [ 'dots' ] = { display_name : i18n . getMessage ( 'osdCarOptionDots' ) , value : view . readU8 ( ) } ;
2468+
2469+ d . car [ 'sbar_scale' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarScale' ) , value : view . readU8 ( ) } ;
2470+ d . car [ 'sbar_low' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarLow' ) , value : view . readU8 ( ) } ;
2471+ d . car [ 'sbar_mid_low' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarMidLow' ) , value : view . readU8 ( ) } ;
2472+ d . car [ 'sbar_mid' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarMid' ) , value : view . readU8 ( ) } ;
2473+ d . car [ 'sbar_mid_high' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarMidHigh' ) , value : view . readU8 ( ) } ;
2474+ d . car [ 'sbar_high' ] = { display_name : i18n . getMessage ( 'osdCarOptionSbarHigh' ) , value : view . readU8 ( ) } ;
2475+
2476+ }
2477+
24472478 this . processOsdElements ( d , itemsPositionsRead ) ;
24482479
24492480 OSD . updateDisplaySize ( ) ;
@@ -2704,6 +2735,7 @@ osd.initialize = function(callback) {
27042735 $ ( '.units-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpUnits' ) ) ;
27052736 $ ( '.timers-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpTimers' ) ) ;
27062737 $ ( '.alarms-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpAlarms' ) ) ;
2738+ $ ( '.car-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpCar' ) ) ;
27072739 $ ( '.stats-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpStats' ) ) ;
27082740 $ ( '.warnings-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpWarnings' ) ) ;
27092741
@@ -2822,6 +2854,22 @@ osd.initialize = function(callback) {
28222854 $alarms . append ( $input ) ;
28232855 }
28242856
2857+ // Camera Angle Reference
2858+ $ ( '.car-container' ) . show ( ) ;
2859+ const $car = $ ( '.car' ) . empty ( ) ;
2860+ for ( const k in OSD . data . car ) {
2861+ const car = OSD . data . car [ k ] ;
2862+ const carInput = $ ( `<input name="car" type="number" id="${ k } "/>${ car . display_name } </label>` ) ;
2863+ carInput . val ( car . value ) ;
2864+ carInput . focusout ( function ( ) {
2865+ OSD . data . car [ $ ( this ) [ 0 ] . id ] . value = $ ( this ) [ 0 ] . value ;
2866+ MSP . promise ( MSPCodes . MSP_SET_OSD_CONFIG , OSD . msp . encodeOther ( ) )
2867+ . then ( updateOsdView ) ;
2868+ } ) ;
2869+ const $input = $ ( '<label/>' ) . append ( carInput ) ;
2870+ $car . append ( $input ) ;
2871+ }
2872+
28252873 // Timers
28262874 $ ( '.timers-container' ) . show ( ) ;
28272875 const $timers = $ ( '#timer-fields' ) . empty ( ) ;
0 commit comments