@@ -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 : [ ] ,
@@ -1536,6 +1537,24 @@ OSD.loadDisplayFields = function() {
15361537 positionable : true ,
15371538 preview : '1:23.456' ,
15381539 } ,
1540+ CAM_ANGLE_REFERENCE : {
1541+ name : 'CAM_ANGLE_REFERENCE' ,
1542+ text : 'osdTextElementCameraAngleReference' ,
1543+ desc : 'osdDescElementCameraAngleReference' ,
1544+ defaultPosition : - 1 ,
1545+ draw_order : 555 ,
1546+ positionable : true ,
1547+ preview : '***CAR***' ,
1548+ } ,
1549+ CAM_ANGLE_REFERENCE_SBAR : {
1550+ name : 'CAM_ANGLE_REFERENCE_SBAR' ,
1551+ text : 'osdTextElementCameraAngleReferenceSidebar' ,
1552+ desc : 'osdDescElementCameraAngleReferenceSidebar' ,
1553+ defaultPosition : - 1 ,
1554+ draw_order : 560 ,
1555+ positionable : true ,
1556+ preview : '***SBR***||' ,
1557+ } ,
15391558 } ;
15401559} ;
15411560
@@ -1970,6 +1989,8 @@ OSD.chooseFields = function() {
19701989 F . GPS_LAP_TIME_CURRENT ,
19711990 F . GPS_LAP_TIME_PREVIOUS ,
19721991 F . GPS_LAP_TIME_BEST3 ,
1992+ F . CAM_ANGLE_REFERENCE ,
1993+ F . CAM_ANGLE_REFERENCE_SBAR ,
19731994 ] ) ;
19741995 }
19751996
@@ -2188,6 +2209,7 @@ OSD.msp = {
21882209 result . push16 ( OSD . data . alarms . cap . value ) ;
21892210 result . push16 ( 0 ) ; // This value is unused by the firmware with configurable timers
21902211 result . push16 ( OSD . data . alarms . alt . value ) ;
2212+
21912213
21922214 let warningFlags = 0 ;
21932215 for ( let i = 0 ; i < OSD . data . warnings . length ; i ++ ) {
@@ -2212,6 +2234,19 @@ OSD.msp = {
22122234 result . push8 ( OSD . data . parameters . cameraFrameWidth ) ;
22132235 result . push8 ( OSD . data . parameters . cameraFrameHeight ) ;
22142236 }
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+ }
22152250 }
22162251 return result ;
22172252 } ,
@@ -2304,7 +2339,7 @@ OSD.msp = {
23042339 d . alarms [ 'alt' ] = { display_name : i18n . getMessage ( 'osdTimerAlarmOptionAltitude' ) , value : view . readU16 ( ) } ;
23052340 }
23062341 }
2307-
2342+
23082343 d . state = { } ;
23092344 d . state . haveSomeOsd = ( d . flags !== 0 ) ;
23102345 d . state . haveMax7456Configured = bit_check ( d . flags , 4 ) ;
@@ -2424,6 +2459,22 @@ OSD.msp = {
24242459 d . parameters . cameraFrameHeight = view . readU8 ( ) ;
24252460 }
24262461
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+
24272478 this . processOsdElements ( d , itemsPositionsRead ) ;
24282479
24292480 OSD . updateDisplaySize ( ) ;
@@ -2684,6 +2735,7 @@ osd.initialize = function(callback) {
26842735 $ ( '.units-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpUnits' ) ) ;
26852736 $ ( '.timers-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpTimers' ) ) ;
26862737 $ ( '.alarms-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpAlarms' ) ) ;
2738+ $ ( '.car-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpCar' ) ) ;
26872739 $ ( '.stats-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpStats' ) ) ;
26882740 $ ( '.warnings-container div.cf_tip' ) . attr ( 'title' , i18n . getMessage ( 'osdSectionHelpWarnings' ) ) ;
26892741
@@ -2802,6 +2854,22 @@ osd.initialize = function(callback) {
28022854 $alarms . append ( $input ) ;
28032855 }
28042856
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+
28052873 // Timers
28062874 $ ( '.timers-container' ) . show ( ) ;
28072875 const $timers = $ ( '#timer-fields' ) . empty ( ) ;
0 commit comments