///
import { Logger, ChipFamily, SpiFlashAddresses } from "./const";
export declare class ESPLoader extends EventTarget {
port: SerialPort;
logger: Logger;
private _parent?;
chipFamily: ChipFamily;
chipName: string | null;
_efuses: any[];
_flashsize: number;
debug: boolean;
IS_STUB: boolean;
connected: boolean;
flashSize: string | null;
__inputBuffer?: number[];
private _reader?;
constructor(port: SerialPort, logger: Logger, _parent?: ESPLoader | undefined);
private get _inputBuffer();
initialize(): Promise;
/**
* @name readLoop
* Reads data from the input stream and places it in the inputBuffer
*/
readLoop(): Promise;
hardReset(bootloader?: boolean): Promise;
/**
* @name macAddr
* The MAC address burned into the OTP memory of the ESP chip
*/
macAddr(): any[];
readRegister(reg: number): Promise;
/**
* @name checkCommand
* Send a command packet, check that the command succeeded and
* return a tuple with the value and data.
* See the ESP Serial Protocol for more details on what value/data are
*/
checkCommand(opcode: number, buffer: number[], checksum?: number, timeout?: number): Promise<[number, number[]]>;
/**
* @name sendCommand
* Send a slip-encoded, checksummed command over the UART,
* does not check response
*/
sendCommand(opcode: number, buffer: number[], checksum?: number): Promise;
/**
* @name readPacket
* Generator to read SLIP packets from a serial port.
* Yields one full SLIP packet at a time, raises exception on timeout or invalid data.
* Designed to avoid too many calls to serial.read(1), which can bog
* down on slow systems.
*/
readPacket(timeout: number): Promise;
/**
* @name getResponse
* Read response data and decodes the slip packet, then parses
* out the value/data and returns as a tuple of (value, data) where
* each is a list of bytes
*/
getResponse(opcode: number, timeout?: number): Promise<[number, number[]]>;
/**
* @name checksum
* Calculate checksum of a blob, as it is defined by the ROM
*/
checksum(data: number[], state?: number): number;
setBaudrate(baud: number): Promise;
reconfigurePort(baud: number): Promise;
/**
* @name sync
* Put into ROM bootload mode & attempt to synchronize with the
* ESP ROM bootloader, we will retry a few times
*/
sync(): Promise;
/**
* @name _sync
* Perform a soft-sync using AT sync packets, does not perform
* any hardware resetting
*/
_sync(): Promise;
/**
* @name getFlashWriteSize
* Get the Flash write size based on the chip
*/
getFlashWriteSize(): 1024 | 16384;
/**
* @name flashData
* Program a full, uncompressed binary file into SPI Flash at
* a given offset. If an ESP32 and md5 string is passed in, will also
* verify memory. ESP8266 does not have checksum memory verification in
* ROM
*/
flashData(binaryData: ArrayBuffer, updateProgress: (bytesWritten: number, totalBytes: number) => void, offset?: number, compress?: boolean): Promise;
/**
* @name flashBlock
* Send one block of data to program into SPI Flash memory
*/
flashBlock(data: number[], seq: number, timeout?: number): Promise;
flashDeflBlock(data: number[], seq: number, timeout?: number): Promise;
/**
* @name flashBegin
* Prepare for flashing by attaching SPI chip and erasing the
* number of blocks requred.
*/
flashBegin(size?: number, offset?: number, encrypted?: boolean): Promise;
/**
* @name flashDeflBegin
*
*/
flashDeflBegin(size?: number, compressedSize?: number, offset?: number, encrypted?: boolean): Promise;
flashFinish(): Promise;
flashDeflFinish(): Promise;
getBootloaderOffset(): number;
flashId(): Promise;
getChipFamily(): ChipFamily;
writeRegister(address: number, value: number, mask?: number, delayUs?: number, delayAfterUs?: number): Promise;
setDataLengths(spiAddresses: SpiFlashAddresses, mosiBits: number, misoBits: number): Promise;
waitDone(spiCmdReg: number, spiCmdUsr: number): Promise;
runSpiFlashCommand(spiflashCommand: number, data: number[], readBits?: number): Promise;
detectFlashSize(): Promise;
/**
* @name getEraseSize
* Calculate an erase size given a specific size in bytes.
* Provides a workaround for the bootloader erase bug on ESP8266.
*/
getEraseSize(offset: number, size: number): number;
/**
* @name memBegin (592)
* Start downloading an application image to RAM
*/
memBegin(size: number, blocks: number, blocksize: number, offset: number): Promise<[number, number[]]>;
/**
* @name memBlock (609)
* Send a block of an image to RAM
*/
memBlock(data: number[], seq: number): Promise<[number, number[]]>;
/**
* @name memFinish (615)
* Leave download mode and run the application
*
* Sending ESP_MEM_END usually sends a correct response back, however sometimes
* (with ROM loader) the executed code may reset the UART or change the baud rate
* before the transmit FIFO is empty. So in these cases we set a short timeout and
* ignore errors.
*/
memFinish(entrypoint?: number): Promise<[number, number[]]>;
runStub(): Promise;
writeToStream(data: number[]): Promise;
disconnect(): Promise;
}
declare class EspStubLoader extends ESPLoader {
IS_STUB: boolean;
/**
* @name memBegin (592)
* Start downloading an application image to RAM
*/
memBegin(size: number, blocks: number, blocksize: number, offset: number): Promise;
/**
* @name getEraseSize
* depending on flash chip model the erase may take this long (maybe longer!)
*/
eraseFlash(): Promise;
}
export {};