desktop-controller
Advanced tools
Comparing version 0.0.1-3 to 0.0.1-4
@@ -1,28 +0,64 @@ | ||
const { AUTO_RELEASE, POWER_MODES } = require('./constant.js'); | ||
const args = process.argv.slice(2); | ||
const isMock = args.indexOf('-m') !== -1; | ||
// const args = process.argv.slice(2); | ||
// const isMock = args.indexOf('-m') !== -1; | ||
let pressPower; | ||
let releasePower; | ||
if (isMock) { | ||
pressPower = () => { | ||
console.log('pressing power!'); | ||
}; | ||
releasePower = () => { | ||
console.log('releasing power!'); | ||
}; | ||
} else { | ||
// Optional dependency, won't be available on any machine other than rpi | ||
// eslint-disable-next-line | ||
const gpio = require('node-gpio'); | ||
const { GPIO } = gpio; | ||
const led = new GPIO('17'); | ||
led.open(); | ||
led.setMode(gpio.OUT); | ||
process.on('SIGINT', () => { | ||
led.close(); | ||
process.exit(); | ||
}); | ||
pressPower = () => { | ||
console.log('pressing power!'); | ||
led.write(gpio.HIGH); | ||
}; | ||
releasePower = () => { | ||
console.log('releasing power!'); | ||
led.write(gpio.LOW); | ||
}; | ||
} | ||
module.exports = { | ||
_powerMode: POWER_MODES.NOT_PRESSED, | ||
_releasePower() { | ||
if (this._powerMode === POWER_MODES.NOT_PRESSED) { | ||
throw new Error(`Power is already released, can't call \`releasePower\` again, might been called after program auto released the button (after ${AUTO_RELEASE}ms).`); | ||
} | ||
this._powerMode = POWER_MODES.NOT_PRESSED; | ||
console.log('releasing power!'); | ||
AUTO_RELEASE: 5000, | ||
POWER_MODES: { | ||
PRESSED: 0, | ||
NOT_PRESSED: 1 | ||
}, | ||
pressPower() { | ||
if (this._powerMode === POWER_MODES.PRESSED) { | ||
if (this._powerMode === this.POWER_MODES.PRESSED) { | ||
throw new Error('Power is already pressed, can\'t call `pressPower` again.'); | ||
} | ||
this._powerMode = POWER_MODES.PRESSED; | ||
console.log('pressing power!'); | ||
this._powerMode = this.POWER_MODES.PRESSED; | ||
pressPower(); | ||
setTimeout(() => { | ||
if (this._powerMode === POWER_MODES.PRESSED) { | ||
if (this._powerMode === this.POWER_MODES.PRESSED) { | ||
this._releasePower(); | ||
} | ||
}, AUTO_RELEASE); | ||
}, this.AUTO_RELEASE); | ||
return this._releasePower.bind(this); | ||
}, | ||
_releasePower() { | ||
if (this._powerMode === this.POWER_MODES.NOT_PRESSED) { | ||
throw new Error(`Power is already released, can't call \`releasePower\` again, might been called after program auto released the button (after ${this.AUTO_RELEASE}ms).`); | ||
} | ||
this._powerMode = this.POWER_MODES.NOT_PRESSED; | ||
releasePower(); | ||
} | ||
}; |
{ | ||
"name": "desktop-controller", | ||
"version": "0.0.1-3", | ||
"version": "0.0.1-4", | ||
"description": "Desktop controller", | ||
@@ -35,2 +35,5 @@ "main": "index.js", | ||
}, | ||
"optionalDependencies": { | ||
"node-gpio": "^0.1.1" | ||
}, | ||
"devDependencies": { | ||
@@ -37,0 +40,0 @@ "babel-core": "^6.17.0", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4831345
27076
3
9