var reverseBytes32 = exports.reverseBytes32 = function(data) { if (data.length % 4) { throw new Error("Util.reverseBytes32(): Data length must be multiple of 4"); } var put = new Put(); var parser = Binary.parse(data); while (!parser.eof()) { var word = parser.word32le('word').vars.word; put.word32be(word); } return put.buffer(); };
function compose(options) { debug('Dumping options', options); if (!misc.isNumber(options.address)) { throw new errors.ArgumentError('Address is not specified'); } if(misc.isNumber(options.value)){ options.value = [options.value]; } if (!Array.isArray(options.value)) { throw new errors.ArgumentError('Value is not specified or not an array'); } if(options.type==consts.Types.INT32){ options.address = options.address|(1<<14); } var buffer = new BufferPut(); buffer.word16be(options.address); buffer.word16be(options.value.length*options.type/2); buffer.word8be(options.value.length*options.type); for(var i=0; i<options.value.length; i++){ var value = options.value[i]; if(!misc.isNumber(value)){ throw new errors.ArgumentError('Value is not specified correctly'); } switch(options.type){ case consts.Types.INT16: buffer.word16be(value); break; case consts.Types.INT32: buffer.word32be(value); break; default: throw new errors.ArgumentError('Unknown type'); } } return buffer.buffer(); }