Example #1
0
math.frexp = function(x) {
    _checkFloat(x);
    var xx = x.__float__().val;
    // check for 0, -0, NaN, Inf, -Inf
    if (xx === 0 || !isFinite(xx)) {
        return new types.Tuple([x.__float__(), new types.Int(0)]);
    }
    var buff = new Buffer(8);
    buff.writeDoubleLE(x, 0);
    var a = buff.readUInt32LE(0);
    var b = buff.readUInt32LE(4);
    var exp = ((b >> 20) & 0x7ff) - 1022;
    var num;
    // check for denormal number
    if (exp == -1022) {
        // each leading zero increases the exponent
        num = (b & 0xfffff) * 4294967296 + a;
        while ((num != 0) && (num < 0x8000000000000)) {
            exp--;
            num *= 2;
        }
        num = num / 0x10000000000000;
    } else {
      num = 0x10000000000000 + (b & 0xfffff) * 4294967296 + a;
      num = num / 0x20000000000000;
    }
    if (b >> 31) {
        num = -num;
    }
    return new types.Tuple([new types.Float(num), new types.Int(exp)]);
}
Example #2
0
      fs.read(fd, buffer, 0, 8, 0, function(err, bytesRead) {
	var numberOfRoots = buffer.readUInt32LE(0);
	var lastArticle = buffer.readUInt32LE(4);
	if (page > numberOfRoots / 30) {
	  fs.closeSync(fd);
	  issue404(req, res);
	  return;
	}

	// Find the start of the root segment.
   	fs.read(fd, buffer, 0, 8, 4 * (2 + lastArticle + page),
		function(err, bytesRead) {
		  var pageStart = buffer.readUInt32LE(0);
		  var pageEnd = buffer.readUInt32LE(4);
		  if (pageEnd == 0) {
		    fs.closeSync(fd);
		    issue404(req, res);
		    return;
		  }
		  buffer = new Buffer(pageEnd - pageStart);
   		  fs.read(fd, buffer, 0, pageEnd - pageStart,
			  pageStart, function(err, bytesRead) {
			    writeRoots(req, res, buffer,
   				       group, naked);
			    fs.closeSync(fd);
			  });
		});
      });
Example #3
0
		function(err, bytesRead) {
		  var pageStart = buffer.readUInt32LE(0);
		  var pageEnd = buffer.readUInt32LE(4);
		  if (pageEnd == 0) {
		    fs.closeSync(fd);
		    issue404(req, res);
		    return;
		  }
		  buffer = new Buffer(pageEnd - pageStart);
   		  fs.read(fd, buffer, 0, pageEnd - pageStart,
			  pageStart, function(err, bytesRead) {
			    writeRoots(req, res, buffer,
   				       group, naked);
			    fs.closeSync(fd);
			  });
		});
Example #4
0
  $scope.$watch('txHex', function() {
    if ($scope.txHex === '') return;

    var txBuff = new Buffer($scope.txHex, 'hex');
    var tx = {};

    // Version
    tx.version = txBuff.readUInt32LE(0);

    // Tx inputs
    tx.inputsCount = util.readVarInt(txBuff, 4).res;
    var offset = util.readVarInt(txBuff, 4).offset;


    tx.inputs = [];

    for (var i = 0; i < tx.inputsCount; i++) {
      var input = parseVin(txBuff.slice(offset));
      tx.inputs.push(input);
      offset += input.size;
    }

    // Tx outputs
    var outputsCount = util.readVarInt(txBuff, offset);
    offset = outputsCount.offset;
    tx.outputsCount = outputsCount.res;

    tx.outputs = [];

    for (i = 0; i < tx.outputsCount; i++) {
      var output = parseVout(txBuff.slice(offset));
      tx.outputs.push(output);
      offset += output.size;
    }

    // lockTime
    tx.lockTime = txBuff.readUInt32LE(offset);

    // binds the tx to the DOM
    $scope.tx = tx;

    var a = decodeScriptPubKey(new Buffer($scope.tx.outputs[0].scriptPubKey, 'hex'));
  });// end $watch
Example #5
0
		function(err, bytesRead) {
		  var articleStart = buffer.readUInt32LE(0);
		  buffer = new Buffer(1024);
   		  fs.read(fd, buffer, 0, 1024,
			  articleStart, function(err, bytesRead) {
			    writeThread(req, res, buffer,
					group, naked);
			    fs.closeSync(fd);
			  });
		});
Example #6
0
      fs.read(fd, buffer, 0, 8, 0, function(err, bytesRead) {
	var numberOfRoots = buffer.readUInt32LE(0);
	var lastArticle = buffer.readUInt32LE(4);
	if (article > lastArticle) {
	  fs.closeSync(fd);
	  issue404(req, res);
	  return;
	}
	// Find the start of the root segment.
   	fs.read(fd, buffer, 0, 4, 4 * (2 + article),
		function(err, bytesRead) {
		  var articleStart = buffer.readUInt32LE(0);
		  buffer = new Buffer(1024);
   		  fs.read(fd, buffer, 0, 1024,
			  articleStart, function(err, bytesRead) {
			    writeThread(req, res, buffer,
					group, naked);
			    fs.closeSync(fd);
			  });
		});
      });
    fs.read(fd, buffer, 0, length, start, function(err, num) {

        if(err){ dfd.resolve(new Long()); }

        /// get the number of bytes readed
        buffer = buffer.slice(0, num);

        /// sum the 
        var hNumber = new Long();
        for(var i=0; i<buffer.length; i+=8){

           var low = buffer.readUInt32LE(i, true);
           var high = buffer.readUInt32LE(i+4, true);

           var n = new Long(low, high);
           hNumber = hNumber.add(n);
        }


        dfd.resolve(hNumber);

    });
Example #8
0
    client.request(FC.READ_HOLDING_REGISTERS, blocks[blockindex].start, blocks[blockindex].len, function(err, response)
    {
        if (err)
        {
            /* stop on error */
            dbgout(err);
            stop();
        }

        /* write modbus data array to buffer
        * this is easier to handle/convert the data
        * */
        var buf = new buffer(response.length*2);
        for (var i=0; i<response.length; i++)
        {
            buf.writeUInt16LE(response[i],i*2);
        }

        /* convert data depending on current block */
        switch (blockindex)
        {
            case 0:
                dp['serial'] = buf.readUInt32LE(4)+(buf.readUInt32LE(8)<<32);
                dp['name'] = buf.toString('utf-8',12,32);
                dp['version'] = buf.readUInt8(45)+'.'+ buf.readUInt8(44);

                setState(settings.adapters.pluggit.firstId+1, dp['name']);
                setState(settings.adapters.pluggit.firstId+2, dp['serial']);
                setState(settings.adapters.pluggit.firstId+3, dp['version']);

                dbgout("\r\nsn: " + dp['serial']);
                dbgout("\r\nname: " + dp['name']);
                dbgout("\r\nfw: " + dp['version']);
                break;
            case 1:
                dp['t1'] = buf.readFloatLE(0);
                dp['t2'] = buf.readFloatLE(4);
                dp['t3'] = buf.readFloatLE(8);
                dp['t4'] = buf.readFloatLE(12);
                dp['t5'] = buf.readFloatLE(16);

                setState(settings.adapters.pluggit.firstId+10, dp['t1']);
                setState(settings.adapters.pluggit.firstId+11, dp['t2']);
                setState(settings.adapters.pluggit.firstId+12, dp['t3']);
                setState(settings.adapters.pluggit.firstId+13, dp['t4']);
                setState(settings.adapters.pluggit.firstId+14, dp['t5']);

                dbgout("\r\nt1: " + dp['t1'] + "°C");
                dbgout("\r\nt2: " + dp['t2'] + "°C");
                dbgout("\r\nt3: " + dp['t3'] + "°C");
                dbgout("\r\nt4: " + dp['t4'] + "°C");
                dbgout("\r\nt5: " + dp['t5'] + "°C");
                break;
            case 2:
                dp['filter'] = buf.readUInt32LE(0);
                dp['humidity'] = buf.readUInt32LE(4);
                dp['bypass'] = buf.readUInt32LE(8);
                switch (dp['bypass'])
                {
                    case 0x0000:
                        dp['bypassState']='closed';
                        break;
                    case 0x0001:
                        dp['bypassState']='in process';
                        break;
                    case 0x0020:
                        dp['bypassState']='closing';
                        break;
                    case 0x0040:
                        dp['bypassState']='opening';
                        break;
                    case 0x00FF:
                        dp['bypassState']='opened';
                        break;
                    default:
                        dp['bypassState']='unknown';
                        break;
                }

                setState(settings.adapters.pluggit.firstId+20, dp['filter']);
                setState(settings.adapters.pluggit.firstId+22, dp['humidity']);
                setState(settings.adapters.pluggit.firstId+23, dp['bypass']);
                setState(settings.adapters.pluggit.firstId+24, dp['bypassState']);

                dbgout("\r\nfilter: " + dp['filter'] + " month");
                dbgout("\r\nRH: " + dp['humidity'] + "%");
                dbgout("\r\nBypass: "******"\r\nspeed: " + dp['speed']);
                break;
            case 4:
                dp['alarm'] = buf.readUInt16LE(0);
                switch (dp['alarm'])
                {
                    case 0:
                        dp['alarmState']='None';
                        break;
                    case 1:
                        dp['alarmState']='Exhaust FAN Alarm';
                        break;
                    case 2:
                        dp['alarmState']='Supply FAN Alarm';
                        break;
                    case 3:
                        dp['alarmState']='Bypass Alarm';
                        break;
                    case 4:
                        dp['alarmState']='T1 Alarm';
                        break;
                    case 5:
                        dp['alarmState']='T2 Alarm';
                        break;
                    case 6:
                        dp['alarmState']='T3 Alarm';
                        break;
                    case 7:
                        dp['alarmState']='T4 Alarm';
                        break;
                    case 8:
                        dp['alarmState']='T5 Alarm';
                        break;
                    case 9:
                        dp['alarmState']='RH Alarm';
                        break;
                    case 10:
                        dp['alarmState']='Outdoor13 Alarm';
                        break;
                    case 11:
                        dp['alarmState']='Supply5 Alarm';
                        break;
                    case 12:
                        dp['alarmState']='Fire Alarm';
                        break;
                    case 13:
                        dp['alarmState']='Communication Alarm';
                        break;
                    case 14:
                        dp['alarmState']='FireTermostat Alarm';
                        break;
                    case 15:
                        dp['alarmState']='VOC Alarm';
                        break;
                    default:
                        dp['alarmState']='unknown';
                        break;
                }
                setState(settings.adapters.pluggit.firstId+30, dp['alarm']);
                setState(settings.adapters.pluggit.firstId+31, dp['alarmState']);
                dbgout("\r\nalarm: " + dp['alarm'] + ' ('+dp['alarmState']+')');
                break;
            case 5:
                dp['filterReset'] = buf.readUInt16LE(0);
                setState(settings.adapters.pluggit.firstId+22, dp['filterReset']);
                dbgout("\r\nfilter reset: " + dp['filterReset'] + ' days');
                break;
            case 6:
                dp['workTime'] = buf.readUInt32LE(0);
                setState(settings.adapters.pluggit.firstId+40, dp['workTime']);
                dbgout("\r\work time: " + dp['workTime'] + ' hours');
                break;
            default:
                /* should not happen */
                stop();
        }

        if (++blockindex < Object.keys(blocks).length)
        {
            /* request next block
             * be aware that this is a recursive call
             */
            requestBlock(blockindex);
        }
        else
        {
            /* store all data in database */
            storeDatabase(timestamp, dp);
            /* now all is done */
            stop();
        }
    });
Example #9
0
var tlv_fw_nonce_type = 39;
var tlv_fw_sig_type = 65;
var tlv_key_filler_type = 255;

var is_xip = false;

var app_fw_buf = new Buffer(fs.readFileSync(ip_file), 'hex');

/* Validate application firmware */
var magic_str = app_fw_buf.slice(0, 4);
if (magic_str != 'LVRM' && magic_str != 'MRVL') {
	console.error("Invalid application firmware. Exiting.");
	process.exit(1);
}

var magic_sig = app_fw_buf.readUInt32LE(4);
if (magic_sig != 0x2e9cf17b && magic_sig != 0x7bf19c2e) {
	console.error("Invalid application firmware. Exiting.");
	process.exit(1);
}

/* Check if XIP is enabled and encryption is required */
var entry = app_fw_buf.readUInt32LE(16);
if (((entry & 0x1f000000) === 0x1f000000) || (entry & 0x0000001f) === 0x0000001f)
	is_xip = true;


if (typeof fw_enc_algo === "undefined" && typeof fw_sign_algo === "undefined") {
	console.error("Info: No encryption or signing was asked for firmware");
	console.error("Info: Doing nothing for firmware image");
	var filename = get_outfile_name();