From 50bf1cff967d472f52486b00bc61220c26710156 Mon Sep 17 00:00:00 2001 From: Yossi Date: Tue, 24 Apr 2018 22:02:01 +0300 Subject: [PATCH] feat(led module): Native LED control --- config.json | 2 +- daemons/bluetooth/characteristic.js | 5 ++-- modules/led/bin/main | Bin 0 -> 62428 bytes modules/led/index.js | 13 ++++++++++ modules/led/package-lock.json | 38 ++++++++++++++++++++++++++++ modules/led/package.json | 15 +++++++++++ package-lock.json | 2 +- package.json | 2 +- state/config.backup.json | 2 +- 9 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 modules/led/bin/main create mode 100644 modules/led/index.js create mode 100644 modules/led/package-lock.json create mode 100644 modules/led/package.json diff --git a/config.json b/config.json index 9d0c72c..6813445 100644 --- a/config.json +++ b/config.json @@ -1 +1 @@ -{"name":"drideOS","version":"0.11.1","settings":{"debug":false,"videoRecord":true,"flipVideo":false,"gps":false,"speaker":false,"mic":false,"indicator":true,"resolution":"720","fps":30,"clipLength":1,"gSensorSensitivity":"medium","netwrok":{"ssid":"dride","password":"ilovedride"}}} \ No newline at end of file +{"name":"drideOS","version":"0.12.0","settings":{"debug":false,"videoRecord":true,"flipVideo":false,"gps":false,"speaker":false,"mic":false,"indicator":true,"resolution":"720","fps":30,"clipLength":1,"gSensorSensitivity":"medium","netwrok":{"ssid":"dride","password":"ilovedride"}}} \ No newline at end of file diff --git a/daemons/bluetooth/characteristic.js b/daemons/bluetooth/characteristic.js index f33ded5..5ddac0a 100644 --- a/daemons/bluetooth/characteristic.js +++ b/daemons/bluetooth/characteristic.js @@ -3,6 +3,7 @@ var spawn = require('child_process').spawn; var fs = require('fs'); var videoReady = require('./videoReady'); +var led = require('../../modules/led/index'); var bleno = require('bleno'); @@ -33,14 +34,14 @@ buttonStream.prototype.onReadRequest = function(offset, callback) { buttonStream.prototype.onSubscribe = function(maxValueSize, updateValueCallback) { console.log('buttonStream: onSubscribe '); ex = updateValueCallback; - spawn('python', ['/home/core/modules/indicators/python/states/standalone.py', 'isPaired']); + led.isPaired(); }; gpio.on('change', function(channel, value) { if (value) { var currentTimeStamp = new Date().getTime().toString(); videoReady.startListner(currentTimeStamp); - spawn('python', ['/home/core/modules/indicators/python/states/standalone.py', 'welcome']); + led.welcome(); if (ex) { //update state that we need to encode video no matter what diff --git a/modules/led/bin/main b/modules/led/bin/main new file mode 100644 index 0000000000000000000000000000000000000000..e41e7f41d546c5d19cce027a1656fa3c07381659 GIT binary patch literal 62428 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

F5HL|8d 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 VQ3-T?I>$@pHonDISDl&2{STPg