rp2040js 0.17.16 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/clock/clock.d.ts +11 -11
- package/dist/cjs/clock/clock.js +2 -2
- package/dist/cjs/clock/mock-clock.d.ts +17 -17
- package/dist/cjs/clock/mock-clock.js +52 -52
- package/dist/cjs/clock/realtime-clock.d.ts +23 -23
- package/dist/cjs/clock/realtime-clock.js +73 -73
- package/dist/cjs/cortex-m0-core.d.ts +87 -87
- package/dist/cjs/cortex-m0-core.js +1251 -1251
- package/dist/cjs/gdb/gdb-connection.d.ts +11 -11
- package/dist/cjs/gdb/gdb-connection.js +57 -57
- package/dist/cjs/gdb/gdb-server.d.ts +23 -23
- package/dist/cjs/gdb/gdb-server.js +232 -232
- package/dist/cjs/gdb/gdb-tcp-server.d.ts +10 -10
- package/dist/cjs/gdb/gdb-tcp-server.js +34 -34
- package/dist/cjs/gdb/gdb-utils.d.ts +9 -9
- package/dist/cjs/gdb/gdb-utils.js +48 -48
- package/dist/cjs/gpio-pin.d.ts +56 -56
- package/dist/cjs/gpio-pin.js +216 -216
- package/dist/cjs/index.d.ts +11 -11
- package/dist/cjs/index.js +36 -36
- package/dist/cjs/interpolator.d.ts +36 -36
- package/dist/cjs/interpolator.js +150 -150
- package/dist/cjs/irq.d.ts +29 -29
- package/dist/cjs/irq.js +33 -33
- package/dist/cjs/peripherals/adc.d.ts +52 -52
- package/dist/cjs/peripherals/adc.js +261 -261
- package/dist/cjs/peripherals/busctrl.d.ts +10 -10
- package/dist/cjs/peripherals/busctrl.js +84 -84
- package/dist/cjs/peripherals/clocks.d.ts +9 -9
- package/dist/cjs/peripherals/clocks.js +42 -42
- package/dist/cjs/peripherals/dma.d.ts +109 -109
- package/dist/cjs/peripherals/dma.js +520 -520
- package/dist/cjs/peripherals/i2c.d.ts +54 -54
- package/dist/cjs/peripherals/i2c.js +458 -458
- package/dist/cjs/peripherals/io.d.ts +11 -11
- package/dist/cjs/peripherals/io.js +100 -100
- package/dist/cjs/peripherals/pads.d.ts +13 -13
- package/dist/cjs/peripherals/pads.js +58 -58
- package/dist/cjs/peripherals/peripheral.d.ts +22 -22
- package/dist/cjs/peripherals/peripheral.js +61 -61
- package/dist/cjs/peripherals/pio.d.ts +120 -120
- package/dist/cjs/peripherals/pio.js +1086 -1086
- package/dist/cjs/peripherals/ppb.d.ts +25 -25
- package/dist/cjs/peripherals/ppb.js +229 -229
- package/dist/cjs/peripherals/pwm.d.ts +65 -65
- package/dist/cjs/peripherals/pwm.js +372 -372
- package/dist/cjs/peripherals/reset.d.ts +8 -8
- package/dist/cjs/peripherals/reset.js +40 -40
- package/dist/cjs/peripherals/rtc.d.ts +10 -10
- package/dist/cjs/peripherals/rtc.js +74 -74
- package/dist/cjs/peripherals/spi.d.ts +38 -30
- package/dist/cjs/peripherals/spi.js +240 -218
- package/dist/cjs/peripherals/ssi.d.ts +6 -6
- package/dist/cjs/peripherals/ssi.js +43 -43
- package/dist/cjs/peripherals/syscfg.d.ts +5 -5
- package/dist/cjs/peripherals/syscfg.js +26 -26
- package/dist/cjs/peripherals/sysinfo.d.ts +4 -4
- package/dist/cjs/peripherals/sysinfo.js +22 -22
- package/dist/cjs/peripherals/tbman.d.ts +4 -4
- package/dist/cjs/peripherals/tbman.js +17 -17
- package/dist/cjs/peripherals/timer.d.ts +18 -18
- package/dist/cjs/peripherals/timer.js +156 -156
- package/dist/cjs/peripherals/uart.d.ts +31 -28
- package/dist/cjs/peripherals/uart.js +132 -135
- package/dist/cjs/peripherals/usb.d.ts +29 -29
- package/dist/cjs/peripherals/usb.js +309 -309
- package/dist/cjs/rp2040.d.ts +71 -71
- package/dist/cjs/rp2040.js +361 -346
- package/dist/cjs/sio.d.ts +21 -21
- package/dist/cjs/sio.js +425 -425
- package/dist/cjs/usb/cdc.d.ts +20 -20
- package/dist/cjs/usb/cdc.js +126 -126
- package/dist/cjs/usb/interfaces.d.ts +47 -47
- package/dist/cjs/usb/interfaces.js +46 -46
- package/dist/cjs/usb/setup.d.ts +5 -5
- package/dist/cjs/usb/setup.js +53 -53
- package/dist/cjs/utils/assembler.d.ts +79 -79
- package/dist/cjs/utils/assembler.js +328 -328
- package/dist/cjs/utils/bit.d.ts +3 -3
- package/dist/cjs/utils/bit.js +15 -15
- package/dist/cjs/utils/fifo.d.ts +15 -15
- package/dist/cjs/utils/fifo.js +56 -56
- package/dist/cjs/utils/logging.d.ts +23 -23
- package/dist/cjs/utils/logging.js +48 -48
- package/dist/cjs/utils/pio-assembler.d.ts +45 -45
- package/dist/cjs/utils/pio-assembler.js +87 -87
- package/dist/cjs/utils/time.d.ts +2 -2
- package/dist/cjs/utils/time.js +32 -32
- package/dist/cjs/utils/timer32.d.ts +57 -57
- package/dist/cjs/utils/timer32.js +208 -208
- package/dist/esm/clock/clock.d.ts +11 -11
- package/dist/esm/clock/clock.js +1 -1
- package/dist/esm/clock/mock-clock.d.ts +17 -17
- package/dist/esm/clock/mock-clock.js +47 -47
- package/dist/esm/clock/realtime-clock.d.ts +23 -23
- package/dist/esm/clock/realtime-clock.js +68 -68
- package/dist/esm/cortex-m0-core.d.ts +87 -87
- package/dist/esm/cortex-m0-core.js +1247 -1247
- package/dist/esm/gdb/gdb-connection.d.ts +11 -11
- package/dist/esm/gdb/gdb-connection.js +53 -53
- package/dist/esm/gdb/gdb-server.d.ts +23 -23
- package/dist/esm/gdb/gdb-server.js +228 -228
- package/dist/esm/gdb/gdb-tcp-server.d.ts +10 -10
- package/dist/esm/gdb/gdb-tcp-server.js +30 -30
- package/dist/esm/gdb/gdb-utils.d.ts +9 -9
- package/dist/esm/gdb/gdb-utils.js +36 -36
- package/dist/esm/gpio-pin.d.ts +56 -56
- package/dist/esm/gpio-pin.js +212 -212
- package/dist/esm/index.d.ts +11 -11
- package/dist/esm/index.js +11 -11
- package/dist/esm/interpolator.d.ts +36 -36
- package/dist/esm/interpolator.js +145 -145
- package/dist/esm/irq.d.ts +29 -29
- package/dist/esm/irq.js +30 -30
- package/dist/esm/peripherals/adc.d.ts +52 -52
- package/dist/esm/peripherals/adc.js +257 -257
- package/dist/esm/peripherals/busctrl.d.ts +10 -10
- package/dist/esm/peripherals/busctrl.js +80 -80
- package/dist/esm/peripherals/clocks.d.ts +9 -9
- package/dist/esm/peripherals/clocks.js +38 -38
- package/dist/esm/peripherals/dma.d.ts +109 -109
- package/dist/esm/peripherals/dma.js +515 -515
- package/dist/esm/peripherals/i2c.d.ts +54 -54
- package/dist/esm/peripherals/i2c.js +454 -454
- package/dist/esm/peripherals/io.d.ts +11 -11
- package/dist/esm/peripherals/io.js +96 -96
- package/dist/esm/peripherals/pads.d.ts +13 -13
- package/dist/esm/peripherals/pads.js +54 -54
- package/dist/esm/peripherals/peripheral.d.ts +22 -22
- package/dist/esm/peripherals/peripheral.js +55 -55
- package/dist/esm/peripherals/pio.d.ts +120 -120
- package/dist/esm/peripherals/pio.js +1081 -1081
- package/dist/esm/peripherals/ppb.d.ts +25 -25
- package/dist/esm/peripherals/ppb.js +225 -225
- package/dist/esm/peripherals/pwm.d.ts +65 -65
- package/dist/esm/peripherals/pwm.js +368 -368
- package/dist/esm/peripherals/reset.d.ts +8 -8
- package/dist/esm/peripherals/reset.js +36 -36
- package/dist/esm/peripherals/rtc.d.ts +10 -10
- package/dist/esm/peripherals/rtc.js +70 -70
- package/dist/esm/peripherals/spi.d.ts +38 -30
- package/dist/esm/peripherals/spi.js +236 -214
- package/dist/esm/peripherals/ssi.d.ts +6 -6
- package/dist/esm/peripherals/ssi.js +39 -39
- package/dist/esm/peripherals/syscfg.d.ts +5 -5
- package/dist/esm/peripherals/syscfg.js +22 -22
- package/dist/esm/peripherals/sysinfo.d.ts +4 -4
- package/dist/esm/peripherals/sysinfo.js +18 -18
- package/dist/esm/peripherals/tbman.d.ts +4 -4
- package/dist/esm/peripherals/tbman.js +13 -13
- package/dist/esm/peripherals/timer.d.ts +18 -18
- package/dist/esm/peripherals/timer.js +152 -152
- package/dist/esm/peripherals/uart.d.ts +31 -28
- package/dist/esm/peripherals/uart.js +128 -131
- package/dist/esm/peripherals/usb.d.ts +29 -29
- package/dist/esm/peripherals/usb.js +305 -305
- package/dist/esm/rp2040.d.ts +71 -71
- package/dist/esm/rp2040.js +357 -342
- package/dist/esm/sio.d.ts +21 -21
- package/dist/esm/sio.js +421 -421
- package/dist/esm/usb/cdc.d.ts +20 -20
- package/dist/esm/usb/cdc.js +121 -121
- package/dist/esm/usb/interfaces.d.ts +47 -47
- package/dist/esm/usb/interfaces.js +43 -43
- package/dist/esm/usb/setup.d.ts +5 -5
- package/dist/esm/usb/setup.js +46 -46
- package/dist/esm/utils/assembler.d.ts +79 -79
- package/dist/esm/utils/assembler.js +245 -245
- package/dist/esm/utils/bit.d.ts +3 -3
- package/dist/esm/utils/bit.js +9 -9
- package/dist/esm/utils/fifo.d.ts +15 -15
- package/dist/esm/utils/fifo.js +52 -52
- package/dist/esm/utils/logging.d.ts +23 -23
- package/dist/esm/utils/logging.js +44 -44
- package/dist/esm/utils/pio-assembler.d.ts +45 -45
- package/dist/esm/utils/pio-assembler.js +75 -75
- package/dist/esm/utils/time.d.ts +2 -2
- package/dist/esm/utils/time.js +27 -27
- package/dist/esm/utils/timer32.d.ts +57 -57
- package/dist/esm/utils/timer32.js +203 -203
- package/package.json +34 -22
- package/dist/esm/package.json +0 -1
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ npm start
|
|
|
30
30
|
|
|
31
31
|
### MicroPython code
|
|
32
32
|
|
|
33
|
-
To run the MicroPython demo, first download [
|
|
33
|
+
To run the MicroPython demo, first download [RPI_PICO-20230426-v1.20.0.uf2](https://micropython.org/resources/firmware/RPI_PICO-20230426-v1.20.0.uf2), place it in the rp2040js root directory, then run:
|
|
34
34
|
|
|
35
35
|
```
|
|
36
36
|
npm install
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export interface IClockTimer {
|
|
2
|
-
pause(currentMicros: number): void;
|
|
3
|
-
resume(currentMicros: number): void;
|
|
4
|
-
}
|
|
5
|
-
export interface IClock {
|
|
6
|
-
readonly micros: number;
|
|
7
|
-
pause(): void;
|
|
8
|
-
resume(): void;
|
|
9
|
-
createTimer(deltaMicros: number, callback: () => void): IClockTimer;
|
|
10
|
-
deleteTimer(timer: IClockTimer): void;
|
|
11
|
-
}
|
|
1
|
+
export interface IClockTimer {
|
|
2
|
+
pause(currentMicros: number): void;
|
|
3
|
+
resume(currentMicros: number): void;
|
|
4
|
+
}
|
|
5
|
+
export interface IClock {
|
|
6
|
+
readonly micros: number;
|
|
7
|
+
pause(): void;
|
|
8
|
+
resume(): void;
|
|
9
|
+
createTimer(deltaMicros: number, callback: () => void): IClockTimer;
|
|
10
|
+
deleteTimer(timer: IClockTimer): void;
|
|
11
|
+
}
|
package/dist/cjs/clock/clock.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { IClock, IClockTimer } from './clock';
|
|
2
|
-
export declare class MockClockTimer implements IClockTimer {
|
|
3
|
-
readonly micros: number;
|
|
4
|
-
readonly callback: () => void;
|
|
5
|
-
constructor(micros: number, callback: () => void);
|
|
6
|
-
pause(): void;
|
|
7
|
-
resume(): void;
|
|
8
|
-
}
|
|
9
|
-
export declare class MockClock implements IClock {
|
|
10
|
-
micros: number;
|
|
11
|
-
readonly timers: MockClockTimer[];
|
|
12
|
-
pause(): void;
|
|
13
|
-
resume(): void;
|
|
14
|
-
advance(deltaMicros: number): void;
|
|
15
|
-
createTimer(deltaMicros: number, callback: () => void): MockClockTimer;
|
|
16
|
-
deleteTimer(timer: IClockTimer): void;
|
|
17
|
-
}
|
|
1
|
+
import { IClock, IClockTimer } from './clock.js';
|
|
2
|
+
export declare class MockClockTimer implements IClockTimer {
|
|
3
|
+
readonly micros: number;
|
|
4
|
+
readonly callback: () => void;
|
|
5
|
+
constructor(micros: number, callback: () => void);
|
|
6
|
+
pause(): void;
|
|
7
|
+
resume(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare class MockClock implements IClock {
|
|
10
|
+
micros: number;
|
|
11
|
+
readonly timers: MockClockTimer[];
|
|
12
|
+
pause(): void;
|
|
13
|
+
resume(): void;
|
|
14
|
+
advance(deltaMicros: number): void;
|
|
15
|
+
createTimer(deltaMicros: number, callback: () => void): MockClockTimer;
|
|
16
|
+
deleteTimer(timer: IClockTimer): void;
|
|
17
|
+
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockClock = exports.MockClockTimer = void 0;
|
|
4
|
-
class MockClockTimer {
|
|
5
|
-
constructor(micros, callback) {
|
|
6
|
-
this.micros = micros;
|
|
7
|
-
this.callback = callback;
|
|
8
|
-
}
|
|
9
|
-
pause() {
|
|
10
|
-
/* intentionally empty */
|
|
11
|
-
}
|
|
12
|
-
resume() {
|
|
13
|
-
/* intentionally empty */
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.MockClockTimer = MockClockTimer;
|
|
17
|
-
class MockClock {
|
|
18
|
-
constructor() {
|
|
19
|
-
this.micros = 0;
|
|
20
|
-
this.timers = [];
|
|
21
|
-
}
|
|
22
|
-
pause() {
|
|
23
|
-
/* intentionally empty */
|
|
24
|
-
}
|
|
25
|
-
resume() {
|
|
26
|
-
/* intentionally empty */
|
|
27
|
-
}
|
|
28
|
-
advance(deltaMicros) {
|
|
29
|
-
const { timers } = this;
|
|
30
|
-
const targetTime = this.micros + Math.max(deltaMicros, 0.01);
|
|
31
|
-
while (timers[0] && timers[0].micros <= targetTime) {
|
|
32
|
-
const timer = timers.shift();
|
|
33
|
-
if (timer) {
|
|
34
|
-
this.micros = timer.micros;
|
|
35
|
-
timer.callback();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
createTimer(deltaMicros, callback) {
|
|
40
|
-
const timer = new MockClockTimer(this.micros + deltaMicros, callback);
|
|
41
|
-
this.timers.push(timer);
|
|
42
|
-
this.timers.sort((a, b) => a.micros - b.micros);
|
|
43
|
-
return timer;
|
|
44
|
-
}
|
|
45
|
-
deleteTimer(timer) {
|
|
46
|
-
const timerIndex = this.timers.indexOf(timer);
|
|
47
|
-
if (timerIndex >= 0) {
|
|
48
|
-
this.timers.splice(timerIndex, 1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.MockClock = MockClock;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockClock = exports.MockClockTimer = void 0;
|
|
4
|
+
class MockClockTimer {
|
|
5
|
+
constructor(micros, callback) {
|
|
6
|
+
this.micros = micros;
|
|
7
|
+
this.callback = callback;
|
|
8
|
+
}
|
|
9
|
+
pause() {
|
|
10
|
+
/* intentionally empty */
|
|
11
|
+
}
|
|
12
|
+
resume() {
|
|
13
|
+
/* intentionally empty */
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.MockClockTimer = MockClockTimer;
|
|
17
|
+
class MockClock {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.micros = 0;
|
|
20
|
+
this.timers = [];
|
|
21
|
+
}
|
|
22
|
+
pause() {
|
|
23
|
+
/* intentionally empty */
|
|
24
|
+
}
|
|
25
|
+
resume() {
|
|
26
|
+
/* intentionally empty */
|
|
27
|
+
}
|
|
28
|
+
advance(deltaMicros) {
|
|
29
|
+
const { timers } = this;
|
|
30
|
+
const targetTime = this.micros + Math.max(deltaMicros, 0.01);
|
|
31
|
+
while (timers[0] && timers[0].micros <= targetTime) {
|
|
32
|
+
const timer = timers.shift();
|
|
33
|
+
if (timer) {
|
|
34
|
+
this.micros = timer.micros;
|
|
35
|
+
timer.callback();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
createTimer(deltaMicros, callback) {
|
|
40
|
+
const timer = new MockClockTimer(this.micros + deltaMicros, callback);
|
|
41
|
+
this.timers.push(timer);
|
|
42
|
+
this.timers.sort((a, b) => a.micros - b.micros);
|
|
43
|
+
return timer;
|
|
44
|
+
}
|
|
45
|
+
deleteTimer(timer) {
|
|
46
|
+
const timerIndex = this.timers.indexOf(timer);
|
|
47
|
+
if (timerIndex >= 0) {
|
|
48
|
+
this.timers.splice(timerIndex, 1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.MockClock = MockClock;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { IClock, IClockTimer } from './clock';
|
|
2
|
-
export declare class ClockTimer implements IClockTimer {
|
|
3
|
-
private micros;
|
|
4
|
-
private callback;
|
|
5
|
-
private jsTimer;
|
|
6
|
-
private timeLeft;
|
|
7
|
-
constructor(micros: number, callback: () => void);
|
|
8
|
-
schedule(currentMicros: number): void;
|
|
9
|
-
unschedule(): void;
|
|
10
|
-
pause(currentMicros: number): void;
|
|
11
|
-
resume(currentMicros: number): void;
|
|
12
|
-
}
|
|
13
|
-
export declare class RealtimeClock implements IClock {
|
|
14
|
-
baseTime: number;
|
|
15
|
-
pauseTime: number;
|
|
16
|
-
paused: boolean;
|
|
17
|
-
timers: Set<ClockTimer>;
|
|
18
|
-
pause(): void;
|
|
19
|
-
resume(): void;
|
|
20
|
-
createTimer(deltaMicros: number, callback: () => void): ClockTimer;
|
|
21
|
-
deleteTimer(timer: ClockTimer): void;
|
|
22
|
-
get micros(): number;
|
|
23
|
-
}
|
|
1
|
+
import { IClock, IClockTimer } from './clock.js';
|
|
2
|
+
export declare class ClockTimer implements IClockTimer {
|
|
3
|
+
private micros;
|
|
4
|
+
private callback;
|
|
5
|
+
private jsTimer;
|
|
6
|
+
private timeLeft;
|
|
7
|
+
constructor(micros: number, callback: () => void);
|
|
8
|
+
schedule(currentMicros: number): void;
|
|
9
|
+
unschedule(): void;
|
|
10
|
+
pause(currentMicros: number): void;
|
|
11
|
+
resume(currentMicros: number): void;
|
|
12
|
+
}
|
|
13
|
+
export declare class RealtimeClock implements IClock {
|
|
14
|
+
baseTime: number;
|
|
15
|
+
pauseTime: number;
|
|
16
|
+
paused: boolean;
|
|
17
|
+
timers: Set<ClockTimer>;
|
|
18
|
+
pause(): void;
|
|
19
|
+
resume(): void;
|
|
20
|
+
createTimer(deltaMicros: number, callback: () => void): ClockTimer;
|
|
21
|
+
deleteTimer(timer: ClockTimer): void;
|
|
22
|
+
get micros(): number;
|
|
23
|
+
}
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RealtimeClock = exports.ClockTimer = void 0;
|
|
4
|
-
const
|
|
5
|
-
class ClockTimer {
|
|
6
|
-
constructor(micros, callback) {
|
|
7
|
-
this.micros = micros;
|
|
8
|
-
this.callback = callback;
|
|
9
|
-
this.jsTimer = null;
|
|
10
|
-
this.timeLeft = this.micros;
|
|
11
|
-
}
|
|
12
|
-
schedule(currentMicros) {
|
|
13
|
-
this.jsTimer = setTimeout(this.callback, (this.micros - currentMicros) / 1000);
|
|
14
|
-
}
|
|
15
|
-
unschedule() {
|
|
16
|
-
if (this.jsTimer) {
|
|
17
|
-
clearTimeout(this.jsTimer);
|
|
18
|
-
this.jsTimer = null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
pause(currentMicros) {
|
|
22
|
-
this.timeLeft = this.micros - currentMicros;
|
|
23
|
-
this.unschedule();
|
|
24
|
-
}
|
|
25
|
-
resume(currentMicros) {
|
|
26
|
-
this.micros = currentMicros + this.timeLeft;
|
|
27
|
-
this.schedule(currentMicros);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.ClockTimer = ClockTimer;
|
|
31
|
-
class RealtimeClock {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.baseTime = 0;
|
|
34
|
-
this.pauseTime = 0;
|
|
35
|
-
this.paused = true;
|
|
36
|
-
this.timers = new Set();
|
|
37
|
-
}
|
|
38
|
-
pause() {
|
|
39
|
-
if (!this.paused) {
|
|
40
|
-
for (const timer of this.timers) {
|
|
41
|
-
timer.pause(this.micros);
|
|
42
|
-
}
|
|
43
|
-
this.pauseTime = this.micros;
|
|
44
|
-
this.paused = true;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
resume() {
|
|
48
|
-
if (this.paused) {
|
|
49
|
-
this.baseTime =
|
|
50
|
-
this.paused = false;
|
|
51
|
-
for (const timer of this.timers) {
|
|
52
|
-
timer.resume(this.micros);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
createTimer(deltaMicros, callback) {
|
|
57
|
-
const timer = new ClockTimer(this.micros + deltaMicros, () => {
|
|
58
|
-
this.timers.delete(timer);
|
|
59
|
-
callback();
|
|
60
|
-
});
|
|
61
|
-
timer.schedule(this.micros);
|
|
62
|
-
this.timers.add(timer);
|
|
63
|
-
return timer;
|
|
64
|
-
}
|
|
65
|
-
deleteTimer(timer) {
|
|
66
|
-
timer.unschedule();
|
|
67
|
-
this.timers.delete(timer);
|
|
68
|
-
}
|
|
69
|
-
get micros() {
|
|
70
|
-
return
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.RealtimeClock = RealtimeClock;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RealtimeClock = exports.ClockTimer = void 0;
|
|
4
|
+
const time_js_1 = require("../utils/time.js");
|
|
5
|
+
class ClockTimer {
|
|
6
|
+
constructor(micros, callback) {
|
|
7
|
+
this.micros = micros;
|
|
8
|
+
this.callback = callback;
|
|
9
|
+
this.jsTimer = null;
|
|
10
|
+
this.timeLeft = this.micros;
|
|
11
|
+
}
|
|
12
|
+
schedule(currentMicros) {
|
|
13
|
+
this.jsTimer = setTimeout(this.callback, (this.micros - currentMicros) / 1000);
|
|
14
|
+
}
|
|
15
|
+
unschedule() {
|
|
16
|
+
if (this.jsTimer) {
|
|
17
|
+
clearTimeout(this.jsTimer);
|
|
18
|
+
this.jsTimer = null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
pause(currentMicros) {
|
|
22
|
+
this.timeLeft = this.micros - currentMicros;
|
|
23
|
+
this.unschedule();
|
|
24
|
+
}
|
|
25
|
+
resume(currentMicros) {
|
|
26
|
+
this.micros = currentMicros + this.timeLeft;
|
|
27
|
+
this.schedule(currentMicros);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ClockTimer = ClockTimer;
|
|
31
|
+
class RealtimeClock {
|
|
32
|
+
constructor() {
|
|
33
|
+
this.baseTime = 0;
|
|
34
|
+
this.pauseTime = 0;
|
|
35
|
+
this.paused = true;
|
|
36
|
+
this.timers = new Set();
|
|
37
|
+
}
|
|
38
|
+
pause() {
|
|
39
|
+
if (!this.paused) {
|
|
40
|
+
for (const timer of this.timers) {
|
|
41
|
+
timer.pause(this.micros);
|
|
42
|
+
}
|
|
43
|
+
this.pauseTime = this.micros;
|
|
44
|
+
this.paused = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
resume() {
|
|
48
|
+
if (this.paused) {
|
|
49
|
+
this.baseTime = (0, time_js_1.getCurrentMicroseconds)() - this.pauseTime;
|
|
50
|
+
this.paused = false;
|
|
51
|
+
for (const timer of this.timers) {
|
|
52
|
+
timer.resume(this.micros);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
createTimer(deltaMicros, callback) {
|
|
57
|
+
const timer = new ClockTimer(this.micros + deltaMicros, () => {
|
|
58
|
+
this.timers.delete(timer);
|
|
59
|
+
callback();
|
|
60
|
+
});
|
|
61
|
+
timer.schedule(this.micros);
|
|
62
|
+
this.timers.add(timer);
|
|
63
|
+
return timer;
|
|
64
|
+
}
|
|
65
|
+
deleteTimer(timer) {
|
|
66
|
+
timer.unschedule();
|
|
67
|
+
this.timers.delete(timer);
|
|
68
|
+
}
|
|
69
|
+
get micros() {
|
|
70
|
+
return (0, time_js_1.getCurrentMicroseconds)() - this.baseTime;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.RealtimeClock = RealtimeClock;
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import { RP2040 } from './rp2040';
|
|
2
|
-
export declare const SYSM_MSP = 8;
|
|
3
|
-
export declare const SYSM_PSP = 9;
|
|
4
|
-
export declare const SYSM_PRIMASK = 16;
|
|
5
|
-
export declare const SYSM_CONTROL = 20;
|
|
6
|
-
declare enum ExecutionMode {
|
|
7
|
-
Mode_Thread = 0,
|
|
8
|
-
Mode_Handler = 1
|
|
9
|
-
}
|
|
10
|
-
declare enum StackPointerBank {
|
|
11
|
-
SPmain = 0,
|
|
12
|
-
SPprocess = 1
|
|
13
|
-
}
|
|
14
|
-
export declare class CortexM0Core {
|
|
15
|
-
readonly rp2040: RP2040;
|
|
16
|
-
readonly registers: Uint32Array;
|
|
17
|
-
bankedSP: number;
|
|
18
|
-
cycles: number;
|
|
19
|
-
eventRegistered: boolean;
|
|
20
|
-
waiting: boolean;
|
|
21
|
-
N: boolean;
|
|
22
|
-
C: boolean;
|
|
23
|
-
Z: boolean;
|
|
24
|
-
V: boolean;
|
|
25
|
-
breakRewind: number;
|
|
26
|
-
PM: boolean;
|
|
27
|
-
SPSEL: StackPointerBank;
|
|
28
|
-
nPRIV: boolean;
|
|
29
|
-
currentMode: ExecutionMode;
|
|
30
|
-
IPSR: number;
|
|
31
|
-
interruptNMIMask: number;
|
|
32
|
-
pendingInterrupts: number;
|
|
33
|
-
enabledInterrupts: number;
|
|
34
|
-
interruptPriorities: number[];
|
|
35
|
-
pendingNMI: boolean;
|
|
36
|
-
pendingPendSV: boolean;
|
|
37
|
-
pendingSVCall: boolean;
|
|
38
|
-
pendingSystick: boolean;
|
|
39
|
-
interruptsUpdated: boolean;
|
|
40
|
-
VTOR: number;
|
|
41
|
-
SHPR2: number;
|
|
42
|
-
SHPR3: number;
|
|
43
|
-
/** Hook to listen for function calls - branch-link (BL/BLX) instructions */
|
|
44
|
-
blTaken: (core: CortexM0Core, blx: boolean) => void;
|
|
45
|
-
constructor(rp2040: RP2040);
|
|
46
|
-
get logger(): import(".").Logger;
|
|
47
|
-
reset(): void;
|
|
48
|
-
get SP(): number;
|
|
49
|
-
set SP(value: number);
|
|
50
|
-
get LR(): number;
|
|
51
|
-
set LR(value: number);
|
|
52
|
-
get PC(): number;
|
|
53
|
-
set PC(value: number);
|
|
54
|
-
get APSR(): number;
|
|
55
|
-
set APSR(value: number);
|
|
56
|
-
get xPSR(): number;
|
|
57
|
-
set xPSR(value: number);
|
|
58
|
-
checkCondition(cond: number): boolean;
|
|
59
|
-
readUint32(address: number): number;
|
|
60
|
-
readUint16(address: number): number;
|
|
61
|
-
readUint8(address: number): number;
|
|
62
|
-
writeUint32(address: number, value: number): void;
|
|
63
|
-
writeUint16(address: number, value: number): void;
|
|
64
|
-
writeUint8(address: number, value: number): void;
|
|
65
|
-
switchStack(stack: StackPointerBank): void;
|
|
66
|
-
get SPprocess(): number;
|
|
67
|
-
set SPprocess(value: number);
|
|
68
|
-
get SPmain(): number;
|
|
69
|
-
set SPmain(value: number);
|
|
70
|
-
exceptionEntry(exceptionNumber: number): void;
|
|
71
|
-
exceptionReturn(excReturn: number): void;
|
|
72
|
-
get pendSVPriority(): number;
|
|
73
|
-
get svCallPriority(): number;
|
|
74
|
-
get systickPriority(): number;
|
|
75
|
-
exceptionPriority(n: number): number;
|
|
76
|
-
get vectPending(): number;
|
|
77
|
-
setInterrupt(irq: number, value: boolean): void;
|
|
78
|
-
checkForInterrupts(): boolean;
|
|
79
|
-
readSpecialRegister(sysm: number): number;
|
|
80
|
-
writeSpecialRegister(sysm: number, value: number): 0 | undefined;
|
|
81
|
-
BXWritePC(address: number): void;
|
|
82
|
-
private substractUpdateFlags;
|
|
83
|
-
private addUpdateFlags;
|
|
84
|
-
cyclesIO(addr: number, write?: boolean):
|
|
85
|
-
executeInstruction(): void;
|
|
86
|
-
}
|
|
87
|
-
export {};
|
|
1
|
+
import { RP2040 } from './rp2040.js';
|
|
2
|
+
export declare const SYSM_MSP = 8;
|
|
3
|
+
export declare const SYSM_PSP = 9;
|
|
4
|
+
export declare const SYSM_PRIMASK = 16;
|
|
5
|
+
export declare const SYSM_CONTROL = 20;
|
|
6
|
+
declare enum ExecutionMode {
|
|
7
|
+
Mode_Thread = 0,
|
|
8
|
+
Mode_Handler = 1
|
|
9
|
+
}
|
|
10
|
+
declare enum StackPointerBank {
|
|
11
|
+
SPmain = 0,
|
|
12
|
+
SPprocess = 1
|
|
13
|
+
}
|
|
14
|
+
export declare class CortexM0Core {
|
|
15
|
+
readonly rp2040: RP2040;
|
|
16
|
+
readonly registers: Uint32Array;
|
|
17
|
+
bankedSP: number;
|
|
18
|
+
cycles: number;
|
|
19
|
+
eventRegistered: boolean;
|
|
20
|
+
waiting: boolean;
|
|
21
|
+
N: boolean;
|
|
22
|
+
C: boolean;
|
|
23
|
+
Z: boolean;
|
|
24
|
+
V: boolean;
|
|
25
|
+
breakRewind: number;
|
|
26
|
+
PM: boolean;
|
|
27
|
+
SPSEL: StackPointerBank;
|
|
28
|
+
nPRIV: boolean;
|
|
29
|
+
currentMode: ExecutionMode;
|
|
30
|
+
IPSR: number;
|
|
31
|
+
interruptNMIMask: number;
|
|
32
|
+
pendingInterrupts: number;
|
|
33
|
+
enabledInterrupts: number;
|
|
34
|
+
interruptPriorities: number[];
|
|
35
|
+
pendingNMI: boolean;
|
|
36
|
+
pendingPendSV: boolean;
|
|
37
|
+
pendingSVCall: boolean;
|
|
38
|
+
pendingSystick: boolean;
|
|
39
|
+
interruptsUpdated: boolean;
|
|
40
|
+
VTOR: number;
|
|
41
|
+
SHPR2: number;
|
|
42
|
+
SHPR3: number;
|
|
43
|
+
/** Hook to listen for function calls - branch-link (BL/BLX) instructions */
|
|
44
|
+
blTaken: (core: CortexM0Core, blx: boolean) => void;
|
|
45
|
+
constructor(rp2040: RP2040);
|
|
46
|
+
get logger(): import("./index.js").Logger;
|
|
47
|
+
reset(): void;
|
|
48
|
+
get SP(): number;
|
|
49
|
+
set SP(value: number);
|
|
50
|
+
get LR(): number;
|
|
51
|
+
set LR(value: number);
|
|
52
|
+
get PC(): number;
|
|
53
|
+
set PC(value: number);
|
|
54
|
+
get APSR(): number;
|
|
55
|
+
set APSR(value: number);
|
|
56
|
+
get xPSR(): number;
|
|
57
|
+
set xPSR(value: number);
|
|
58
|
+
checkCondition(cond: number): boolean;
|
|
59
|
+
readUint32(address: number): number;
|
|
60
|
+
readUint16(address: number): number;
|
|
61
|
+
readUint8(address: number): number;
|
|
62
|
+
writeUint32(address: number, value: number): void;
|
|
63
|
+
writeUint16(address: number, value: number): void;
|
|
64
|
+
writeUint8(address: number, value: number): void;
|
|
65
|
+
switchStack(stack: StackPointerBank): void;
|
|
66
|
+
get SPprocess(): number;
|
|
67
|
+
set SPprocess(value: number);
|
|
68
|
+
get SPmain(): number;
|
|
69
|
+
set SPmain(value: number);
|
|
70
|
+
exceptionEntry(exceptionNumber: number): void;
|
|
71
|
+
exceptionReturn(excReturn: number): void;
|
|
72
|
+
get pendSVPriority(): number;
|
|
73
|
+
get svCallPriority(): number;
|
|
74
|
+
get systickPriority(): number;
|
|
75
|
+
exceptionPriority(n: number): number;
|
|
76
|
+
get vectPending(): number;
|
|
77
|
+
setInterrupt(irq: number, value: boolean): void;
|
|
78
|
+
checkForInterrupts(): boolean;
|
|
79
|
+
readSpecialRegister(sysm: number): number;
|
|
80
|
+
writeSpecialRegister(sysm: number, value: number): 0 | undefined;
|
|
81
|
+
BXWritePC(address: number): void;
|
|
82
|
+
private substractUpdateFlags;
|
|
83
|
+
private addUpdateFlags;
|
|
84
|
+
cyclesIO(addr: number, write?: boolean): 0 | 1 | 3 | 4;
|
|
85
|
+
executeInstruction(): void;
|
|
86
|
+
}
|
|
87
|
+
export {};
|