UNPKG

node-beaglebone-usbboot

Version:
101 lines 3.4 kB
"use strict"; /* tslint:disable */ Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); const sp = require('schemapack'); const toggle = require('endian-toggle'); // rndis header for encoding const rndis_1 = sp.build([ { msg_type: 'uint32' }, { msg_len: 'uint32' }, { data_offset: 'uint32' }, { data_len: 'uint32' }, { band_offset: 'uint32' }, { pad: 'string' }, ]); const rndis_2 = sp.build([ { band_len: 'uint32' }, { out_band_elements: 'uint32' }, { packet_offset: 'uint32' }, { packet_info_len: 'uint32' }, { reserved_first: 'uint32' }, { reserved_second: 'uint32' }, { pad: 'string' }, ]); // RNDIS Initialize Header (https://msdn.microsoft.com/en-us/library/ms919811.aspx) const rndis_init_hdr = sp.build([ { msg_type: 'uint32' }, { msg_len: 'uint32' }, { request_id: 'uint32' }, { major_version: 'uint32' }, { minor_version: 'uint32' }, { max_transfer_size: 'uint32' }, { pad: 'string' }, ]); // RNDIS Set Header (https://msdn.microsoft.com/en-us/library/ms919826.aspx) const rndis_set_hdr = sp.build([ { msg_type: 'uint32' }, { msg_len: 'uint32' }, { request_id: 'uint32' }, { oid: 'uint32' }, { len: 'uint32' }, { offset: 'uint32' }, { reserved: 'uint32' }, { pad: 'string' }, ]); // oid parameter of 4 bytes const oid = sp.build([{ oid_param: 'uint32' }, { pad: 'string' }]); class RNDIS { // Function for rndis data packet makeRNDIS(dataLength) { const rndis1 = [ { msg_type: 0x00000001 }, { msg_len: dataLength + 44 }, { data_offset: 0x24 }, { data_len: dataLength }, { band_offset: 0 }, ]; const rndis2 = [ { band_len: 0 }, { out_band_elements: 0 }, { packet_offset: 0 }, { packet_info_len: 0 }, { reserved_first: 0 }, { reserved_second: 0 }, ]; const buf1 = util_1.fixBuff(rndis_1.encode(rndis1)); const buf2 = util_1.fixBuff(rndis_2.encode(rndis2)); const data = Buffer.concat([buf1, buf2], 44); return toggle(data, 32); // convert byte order to little endian } makeRNDISInit() { const rndis_init = [ { msg_type: 2 }, { msg_len: 24 }, { request_id: 1 }, { major_version: 1 }, { minor_version: 1 }, { max_transfer_size: 64 }, ]; const data = util_1.fixBuff(rndis_init_hdr.encode(rndis_init)); return toggle(data, 32); // convert byte order to little endian } makeRNDISSet() { const rndis_set = [ { msg_type: 5 }, { msg_len: 28 }, { request_id: 23 }, { oid: 0x1010e }, { len: 4 }, { offset: 20 }, { reserved: 0 }, ]; const oid_ = [{ oid_param: 0x1 | 0x8 | 0x4 | 0x20 }]; const set_buf = util_1.fixBuff(rndis_set_hdr.encode(rndis_set)); const oid_p = util_1.fixBuff(oid.encode(oid_)); const data = Buffer.concat([set_buf, oid_p], 32); return toggle(data, 32); // convert byte order to little endian } } exports.RNDIS = RNDIS; //# sourceMappingURL=rndis.js.map