Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jacobrosenthal/7d0d78442318ba3d05dc8c918176116e to your computer and use it in GitHub Desktop.
Save jacobrosenthal/7d0d78442318ba3d05dc8c918176116e to your computer and use it in GitHub Desktop.
Noble Bindings truths
peripheralUuidString is a lower case string no dashes
serviceUuidString is a lower case string no dashes
characteristicUuidString is a lower case string no dashes
serviceUuidString is a lower case string no dashes
serviceUuidsArray, array of serviceUuidString
descriptorHandle TODO
propertyString one of ['broadcast', 'read', 'writeWithoutResponse', 'write', 'notify', 'indicate', 'authenticatedSignedWrites', 'extendedProperties']
propertiesArray containing one or more of propertyString
descriptorObject = {
uuid: characteristicUuidString,
handle: descriptorHandle
};
characteristicObject = {
uuid: characteristicUuidString,
properties: propertiesArray
}
characteristicObjectArray, array of characteristicObject
descriptorsObjectArray, array of descriptorObject
dataBuffer node Buffer
stateString one of ['unknown', 'resetting', 'unsupported', 'unauthorized', 'poweredOff', 'poweredOn']
addressString, mac address string with colons ex: '00:22:d0:2a:e4:a3' or 'unknown' for null/undefined
addressTypeString one of ['public', 'random', 'unknown']
rssiNumber ex -41
txPowerLevelNumber ex 0
localNameString
advertisementObject, all required, ex:
{ localNameString: localNameString,
txPowerLevel: txPowerLevelNumber,
manufacturerData: dataBuffer,
serviceData: TODO,
serviceUuids: serviceUuidsArray }
Bindings must have emits, all arguments required unless otherwise specified
bindings.on('stateChange', callback(stateString));
bindings.on('addressChange', callback(addressString));
bindings.on('scanStart', callback());
bindings.on('scanStop', callback());
bindings.on('discover', callback(peripheralUuidString, addressString, addressTypeString, connectableBool, advertisementObject, rssiNumber));
bindings.on('connect', callback(peripheralUuidString));
bindings.on('disconnect', callback(peripheralUuidString));
bindings.on('rssiUpdate', callback(peripheralUuidString, rssiNumber));
bindings.on('servicesDiscover', callback(peripheralUuidString, serviceUuidsArray));
bindings.on('includedServicesDiscover', callback(peripheralUuidString, serviceUuidString, serviceUuidsArray));
bindings.on('characteristicsDiscover', callback(peripheralUuidString, serviceUuidString, characteristicObjectArray));
bindings.on('read', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, dataBuffer, isNotificationBoolean));
bindings.on('write', callback(peripheralUuidString, serviceUuidString, characteristicUuidString));
bindings.on('broadcast', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, enableBoolean));
bindings.on('notify', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, enableBoolean));
bindings.on('descriptorsDiscover', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, descriptorObjectArray));
bindings.on('valueRead', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, descriptorUuidString, dataBuffer));
bindings.on('valueWrite', callback(peripheralUuidString, serviceUuidString, characteristicUuidString, descriptorUuidString));
not required?
bindings.on('handleRead', callback(peripheralUuidString, descriptorHandle, dataBuffer));
bindings.on('handleWrite', callback(peripheralUuidString, descriptorHandle));
bindings.on('handleNotify', callback(TODO));
Bindings must have functions, all arguments required unless otherwise specified
bindings.init();
bindings.startScanning(serviceUuidsArray, allowDuplicatesBoolean); //neither required
bindings.stopScanning();
bindings.connect(peripheralUuidString);
bindings.disconnect(peripheralUuidString);
bindings.updateRssi(peripheralUuidString);
bindings.discoverServices(peripheralUuidString, serviceUuidsArray);
bindings.discoverIncludedServices(peripheralUuidString, serviceUuidString, serviceUuidsArray(empty allowed));
bindings.discoverCharacteristics(peripheralUuidString, serviceUuidString, characteristicUuidsArray);
bindings.read(peripheralUuidString, serviceUuidString, characteristicUuidString);
bindings.write(peripheralUuidString, serviceUuidString, characteristicUuidString, dataBuffer, withoutResponseBool);
bindings.broadcast(peripheralUuidString, serviceUuidString, characteristicUuidString, broadcastBoolean);
bindings.notify(peripheralUuidString, serviceUuidString, characteristicUuidString, notifyBoolean);
bindings.discoverDescriptors(peripheralUuidString, serviceUuidString, characteristicUuidString);
bindings.readValue(peripheralUuidString, serviceUuidString, characteristicUuidString, descriptorUuidString);
bindings.writeValue(peripheralUuidString, serviceUuidString, characteristicUuidString, descriptorUuidString, dataBuffer);
bindings.readHandle(peripheralUuidString, descriptorHandle);
bindings.writeHandle(peripheralUuidString, descriptorHandle, dataBuffer, withoutResponseBoolean);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment