Add demo app

pull/148/head
Gordon Williams 2020-01-30 17:05:53 +00:00
parent 7f77ffa477
commit 8992ad545a
7 changed files with 191 additions and 1 deletions

View File

@ -736,5 +736,20 @@
{"name":"*ctrclk","url":"app-icon.js","evaluate":true} {"name":"*ctrclk","url":"app-icon.js","evaluate":true}
], ],
"sortorder" : -9 "sortorder" : -9
},
{ "id": "demoapp",
"name": "Demo Loop",
"icon": "app.png",
"version":"0.01",
"description": "Simple demo app - displays Bangle.js, JS logo, graphics, and Bangle.js information",
"tags": "",
"type":"app",
"allow_emulator":true,
"storage": [
{"name":"+demoapp","url":"app.json"},
{"name":"-demoapp","url":"app.js"},
{"name":"*demoapp","url":"app-icon.js","evaluate":true}
],
"sortorder" : -9
} }
] ]

View File

@ -1 +1 @@
require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA==")); require("heatshrink").decompress(atob("mEwwJC/AH4A/AH4AgA=="))

1
apps/demoapp/app-icon.js Normal file
View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("mEwwhC/AH4AT7oAQC43e9oXU73u93hiIALC5PiC6YWBAAOIABWBC7xHDC9fdl3ilAXUjAVLC5NETQQaLC46zEDAmCAogXGgLMFCwcuM4gXGcgwqBwMU9wXSDAICB7wXTAAUiO5YXKMgYXTU5gSFwLEJC5gNBFwf/AAPzC52IFwYXRqoALqAXWqoXIioXRoIXW9shC4UQNQgAMh1BinUC4Xd6AKBhqJDBAYAEoNN7tBiASBCYQDBCYIIEAAkBBIPRC6gvXL60BR6oXBkUikMQgQEBBIIDBkEABAgAEBIUiiADCkAIDDYQcCAAgJCABwXdAH4A/ABg"))

168
apps/demoapp/app.js Normal file
View File

@ -0,0 +1,168 @@
Bangle.setLCDPower(1);
Bangle.setLCDTimeout(0);
var scenes = [
function() {
y = -100;
var step = 4;
var i = setInterval(function() {
y+=step;
if (y>70) {
clearInterval(i);
i = undefined;
}
g.clearRect(0,y-(step+1),240,y-1);
g.drawImage(Bangle.getLogo(),0,y);
}, 20);
Bangle.setLCDMode();
g.clear();
return function() {
if (i) clearInterval(i);
};
},
function() {
var txt = [" ____ _ \n"+
"| __|___ ___ ___ _ _|_|___ ___ \n"+
"| __|_ -| . | _| | | | | . |\n"+
"|____|___| _|_| |___|_|_|_|___|\n"+
" |_| espruino.com\n\n",
"The JavaScript Interpreter for uCs\n",
" * On-chip JS Interpreter",
" * GPS, Acclerometer, Compass",
" * 64 MHz, 64kB RAM, 512kB + 4MB Flash",
" * 240x240 IPS LCD",
" * Speaker & Vibration motor",
" * Bluetooth LE",
" * 1 week battery life",
"",
"Includes:",
" * Tensorflow AI",
" * Bluetooth LE central & periph",
" * Graphics Library",
" * VT100 terminal",
"","",""
];
var n=0;
var i = setInterval(function() {
Terminal.println(txt[n]);
n++;
if (n>=txt.length) {
clearInterval(i);
i=undefined;
}
}, 200);
Bangle.setLCDMode();
return function() {
if (i) clearInterval(i);
};
},
function() {
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
g.clear();
y = 0;
var step = 4;
var i = setInterval(function() {
y+=step;
g.clear();
g.drawImage(img,60,60,{rotate:Math.sin(y*0.03)*0.5});
g.flip();
}, 20);
Bangle.setLCDMode("120x120");
return function() {
if (i) clearInterval(i);
};
},
function() {
var rx = 0, ry = 0;
// draw a cube
function draw() {
var rcx=Math.cos(rx),
rsx=Math.sin(rx),
rcy=Math.cos(ry),
rsy=Math.sin(ry);
// Project 3D coordinates into 2D
function p(x,y,z) {
var t;
t = x*rcy + z*rsy;
z = z*rcy - x*rsy;
x=t;
t = y*rcx + z*rsx;
z = z*rcx - y*rsx;
y=t;
z += 6;
return [240 * (0.5 + x/z), 240 * (0.3 + y/z)];
}
var a;
// draw a series of lines to make up our cube
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
a = p(1,-1,-1); g.lineTo(a[0],a[1]);
a = p(1,1,-1); g.lineTo(a[0],a[1]);
a = p(-1,1,-1); g.lineTo(a[0],a[1]);
a = p(-1,-1,-1); g.lineTo(a[0],a[1]);
a = p(-1,-1,1); g.moveTo(a[0],a[1]);
a = p(1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
a = p(-1,-1,-1); g.moveTo(a[0],a[1]);
a = p(-1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,-1,-1); g.moveTo(a[0],a[1]);
a = p(1,-1,1); g.lineTo(a[0],a[1]);
a = p(1,1,-1); g.moveTo(a[0],a[1]);
a = p(1,1,1); g.lineTo(a[0],a[1]);
a = p(-1,1,-1); g.moveTo(a[0],a[1]);
a = p(-1,1,1); g.lineTo(a[0],a[1]);
}
// rotate and redraw the cube
function step() {
// rotate
rx += 0.1;
ry += 0.11;
// draw
g.clear();
g.setColor(0xFFFF);
draw();
g.flip();
}
Bangle.setLCDMode("doublebuffered");
g.clear();g.flip();
var i = setInterval(step,50);
return function() {
clearInterval(i);
};
},
function() {
var img = require("heatshrink").decompress(atob("oNBxH+5wA/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AHGpAAoQKv4ADCBQAeqsrAAejBw9/B4oABqt/IGepHw5CEQspALH5hBC5pAvv4/MAALFkIBWpPI6IHqpAu0Z3GfYOpRYdPQEhALYIp2FBYNVI4JAvvL4LH0yBYAFJAQQQ5Ay1JAFftBAQBYxCDv+qIGiCHIQiGnIBfOv5BJIQRAyIJkrvKEkIBrFBB4qEGIGRCNYsZAQIQV/IZDEiICRCDQVJAUIQVPC4lVIF6yJQYpAZ5t/FYvNIBepqtVIJGjIDoqBDY2pdYo3DfAhBIQLmpvIcDvIrC5oJEIAhTCGQmj5qgEC4t5e7YrBqt5BI6UFBg15v4XHbQwAQb4oAKv7NKABdVRoYATUAwnICqjZFIMdVE4+jXI4XGYCxBFFZN/M5OpCxUrvJ/ZFYmjvNVAAY+KCwpDBC6YAV5vNC9oA/AH4A/AHYA=="));
g.clear();
y = 0;
var step = 4;
var i = setInterval(function() {
y+=step;
g.scroll(0,1);
g.drawImage(img,Math.random()*240,Math.random()*240,
{rotate:Math.random()*6.3, scale:0.5+Math.random()});
}, 1);
Bangle.setLCDMode();
return function() {
if (i) clearInterval(i);
};
}
];
var sceneNo = scenes.length-1;
var stop = scenes[sceneNo]();
setInterval(function() {
sceneNo++;
if (sceneNo>=scenes.length) sceneNo=0;
stop();
stop = scenes[sceneNo]();
}, 10000);

5
apps/demoapp/app.json Normal file
View File

@ -0,0 +1,5 @@
{
"name":"Demo Loop",
"icon":"*demoapp",
"src":"-demoapp"
}

BIN
apps/demoapp/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -11,6 +11,7 @@ var APPJSON = ROOTDIR+'/apps.json';
var OUTFILE = ROOTDIR+'/firmware.js'; var OUTFILE = ROOTDIR+'/firmware.js';
var APPS = [ // IDs of apps to install var APPS = [ // IDs of apps to install
"boot", "boot",
"launch",
"mclock", "mclock",
"setting", "setting",
"astroid", "astroid",