import type SerialPort from 'serialport'; import Stk500 from 'stk500'; import IntelHex from 'intel-hex'; import { Uploader } from './uploader'; import { BoardConfig } from '../board'; import { promisify } from '../util'; class Stk500Uploader extends Uploader { constructor(boardConfig: BoardConfig) { super(boardConfig); } protected async bootload(port: SerialPort, hex: Buffer) { const bootloadOptions = { signature: Buffer.from([0x1e, 0x95, 0x0f]), pageSize: 128, timeout: 400, } const stk500 = new Stk500({ quiet: true }); const bootload = promisify(stk500.bootload).bind(stk500) as any; await bootload(port, IntelHex.parse(hex).data, bootloadOptions) } } export default Stk500Uploader;