This commit is contained in:
legop3
2025-11-20 13:56:19 -05:00
parent 233dd993e2
commit 400054ae58
+16 -18
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,23 +95,15 @@ function handleSensorEvent({ roverId, sensors, batteryState }) {
}); });
} }
const fullThreshold = if (state.batteryLocked && (isFull || !docked)) {
typeof config?.Full === 'number' ? config.Full : batteryState?.full ?? null; logger.info('Unlocking rover after charge', { roverId, isFull, docked });
const isFull = lockRover(roverId, false, { reason: 'battery' });
(batteryState?.charge != null && fullThreshold != null && batteryState.charge >= fullThreshold) || state.batteryLocked = false;
(batteryState?.percent != null && batteryState.percent >= 0.99); publishEvent({
source: 'batteryManager',
if (record.locked && record.lockReason === 'battery') { type: 'battery.unlocked',
if (isFull || !docked) { payload: { roverId, batteryState },
logger.info('Unlocking rover after charge', { roverId, isFull, docked }); });
lockRover(roverId, false, { reason: 'battery' });
state.batteryLocked = false;
publishEvent({
source: 'batteryManager',
type: 'battery.unlocked',
payload: { roverId, batteryState },
});
}
} }
} }