Skip to content

Commit 3c5a8ec

Browse files
core: frontend: add configuration for lights
1 parent c72e3a6 commit 3c5a8ec

File tree

2 files changed

+98
-37
lines changed

2 files changed

+98
-37
lines changed

core/frontend/src/components/vehiclesetup/Configure.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
<script lang="ts">
2828
import Vue from 'vue'
2929
30-
import ParamSets from './overview/ParamSets.vue'
3130
import LightsConfigration from './configuration/lights.vue'
31+
import ParamSets from './overview/ParamSets.vue'
3232
3333
export interface Item {
3434
title: string,
@@ -40,7 +40,7 @@ export default Vue.extend({
4040
name: 'Configure',
4141
components: {
4242
ParamSets,
43-
LightsConfigration
43+
LightsConfigration,
4444
},
4545
data() {
4646
return {

core/frontend/src/components/vehiclesetup/configuration/lights.vue

Lines changed: 96 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,43 @@
11
<template>
2-
<div>
3-
<p> Lights Setup goes here </p>
2+
<div class="d-flex">
43
<v-card>
5-
<v-card-title> Lights 1 </v-card-title>
4+
<v-card-title> Lights 1 (RCIN9) </v-card-title>
65
<v-card-text>
7-
Here you can configure what pin outputs the signal for the first set of lights. {{ lights1_new_param }}
6+
Here you can configure what pin outputs the signal for the first set of lights.
87
<v-select
8+
v-model="lights1_new_param"
99
:items="recommended_params"
1010
:item-text="friendlyName"
1111
:item-value="'name'"
12-
v-model="lights1_new_param"
1312
label="Lights 1"
14-
></v-select>
13+
/>
14+
</v-card-text>
15+
</v-card>
16+
<v-card>
17+
<v-card-title> Lights 2 (RCIN10) </v-card-title>
18+
<v-card-text>
19+
What pin outputs the signal for the second set of lights.
20+
<v-select
21+
v-model="lights2_new_param"
22+
:items="recommended_params"
23+
:item-text="friendlyName"
24+
:item-value="'name'"
25+
label="Lights 2"
26+
/>
1527
</v-card-text>
1628
</v-card>
1729
<v-card>
18-
<p> Lights 2 </p>
19-
<span v-for="param in servo_params" :key="param.name">
20-
<p>{{ param.name }} {{ printParam(param) }}</p>
21-
</span>
30+
<v-card-title> Joystick steps </v-card-title>
31+
<v-card-text>
32+
How many button presses it takes to go from 0% to 100% brightness.
33+
<v-text-field
34+
ref="steps_input"
35+
v-model="steps_new_value"
36+
label="Joystick steps"
37+
type="number"
38+
@input="setSteps"
39+
/>
40+
</v-card-text>
2241
</v-card>
2342
</div>
2443
</template>
@@ -29,8 +48,8 @@ import autopilot_data from '@/store/autopilot'
2948
import Parameter, { printParam } from '@/types/autopilot/parameter'
3049
3150
enum Lights {
32-
Lights1 = 59, // RCIN9
33-
Lights2 = 60, // RCIN10
51+
Lights1 = 59, // RCIN9
52+
Lights2 = 60, // RCIN10
3453
DISABLED = 0,
3554
}
3655
@@ -40,15 +59,43 @@ export default {
4059
return {
4160
lights1_new_param: undefined as (string | undefined), // item-value must be a primitive
4261
lights2_new_param: undefined as (string | undefined),
62+
steps_new_value: 0,
4363
}
4464
},
45-
methods: {
46-
friendlyName(param: Parameter): string {
47-
return `${param.name.replace('SERVO', 'Servo ').replace('_FUNCTION', '')} (${printParam(param)})`
65+
computed: {
66+
light_steps(): Parameter | undefined {
67+
return autopilot_data.parameter('JS_LIGHTS_STEPS')
68+
},
69+
recommended_params(): Parameter[] {
70+
// return parameters in servo_params that are on channel 9 and higher
71+
return this.servo_params.filter((param) => {
72+
const servoNumber = parseInt(param.name.replace('SERVO', '').split('_')[0], 10)
73+
return servoNumber >= 9
74+
})
75+
},
76+
servo_params(): Parameter[] {
77+
return autopilot_data.parameterRegex('SERVO[0-9]+_FUNCTION')
78+
},
79+
lights1_param(): Parameter | undefined {
80+
return this.servo_params.filter((param) => param.value === Lights.Lights1)[0]
81+
},
82+
lights2_param(): Parameter | undefined {
83+
return this.servo_params.filter((param) => param.value === Lights.Lights2)[0]
4884
},
49-
printParam,
5085
},
5186
watch: {
87+
steps_param(new_value: Parameter | undefined) {
88+
this.steps_new_value = new_value?.value ?? 0
89+
},
90+
steps_new_value(new_value: number | undefined) {
91+
if (new_value) {
92+
if (this.light_steps?.value === new_value) {
93+
return
94+
}
95+
mavlink2rest.setParam('JS_LIGHTS_STEPS', new_value, autopilot_data.system_id)
96+
}
97+
},
98+
5299
lights1_param(new_value: Parameter | undefined) {
53100
this.lights1_new_param = new_value?.name
54101
},
@@ -58,8 +105,8 @@ export default {
58105
// todo: refactor these two methods into one
59106
lights1_new_param(new_param_name: string | undefined) {
60107
if (new_param_name) {
61-
//reset any other parameter using lights1 to undefined
62-
for (let old_param of this.servo_params) {
108+
// reset any other parameter using lights1 to undefined
109+
for (const old_param of this.servo_params) {
63110
if (old_param.name === new_param_name) {
64111
continue
65112
}
@@ -68,27 +115,41 @@ export default {
68115
mavlink2rest.setParam(old_param.name, Lights.DISABLED, autopilot_data.system_id)
69116
}
70117
}
71-
mavlink2rest.setParam(new_param_name, Lights.Lights1 , autopilot_data.system_id)
118+
mavlink2rest.setParam(new_param_name, Lights.Lights1, autopilot_data.system_id)
72119
}
73120
},
74-
},
75-
computed: {
76-
recommended_params(): Parameter[] {
77-
// return parameters in servo_params that are on channel 9 and higher
78-
return this.servo_params.filter((param) => {
79-
const servoNumber = parseInt(param.name.replace('SERVO', '').split('_')[0]);
80-
return servoNumber >= 9;
81-
});
82-
83-
},
84-
servo_params(): Parameter[] {
85-
return autopilot_data.parameterRegex('SERVO[0-9]+_FUNCTION')
121+
lights2_new_param(new_param_name: string | undefined) {
122+
if (new_param_name) {
123+
// reset any other parameter using lights2 to undefined
124+
for (const old_param of this.servo_params) {
125+
if (old_param.name === new_param_name) {
126+
continue
127+
}
128+
if (old_param.value === Lights.Lights2) {
129+
// set the old parameter to DISABLED
130+
mavlink2rest.setParam(old_param.name, Lights.DISABLED, autopilot_data.system_id)
131+
}
132+
}
133+
mavlink2rest.setParam(new_param_name, Lights.Lights2, autopilot_data.system_id)
134+
}
86135
},
87-
lights1_param(): Parameter | undefined {
88-
return this.servo_params.filter((param) => param.value === Lights.Lights1)[0]
136+
},
137+
mounted() {
138+
this.lights1_new_param = this.lights1_param?.name
139+
this.lights2_new_param = this.lights2_param?.name
140+
this.steps_new_value = this.light_steps?.value ?? 0
141+
},
142+
methods: {
143+
friendlyName(param: Parameter): string {
144+
return `${param.name.replace('SERVO', 'Servo ').replace('_FUNCTION', '')} (${printParam(param)})`
89145
},
90-
lights2_param(): Parameter | undefined {
91-
return this.servo_params.filter((param) => param.value === Lights.Lights2)[0]
146+
setSteps() {
147+
const new_value = Math.min(Math.max(this.steps_new_value, 1), 10)
148+
this.$nextTick(() => {
149+
this.steps_new_value = new_value
150+
})
151+
console.log('setting steps to', new_value)
152+
mavlink2rest.setParam('JS_LIGHTS_STEPS', new_value, autopilot_data.system_id)
92153
},
93154
},
94155
}

0 commit comments

Comments
 (0)