53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
/// <reference no-default-lib="true"/>
|
|
|
|
/**
|
|
* Reading and writing data to the console output.
|
|
*/
|
|
//% weight=12 color=#002050 icon="\uf120"
|
|
//% advanced=true
|
|
namespace console {
|
|
type Listener = (text: string) => void;
|
|
|
|
//% whenUsed
|
|
let listeners: Listener[] = undefined;
|
|
|
|
/**
|
|
* Write a line of text to the console output.
|
|
* @param value to send
|
|
*/
|
|
//% weight=90
|
|
//% help=console/log blockGap=8
|
|
//% text.shadowOptions.toString=true
|
|
export function log(text: string): void {
|
|
// pad text on the 32byte boundar
|
|
text += "\r\n";
|
|
control.__log(text);
|
|
// send to listeners
|
|
if (listeners)
|
|
for (let i = 0; i < listeners.length; ++i)
|
|
listeners[i](text);
|
|
}
|
|
|
|
/**
|
|
* Write a name:value pair as a line of text to the console output.
|
|
* @param name name of the value stream, eg: "x"
|
|
* @param value to write
|
|
*/
|
|
//% weight=88 blockGap=8
|
|
//% help=console/log-value
|
|
export function logValue(name: string, value: number): void {
|
|
log(name ? `${name}: ${value}` : `${value}`)
|
|
}
|
|
|
|
/**
|
|
* Adds a listener for the log messages
|
|
* @param listener
|
|
*/
|
|
//%
|
|
export function addListener(listener: (text: string) => void) {
|
|
if (!listener) return;
|
|
if (!listeners)
|
|
listeners = [];
|
|
listeners.push(listener);
|
|
}
|
|
} |