mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-06-13 23:56:33 +00:00

* 1032 failing upload flag for monitor mgr * move upload failure fix logic to frontend * misc corrections * avoid starting monitor when upload is in progress * avoid starting monitor when upload is in progress * prevent monitor side effects on upload (WIP) * send upload req after notifying mgr * dispose instead of pause on upld (code not final) * Revert "dispose instead of pause on upld (code not final)" This reverts commit 2d5dff2a2d85754467470b5973b7ecac8017aa58. * force wait before upload (test) * always start queued services after uplaod finishes * test cli with monitor close delay * clean up unnecessary await(s) * remove unused dependency * revert CLI to 0.23 * use master cli for testing, await in upload finish * remove upload port from pending monitor requests * fix startQueuedServices * refinements queued monitors * clean up monitor mgr state * fix typo from prev cleanup * avoid dupl queued monitor services * variable name changes * reference latest cli commit in package.json Co-authored-by: Alberto Iannaccone <a.iannaccone@arduino.cc>
99 lines
2.9 KiB
TypeScript
99 lines
2.9 KiB
TypeScript
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
import {
|
|
MonitorManagerProxy,
|
|
MonitorManagerProxyClient,
|
|
Status,
|
|
} from '../common/protocol';
|
|
import { Board, Port } from '../common/protocol';
|
|
import { MonitorManager } from './monitor-manager';
|
|
import {
|
|
MonitorSettings,
|
|
PluggableMonitorSettings,
|
|
} from './monitor-settings/monitor-settings-provider';
|
|
|
|
@injectable()
|
|
export class MonitorManagerProxyImpl implements MonitorManagerProxy {
|
|
protected client: MonitorManagerProxyClient;
|
|
|
|
constructor(
|
|
@inject(MonitorManager)
|
|
protected readonly manager: MonitorManager
|
|
) {}
|
|
|
|
dispose(): void {
|
|
this.client?.disconnect();
|
|
}
|
|
|
|
/**
|
|
* Start a pluggable monitor and/or change its settings.
|
|
* If settings are defined they'll be set before starting the monitor,
|
|
* otherwise default ones will be used by the monitor.
|
|
* @param board board connected to port
|
|
* @param port port to monitor
|
|
* @param settings map of supported configuration by the monitor
|
|
*/
|
|
async startMonitor(
|
|
board: Board,
|
|
port: Port,
|
|
settings?: PluggableMonitorSettings
|
|
): Promise<void> {
|
|
if (settings) {
|
|
await this.changeMonitorSettings(board, port, settings);
|
|
}
|
|
|
|
const connectToClient = (status: Status) => {
|
|
if (status === Status.ALREADY_CONNECTED || status === Status.OK) {
|
|
// Monitor started correctly, connect it with the frontend
|
|
this.client.connect(this.manager.getWebsocketAddressPort(board, port));
|
|
}
|
|
};
|
|
return this.manager.startMonitor(board, port, connectToClient);
|
|
}
|
|
|
|
/**
|
|
* Changes the settings of a running pluggable monitor, if that monitor is not
|
|
* started this function is a noop.
|
|
* @param board board connected to port
|
|
* @param port port monitored
|
|
* @param settings map of supported configuration by the monitor
|
|
*/
|
|
async changeMonitorSettings(
|
|
board: Board,
|
|
port: Port,
|
|
settings: PluggableMonitorSettings
|
|
): Promise<void> {
|
|
if (!this.manager.isStarted(board, port)) {
|
|
// Monitor is not running, no need to change settings
|
|
return;
|
|
}
|
|
return this.manager.changeMonitorSettings(board, port, settings);
|
|
}
|
|
|
|
/**
|
|
* Stops a running pluggable monitor.
|
|
* @param board board connected to port
|
|
* @param port port monitored
|
|
*/
|
|
async stopMonitor(board: Board, port: Port): Promise<void> {
|
|
return this.manager.stopMonitor(board, port);
|
|
}
|
|
|
|
/**
|
|
* Returns the current settings by the pluggable monitor connected to specified
|
|
* by board/port combination.
|
|
* @param board board connected to port
|
|
* @param port port monitored
|
|
* @returns a map of MonitorSetting
|
|
*/
|
|
getCurrentSettings(board: Board, port: Port): Promise<MonitorSettings> {
|
|
return this.manager.currentMonitorSettings(board, port);
|
|
}
|
|
|
|
setClient(client: MonitorManagerProxyClient | undefined): void {
|
|
if (!client) {
|
|
return;
|
|
}
|
|
this.client = client;
|
|
}
|
|
}
|