1st version with c implementation of state engine
This commit is contained in:
67
fs/init.js
67
fs/init.js
@@ -1,32 +1,65 @@
|
||||
load('api_config.js');
|
||||
load('api_gpio.js');
|
||||
load('api_mqtt.js');
|
||||
load('api_net.js');
|
||||
load('api_sys.js');
|
||||
load('api_rpc.js');
|
||||
load('api_timer.js');
|
||||
load("animateLights.js");
|
||||
|
||||
let led = Cfg.get('pins.led');
|
||||
|
||||
// Helper C function get_led_gpio_pin() in src/main.c returns built-in LED GPIO
|
||||
let onBoardLed = ffi('int get_led_gpio_pin()')();
|
||||
// let onBoardLed = ffi('int get_led_gpio_pin()')();
|
||||
|
||||
let button = Cfg.get('pins.button');
|
||||
let topic = '/devices/' + Cfg.get('device.id') + '/events';
|
||||
|
||||
print('LED GPIO:', led, 'button GPIO:', button);
|
||||
|
||||
let getInfo = function() {
|
||||
return JSON.stringify({total_ram: Sys.total_ram(), free_ram: Sys.free_ram()});
|
||||
return JSON.stringify({
|
||||
total_ram: Sys.total_ram(),
|
||||
free_ram: Sys.free_ram()
|
||||
});
|
||||
};
|
||||
|
||||
// Publish to MQTT topic on a button press. Button is wired to GPIO pin 0
|
||||
GPIO.set_button_handler(0, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 200, function() {
|
||||
let topic = '/devices/' + Cfg.get('device.id') + '/events';
|
||||
let message = getInfo();
|
||||
let ok = MQTT.pub(topic, message, 1);
|
||||
print('Published:', ok ? 'yes' : 'no', 'topic:', topic, 'message:', message);
|
||||
}, null);
|
||||
|
||||
|
||||
// Blink built-in LED every second
|
||||
GPIO.set_mode(onBoardLed, GPIO.MODE_OUTPUT);
|
||||
|
||||
// Tick-Tock generation
|
||||
Timer.set(1000 /* 1 sec */, true /* repeat */, function() {
|
||||
let value = GPIO.toggle(onBoardLed);
|
||||
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
|
||||
Timer.set(5000 /* 1 sec */, true /* repeat */, function() {
|
||||
let value = GPIO.toggle(led);
|
||||
print(value ? 'Tick' : 'Tock', 'uptime:', Sys.uptime(), getInfo());
|
||||
}, null);
|
||||
|
||||
// Publish to MQTT topic on a button press. Button is wired to GPIO pin 0
|
||||
/*
|
||||
GPIO.set_button_handler(button, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 200, function() {
|
||||
let message = getInfo();
|
||||
let ok = MQTT.pub(topic, message, 1);
|
||||
print('Published:', ok, topic, '->', message);
|
||||
}, null);
|
||||
*/
|
||||
|
||||
// Monitor network connectivity.
|
||||
Net.setStatusEventHandler(function(ev, arg) {
|
||||
let evs = '???';
|
||||
if (ev === Net.STATUS_DISCONNECTED) {
|
||||
evs = 'DISCONNECTED';
|
||||
} else if (ev === Net.STATUS_CONNECTING) {
|
||||
evs = 'CONNECTING';
|
||||
} else if (ev === Net.STATUS_CONNECTED) {
|
||||
evs = 'CONNECTED';
|
||||
} else if (ev === Net.STATUS_GOT_IP) {
|
||||
evs = 'GOT_IP';
|
||||
}
|
||||
print('== Net event:', ev, evs);
|
||||
}, null);
|
||||
|
||||
// Initialize LED controller
|
||||
let addColor = ffi('void addColor(char *,int,int,int)');
|
||||
let addLedDefinition = ffi('void addLedDefinition(char *, char *, char *, int, int, int)');
|
||||
let addAnimationStep = ffi('void addAnimationStep(int, int, int)');
|
||||
let LEDMode_on=1, LEDMode_off=2, LEDMode_blink=3, LEDMode_tv=4, LEDMode_fire=5;
|
||||
let LEDStateEngine_start = ffi('void startLEDStateEngine(void)');
|
||||
let LEDStateEngine_pause = ffi('void pauseLEDStateEngine(void)');
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user