Skip to content

Commit f50910f

Browse files
committed
Update TypeScript examples
1 parent 9b7ca49 commit f50910f

File tree

10 files changed

+76
-44
lines changed

10 files changed

+76
-44
lines changed

examples/daplink-flash/common.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ const selectDevice = async (devices) => {
135135
if (input === '\u0003') {
136136
process.exit();
137137
} else if (input !== null) {
138-
let index = parseInt(input);
138+
const index = parseInt(input);
139139
if (index <= devices.length) {
140140
resolve(devices[index - 1]);
141141
}

examples/daplink-serial/common.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const selectDevice = async (devices) => {
6060
if (input === '\u0003') {
6161
process.exit();
6262
} else if (input !== null) {
63-
let index = parseInt(input);
63+
const index = parseInt(input);
6464
if (index <= devices.length) {
6565
resolve(devices[index - 1]);
6666
}

examples/execute/common.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const selectDevice = async (devices) => {
6161
if (input === '\u0003') {
6262
process.exit();
6363
} else if (input !== null) {
64-
let index = parseInt(input);
64+
const index = parseInt(input);
6565
if (index <= devices.length) {
6666
resolve(devices[index - 1]);
6767
}

examples/read-registers/common.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const selectDevice = async (devices) => {
6060
if (input === '\u0003') {
6161
process.exit();
6262
} else if (input !== null) {
63-
let index = parseInt(input);
63+
const index = parseInt(input);
6464
if (index <= devices.length) {
6565
resolve(devices[index - 1]);
6666
}

examples/typescript/node.ts

Lines changed: 53 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,71 @@
2020
* SOFTWARE.
2121
*/
2222

23-
import { Registers } from "./registers";
24-
import { USB, USBDevice } from "webusb";
25-
import { stdin } from "process";
26-
27-
const devicesFound = (devices: USBDevice[], selectFn?: (device: USBDevice) => void) => {
28-
stdin.setRawMode!(true);
29-
stdin.setEncoding("utf8");
30-
stdin.on("readable", () => {
31-
const input = process.stdin.read().toString();
32-
if (input === "\u0003") {
23+
import { stdin } from 'process';
24+
import { USB } from 'webusb';
25+
import { Registers } from './registers';
26+
27+
// Handle single character input from the user
28+
const readHandler = <T>(inputHandler: (input: string, onResolve: (result: T) => void) => void, stream: NodeJS.ReadStream = stdin): Promise<T> => {
29+
return new Promise(resolve => {
30+
stream.setRawMode!(true);
31+
stream.setEncoding('utf8');
32+
33+
const onResolve = (result: T) => {
34+
stream.removeListener('readable', read);
35+
stream.setRawMode!(false);
36+
resolve(result);
37+
};
38+
39+
const read = () => {
40+
let input: string | Buffer;
41+
while (input = stream.read()) {
42+
if (input) {
43+
inputHandler(input.toString(), onResolve);
44+
}
45+
}
46+
};
47+
48+
stream.addListener('readable', read);
49+
});
50+
};
51+
52+
// Select a device from the list
53+
const devicesFound = async (devices: USBDevice[]): Promise<USBDevice | undefined> => {
54+
if (devices.length === 0) {
55+
throw new Error('No devices found');
56+
}
57+
58+
console.log('Select a device to read registers:');
59+
devices.forEach((device, index) => {
60+
console.log(`${index + 1}: ${device.productName || device.serialNumber}`);
61+
});
62+
63+
const device = await readHandler<USBDevice>((input, resolve) => {
64+
if (input === '\u0003') {
3365
process.exit();
3466
} else {
3567
const index = parseInt(input);
3668
if (index && index <= devices.length) {
37-
stdin.setRawMode!(false);
38-
selectFn!(devices[index - 1]);
69+
resolve(devices[index - 1]);
3970
}
4071
}
4172
});
4273

43-
console.log("select a device to see it's active configuration:");
44-
devices.forEach((device, index) => {
45-
console.log(`${index + 1}: ${device.productName || device.serialNumber}`);
46-
});
74+
return device;
4775
};
4876

4977
const usb = new USB({ devicesFound });
5078
const registers = new Registers(usb);
5179

5280
(async () => {
53-
const values = await registers.read(16);
54-
values.forEach((register, index) => {
55-
console.log(`R${index}: ${register}`);
56-
});
81+
try {
82+
const values = await registers.read(16);
83+
values.forEach((register, index) => {
84+
console.log(`R${index}: ${register}`);
85+
});
86+
} catch(error) {
87+
console.error(error.message || error);
88+
}
89+
process.exit();
5790
})();

examples/typescript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"dapjs": "next",
1313
"tsify": "^4.0.1",
1414
"typescript": "^3.4.5",
15-
"webusb": "^1.2.2"
15+
"webusb": "^2.0.2"
1616
}
1717
}

examples/typescript/registers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* SOFTWARE.
2121
*/
2222

23-
import { WebUSB, CortexM } from "dapjs";
23+
import { WebUSB, CortexM } from 'dapjs';
2424

2525
export interface USB {
2626
requestDevice(options?: USBDeviceRequestOptions): Promise<USBDevice>;
@@ -48,7 +48,7 @@ export class Registers {
4848
await processor.resume();
4949
await processor.disconnect();
5050

51-
const result = values.map(register => ("00000000" + register.toString(16)).slice(-8));
51+
const result = values.map(register => ('00000000' + register.toString(16)).slice(-8));
5252
return result;
5353
}
5454
}

examples/typescript/web.html

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,22 @@
2424
<button id="read">Read Registers</button>
2525
<script src="bundle.js"></script>
2626
<script>
27-
var count = 16
27+
const count = 16
2828

29-
document.getElementById("read").onclick = function() {
30-
var registers = new app.Registers();
31-
registers.read(count)
32-
.then(values => {
33-
values.forEach(function(value, index) {
34-
var registerEl = document.getElementById("r" + index);
35-
registerEl.innerHTML = "Register " + index + ": " + value;
36-
});
29+
document.getElementById("read").onclick = async () => {
30+
const registers = new app.Registers();
31+
const values = await registers.read(count);
32+
33+
values.forEach((value, index) => {
34+
const registerEl = document.getElementById(`r${index}`);
35+
registerEl.innerHTML = `Register ${index}: ${value}`;
3736
});
3837
};
3938

40-
for (var index = 0; index < count; index++) {
41-
var registerEl = document.createElement("div");
42-
registerEl.id = "r" + index;
43-
registerEl.innerHTML = "Register " + index + ": None";
39+
for (let index = 0; index < count; index++) {
40+
const registerEl = document.createElement("div");
41+
registerEl.id = `r${index}`;
42+
registerEl.innerHTML = `Register ${index}: None`;
4443
document.body.appendChild(registerEl);
4544
}
4645
</script>

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,6 @@
6262
"typedoc": "^0.17.4",
6363
"typescript": "^3.8.3",
6464
"usb": "^1.6.3",
65-
"webusb": "^2.0.1"
65+
"webusb": "^2.0.2"
6666
}
6767
}

0 commit comments

Comments
 (0)