This commit is contained in:
legop3
2025-11-20 13:56:19 -05:00
parent 233dd993e2
commit 400054ae58
+8 -10
View File
@@ -78,7 +78,13 @@ function handleSensorEvent({ roverId, sensors, batteryState }) {
state.docked = false; state.docked = false;
} }
if (docked && lockable && !record.locked) { const fullThreshold =
typeof config?.Full === 'number' ? config.Full : batteryState?.full ?? null;
const isFull =
(batteryState?.charge != null && fullThreshold != null && batteryState.charge >= fullThreshold) ||
(batteryState?.percent != null && batteryState.percent >= 0.99);
if (docked && lockable && !state.batteryLocked && !isFull) {
logger.info('Auto-locking rover for charging', { roverId }); logger.info('Auto-locking rover for charging', { roverId });
lockRover(roverId, true, { reason: 'battery' }); lockRover(roverId, true, { reason: 'battery' });
state.batteryLocked = true; state.batteryLocked = true;
@@ -89,14 +95,7 @@ function handleSensorEvent({ roverId, sensors, batteryState }) {
}); });
} }
const fullThreshold = if (state.batteryLocked && (isFull || !docked)) {
typeof config?.Full === 'number' ? config.Full : batteryState?.full ?? null;
const isFull =
(batteryState?.charge != null && fullThreshold != null && batteryState.charge >= fullThreshold) ||
(batteryState?.percent != null && batteryState.percent >= 0.99);
if (record.locked && record.lockReason === 'battery') {
if (isFull || !docked) {
logger.info('Unlocking rover after charge', { roverId, isFull, docked }); logger.info('Unlocking rover after charge', { roverId, isFull, docked });
lockRover(roverId, false, { reason: 'battery' }); lockRover(roverId, false, { reason: 'battery' });
state.batteryLocked = false; state.batteryLocked = false;
@@ -107,6 +106,5 @@ function handleSensorEvent({ roverId, sensors, batteryState }) {
}); });
} }
} }
}
managerEvents.on('sensor', handleSensorEvent); managerEvents.on('sensor', handleSensorEvent);