node-aurora
Version:
Provides an interface to the Aurora Dreamband.
61 lines (39 loc) • 1.74 kB
JavaScript
;
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _util = require('./util');
var _bufferCrc = require('buffer-crc32');
var _bufferCrc2 = _interopRequireDefault(_bufferCrc);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = function (srcPath) {
var writeStream = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var connector = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'any';
var srcPathSegments = srcPath.split('/');
var srcFileName = srcPathSegments.pop();
var srcFileDir = srcPathSegments.length ? srcPathSegments.join('/') : '/';
/*
if (connector != 'bluetooth' && this.isMsdAttached()){
}
*/
var outputChunks = [];
var crc = void 0;
var stream = void 0;
return this.queueCmd('sd-file-read ' + srcFileName + ' ' + srcFileDir + ' 0', connector, function (cmd) {
cmd.outputStream.on('data', function (chunk) {
crc = _bufferCrc2.default.unsigned(chunk, crc);
});
stream = cmd.outputStream;
if (writeStream) {
stream = stream.pipe(writeStream);
}
stream.on('data', function (chunk) {
outputChunks.push(chunk);
});
}).then(function (cmdWithResponse) {
return (0, _util.promisifyStream)(stream).then(function () {
if (cmdWithResponse.response.crc != crc) return _promise2.default.reject('CRC failed.');
cmdWithResponse.output = writeStream ? outputChunks : outputChunks.map(String).join('');
return cmdWithResponse;
});
});
};