Files
mixly3/boards/default_src/arduino_esp32/mixly-modules/fs-board-handler.js

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]);
}
}