UNPKG

node-aurora

Version:

Provides an interface to the Aurora Dreamband.

61 lines (39 loc) 1.74 kB
'use strict'; 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; }); }); };