/// /// /// /// /// declare namespace pxsim { class DalBoard extends CoreBoard { ledMatrixState: LedMatrixState; edgeConnectorState: EdgeConnectorState; serialState: SerialState; accelerometerState: AccelerometerState; compassState: CompassState; thermometerState: ThermometerState; lightSensorState: LightSensorState; buttonPairState: ButtonPairState; radioState: RadioState; neopixelState: NeoPixelState; fileSystem: FileSystemState; view: SVGElement; constructor(); receiveMessage(msg: SimulatorMessage): void; initAsync(msg: SimulatorRunMessage): Promise; screenshot(): string; } function initRuntimeWithDalBoard(): void; function board(): DalBoard; } import pxtrunner = pxt.runner; import pxtdocs = pxt.docs; declare namespace pxsim.instructions { function drawInstructions(): void; } declare namespace pxsim { function sendBufferBitRobotAsm(buffer: RefBuffer, pin: DigitalPin): void; } declare namespace pxsim.input { function onGesture(gesture: number, handler: RefAction): void; function acceleration(dimension: number): number; function rotation(kind: number): number; function setAccelerometerRange(range: number): void; } declare namespace pxsim { /** * Co-ordinate systems that can be used. * RAW: Unaltered data. Data will be returned directly from the accelerometer. * * SIMPLE_CARTESIAN: Data will be returned based on an easy to understand alignment, consistent with the cartesian system taught in schools. * When held upright, facing the user: * * / * +--------------------+ z * | | * | ..... | * | * ..... * | * ^ | ..... | * | | | * y +--------------------+ x--> * * * NORTH_EAST_DOWN: Data will be returned based on the industry convention of the North East Down (NED) system. * When held upright, facing the user: * * z * +--------------------+ / * | | * | ..... | * | * ..... * | * ^ | ..... | * | | | * x +--------------------+ y--> * */ enum MicroBitCoordinateSystem { RAW = 0, SIMPLE_CARTESIAN = 1, NORTH_EAST_DOWN = 2, } class Accelerometer { runtime: Runtime; private sigma; private lastGesture; private currentGesture; private sample; private shake; private pitch; private roll; private id; isActive: boolean; sampleRange: number; constructor(runtime: Runtime); setSampleRange(range: number): void; activate(): void; /** * Reads the acceleration data from the accelerometer, and stores it in our buffer. * This is called by the tick() member function, if the interrupt is set! */ update(x: number, y: number, z: number): void; instantaneousAccelerationSquared(): number; /** * Service function. Determines the best guess posture of the device based on instantaneous data. * This makes no use of historic data (except for shake), and forms this input to the filter implemented in updateGesture(). * * @return A best guess of the current posture of the device, based on instantaneous data. */ private instantaneousPosture(); updateGesture(): void; /** * Reads the X axis value of the latest update from the accelerometer. * @param system The coordinate system to use. By default, a simple cartesian system is provided. * @return The force measured in the X axis, in milli-g. * * Example: * @code * uBit.accelerometer.getX(); * uBit.accelerometer.getX(RAW); * @endcode */ getX(system?: MicroBitCoordinateSystem): number; /** * Reads the Y axis value of the latest update from the accelerometer. * @param system The coordinate system to use. By default, a simple cartesian system is provided. * @return The force measured in the Y axis, in milli-g. * * Example: * @code * uBit.accelerometer.getY(); * uBit.accelerometer.getY(RAW); * @endcode */ getY(system?: MicroBitCoordinateSystem): number; /** * Reads the Z axis value of the latest update from the accelerometer. * @param system The coordinate system to use. By default, a simple cartesian system is provided. * @return The force measured in the Z axis, in milli-g. * * Example: * @code * uBit.accelerometer.getZ(); * uBit.accelerometer.getZ(RAW); * @endcode */ getZ(system?: MicroBitCoordinateSystem): number; /** * Provides a rotation compensated pitch of the device, based on the latest update from the accelerometer. * @return The pitch of the device, in degrees. * * Example: * @code * uBit.accelerometer.getPitch(); * @endcode */ getPitch(): number; getPitchRadians(): number; /** * Provides a rotation compensated roll of the device, based on the latest update from the accelerometer. * @return The roll of the device, in degrees. * * Example: * @code * uBit.accelerometer.getRoll(); * @endcode */ getRoll(): number; getRollRadians(): number; /** * Recalculate roll and pitch values for the current sample. * We only do this at most once per sample, as the necessary trigonemteric functions are rather * heavyweight for a CPU without a floating point unit... */ recalculatePitchRoll(): void; } class AccelerometerState { accelerometer: Accelerometer; useShake: boolean; constructor(runtime: Runtime); } } declare namespace pxsim.input { function onButtonPressed(button: number, handler: RefAction): void; function buttonIsPressed(button: number): boolean; } declare namespace pxsim.input { function compassHeading(): number; function magneticForce(): number; } declare namespace pxsim.input { function onPinPressed(pinId: number, handler: RefAction): void; function onPinReleased(pinId: number, handler: RefAction): void; function pinIsPressed(pinId: number): boolean; } declare namespace pxsim { function getPin(id: number): Pin; } declare namespace pxsim.pins { function digitalReadPin(pinId: number): number; function digitalWritePin(pinId: number, value: number): void; function setPull(pinId: number, pull: number): void; function analogReadPin(pinId: number): number; function analogWritePin(pinId: number, value: number): void; function analogSetPeriod(pinId: number, micros: number): void; function servoWritePin(pinId: number, value: number): void; function servoSetPulse(pinId: number, micros: number): void; function analogSetPitchPin(pinId: number): void; function analogPitch(frequency: number, ms: number): void; } declare namespace pxsim.files { function appendLine(filename: string, text: string): void; function appendString(filename: string, text: string): void; function appendNumber(filename: string, value: number): void; function remove(filename: string): void; function readToSerial(filename: string): void; } declare namespace pxsim { enum DisplayMode { bw = 0, greyscale = 1, } class LedMatrixState { image: Image; brigthness: number; displayMode: DisplayMode; font: Image; disabled: boolean; animationQ: AnimationQueue; constructor(runtime: Runtime); } class Image extends RefObject { static height: number; width: number; data: number[]; constructor(width: number, data: number[]); print(): void; get(x: number, y: number): number; set(x: number, y: number, v: number): void; copyTo(xSrcIndex: number, length: number, target: Image, xTargetIndex: number): void; shiftLeft(cols: number): void; shiftRight(cols: number): void; clear(): void; } function createInternalImage(width: number): Image; function createImage(width: number): Image; function createImageFromBuffer(data: number[]): Image; function createImageFromString(text: string): Image; function createFont(): Image; } declare namespace pxsim.images { function createImage(img: Image): Image; function createBigImage(img: Image): Image; } declare namespace pxsim.ImageMethods { function showImage(leds: Image, offset: number, interval: number): void; function plotImage(leds: Image, offset: number): void; function height(leds: Image): number; function width(leds: Image): number; function plotFrame(leds: Image, frame: number): void; function showFrame(leds: Image, frame: number, interval: number): void; function pixel(leds: Image, x: number, y: number): number; function setPixel(leds: Image, x: number, y: number, v: number): void; function clear(leds: Image): void; function setPixelBrightness(i: Image, x: number, y: number, b: number): void; function pixelBrightness(i: Image, x: number, y: number): number; function scrollImage(leds: Image, stride: number, interval: number): void; } declare namespace pxsim.basic { function showNumber(x: number, interval: number): void; function showString(s: string, interval: number): void; function showLeds(leds: Image, delay: number): void; function clearScreen(): void; function showAnimation(leds: Image, interval: number): void; function plotLeds(leds: Image): void; } declare namespace pxsim.led { function plot(x: number, y: number): void; function plotBrightness(x: number, y: number, brightness: number): void; function unplot(x: number, y: number): void; function point(x: number, y: number): boolean; function brightness(): number; function setBrightness(value: number): void; function stopAnimation(): void; function setDisplayMode(mode: DisplayMode): void; function displayMode(): DisplayMode; function screenshot(): Image; function enable(on: boolean): void; } declare namespace pxsim.input { function lightLevel(): number; } declare namespace pxsim { /** * Error codes used in the micro:bit runtime. */ enum PanicCode { MICROBIT_OOM = 20, MICROBIT_HEAP_ERROR = 30, MICROBIT_NULL_DEREFERENCE = 40, } function panic(code: number): void; interface RuntimeOptions { theme: string; } } declare namespace pxsim.basic { var pause: typeof thread.pause; var forever: typeof thread.forever; } declare namespace pxsim.control { var inBackground: typeof thread.runInBackground; function reset(): void; function waitMicros(micros: number): void; function deviceName(): string; function deviceSerialNumber(): number; function onEvent(id: number, evid: number, handler: RefAction): void; function raiseEvent(id: number, evid: number, mode: number): void; function eventTimestamp(): number; function eventValue(): string | number; } declare namespace pxsim.pxtcore { function registerWithDal(id: number, evid: number, handler: RefAction): void; } declare namespace pxsim.input { function runningTime(): number; function runningTimeMicros(): number; function calibrateCompass(): void; } declare namespace pxsim.pins { function onPulsed(name: number, pulse: number, body: RefAction): void; function pulseDuration(): number; function createBuffer(sz: number): RefBuffer; function pulseIn(name: number, value: number, maxDuration: number): number; function spiWrite(value: number): number; function spiFrequency(f: number): void; function spiFormat(bits: number, mode: number): void; function spiPins(mosi: number, miso: number, sck: number): void; function i2cReadBuffer(address: number, size: number, repeat?: boolean): RefBuffer; function i2cWriteBuffer(address: number, buf: RefBuffer, repeat?: boolean): void; function getPinAddress(name: number): Pin; function setEvents(name: number, event: number): void; } declare namespace pxsim.devices { function tellCameraTo(action: number): void; function tellRemoteControlTo(action: number): void; function raiseAlertTo(action: number): void; function onSignalStrengthChanged(action: number): void; function signalStrength(): number; function onGamepadButton(button: number, body: RefAction): void; } declare namespace pxsim.bluetooth { function startIOPinService(): void; function startLEDService(): void; function startTemperatureService(): void; function startMagnetometerService(): void; function startAccelerometerService(): void; function startButtonService(): void; function startUartService(): void; function uartWriteString(s: string): void; function uartReadUntil(del: string): string; function onUartDataReceived(delimiters: string, handler: RefAction): void; function onBluetoothConnected(a: RefAction): void; function onBluetoothDisconnected(a: RefAction): void; function advertiseUrl(url: string, power: number, connectable: boolean): void; function advertiseUidBuffer(nsAndInstance: RefBuffer, power: number, connectable: boolean): void; function stopAdvertising(): void; function setTransmitPower(power: number): void; } declare namespace pxsim { function sendBufferAsm(buffer: RefBuffer, pin: DigitalPin): void; } declare namespace pxsim { interface PacketBuffer { payload: SimulatorRadioPacketPayload; rssi: number; serial: number; time: number; } class RadioDatagram { private runtime; datagram: PacketBuffer[]; lastReceived: PacketBuffer; constructor(runtime: Runtime); queue(packet: PacketBuffer): void; send(payload: SimulatorRadioPacketPayload): void; recv(): PacketBuffer; private static defaultPacket(); } class RadioBus { private runtime; power: number; transmitSerialNumber: boolean; datagram: RadioDatagram; constructor(runtime: Runtime); setTransmitPower(power: number): void; setTransmitSerialNumber(sn: boolean): void; broadcast(msg: number, groupId: number): void; } class RadioState { bus: RadioBus; groupId: number; constructor(runtime: Runtime); setGroup(id: number): void; broadcast(msg: number): void; receivePacket(packet: SimulatorRadioPacketMessage): void; } } declare namespace pxsim.radio { function broadcastMessage(msg: number): void; function onBroadcastMessageReceived(msg: number, handler: RefAction): void; function setGroup(id: number): void; function setTransmitPower(power: number): void; function setTransmitSerialNumber(transmit: boolean): void; function sendNumber(value: number): void; function sendString(msg: string): void; function sendBuffer(buf: RefBuffer): void; function writeValueToSerial(): void; function writeReceivedPacketToSerial(): void; function sendValue(name: string, value: number): void; function receiveNumber(): number; function receiveString(): string; function receivedSignalStrength(): number; function onDataReceived(handler: RefAction): void; function receivedNumber(): number; function receivedSerial(): number; function receivedString(): string; function receivedBuffer(): RefBuffer; function receivedTime(): number; } declare namespace pxsim { class SerialState { serialIn: string[]; receiveData(data: string): void; readSerial(): string; serialOutBuffer: string; writeSerial(s: string): void; } } declare namespace pxsim.serial { function writeString(s: string): void; function writeBuffer(buf: RefBuffer): void; function readUntil(del: string): string; function readString(): string; function onDataReceived(delimiters: string, handler: RefAction): void; function redirect(tx: number, rx: number, rate: number): void; function redirectToUSB(): void; } declare namespace pxsim { class ThermometerState { usesTemperature: boolean; temperature: number; } } declare namespace pxsim.input { function temperature(): number; } declare namespace pxsim.visuals { } declare namespace pxsim.visuals { function mkLedMatrixSvg(xy: Coord, rows: number, cols: number): { el: SVGGElement; y: number; x: number; w: number; h: number; leds: SVGElement[]; ledsOuter: SVGElement[]; background: SVGElement; }; interface ILedMatrixTheme { background?: string; ledOn?: string; ledOff?: string; } var defaultLedMatrixTheme: ILedMatrixTheme; const LED_MATRIX_STYLE: string; class LedMatrixView implements IBoardPart { private background; private ledsOuter; private leds; private state; private bus; element: SVGElement; defs: SVGElement[]; private theme; private DRAW_SIZE; private ACTIVE_SIZE; style: string; init(bus: EventBus, state: LedMatrixState): void; moveToCoord(xy: Coord): void; updateTheme(): void; updateState(): void; buildDom(): SVGGElement; } } declare namespace pxsim.visuals { interface IBoardTheme { highContrast?: boolean; accent?: string; display?: string; pin?: string; pinTouched?: string; pinActive?: string; ledOn?: string; ledOff?: string; buttonOuter?: string; buttonUp?: string; buttonDown?: string; virtualButtonOuter?: string; virtualButtonUp?: string; virtualButtonDown?: string; lightLevelOn?: string; lightLevelOff?: string; } var themes: IBoardTheme[]; function randomTheme(highContrast?: boolean): IBoardTheme; interface IBoardProps { runtime?: pxsim.Runtime; theme?: IBoardTheme; disableTilt?: boolean; wireframe?: boolean; } class MicrobitBoardSvg implements BoardView { props: IBoardProps; element: SVGSVGElement; private style; private defs; private g; private logos; private head; private headInitialized; private headText; private display; private buttons; private buttonsOuter; private buttonABText; private pins; private pinGradients; private pinTexts; private ledsOuter; private leds; private systemLed; private antenna; private lightLevelButton; private lightLevelGradient; private lightLevelText; private thermometerGradient; private thermometer; private thermometerText; private shakeButton; private shakeText; board: pxsim.DalBoard; private pinNmToCoord; constructor(props: IBoardProps); getView(): SVGAndSize; getCoord(pinNm: string): Coord; highlightPin(pinNm: string): void; getPinDist(): number; recordPinCoords(): void; private updateTheme(); updateState(): void; private updateGestures(); private updateButtonAB(); private updatePin(pin, index); private updateTemperature(); private updateHeading(); private lastFlashTime; flashSystemLed(): void; private lastAntennaFlash; flashAntenna(): void; private updatePins(); private updateLightLevel(); private applyLightLevel(); private updateTilt(); private buildDom(); private attachEvents(); } } declare namespace pxsim.visuals { function mkNeoPixelPart(xy?: Coord): SVGElAndSize; class NeoPixel { el: SVGElement; cy: number; constructor(xy?: Coord); setRgb(rgb: [number, number, number]): void; } class NeoPixelCanvas { canvas: SVGSVGElement; pin: number; pixels: NeoPixel[]; private viewBox; private background; constructor(pin: number); private updateViewBox(x, y, w, h); update(colors: RGBW[]): void; setLoc(xy: Coord): void; } class NeoPixelView implements IBoardPart { style: string; element: SVGElement; overElement: SVGElement; defs: SVGElement[]; private state; private canvas; private part; private stripGroup; private lastLocation; private pin; private mode; init(bus: EventBus, state: NeoPixelState, svgEl: SVGSVGElement, otherParams: Map): void; moveToCoord(xy: Coord): void; private updateStripLoc(); updateState(): void; updateTheme(): void; } }