Skip to content

Commit 72c2e99

Browse files
committed
Adding UI in OSD tab to changes CLI values
1 parent 6fe7b76 commit 72c2e99

File tree

5 files changed

+139
-2
lines changed

5 files changed

+139
-2
lines changed

Diff for: locales/en/messages.json

+46-1
Original file line numberDiff line numberDiff line change
@@ -5110,6 +5110,9 @@
51105110
"osdSetupAlarmsTitle": {
51115111
"message": "Alarms"
51125112
},
5113+
"osdSetupCarTitle": {
5114+
"message": "Camera Angle Reference"
5115+
},
51135116
"osdSetupStatsTitle": {
51145117
"message": "Post Flight Statistics"
51155118
},
@@ -6178,7 +6181,46 @@
61786181
"message": "Altitude",
61796182
"description": "Text of the altitude alarm"
61806183
},
6181-
6184+
"osdCarOptionScale": {
6185+
"message": "Scale",
6186+
"description": "Scale"
6187+
},
6188+
"osdCarOptionWidth": {
6189+
"message": "Width",
6190+
"description": "Width"
6191+
},
6192+
"osdCarOptionChannel": {
6193+
"message": "Channel",
6194+
"description": "Channel"
6195+
},
6196+
"osdCarOptionDots": {
6197+
"message": "Dots",
6198+
"description": "Dots"
6199+
},
6200+
"osdCarOptionSbarScale": {
6201+
"message": "Sidebar Scale",
6202+
"description": "Sidebar Scale"
6203+
},
6204+
"osdCarOptionSbarLow": {
6205+
"message": "Sidebar Angle 1/5",
6206+
"description": "Sidebar Scale"
6207+
},
6208+
"osdCarOptionSbarMidLow": {
6209+
"message": "Sidebar Angle 2/5",
6210+
"description": "Sidebar Scale"
6211+
},
6212+
"osdCarOptionSbarMid": {
6213+
"message": "Sidebar Angle 3/5",
6214+
"description": "Sidebar Scale"
6215+
},
6216+
"osdCarOptionSbarMidHigh": {
6217+
"message": "Sidebar Angle 4/5",
6218+
"description": "Sidebar Scale"
6219+
},
6220+
"osdCarOptionSbarHigh": {
6221+
"message": "Sidebar Angle 5/5",
6222+
"description": "Sidebar Scale"
6223+
},
61826224
"osdWarningTextArmingDisabled": {
61836225
"message": "Arming disabled",
61846226
"description": "One of the warnings that can be selected to be shown in the OSD"
@@ -6327,6 +6369,9 @@
63276369
"osdSectionHelpAlarms": {
63286370
"message": "Set the thresholds used for OSD elements with alarm states."
63296371
},
6372+
"osdSectionHelpCar": {
6373+
"message": "Set the Camera Angle Reference parameter values"
6374+
},
63306375
"osdSectionHelpStats": {
63316376
"message": "Set the values dispalyed on the post flight statistics screen."
63326377
},

Diff for: src/css/tabs/osd.less

+24
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,30 @@
347347
font-weight: normal;
348348
}
349349
}
350+
.car {
351+
label {
352+
display: block;
353+
width: 100%;
354+
border-bottom: 1px solid var(--subtleAccent);
355+
margin-top: 5px;
356+
padding-bottom: 5px;
357+
&:last-child {
358+
border-bottom: none;
359+
padding-bottom: 0;
360+
}
361+
}
362+
input {
363+
width: 55px;
364+
padding-left: 3px;
365+
height: 18px;
366+
line-height: 20px;
367+
text-align: left;
368+
border-radius: 3px;
369+
margin-right: 11px;
370+
font-size: 11px;
371+
font-weight: normal;
372+
}
373+
}
350374
.grid-row {
351375
justify-content: flex-start;
352376
gap: 7px;

Diff for: src/js/VirtualFC.js

+12
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,18 @@ const VirtualFC = {
233233
alt: { display_name: i18n.getMessage('osdTimerAlarmOptionAltitude'), value: 0 },
234234
time: { display_name: 'Minutes', value: 0 },
235235
};
236+
virtualOSD.data.car = {
237+
scale: { display_name: i18n.getMessage('osdCarOptionScale'), value: 0 },
238+
width: { display_name: i18n.getMessage('osdCarOptionWidth'), value: 0 },
239+
channel: { display_name: i18n.getMessage('osdCarOptionChannel'), value: 0 },
240+
dots: { display_name: i18n.getMessage('osdCarOptionDots'), value: 0 },
241+
sbar_scale: { display_name: i18n.getMessage('osdCarOptionSbarScale'), value: 0 },
242+
sbar_low: { display_name: i18n.getMessage('osdCarOptionSbarLow'), value: 0 },
243+
sbar_mid_low: { display_name: i18n.getMessage('osdCarOptionSbarMidLow'), value: 0 },
244+
sbar_mid: { display_name: i18n.getMessage('osdCarOptionSbarMid'), value: 0 },
245+
sbar_mid_high: { display_name: i18n.getMessage('osdCarOptionSbarMidHigh'), value: 0 },
246+
sbar_high: { display_name: i18n.getMessage('osdCarOptionSbarHigh'), value: 0 },
247+
};
236248
},
237249
};
238250

Diff for: src/js/tabs/osd.js

+49-1
Original file line numberDiff line numberDiff line change
@@ -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();

Diff for: src/tabs/osd.html

+8
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ <h1 class="tab_title">
111111
<div class="alarms"></div>
112112
</div>
113113
</div>
114+
<div class="gui_box grey car-container requires-osd-feature" style="display:none;">
115+
<div class="gui_box_titlebar cf_tip">
116+
<div class="spacer_box_title" i18n="osdSetupCarTitle"></div>
117+
</div>
118+
<div class="spacer_box">
119+
<div class="car"></div>
120+
</div>
121+
</div>
114122
<div class="gui_box grey warnings-container requires-osd-feature" style="display:none;">
115123
<div class="gui_box_titlebar cf_tip" style="margin-bottom: 0px;">
116124
<div class="spacer_box_title">

0 commit comments

Comments
 (0)