Skip to content

Commit f910bd6

Browse files
authored
Sync params between config page and params page (#1115)
1 parent 9be0ef5 commit f910bd6

5 files changed

Lines changed: 43 additions & 0 deletions

File tree

gcs/src/redux/middleware/socketMiddleware.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,32 @@ const socketMiddleware = (store) => {
247247
store.dispatch(setServoPwmOutputs(outputs))
248248
}
249249

250+
function syncSingleParamInParamsSlice(paramId, value) {
251+
if (!paramId || value === undefined) {
252+
return
253+
}
254+
255+
store.dispatch(
256+
updateParamValue({
257+
param_id: paramId,
258+
param_value: value,
259+
}),
260+
)
261+
}
262+
263+
function syncBatchParamsInParamsSlice(paramsList) {
264+
if (!Array.isArray(paramsList) || paramsList.length === 0) {
265+
return
266+
}
267+
268+
for (const param of paramsList) {
269+
const paramId = param?.param_id
270+
const paramValue =
271+
param?.param_value !== undefined ? param.param_value : param?.value
272+
syncSingleParamInParamsSlice(paramId, paramValue)
273+
}
274+
}
275+
250276
const incomingMessageHandler = (msg) => {
251277
switch (msg.mavpackettype) {
252278
case "VFR_HUD":
@@ -1235,6 +1261,7 @@ const socketMiddleware = (store) => {
12351261
value: msg.value,
12361262
}),
12371263
)
1264+
syncSingleParamInParamsSlice(msg.param_id, msg.value)
12381265
} else {
12391266
showErrorNotification(msg.message)
12401267
}
@@ -1266,6 +1293,7 @@ const socketMiddleware = (store) => {
12661293
(msg) => {
12671294
if (msg.success) {
12681295
showSuccessNotification(msg.message)
1296+
syncSingleParamInParamsSlice(msg.data?.param_id, msg.data?.value)
12691297
} else {
12701298
showErrorNotification(msg.message)
12711299
}
@@ -1279,6 +1307,7 @@ const socketMiddleware = (store) => {
12791307
(msg) => {
12801308
if (msg.success) {
12811309
showSuccessNotification(msg.message)
1310+
syncSingleParamInParamsSlice(msg.data?.param_id, msg.data?.value)
12821311
} else {
12831312
showErrorNotification(msg.message)
12841313
}
@@ -1348,6 +1377,7 @@ const socketMiddleware = (store) => {
13481377
value: msg.value,
13491378
}),
13501379
)
1380+
syncSingleParamInParamsSlice(msg.param_id, msg.value)
13511381
} else {
13521382
showErrorNotification(msg.message)
13531383
}
@@ -1374,6 +1404,7 @@ const socketMiddleware = (store) => {
13741404
}),
13751405
)
13761406
}
1407+
syncBatchParamsInParamsSlice(msg.data)
13771408
}
13781409
store.dispatch(setRadioCalibrationModalOpen(false))
13791410
},
@@ -1400,6 +1431,7 @@ const socketMiddleware = (store) => {
14001431
value: msg.value,
14011432
}),
14021433
)
1434+
syncSingleParamInParamsSlice(msg.param_id, msg.value)
14031435
} else {
14041436
showErrorNotification(msg.message)
14051437
}
@@ -1424,6 +1456,7 @@ const socketMiddleware = (store) => {
14241456
}),
14251457
)
14261458
}
1459+
syncBatchParamsInParamsSlice(msg.data)
14271460
}
14281461
},
14291462
)
@@ -1457,6 +1490,7 @@ const socketMiddleware = (store) => {
14571490
value: msg.value,
14581491
}),
14591492
)
1493+
syncSingleParamInParamsSlice(msg.param_id, msg.value)
14601494
} else {
14611495
showErrorNotification(msg.message)
14621496
}
@@ -1481,6 +1515,7 @@ const socketMiddleware = (store) => {
14811515
}),
14821516
)
14831517
}
1518+
syncBatchParamsInParamsSlice(msg.data)
14841519
}
14851520
},
14861521
)

radio/app/controllers/flightModesController.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ def setFlightMode(self, mode_number: int, flight_mode: int) -> Response:
114114
return {
115115
"success": True,
116116
"message": f"Flight mode {mode_number} set to {mode_name}",
117+
"data": {"param_id": f"FLTMODE{mode_number}", "value": flight_mode},
117118
}
118119
else:
119120
return {
@@ -149,6 +150,7 @@ def setFlightModeChannel(self, channel: int) -> Response:
149150
return {
150151
"success": True,
151152
"message": f"Flight mode channel set to {channel}",
153+
"data": {"param_id": "FLTMODE_CH", "value": channel},
152154
}
153155
else:
154156
return {

radio/app/endpoints/flightMode.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def setFlightMode(data: SetFlightModeValueAndNumber) -> None:
6767
result = droneStatus.drone.flightModesController.setFlightMode(
6868
mode_number, flight_mode
6969
)
70+
7071
socketio.emit("set_flight_mode_result", result)
7172

7273

@@ -102,6 +103,7 @@ def setFlightModeChannel(data: SetFlightModeChannelType) -> None:
102103
return
103104

104105
result = droneStatus.drone.flightModesController.setFlightModeChannel(channel_int)
106+
105107
socketio.emit("set_flight_mode_channel_result", result)
106108

107109

radio/tests/test_FlightModesController.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ def test_setFlightMode_success_copter(droneStatus):
181181
assert response == {
182182
"success": True,
183183
"message": "Flight mode 1 set to COPTER_MODE_ALT_HOLD",
184+
"data": {"param_id": "FLTMODE1", "value": 2},
184185
}
185186
assert droneStatus.drone.flightModesController.flight_modes[0] == 2
186187

@@ -213,6 +214,7 @@ def test_setFlightMode_success_plane(droneStatus):
213214
assert response == {
214215
"success": True,
215216
"message": "Flight mode 1 set to PLANE_MODE_FLY_BY_WIRE_A",
217+
"data": {"param_id": "FLTMODE1", "value": 5},
216218
}
217219
assert droneStatus.drone.flightModesController.flight_modes[0] == 5
218220

radio/tests/test_flightMode.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ def test_setFlightMode_successfullySet(
142142
assert socketio_result["args"][0] == {
143143
"success": True,
144144
"message": "Flight mode 1 set to COPTER_MODE_CIRCLE",
145+
"data": {"param_id": "FLTMODE1", "value": 7},
145146
}
146147
assert droneStatus.drone.flightModesController.flight_modes == [7, 9, 6, 3, 5, 0]
147148

@@ -198,6 +199,7 @@ def test_setFlightModeChannel_successfullySet(
198199
assert socketio_result["args"][0] == {
199200
"success": True,
200201
"message": "Flight mode channel set to 5",
202+
"data": {"param_id": "FLTMODE_CH", "value": 5},
201203
}
202204
assert droneStatus.drone.flightModesController.flight_mode_channel == 5
203205

0 commit comments

Comments
 (0)