UNPKG

stk500

Version:

Fully javascript stk500v1 programmer. Allows you to program Arduinos straight from node (or browser for that matter). No more avrdude system calls or using the arduino IDE.

47 lines (42 loc) 1.3 kB
var receiveData = require('./receiveData'); var Statics = require('./statics'); module.exports = function (stream, opt, callback) { var timeout = opt.timeout || 0; var startingBytes = [ Statics.Resp_STK_INSYNC, Statics.Resp_STK_NOSYNC ]; var responseData = null; var responseLength = 0; var error; if (opt.responseData && opt.responseData.length > 0) { responseData = opt.responseData; } if (responseData) { responseLength = responseData.length; } if (opt.responseLength) { responseLength = opt.responseLength; } var cmd = opt.cmd; if (cmd instanceof Array) { cmd = Buffer.from(cmd.concat(Statics.Sync_CRC_EOP)); } stream.write(cmd, function (err) { if (err) { error = new Error('Sending ' + cmd.toString('hex') + ': ' + err.message); return callback(error); } receiveData(stream, timeout, responseLength, function (err, data) { if (err) { error = new Error('Sending ' + cmd.toString('hex') + ': ' + err.message); return callback(error); } if (responseData && !data.equals(responseData)) { error = new Error(cmd + ' response mismatch: '+data.toString('hex')+', '+responseData.toString('hex')); return callback(error); } callback(null, data); }); }); };