Skip to content

Commit

Permalink
remove webUSB (#137)
Browse files Browse the repository at this point in the history
This PR removes "Start (webUSB)" button to make the codes simpler.
It was implemented to support MacOS, which doesn't support communication via WebSerial. But for now, we are focusing on ChromeOS as a workstation and DUT, so it can be removed.
If MacOS is needed for the future, you can reproduce the codes from git log.
  • Loading branch information
wtrgjadmw authored Nov 8, 2023
1 parent 489f7c2 commit d4006a6
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 201 deletions.
102 changes: 5 additions & 97 deletions docs/servo_power_monitor/dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33876,7 +33876,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.stopMeasurement = exports.downloadJSONFile = exports.disconnectSerialPort = exports.disconnectUsbPort = exports.requestSerial = exports.requestUsb = exports.executeScript = exports.cancelSubmit = exports.formSubmit = exports.selectDutSerial = exports.handleDragOver = exports.handleFileSelect = exports.analyzePowerData = void 0;
exports.stopMeasurement = exports.downloadJSONFile = exports.disconnectSerialPort = exports.requestSerial = exports.executeScript = exports.cancelSubmit = exports.formSubmit = exports.selectDutSerial = exports.handleDragOver = exports.handleFileSelect = exports.analyzePowerData = void 0;
const d3 = __importStar(__webpack_require__(/*! d3 */ "./node_modules/d3/src/index.js"));
const dygraphs_1 = __importDefault(__webpack_require__(/*! dygraphs */ "./node_modules/dygraphs/index.js"));
const moment_1 = __importDefault(__webpack_require__(/*! moment */ "./node_modules/moment/moment.js"));
Expand Down Expand Up @@ -34017,54 +34017,6 @@ async function writeDutSerialPort(s) {
await writer.write(encoder.encode(s));
writer.releaseLock();
}
let device;
const usb_interface = 0;
const ep = usb_interface + 1;
async function openUsbPort() {
device = await navigator.usb
.requestDevice({ filters: [{ vendorId: 0x18d1, productId: 0x520d }] })
.catch(e => {
console.error(e);
throw e;
});
await device.open();
await device.selectConfiguration(1);
await device.claimInterface(usb_interface);
}
async function closeUsbPort() {
try {
await device.close();
}
catch (e) {
console.error(e);
}
}
async function writeUsbPort(s) {
await device.transferOut(ep, encoder.encode(s));
}
async function readUsbPort() {
try {
const result = await device.transferIn(ep, 64);
if (result.status === 'stall') {
await device.clearHalt('in', ep);
throw result;
}
const resultData = result.data;
if (resultData === undefined)
return '';
const result_array = new Int8Array(resultData.buffer);
return utf8decoder.decode(result_array);
}
catch (e) {
// If halt is true, it's when the stop button is pressed. Therefore,
// we can ignore the error.
if (!halt) {
console.error(e);
throw e;
}
return '';
}
}
let currentData;
function updateGraph(g, data) {
if (data !== undefined && data.length > 0) {
Expand Down Expand Up @@ -34385,50 +34337,21 @@ async function executeScript() {
}
}
exports.executeScript = executeScript;
let isSerial = false;
async function requestUsb() {
halt = false;
await openUsbPort();
isSerial = false;
(0, ui_1.enabledRecordingButton)(halt);
try {
kickWriteLoop(async (s) => writeUsbPort(s));
readLoop(async () => readUsbPort());
}
catch (err) {
console.error(`Disconnected: ${err}`);
halt = true;
(0, ui_1.enabledRecordingButton)(halt);
}
}
exports.requestUsb = requestUsb;
async function requestSerial() {
halt = false;
await openServoSerialPort();
isSerial = true;
(0, ui_1.enabledRecordingButton)(halt);
await writeServoSerialPort('help\n');
// TODO: Implement something to check the validity of servo serial port
kickWriteLoop(async (s) => writeServoSerialPort(s));
readLoop(async () => readServoSerialPort());
}
exports.requestSerial = requestSerial;
async function disconnectUsbPort() {
if (!halt && !isSerial) {
// No need to call close() for the Usb servoPort here because the
// specification says that
// the servoPort will be closed automatically when a device is disconnected.
halt = true;
inProgress = false;
(0, ui_1.enabledRecordingButton)(halt);
}
}
exports.disconnectUsbPort = disconnectUsbPort;
async function disconnectSerialPort() {
if (!halt && isSerial) {
await closeServoSerialPort();
if (!halt) {
halt = true;
inProgress = false;
await closeServoSerialPort();
(0, ui_1.enabledRecordingButton)(halt);
}
if (isDutOpened) {
Expand All @@ -34446,12 +34369,7 @@ exports.downloadJSONFile = downloadJSONFile;
async function stopMeasurement() {
halt = true;
inProgress = false;
if (isSerial) {
await closeServoSerialPort();
}
else {
await closeUsbPort();
}
await closeServoSerialPort();
(0, ui_1.enabledRecordingButton)(halt);
}
exports.stopMeasurement = stopMeasurement;
Expand All @@ -34471,9 +34389,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.dropZoneAddDropEvent = exports.dropZoneAddDragoverEvent = exports.setDownloadAnchor = exports.analyzeAddClickEvent = exports.downloadAddClickEvent = exports.readInputValue = exports.inputAddKeydownEvent = exports.formAddSubmitEvent = exports.executeScriptAddClickEvent = exports.selectDutSerialAddClickEvent = exports.addMessageToConsole = exports.closePopup = exports.setPopupCloseButton = exports.enabledRecordingButton = exports.haltAddClickEvent = exports.requestUsbAddClickEvent = exports.requestSerialAddClickEvent = void 0;
exports.dropZoneAddDropEvent = exports.dropZoneAddDragoverEvent = exports.setDownloadAnchor = exports.analyzeAddClickEvent = exports.downloadAddClickEvent = exports.readInputValue = exports.inputAddKeydownEvent = exports.formAddSubmitEvent = exports.executeScriptAddClickEvent = exports.selectDutSerialAddClickEvent = exports.addMessageToConsole = exports.closePopup = exports.setPopupCloseButton = exports.enabledRecordingButton = exports.haltAddClickEvent = exports.requestSerialAddClickEvent = void 0;
const moment_1 = __importDefault(__webpack_require__(/*! moment */ "./node_modules/moment/moment.js"));
const requestUsbButton = document.getElementById('request-device');
const requestSerialButton = document.getElementById('requestSerialButton');
const haltButton = document.getElementById('haltButton');
const downloadButton = document.getElementById('downloadButton');
Expand All @@ -34490,16 +34407,11 @@ function requestSerialAddClickEvent(fn) {
requestSerialButton.addEventListener('click', fn);
}
exports.requestSerialAddClickEvent = requestSerialAddClickEvent;
function requestUsbAddClickEvent(fn) {
requestUsbButton.addEventListener('click', fn);
}
exports.requestUsbAddClickEvent = requestUsbAddClickEvent;
function haltAddClickEvent(fn) {
haltButton.addEventListener('click', fn);
}
exports.haltAddClickEvent = haltAddClickEvent;
function enabledRecordingButton(halt) {
requestUsbButton.disabled = !halt;
requestSerialButton.disabled = !halt;
}
exports.enabledRecordingButton = enabledRecordingButton;
Expand Down Expand Up @@ -68956,11 +68868,7 @@ window.addEventListener('DOMContentLoaded', () => {
(0, ui_1.formAddSubmitEvent)(async (e) => (0, main_1.formSubmit)(e));
(0, ui_1.inputAddKeydownEvent)(async (e) => (0, main_1.cancelSubmit)(e));
(0, ui_1.executeScriptAddClickEvent)(main_1.executeScript);
(0, ui_1.requestUsbAddClickEvent)(main_1.requestUsb);
(0, ui_1.requestSerialAddClickEvent)(main_1.requestSerial);
// `disconnect` event is fired when a Usb device is disconnected.
// c.f. https://wicg.github.io/webusb/#disconnect (5.1. Events)
navigator.usb.addEventListener('disconnect', main_1.disconnectUsbPort);
// event when you disconnect serial port
navigator.serial.addEventListener('disconnect', main_1.disconnectSerialPort);
(0, ui_1.downloadAddClickEvent)(main_1.downloadJSONFile);
Expand Down
2 changes: 1 addition & 1 deletion docs/servo_power_monitor/dist/index.js.map

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions docs/servo_power_monitor/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
</div>
<div id="controlDiv">
<a id="downloadAnchorElem" style="display:none"></a>
<button id='requestSerialButton'>Start(WebSerial)</button>
<button id='request-device'>Start(WebUSB)</button>
<button id='requestSerialButton'>Start</button>
<button id='selectDutSerialButton'>Select DUT Port</button>
<button id='executeScriptButton'>Execute scripts</button>
<button id='haltButton'>Stop</button>
Expand Down
7 changes: 0 additions & 7 deletions docs/servo_power_monitor/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ import {
executeScript,
formSubmit,
selectDutSerial,
requestUsb,
requestSerial,
disconnectUsbPort,
disconnectSerialPort,
downloadJSONFile,
stopMeasurement,
Expand All @@ -27,7 +25,6 @@ import {
haltAddClickEvent,
inputAddKeydownEvent,
requestSerialAddClickEvent,
requestUsbAddClickEvent,
selectDutSerialAddClickEvent,
setPopupCloseButton,
} from './ui';
Expand All @@ -38,11 +35,7 @@ window.addEventListener('DOMContentLoaded', () => {
formAddSubmitEvent(async e => formSubmit(e));
inputAddKeydownEvent(async e => cancelSubmit(e));
executeScriptAddClickEvent(executeScript);
requestUsbAddClickEvent(requestUsb);
requestSerialAddClickEvent(requestSerial);
// `disconnect` event is fired when a Usb device is disconnected.
// c.f. https://wicg.github.io/webusb/#disconnect (5.1. Events)
navigator.usb.addEventListener('disconnect', disconnectUsbPort);
// event when you disconnect serial port
navigator.serial.addEventListener('disconnect', disconnectSerialPort);
downloadAddClickEvent(downloadJSONFile);
Expand Down
89 changes: 3 additions & 86 deletions docs/servo_power_monitor/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,56 +146,6 @@ async function writeDutSerialPort(s: string) {
writer.releaseLock();
}

let device: USBDevice;
const usb_interface = 0;
const ep = usb_interface + 1;

async function openUsbPort() {
device = await navigator.usb
.requestDevice({filters: [{vendorId: 0x18d1, productId: 0x520d}]})
.catch(e => {
console.error(e);
throw e;
});
await device.open();
await device.selectConfiguration(1);
await device.claimInterface(usb_interface);
}

async function closeUsbPort() {
try {
await device.close();
} catch (e) {
console.error(e);
}
}

async function writeUsbPort(s: string) {
await device.transferOut(ep, encoder.encode(s));
}

async function readUsbPort() {
try {
const result = await device.transferIn(ep, 64);
if (result.status === 'stall') {
await device.clearHalt('in', ep);
throw result;
}
const resultData = result.data;
if (resultData === undefined) return '';
const result_array = new Int8Array(resultData.buffer);
return utf8decoder.decode(result_array);
} catch (e) {
// If halt is true, it's when the stop button is pressed. Therefore,
// we can ignore the error.
if (!halt) {
console.error(e);
throw e;
}
return '';
}
}

let currentData: Array<Array<Date | number>>;
function updateGraph(g: Dygraph, data: Array<Array<Date | number>>) {
if (data !== undefined && data.length > 0) {
Expand Down Expand Up @@ -544,27 +494,9 @@ export async function executeScript() {
}
}

let isSerial = false;

export async function requestUsb() {
halt = false;
await openUsbPort();
isSerial = false;
enabledRecordingButton(halt);
try {
kickWriteLoop(async s => writeUsbPort(s));
readLoop(async () => readUsbPort());
} catch (err) {
console.error(`Disconnected: ${err}`);
halt = true;
enabledRecordingButton(halt);
}
}

export async function requestSerial() {
halt = false;
await openServoSerialPort();
isSerial = true;
enabledRecordingButton(halt);
await writeServoSerialPort('help\n');
// TODO: Implement something to check the validity of servo serial port
Expand All @@ -573,22 +505,11 @@ export async function requestSerial() {
readLoop(async () => readServoSerialPort());
}

export async function disconnectUsbPort() {
if (!halt && !isSerial) {
// No need to call close() for the Usb servoPort here because the
// specification says that
// the servoPort will be closed automatically when a device is disconnected.
halt = true;
inProgress = false;
enabledRecordingButton(halt);
}
}

export async function disconnectSerialPort() {
if (!halt && isSerial) {
await closeServoSerialPort();
if (!halt) {
halt = true;
inProgress = false;
await closeServoSerialPort();
enabledRecordingButton(halt);
}
if (isDutOpened) {
Expand All @@ -607,10 +528,6 @@ export function downloadJSONFile() {
export async function stopMeasurement() {
halt = true;
inProgress = false;
if (isSerial) {
await closeServoSerialPort();
} else {
await closeUsbPort();
}
await closeServoSerialPort();
enabledRecordingButton(halt);
}
8 changes: 0 additions & 8 deletions docs/servo_power_monitor/src/ui.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import moment from 'moment';

const requestUsbButton = document.getElementById(
'request-device'
) as HTMLButtonElement;
const requestSerialButton = document.getElementById(
'requestSerialButton'
) as HTMLButtonElement;
Expand Down Expand Up @@ -36,16 +33,11 @@ export function requestSerialAddClickEvent(fn: () => Promise<void>) {
requestSerialButton.addEventListener('click', fn);
}

export function requestUsbAddClickEvent(fn: () => Promise<void>) {
requestUsbButton.addEventListener('click', fn);
}

export function haltAddClickEvent(fn: () => Promise<void>) {
haltButton.addEventListener('click', fn);
}

export function enabledRecordingButton(halt: boolean) {
requestUsbButton.disabled = !halt;
requestSerialButton.disabled = !halt;
}

Expand Down

0 comments on commit d4006a6

Please sign in to comment.