rp2040js 1.2.0 → 1.3.1
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/dist/cjs/cortex-m0-core.js +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/peripherals/psm.d.ts +8 -0
- package/dist/cjs/peripherals/psm.js +48 -0
- package/dist/cjs/peripherals/usb.d.ts +39 -0
- package/dist/cjs/peripherals/usb.js +553 -27
- package/dist/cjs/rp2040.js +2 -1
- package/dist/cjs/sio.d.ts +1 -1
- package/dist/cjs/usb/usb-device.d.ts +94 -0
- package/dist/cjs/usb/usb-device.js +33 -0
- package/dist/esm/cortex-m0-core.js +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/peripherals/psm.d.ts +8 -0
- package/dist/esm/peripherals/psm.js +44 -0
- package/dist/esm/peripherals/usb.d.ts +39 -0
- package/dist/esm/peripherals/usb.js +553 -27
- package/dist/esm/rp2040.js +2 -1
- package/dist/esm/sio.d.ts +1 -1
- package/dist/esm/usb/usb-device.d.ts +94 -0
- package/dist/esm/usb/usb-device.js +29 -0
- package/package.json +6 -2
|
@@ -572,7 +572,7 @@ class CortexM0Core {
|
|
|
572
572
|
const Rm = (opcode >> 3) & 0xf;
|
|
573
573
|
const Rdn = ((opcode & 0x80) >> 4) | (opcode & 0x7);
|
|
574
574
|
const leftValue = Rdn === pcRegister ? this.PC + 2 : this.registers[Rdn];
|
|
575
|
-
const rightValue = this.registers[Rm];
|
|
575
|
+
const rightValue = Rm === pcRegister ? this.PC + 2 : this.registers[Rm];
|
|
576
576
|
const result = leftValue + rightValue;
|
|
577
577
|
if (Rdn !== spRegister && Rdn !== pcRegister) {
|
|
578
578
|
this.registers[Rdn] = result;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { Simulator } from './simulator.js';
|
|
|
9
9
|
export { USBCDC } from './usb/cdc.js';
|
|
10
10
|
export { DataDirection, DescriptorType, SetupRecipient, SetupRequest, SetupType, type ISetupPacketParams, } from './usb/interfaces.js';
|
|
11
11
|
export { createSetupPacket, getDescriptorPacket, setDeviceAddressPacket, setDeviceConfigurationPacket, } from './usb/setup.js';
|
|
12
|
+
export { StandardRequest, DescriptorType as USBDescriptorType, parseSetupPacket, type USBDevice, type USBTransferResult, type USBTransferStatus, } from './usb/usb-device.js';
|
|
12
13
|
export { ConsoleLogger, LogLevel, type Logger } from './utils/logging.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LogLevel = exports.ConsoleLogger = exports.setDeviceConfigurationPacket = exports.setDeviceAddressPacket = exports.getDescriptorPacket = exports.createSetupPacket = exports.SetupType = exports.SetupRequest = exports.SetupRecipient = exports.DescriptorType = exports.DataDirection = exports.USBCDC = exports.Simulator = exports.RP2040 = exports.RPUSBController = exports.BasePeripheral = exports.RPI2C = exports.I2CSpeed = exports.I2CMode = exports.GPIOPinState = exports.GPIOPin = exports.GDBServer = exports.GDBConnection = void 0;
|
|
3
|
+
exports.LogLevel = exports.ConsoleLogger = exports.parseSetupPacket = exports.setDeviceConfigurationPacket = exports.setDeviceAddressPacket = exports.getDescriptorPacket = exports.createSetupPacket = exports.SetupType = exports.SetupRequest = exports.SetupRecipient = exports.DescriptorType = exports.DataDirection = exports.USBCDC = exports.Simulator = exports.RP2040 = exports.RPUSBController = exports.BasePeripheral = exports.RPI2C = exports.I2CSpeed = exports.I2CMode = exports.GPIOPinState = exports.GPIOPin = exports.GDBServer = exports.GDBConnection = void 0;
|
|
4
4
|
var gdb_connection_js_1 = require("./gdb/gdb-connection.js");
|
|
5
5
|
Object.defineProperty(exports, "GDBConnection", { enumerable: true, get: function () { return gdb_connection_js_1.GDBConnection; } });
|
|
6
6
|
var gdb_server_js_1 = require("./gdb/gdb-server.js");
|
|
@@ -33,6 +33,8 @@ Object.defineProperty(exports, "createSetupPacket", { enumerable: true, get: fun
|
|
|
33
33
|
Object.defineProperty(exports, "getDescriptorPacket", { enumerable: true, get: function () { return setup_js_1.getDescriptorPacket; } });
|
|
34
34
|
Object.defineProperty(exports, "setDeviceAddressPacket", { enumerable: true, get: function () { return setup_js_1.setDeviceAddressPacket; } });
|
|
35
35
|
Object.defineProperty(exports, "setDeviceConfigurationPacket", { enumerable: true, get: function () { return setup_js_1.setDeviceConfigurationPacket; } });
|
|
36
|
+
var usb_device_js_1 = require("./usb/usb-device.js");
|
|
37
|
+
Object.defineProperty(exports, "parseSetupPacket", { enumerable: true, get: function () { return usb_device_js_1.parseSetupPacket; } });
|
|
36
38
|
var logging_js_1 = require("./utils/logging.js");
|
|
37
39
|
Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return logging_js_1.ConsoleLogger; } });
|
|
38
40
|
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logging_js_1.LogLevel; } });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BasePeripheral, Peripheral } from './peripheral.js';
|
|
2
|
+
export declare class RPPSM extends BasePeripheral implements Peripheral {
|
|
3
|
+
private frceOn;
|
|
4
|
+
private frceOff;
|
|
5
|
+
private wdsel;
|
|
6
|
+
readUint32(offset: number): number;
|
|
7
|
+
writeUint32(offset: number, value: number): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RPPSM = void 0;
|
|
4
|
+
const peripheral_js_1 = require("./peripheral.js");
|
|
5
|
+
const FRCE_ON = 0x00;
|
|
6
|
+
const FRCE_OFF = 0x04;
|
|
7
|
+
const WDSEL = 0x08;
|
|
8
|
+
const DONE = 0x0c;
|
|
9
|
+
const PSM_BITS_MASK = 0x0001ffff;
|
|
10
|
+
class RPPSM extends peripheral_js_1.BasePeripheral {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.frceOn = 0;
|
|
14
|
+
this.frceOff = 0;
|
|
15
|
+
this.wdsel = 0;
|
|
16
|
+
}
|
|
17
|
+
readUint32(offset) {
|
|
18
|
+
switch (offset) {
|
|
19
|
+
case FRCE_ON:
|
|
20
|
+
return this.frceOn;
|
|
21
|
+
case FRCE_OFF:
|
|
22
|
+
return this.frceOff;
|
|
23
|
+
case WDSEL:
|
|
24
|
+
return this.wdsel;
|
|
25
|
+
case DONE:
|
|
26
|
+
// Domains are ready unless forced off (FRCE_ON overrides FRCE_OFF)
|
|
27
|
+
return (PSM_BITS_MASK & ~this.frceOff) | (this.frceOn & this.frceOff);
|
|
28
|
+
}
|
|
29
|
+
return super.readUint32(offset);
|
|
30
|
+
}
|
|
31
|
+
writeUint32(offset, value) {
|
|
32
|
+
switch (offset) {
|
|
33
|
+
case FRCE_ON:
|
|
34
|
+
this.frceOn = value & PSM_BITS_MASK;
|
|
35
|
+
break;
|
|
36
|
+
case FRCE_OFF:
|
|
37
|
+
this.frceOff = value & PSM_BITS_MASK;
|
|
38
|
+
break;
|
|
39
|
+
case WDSEL:
|
|
40
|
+
this.wdsel = value & PSM_BITS_MASK;
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
super.writeUint32(offset, value);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.RPPSM = RPPSM;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RP2040 } from '../rp2040.js';
|
|
2
|
+
import { USBDevice } from '../usb/usb-device.js';
|
|
2
3
|
import { BasePeripheral } from './peripheral.js';
|
|
3
4
|
export declare class RPUSBController extends BasePeripheral {
|
|
4
5
|
private addrEndp;
|
|
@@ -8,15 +9,35 @@ export declare class RPUSBController extends BasePeripheral {
|
|
|
8
9
|
private intForce;
|
|
9
10
|
private sieStatus;
|
|
10
11
|
private buffStatus;
|
|
12
|
+
private sieCtrl;
|
|
13
|
+
private sofFrameNumber;
|
|
14
|
+
private devAddrCtrl;
|
|
15
|
+
private intEpAddrCtrl;
|
|
16
|
+
private intEpCtrl;
|
|
17
|
+
private usbPwr;
|
|
18
|
+
private nakPoll;
|
|
19
|
+
private epAbort;
|
|
20
|
+
private epAbortDone;
|
|
21
|
+
private epStallArm;
|
|
22
|
+
private epStatusStallNak;
|
|
23
|
+
private hostMode;
|
|
24
|
+
private sofEnabled;
|
|
25
|
+
private connectedDevice;
|
|
26
|
+
private pendingSetupResponse;
|
|
27
|
+
private controlDataPid;
|
|
28
|
+
private expectingStatusPhase;
|
|
11
29
|
private readonly endpointReadAlarms;
|
|
12
30
|
private readonly endpointWriteAlarms;
|
|
13
31
|
private readonly resetAlarm;
|
|
32
|
+
private readonly sofAlarm;
|
|
33
|
+
private readonly hostTransactionAlarm;
|
|
14
34
|
onUSBEnabled?: () => void;
|
|
15
35
|
onResetReceived?: () => void;
|
|
16
36
|
onEndpointWrite?: (endpoint: number, buffer: Uint8Array) => void;
|
|
17
37
|
onEndpointRead?: (endpoint: number, byteCount: number) => void;
|
|
18
38
|
readDelayMicroseconds: number;
|
|
19
39
|
writeDelayMicroseconds: number;
|
|
40
|
+
hostTransactionDelayMicroseconds: number;
|
|
20
41
|
get intStatus(): number;
|
|
21
42
|
constructor(rp2040: RP2040, name: string);
|
|
22
43
|
readUint32(offset: number): number;
|
|
@@ -32,4 +53,22 @@ export declare class RPUSBController extends BasePeripheral {
|
|
|
32
53
|
private indicateBufferReady;
|
|
33
54
|
private buffStatusUpdated;
|
|
34
55
|
private sieStatusUpdated;
|
|
56
|
+
/**
|
|
57
|
+
* Connect a simulated USB device to the host controller.
|
|
58
|
+
*/
|
|
59
|
+
connectDevice(device: USBDevice): void;
|
|
60
|
+
/**
|
|
61
|
+
* Disconnect the simulated USB device from the host controller.
|
|
62
|
+
*/
|
|
63
|
+
disconnectDevice(): void;
|
|
64
|
+
private onDeviceConnected;
|
|
65
|
+
private handleSieCtrlWrite;
|
|
66
|
+
private scheduleSofPacket;
|
|
67
|
+
private generateSOF;
|
|
68
|
+
private pollInterruptEndpoints;
|
|
69
|
+
private startHostTransaction;
|
|
70
|
+
private handleSetupTransaction;
|
|
71
|
+
private handleInTransaction;
|
|
72
|
+
private handleOutTransaction;
|
|
73
|
+
private completeHostTransaction;
|
|
35
74
|
}
|