Skip to content

Commit daaa874

Browse files
committed
Cleanup late night code
1 parent 3e173e9 commit daaa874

1 file changed

Lines changed: 44 additions & 40 deletions

File tree

radio/tests/helpers.py

Lines changed: 44 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,7 @@ def drain_all():
143143
if msg is None:
144144
break
145145

146-
pending = {
147-
param_name: (param_value, param_type)
148-
for param_name, param_value, param_type in params
149-
}
146+
pending = {name: (value, param_type) for name, value, param_type in params}
150147
retries = {name: 0 for name, _, _ in params}
151148

152149
logger.debug(f"Setting {len(params)} params")
@@ -156,60 +153,67 @@ def drain_all():
156153
while pending:
157154
# Send all the pending params at once
158155
for param_name, (param_value, param_type) in pending.items():
159-
droneStatus.drone.master.mav.param_set_send(
160-
droneStatus.drone.master.target_system,
161-
droneStatus.drone.master.target_component,
162-
param_name.encode("utf-8"),
163-
param_value,
164-
param_type,
165-
)
156+
try:
157+
droneStatus.drone.master.mav.param_set_send(
158+
droneStatus.drone.master.target_system,
159+
droneStatus.drone.master.target_component,
160+
param_name.encode("utf-8"),
161+
param_value,
162+
param_type,
163+
)
164+
except Exception:
165+
logger.warning(f"Error with set_send of param {param_name}")
166166

167167
start_time = time.time()
168168

169169
while time.time() - start_time < TIMEOUT and pending:
170-
msg = droneStatus.drone.master.recv_match(blocking=False)
170+
try:
171+
time.sleep(0.005) # For stability
172+
msg = droneStatus.drone.master.recv_match(blocking=False)
171173

172-
if msg is None:
173-
time.sleep(0.005)
174-
continue
174+
if msg is None:
175+
continue
175176

176-
if msg.get_type() != "PARAM_VALUE":
177-
continue
177+
if msg.get_type() != "PARAM_VALUE":
178+
continue
178179

179-
param_name = msg.param_id
180-
if isinstance(param_name, bytes):
181-
param_name = param_name.decode("utf-8").strip("\x00")
180+
param_name = msg.param_id
182181

183-
if param_name in pending:
184-
param_value, param_type = pending[param_name]
185-
received_value = msg.param_value
182+
if param_name in pending:
183+
param_value, param_type = pending[param_name]
184+
received_value = msg.param_value
186185

187-
if (
188-
abs(received_value - param_value) < 0.001
189-
): # Allow for floating point precision
190-
logger.info(
191-
f"Successfully set {param_name} to {param_value} (confirmed: {received_value})"
192-
)
186+
if (
187+
abs(received_value - param_value) < 0.001
188+
): # Allow for floating point precision
189+
logger.info(
190+
f"Successfully set {param_name} to {param_value} (confirmed: {received_value})"
191+
)
193192

194-
# Keep cached params coherent with direct MAVLink writes used in tests.
195-
droneStatus.drone.paramsController.saveParam(
196-
param_name,
197-
received_value,
198-
param_type,
199-
)
193+
# Keep cached params coherent with direct MAVLink writes used in tests.
194+
droneStatus.drone.paramsController.saveParam(
195+
param_name,
196+
received_value,
197+
param_type,
198+
)
200199

201-
del pending[param_name]
200+
pending.pop(param_name)
202201

203-
else:
204-
logger.warning(
205-
f"Parameter {param_name} was set but value mismatch: expected {param_value}, got {received_value}"
206-
)
202+
else:
203+
logger.warning(
204+
f"Parameter {param_name} was set but value mismatch: expected {param_value}, got {received_value}"
205+
)
206+
except Exception:
207+
logger.warning(f"Error setting params, last param: {param_name}")
207208

208209
# Retry only missing
209210
if pending:
210211
for param_name in list(pending.keys()):
211212
retries[param_name] += 1
212213
if retries[param_name] > MAX_RETRIES:
214+
logger.error(
215+
f"Failed to set {param_name} after {MAX_RETRIES} attempts"
216+
)
213217
raise RuntimeError(
214218
f"Failed to set {param_name} after {MAX_RETRIES} attempts"
215219
)

0 commit comments

Comments
 (0)