Change togglePin to Promise+fix calling of toggle

This commit is contained in:
Skylar Grant 2024-08-21 22:16:32 -04:00
parent 4f35efcf79
commit 4e4bf9f7ca
3 changed files with 13 additions and 17 deletions

View File

@ -2,15 +2,13 @@ const { exec } = require('child_process');
module.exports = {
// Calls the GPIO Interface script to toggle a pin's state opposite of its current state
togglePin(pin, callback) {
exec(`python3 src/python/gpio_interface.py toggle ${pin}`, (error, stdout, stderr) => {
if (error) {
callback(error);
}
if (stderr) {
callback(new Error(stderr));
}
callback(null);
togglePin(pin) {
return new Promise((resolve, reject) => {
exec(`python3 src/python/gpio_interface.py toggle ${pin}`, (error, stdout, stderr) => {
if (error) reject(error);
if (stderr) reject(new Error(stderr));
resolve();
});
});
},
// Calls the GPIO Interface script to read a pin's state

View File

@ -47,16 +47,14 @@ module.exports = {
for (const pin of pins) {
switch (pin.mode) {
case 'OUT':
gpio.togglePin(pin.board, err => {
if (err) throw err;
gpio.togglePin(pin.board).then(() => {
module.exports.log(`Toggled ${pin.key}`);
});
}).catch(e => console.error(e));
// Wait 1000ms before toggling again.
await module.exports.sleep(1000);
gpio.togglePin(pin.board, err => {
if (err) throw err;
gpio.togglePin(pin.board).then(() => {
module.exports.log(`Toggled ${pin.key}`);
});
}).catch(e => console.error(e));
break;
case 'IN':
gpio.readPin(pin.board).then(state => {

View File

@ -24,7 +24,7 @@ setInterval(() => {
comms.on('stateChange', (change) => {
console.log(`State change detected: ${change.name}`);
gpio.togglePin(config.states[change.name].pin, change.on).then(() => {
gpio.togglePin(config.states[change.name].board).then(() => {
console.log(`Pin ${config.states[change.name].pin} set to ${change.on}`);
});
}).catch(e => console.error(e));
});