1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- "use strict";
- const log = require("./logger");
- const delay = require("./utilities").delay;
- const FLASH_MODES = {
- qio: 0,
- qout: 1,
- dio: 2,
- dout: 3
- };
- const FLASH_FREQUENCIES = {
- "40m": 0,
- "26m": 1,
- "20m": 2,
- "80m": 0xf
- };
- const FLASH_SIZES = {
- "4m": 0x00,
- "2m": 0x10,
- "8m": 0x20,
- "16m": 0x30,
- "32m": 0x40,
- "16m-c1": 0x50,
- "32m-c1": 0x60,
- "32m-c2": 0x70
- };
- class EspBoard {
- constructor(port) {
- this.port = port;
- this.isInBootLoader = false;
- }
- portSet(options) {
- return new Promise((resolve, reject) => {
- log.info("Setting port", options);
- this.port.set(options, (err, result) => {
- if (err) {
- reject(err);
- }
- resolve(result);
- });
- });
- }
- flashInfoAsBytes() {
- let buffer = new ArrayBuffer(2);
- let dv = new DataView(buffer);
- dv.setUint8(0, FLASH_MODES[this.flashMode]);
- dv.setUint8(1, FLASH_SIZES[this.flashSize] + FLASH_FREQUENCIES[this.flashFrequency]);
- return new Buffer(buffer);
- }
- resetIntoBootLoader() {
- throw new Error("Must define bootloader reset instructions");
- }
- }
- /**
- * Tested: Adafruit Feather Huzzah
- * Needs testing: Adafruit Huzzah, SparkFun Thing, SparkFun Thing Dev Board
- */
- class Esp12 extends EspBoard {
- constructor(port) {
- super(port);
- this.flashFrequency = "80m";
- this.flashMode = "qio";
- this.flashSize = "32m";
- }
- resetIntoBootLoader() {
- // RTS - Request To Send
- // DTR - Data Terminal Ready
- // NOTE: Must set values at the same time.
- log.info("Resetting board");
- return this.portSet({rts: true, dtr:false})
- .then(() => delay(5))
- .then(() => this.portSet({rts: false, dtr: true}))
- .then(() => delay(50))
- .then(() => this.portSet({rts: false, dtr: false}));
- }
- }
- module.exports = {
- Esp12: Esp12
- };
|