91 lines
3.3 KiB
JavaScript
91 lines
3.3 KiB
JavaScript
import { Env, Boards, FSBoardHandler } from 'mixly';
|
|
import * as path from 'path';
|
|
import COMMANDS from './commands';
|
|
import PARTITIONS from './partitions';
|
|
import BOARDS_PARTITIONS_INFO from './boards-partitions-info';
|
|
import MENU from './menu';
|
|
import FS_INFO from './fs-info';
|
|
|
|
export default class FSArduEsp32Handler extends FSBoardHandler {
|
|
constructor() {
|
|
super();
|
|
for (let key in COMMANDS) {
|
|
this.setFSCommands(key, COMMANDS[key]);
|
|
}
|
|
}
|
|
|
|
onBeforeUpload() {
|
|
const boardKey = Boards.getSelectedBoardKey();
|
|
const flashMode = Boards.getSelectedBoardConfigParam('FlashMode') || 'keep';
|
|
let flashFreq = Boards.getSelectedBoardConfigParam('FlashFreq') || 'keep';
|
|
if (flashFreq !== 'keep') {
|
|
flashFreq += 'm';
|
|
}
|
|
let flashSize = Boards.getSelectedBoardConfigParam('FlashSize') || 'detect';
|
|
if (flashSize !== 'detect') {
|
|
flashSize += 'B';
|
|
}
|
|
const baud = Boards.getSelectedBoardConfigParam('UploadSpeed') || '115200';
|
|
let partitionScheme = Boards.getSelectedBoardConfigParam('PartitionScheme');
|
|
let partitionsType = BOARDS_PARTITIONS_INFO[boardKey] ?? [];
|
|
if (!partitionsType.includes(partitionScheme)) {
|
|
if (partitionsType.length) {
|
|
partitionScheme = partitionsType[0];
|
|
} else {
|
|
partitionScheme = 'default';
|
|
}
|
|
}
|
|
const partition = { ...PARTITIONS[partitionScheme] };
|
|
if (this.getFSType() === 'default') {
|
|
this.setFSType(partition.type);
|
|
}
|
|
const fsTool = this.getFSToolPath();
|
|
const img = path.join(Env.boardDirPath, 'build', 'script.img');
|
|
this.updateConfig({ fsTool, img, flashMode, flashFreq, flashSize, baud, ...partition });
|
|
}
|
|
|
|
onBeforeDownload() {
|
|
const boardKey = Boards.getSelectedBoardKey();
|
|
const baud = Boards.getSelectedBoardConfigParam('UploadSpeed') || '115200';
|
|
let partitionScheme = Boards.getSelectedBoardConfigParam('PartitionScheme');
|
|
let partitionsType = BOARDS_PARTITIONS_INFO[boardKey] ?? [];
|
|
if (!partitionsType.includes(partitionScheme)) {
|
|
if (partitionsType.length) {
|
|
partitionScheme = partitionsType[0];
|
|
} else {
|
|
partitionScheme = 'default';
|
|
}
|
|
}
|
|
const partition = { ...PARTITIONS[partitionScheme] };
|
|
if (this.getFSType() === 'default') {
|
|
this.setFSType(partition.type);
|
|
}
|
|
const fsTool = this.getFSToolPath();
|
|
const img = path.join(Env.boardDirPath, 'build', 'script.img');
|
|
this.updateConfig({ fsTool, img, baud, ...partition });
|
|
}
|
|
|
|
getFSMenu() {
|
|
return MENU;
|
|
}
|
|
|
|
getFSToolPath() {
|
|
const fsType = this.getFSType();
|
|
let arch = 'x64';
|
|
switch (process.arch) {
|
|
case 'arm64':
|
|
case 'arm':
|
|
arch = 'arm';
|
|
break;
|
|
case 'ia32':
|
|
arch = 'x32';
|
|
break;
|
|
case 'x64':
|
|
default:
|
|
arch = 'x64';
|
|
}
|
|
const platform = Env.currentPlatform;
|
|
const fsToolInfo = FS_INFO[`mk${fsType}`];
|
|
return path.join(Env.boardDirPath, 'build/tools', fsToolInfo[platform][arch]);
|
|
}
|
|
} |