0.2.4 • Published 6 years ago

ble-utils v0.2.4

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Bluetooth LE Utils

Description

This package can parse BLE slave advertisement packets into human readable/manipulatable objects and build advertisement packets from JSON objects. Based off of the BLE specification data types.

Install

npm install ble-utils

Usage

Packet Parsing

var advertising = require('ble-utils').advertising;

// Payload from your BLE device (make it into a buffer, if not already)
var payload = new Buffer([
  2, 1, 6,
  17, 6, 186, 86, 137, 166, 250, 191, 162, 189, 1, 70, 125, 110, 56, 88, 171, 173,
  5, 22, 10, 24, 7, 4
]);

// Parse (big-endian by default)
var packets = advertising.parse(payload);

console.log(packets.length); // 3
console.log(packets[0].type); // Flags
console.log(packets[0].data); // [ 'LE Limited Discoverable Mode' ]

console.log(packets[1].type); // 'Incomplete List of 128-bit Service Class UUIDs'
console.log(packets[1].data); // [ '0xba5689a6fabfa2bd01467d6e3858abad' ]

Packet Structure

The returned packets in the packet array have the following structure:

packet.type -> A string describing type of data (eg. "Flags", "Complete List of 16-bit UUIDs", etc.)

packet.data -> The data parsed into appropriate data type (eg. String, Array of Octet Strings, unsigned int, etc.)

packet._type -> the type value parsed from packet

packet._data -> The raw buffer that was parsed

packet._byteOrder -> The byte order in parsing

Endianness

You can specify the endianess that you want the buffers parsed with by using these functions:

advertising.parse.LE(buffer);
advertising.parse.BE(buffer);

Building Packets

var advertising = require('ble-utils').advertising;

// Create your advertisement packet
var packet = {
	flags : [0x02, 0x04],
	incompleteUUID16 : ['2A00','2A01'],
	completeName : 'My Device'
};

// Serialize it into a Buffer
var payload = advertising.serialize(packet);

console.log(payload);
// <Buffer 02 01 06 05 02 00 2a 01 2a 0a 09 4d 79 20 44 65 76 69 63 65>

You can create an advertisement packet buffer from an object with the following keys and their corresponding data types:

flags - An array of integers

incompleteUUID16 - An array of 16 bit UUID hex strings

completeUUID16 - An array of 16 bit UUID hex strings

incompleteUUID32 - An array of 32 bit UUID hex strings

completeUUID32 - An array of 32 bit UUID hex strings

incompleteUUID128 - An array of 128 bit UUID hex strings

completeUUID128 - An array of 128 bit UUID hex strings

shortName - A string

completeName - A string

txPower - An integer value

deviceClass - A hex string

pairingHashC - A hex string

pairingRandomizerR - A hex string

deviceId - A hex string

smOOBFlags - A hex string

intervalRange - An array of hex strings

solicitationUUID16 - An array of 16 bit UUID hex strings

solicitationUUID32 - An array of 16 bit UUID hex strings

solicitationUUID128 - An array of 16 bit UUID hex strings

serviceData - An array of hex strings

publicAddress - An array of hex strings

randomAddress - An array of hex strings

appearance - An array of bytes

interval - An array of hex strings

deviceAddress - An array of hex strings

role - An array of bytes or Buffer

pairingHashC256 - An array of hex strings

pairingRandomizerR256 - An array of hex strings

serviceUUID32 - An array of 32 bit UUID hex strings

serviceUUID128 - An array of 128 bit UUID hex strings

_3dInfo - An array of bytes or Buffer

mfrData - An array of bytes of Buffer

License

MIT

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago