mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-17 10:00:46 -04:00
headlight rework and laser addition
This commit is contained in:
@@ -10,7 +10,7 @@ const serverTimezone = config.timezone || null;
|
||||
const configuredSocials = Array.isArray(config.socials) ? config.socials : null;
|
||||
|
||||
const ACTIVITY_SYNC_COOLDOWN_MS = 3000;
|
||||
const NIGHT_VISION_SYNC_COOLDOWN_MS = 1000;
|
||||
const GPIO_TOGGLE_SYNC_COOLDOWN_MS = 1000;
|
||||
const PERIODIC_SYNC_MS = 20000;
|
||||
|
||||
module.exports = {
|
||||
@@ -19,6 +19,6 @@ module.exports = {
|
||||
serverTimezone,
|
||||
configuredSocials,
|
||||
ACTIVITY_SYNC_COOLDOWN_MS,
|
||||
NIGHT_VISION_SYNC_COOLDOWN_MS,
|
||||
GPIO_TOGGLE_SYNC_COOLDOWN_MS,
|
||||
PERIODIC_SYNC_MS,
|
||||
};
|
||||
|
||||
@@ -41,7 +41,7 @@ const {
|
||||
serverTimezone,
|
||||
configuredSocials,
|
||||
ACTIVITY_SYNC_COOLDOWN_MS,
|
||||
NIGHT_VISION_SYNC_COOLDOWN_MS,
|
||||
GPIO_TOGGLE_SYNC_COOLDOWN_MS,
|
||||
PERIODIC_SYNC_MS,
|
||||
} = require('./constants');
|
||||
const { getState, setState } = require('./state');
|
||||
@@ -175,29 +175,29 @@ modeEvents.on('change', () => {
|
||||
|
||||
managerEvents.on('rover', (event = {}) => {
|
||||
const state = getState();
|
||||
if (event.action === 'nightVision') {
|
||||
if (event.action === 'headlight' || event.action === 'laser') {
|
||||
const now = Date.now();
|
||||
const elapsed = now - state.lastNightVisionSync;
|
||||
if (elapsed >= NIGHT_VISION_SYNC_COOLDOWN_MS) {
|
||||
setState({ lastNightVisionSync: now });
|
||||
logger.info('Night vision update; syncing all clients (immediate)');
|
||||
const elapsed = now - state.lastGPIOToggleSync;
|
||||
if (elapsed >= GPIO_TOGGLE_SYNC_COOLDOWN_MS) {
|
||||
setState({ lastGPIOToggleSync: now });
|
||||
logger.info('GPIO toggle update; syncing all clients (immediate)');
|
||||
syncAll();
|
||||
return;
|
||||
}
|
||||
if (!state.pendingNightVisionSync) {
|
||||
const delay = NIGHT_VISION_SYNC_COOLDOWN_MS - elapsed;
|
||||
if (!state.pendingGPIOToggleSync) {
|
||||
const delay = GPIO_TOGGLE_SYNC_COOLDOWN_MS - elapsed;
|
||||
const timer = setTimeout(() => {
|
||||
setState({ lastNightVisionSync: Date.now(), pendingNightVisionSync: null });
|
||||
logger.info('Night vision update; syncing all clients (delayed)');
|
||||
setState({ lastGPIOToggleSync: Date.now(), pendingGPIOToggleSync: null });
|
||||
logger.info('GPIO toggle update; syncing all clients (delayed)');
|
||||
syncAll();
|
||||
}, delay);
|
||||
setState({ pendingNightVisionSync: timer });
|
||||
setState({ pendingGPIOToggleSync: timer });
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (state.pendingNightVisionSync) {
|
||||
clearTimeout(state.pendingNightVisionSync);
|
||||
setState({ pendingNightVisionSync: null });
|
||||
if (state.pendingGPIOToggleSync) {
|
||||
clearTimeout(state.pendingGPIOToggleSync);
|
||||
setState({ pendingGPIOToggleSync: null });
|
||||
}
|
||||
logger.info('Rover roster change; syncing all clients');
|
||||
syncAll();
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
// Scope: Keeps runtime behavior unchanged while centralizing mutable session-sync state in one module.
|
||||
let lastActivitySync = 0;
|
||||
let pendingActivitySync = null;
|
||||
let lastNightVisionSync = 0;
|
||||
let pendingNightVisionSync = null;
|
||||
let lastGPIOToggleSync = 0;
|
||||
let pendingGPIOToggleSync = null;
|
||||
|
||||
function getState() {
|
||||
return {
|
||||
lastActivitySync,
|
||||
pendingActivitySync,
|
||||
lastNightVisionSync,
|
||||
pendingNightVisionSync,
|
||||
lastGPIOToggleSync,
|
||||
pendingGPIOToggleSync,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,11 +22,11 @@ function setState(patch = {}) {
|
||||
if (Object.prototype.hasOwnProperty.call(patch, 'pendingActivitySync')) {
|
||||
pendingActivitySync = patch.pendingActivitySync;
|
||||
}
|
||||
if (Object.prototype.hasOwnProperty.call(patch, 'lastNightVisionSync')) {
|
||||
lastNightVisionSync = patch.lastNightVisionSync;
|
||||
if (Object.prototype.hasOwnProperty.call(patch, 'lastGPIOToggleSync')) {
|
||||
lastGPIOToggleSync = patch.lastGPIOToggleSync;
|
||||
}
|
||||
if (Object.prototype.hasOwnProperty.call(patch, 'pendingNightVisionSync')) {
|
||||
pendingNightVisionSync = patch.pendingNightVisionSync;
|
||||
if (Object.prototype.hasOwnProperty.call(patch, 'pendingGPIOToggleSync')) {
|
||||
pendingGPIOToggleSync = patch.pendingGPIOToggleSync;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user