示例#1
0
Crazyradio.prototype.write = function(data, timeout)
{
	var self = this,
		deferred = P.defer();

	var d = domain.create();

	d.on('error', function(err)
	{
		deferred.reject(err);
	});

	d.run(function()
	{
		self.outputStream().write(data, function(err)
		{
			if (err)
				deferred.reject(err);
			else
				deferred.resolve('OK');
		});
	});

	return deferred.promise;
};
CrazyDriver.prototype.fetchParameters = function()
{
	var self = this;
	this.parametersDeferred = P.defer();
	this.requestTOC(Protocol.Ports.PARAM);
	return this.parametersDeferred.promise;
};
示例#3
0
文件: copter.js 项目: VRDate/aerogel
Copter.prototype.land = function()
{
	var self = this,
		deferred = P.defer();

	this.copterStates.land();

	var thrustStep = 1000;
	var stepMS = 250;

	if (this.flightTimer)
		clearInterval(this.flightTimer);

	function landCurve()
	{
		var thrust = self.thrust - thrustStep;
		if (thrust <= MIN_THRUST)
			thrust = MIN_THRUST;

		// console.log('landing; thrust:', thrust);
		self.goal.thrust = thrust;
		self.thrust = thrust;

		if (thrust === MIN_THRUST)
		{
			self.copterStates.landed();
			deferred.resolve(self.copterStates.currentState());
		}
	}

	this.hoverTimer = setInterval(landCurve, stepMS);

	return deferred.promise;
};
示例#4
0
      function (srpSession) {
        var k = P.defer()

        if (!this.srpPw) {
          session = srpSession

          keyStretch.derive(Buffer(this.email, 'hex'), Buffer(this.password), session.passwordStretching.salt)
            .then(
              function (result) {
                this.srp = {}
                this.srp.type = 'SRP-6a/SHA256/2048/v1'
                this.srpPw = result.srpPw.toString('hex')
                this.unwrapBKey = result.unwrapBKey.toString('hex')
                this.passwordSalt = session.passwordStretching.salt

                k.resolve(srpSession)
              }.bind(this),
              function (err) {
                k.reject(err)
              }
            )
        } else {
          k.resolve(srpSession)
        }
        return k.promise
      }.bind(this)
CrazyDriver.prototype.setpoint = function(roll, pitch, yaw, thrust)
{
	var self = this,
		deferred = P.defer();

	var packet = new Crazypacket();
	packet.port = Protocol.Ports.COMMANDER;

	packet.writeFloat(roll)
		.writeFloat(-pitch)
		.writeFloat(yaw)
		.writeUnsignedShort(thrust)
		.endPacket();

	return this.radio.sendPacket(packet)
	.then(function(item)
	{
		return item;
	})
	.fail(function(err)
	{
		console.log('failure in setpoint');
		console.log(err);
	});
};
示例#6
0
CrazyDriver.prototype.startTelemetry = function()
{
	this.telemetryDeferred = P.defer();

	this.radio.addListener('logging', this.telemetry.handlePacket.bind(this.telemetry));
	this.requestTOC();

	return this.telemetryDeferred.promise;
};
示例#7
0
function getVideoById(id) {
    var defer = P.defer();
    dloader.getVideoById(id).then(function(path) {
        defer.resolve(path);
    }).fail(function(err) {
        defer.reject(err);
    });
    return defer.promise;
}
示例#8
0
exports.findChannel = function(bt, address)
{
	var deferred = P.defer();

	bt.findSerialPortChannel(address, function(channel)
	{
		deferred.resolve(channel);
	});

	return deferred.promise;
};
    window.Promise = function (callback) {
      var deferred = p.defer();

      try {
        callback(deferred.resolve.bind(deferred), deferred.reject.bind(deferred));
      } catch (e) {
        deferred.reject(e);
      }

      return deferred.promise;
    };
  p.jQueryXHR = function (jQueryDeferred) {
    var defer = p.defer();

    jQueryDeferred.then(function (data/*,textStatus, jqXHR*/) {
      defer.resolve(data);
    }, function (jqXHR/*, textStatus, errorThrown*/) {
      defer.reject(jqXHR);
    });

    return defer.promise;
  };
示例#11
0
function hkdf(km, info, salt, len) {
  var d = P.defer()
  var df = new HKDF('sha256', salt, km)
  df.derive(
    kw(info),
    len,
    function(key) {
      d.resolve(key)
    }
  )
  return d.promise
}
示例#12
0
function waitForCode() {
  var d = P.defer()
  function loop() {
    if (!emailCode) {
      return setTimeout(loop, 10)
    }
    d.resolve(emailCode)
    emailCode = null
  }
  loop()
  return d.promise
}
示例#13
0
function refreshList() {
    var defer = P.defer();
    exec('node core/index.js', (error, stdout, stderr) => {
        if (error) {
            error.stderr = stderr;
            defer.reject(error);
        }
        else
            defer.resolve(stdout);
    });
    return defer.promise;
}
示例#14
0
/** Derive a key from an email and password pair
 *
 * @param {Buffer} email The email hex buffer of the user
 * @param {Buffer} password The password of the user
 * @param {String} saltHex The salt to derive hkdf as a hex string
 * @return p.promise object - It will resolve with
 * {Buffer} srpPw srp password
 * {Buffer} unwrapBKey unwrapBKey
 * or fail with {object} err
 */
function derive(email, password, saltHex) {
  var p = P.defer()

  if (!password || !email || !saltHex) {
    p.reject('Bad password, salt or email input')
    return p.promise
  }

  var salt = Buffer(saltHex, 'hex')
  // derive the first key from pbkdf2
  pbkdf2
    .derive(password, KWE('first-PBKDF', email))
    .then(
      function(K1) {
        // request a hash from scrypt based on the first key
        return scrypt.hash(K1, KW("scrypt"), SCRYPT_HELPER)
      }
    )
    .then(
      function (K2) {
        // combine the K2 hex string and a password UTF8 into a bit array
        var scryptPassword = Buffer.concat([
          Buffer(K2, 'hex'),
          password
        ])
        // derive the second key from pbkdf2
        return pbkdf2.derive(scryptPassword, KWE('second-PBKDF', email))
      }
    )
    .then(
      function (stretchedPw) {
        var input = new Buffer (stretchedPw, 'hex')
        var lengthHkdf = 2 * 32

        return hkdf(input, 'mainKDF', salt, lengthHkdf)
      }
    )
    .done(
      function (hkdfResult) {
        var hkdfResultHex = hkdfResult.toString('hex')
        var srpPw = Buffer(hkdfResultHex.substring(0,64), 'hex')
        var unwrapBKey = Buffer(hkdfResultHex.substring(64,128), 'hex')

        p.resolve({ srpPw: srpPw, unwrapBKey: unwrapBKey })
      },
      function (err) {
        p.reject(err)
      }
    )

  return p.promise
}
示例#15
0
exports.connect = function(bt, address, channel)
{
	var deferred = P.defer();

	bt.connect(address, channel, function()
	{
		deferred.resolve();
	}, function()
	{
		deferred.reject(new Error('failed to connect to ' + address + '@' + channel));
	});

	return deferred.promise;
};
示例#16
0
function getVideos(index) {
    var defer = P.defer();
    fs.readdir(__dirname + '/videos', function(err, files) {
        if (err)
            defer.reject(err);
        else {
            if (index)
                defer.resolve(files[index]);
            else
                defer.resolve(files);
        }
    });
    return defer.promise;
}
function waitForCode(email) {
  var d = P.defer()
  function loop() {
    var code
    if (!emailCodes[email]) {
      return setTimeout(loop, 10)
    }
    code = emailCodes[email]
    emailCodes[email] = null
    d.resolve(code)
  }
  loop()
  return d.promise
}
示例#18
0
文件: index.js 项目: jden/avon
function wrapperFile(algo, fname)
{
	if (typeof fname !== 'string')
		return P.reject(new Error('You must pass a string filename as input.'));

	var deferred = P.defer();

	blake2.b2_file(algo, fname, function(err, result)
	{
		if (err) deferred.reject(err);
		else deferred.resolve(result);
	});

	return deferred.promise;
}
示例#19
0
文件: index.js 项目: jden/avon
function wrapper(algo, buffer)
{
	if (!Buffer.isBuffer(buffer))
		return P.reject(new Error('You must pass a buffer as input.'));

	var deferred = P.defer();

	blake2.b2_buffer(algo, buffer, function(err, result)
	{
		if (err) deferred.reject(err);
		else deferred.resolve(result);
	});

	return deferred.promise;
}
示例#20
0
Crazyradio.prototype.statusRequest = function()
{
	var self = this,
		deferred = P.defer();

	this.device.controlTransfer(usb.LIBUSB_ENDPOINT_IN, 0x06, 0, 0, 128, function(err, data)
	{
		if (err)
			return deferred.reject(err);

		deferred.resolve(data);
	});

	return deferred.promise;
};
示例#21
0
文件: copter.js 项目: VRDate/aerogel
Copter.prototype.takeoff = function()
{
	var self = this,
		deferred = P.defer();

	console.log('takeoff2()');

	this.copterStates.takeoff();
	function stopThrustingUp()
	{
		self.copterStates.stabilize();
		deferred.resolve('OK');
	}

	this.flightTimer = setTimeout(stopThrustingUp, 2000);
	return deferred.promise;
};
示例#22
0
exports.write = function(bt, data)
{
	if (!Buffer.isBuffer(data))
		data = new Buffer(data);

	var deferred = P.defer();

	bt.write(data, function(err, written)
	{
		if (err)
			return deferred.reject(err);

		deferred.resolve(written);
	});

	return deferred.promise;
};
示例#23
0
function getMusicById(id) {
    var defer = P.defer();
    request('https://www.googleapis.com/youtube/v3/videos?part=snippet&id=' + id + '&key=' + conf.apiKey,
            function(err, response, res) {
                if (err)
                    defer.reject(err);
                else {
                    res = JSON.parse(res);
                    var musicSnippet = res.items[0].snippet;
                    musicSnippet.resourceId = {};
                    musicSnippet.resourceId.videoId = id;
                    getMusic(musicSnippet).then(function(res) {
                        defer.resolve(res);
                    });
                }
            });
    return defer.promise;
}
示例#24
0
文件: catbox.js 项目: imclab/chalet
Connection.prototype.start = function start(callback)
{
    var self = this;

    if (this.isReady())
        return callback();

    var deferred = P.defer(),
        promise = deferred.promise;

    if (this.password)
        promise = promise.then(function() { return self.client.authenticateWith(self.password); });

    this.client.once('ready', deferred.resolve).
                once('error', deferred.reject);

    self.client.connect().then(function() { return promise; }).then(function() { callback(null); }, callback).done();
};
示例#25
0
Crazyradio.prototype.usbReceiveVendor = function(request, value, index, length)
{
	var self = this,
		deferred = P.defer();

	this.device.controlTransfer(TYPE_VENDOR | usb.LIBUSB_ENDPOINT_IN, request, value, index, length, function(err, data)
	{
		if (err)
		{
			console.log('usbReceiveVendor error:', err);
			return deferred.reject(err);
		}

		deferred.resolve(data);
	});

	return deferred.promise;
};
示例#26
0
Crazyradio.prototype.usbSendVendor = function(request, value, index, data)
{
	var self = this,
		deferred = P.defer();

	this.device.controlTransfer(TYPE_VENDOR, request, value, index, data, function(err, indata)
	{
		if (err)
		{
			console.log('usbSendVendor', err);
			console.log(TYPE_VENDOR, request, value, index, data);
			return deferred.reject(err);
		}
		// console.log('successful usbSendVendor', request);
		deferred.resolve('OK');
	});

	return deferred.promise;
};
示例#27
0
 Mailer.prototype.send = function (message) {
   log.trace({ op: 'mailer.send', email: message && message.to })
   var d = P.defer()
   this.mailer.sendMail(
     message,
     function (err, status) {
       log.trace(
         {
           op: 'mailer.send.1',
           err: err && err.message,
           status: status && status.message,
           id: status && status.messageId
         }
       )
       return err ? d.reject(err) : d.resolve(status)
     }
   )
   return d.promise
 }
示例#28
0
Crazyradio.prototype.close = function()
{
	var self = this,
		deferred = P.defer();

	if (this.pingTimer)
		clearTimeout(this.pingTimer);

	this.interface.release(function(err)
	{
		if (err) deferred.reject(err);
		this.device = null;
		this.interface = null;
		this.inEndpoint = null;
		this.outEndpoint = null;
		deferred.resolve('OK');
	});

	return deferred.promise;
};
示例#29
0
 p = p.then((function(i) { return function() {
   var userid = "loady" + i + "@restmail.lcip.org";
   var password = "******";
   var salt = "AAAAAA";
   var client = new Client();
   var d = P.defer();
   client.setupCredentials(userid, password, salt).then(
     (function(userid, client, d) { return function() {
       credentials[userid] = {
         srp: client.srp,
         email: client.email,
         srpPw: client.srpPw,
         unwrapBKey: client.unwrapBKey,
         passwordSalt: client.passwordSalt
       }
       d.resolve(true);
     };})(userid, client, d)
   );
   return d.promise;
 };})(i));
示例#30
0
function getVideo(videoSnippet) {
    var defer = P.defer();
    fs.exists(__dirname + '/videos/', function(exists) {
        if (!exists) {
            fs.mkdir(__dirname + '/videos/', function() {
                getVideo(videoSnippet);
            });
            return;
        }
        var url = videoSnippet.resourceId.videoId;
        var title = videoSnippet.title.replace(/ /g, '_').split('');
        title = title.map(function(el) {
            if (el.charCodeAt(0) < 48 || (el.charCodeAt(0) > 57 && el.charCodeAt(0) < 65) || el.charCodeAt(0) > 122)
                return '';
            else
                return el;
        });
        title = title.join().replace(/,/g, '');
        console.log(title);
        var extension = '';
        var video = youtubedl('http://www.youtube.com/watch?v=' + url,
                // Optional arguments passed to youtube-dl.
                ['-f best'],
                // Additional options can be given for calling `child_process.execFile()`.
                { cwd: __dirname,
                maxBuffer: 250000*1024});

        // Will be called when the download starts.
        video.on('info', function(info) {
            extension = info._filename.match(/\..{3,4}$/)[0];
            console.log('Download started');
            console.log('filename: ' + info._filename);
            console.log('size: ' + info.size);
            video.pipe(fs.createWriteStream(__dirname + '/videos/' + title + extension));
        });
        video.on('end', function() {
            defer.resolve('/videos/' + title + extension);
        });
    });
    return defer.promise;
}