Boot sequence (#946)

* refactor bootsequence

* inf can be null

* align elements
This commit is contained in:
Peli de Halleux 2019-10-10 09:15:57 -07:00 committed by GitHub
parent d442f5aa41
commit 00fefe10d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 18 deletions

View File

@ -2,9 +2,5 @@
console.addListener(function(priority: ConsolePriority, msg: string) { console.addListener(function(priority: ConsolePriority, msg: string) {
control.dmesg(msg.substr(0, msg.length - 1)) control.dmesg(msg.substr(0, msg.length - 1))
}) })
// pulse green, play startup sound, turn off light // boot sequence
brick.setStatusLight(StatusLight.GreenPulse); brick.showBoot();
// We pause for 100ms to give time to read sensor values, so they work in on_start block
pause(400)
// and we're ready
brick.setStatusLight(StatusLight.Off);

View File

@ -129,8 +129,8 @@ namespace brick {
screenMode = ScreenMode.Ports; screenMode = ScreenMode.Ports;
renderPorts(); renderPorts();
control.runInParallel(function() { control.runInParallel(function () {
while(screenMode == ScreenMode.Ports) { while (screenMode == ScreenMode.Ports) {
renderPorts(); renderPorts();
pause(50); pause(50);
} }
@ -140,8 +140,18 @@ namespace brick {
function renderPorts() { function renderPorts() {
const col = 44; const col = 44;
const lineHeight8 = image.font8.charHeight + 2; const lineHeight8 = image.font8.charHeight + 2;
const h = screen.height;
clearScreen(); clearScreen();
for (let i = 0; i < 4; ++i) {
const x = i * col + 2;
screen.print("ABCD"[i], x, 1 * lineHeight8, 1, image.font8)
screen.print((i + 1).toString(), x, h - lineHeight8, 1, image.font8)
}
screen.drawLine(0, 5 * lineHeight8, screen.width, 5 * lineHeight8, 1);
screen.drawLine(0, h - 5 * lineHeight8, screen.width, h - 5 * lineHeight8, 1)
function scale(x: number) { function scale(x: number) {
if (Math.abs(x) >= 5000) { if (Math.abs(x) >= 5000) {
const k = Math.floor(x / 1000); const k = Math.floor(x / 1000);
@ -155,27 +165,38 @@ namespace brick {
const datas = motors.getAllMotorData(); const datas = motors.getAllMotorData();
for (let i = 0; i < datas.length; ++i) { for (let i = 0; i < datas.length; ++i) {
const data = datas[i]; const data = datas[i];
const x = i * col + 2;
if (!data.actualSpeed && !data.count) continue; if (!data.actualSpeed && !data.count) continue;
const x = i * col; screen.print(`${scale(data.actualSpeed)}%`, x, 3 * lineHeight8, 1, image.font8)
screen.print("ABCD"[i], x + 2, 1 * lineHeight8, 1, image.font8) screen.print(`${scale(data.count)}>`, x, 4 * lineHeight8, 1, image.font8)
screen.print(`${scale(data.actualSpeed)}%`, x + 2, 3 * lineHeight8, 1, image.font8)
screen.print(`${scale(data.count)}>`, x + 2, 4 * lineHeight8, 1, image.font8)
} }
screen.drawLine(0, 5 * lineHeight8, screen.width, 5 * lineHeight8, 1);
// sensors // sensors
const sis = sensors.internal.getActiveSensors(); const sis = sensors.internal.getActiveSensors();
const h = screen.height;
screen.drawLine(0, h - 5 * lineHeight8, screen.width, h - 5 * lineHeight8, 1)
for (let i = 0; i < sis.length; ++i) { for (let i = 0; i < sis.length; ++i) {
const si = sis[i]; const si = sis[i];
const x = (si.port() - 1) * col; const x = (si.port() - 1) * col + 2;
const inf = si._info(); const inf = si._info();
screen.print(si.port() + "", x, h - 4 * lineHeight8, 1, image.font8) if (inf)
screen.print(inf, x, h - 2 * lineHeight8, 1, inf.length > 4 ? image.font5 : image.font8); screen.print(inf, x, h - 2 * lineHeight8, 1, inf.length > 4 ? image.font5 : image.font8);
} }
} }
export function showBoot() {
// pulse green, play startup sound, turn off light
brick.setStatusLight(StatusLight.GreenPulse);
// We pause for 100ms to give time to read sensor values, so they work in on_start block
pause(400)
// and we're ready
brick.setStatusLight(StatusLight.Off);
// always show port by default if no UI is set
control.runInParallel(function () {
// show ports if nothing is has been shown
if (screenMode != ScreenMode.None) return;
showPorts();
})
}
/** /**
* An image * An image
* @param image the image * @param image the image