Giter VIP home page Giter VIP logo

noble-uwp's People

Contributors

acstacey avatar aendir avatar erikkallen avatar farfromrefug avatar geovie avatar itome avatar jasongin avatar qdot avatar senergin avatar tony-gutierrez avatar vohtaski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

noble-uwp's Issues

Disconnecting doesn't work properly

I've tested noble-uwp disconnecting

  1. the device isn't properly disconnected on peripherial.disconnect()
  2. when app that device is paired with is terminated, the device is disconnected
  3. added to static void Close()
    in windows.devices.bluetooth/_nodert_generated.cpp &
    windows.device.bluetooth.generic.attribute.profile/_nodert_generated.cpp
wrapper->_instance->Dispose();
delete wrapper->_instance;
wrapper->_instance = nullptr;
return;
  1. get access to charachteristics._ref from noble that can use WriteClientCharacteristicConfigurationDescriptorAsync
    based on this: https://stackoverflow.com/questions/39599252/windows-ble-uwp-disconnect/43609852#43609852

Unfortunately nothings helped :(.

Subsequent reads of a characteristic return a cached value

The connection and characteristic discovery are working and I'm assigning the discovered characteristic to a variable to do the reading. The first read using the snippet below is returning the correct value but every subsequent read returns immediately with the same value as the first read. I've verified what the read should return with Bluetooth LE Explorer: https://github.com/Microsoft/BluetoothLEExplorer.

Thanks

export async function readCharacteristic(id) {
    if (!botIsConnected() || gattIsBusy) {
        return false;
    }
    let charac = bleCharacFromID(id);
    if (!charac) {
        console.log('Invalid BLE characteristic on write');
        return false;
    }
    gattIsBusy = true;
    let retVal = await readCharAsync(charac);
    gattIsBusy = false;
    console.log('retVal: ' + retVal);
    return retVal.readUInt8(0);
}

async function readCharAsync(charac) {
    return await new Promise(function(resolve,reject){
         charac.read(function(err, data) {
             if(err !== null) return reject(err);
             resolve(data);
         });
    });
}

Update: I found the bluetooth characteristic read call that didn't have the uncached flag set. The pull request fixes the issue for me. I'm not sure if caching is the desired behaviour and maybe there is another way to force an update.

Installing NodeRT UWP adapter for Windows.Foundation node-pre-gyp ERR!

Any suggestion to solve the following error?

PS D:\noble-uwp-master> npm install

[email protected] install D:\noble-uwp-master
install.cmd

Installing NodeRT UWP adapter for Windows.Foundation
node-pre-gyp ERR! Tried to download(404): https://github.com/jasongin/noble-uwp/releases/download/windows_foundation_0.15063.1/binding-v0.15063.1-node-v59-win32-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v59 ABI, unknown) (falling back to source compile with node-gyp)
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
D:\noble-uwp-master\uwp\windows.foundation\build\binding.vcxproj(20,3): error MSB4019: The imported project "D:\Microsoft.Cpp.Default.props" was
not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
gyp ERR! build error
gyp ERR! stack Error: C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\berec\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:160:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Windows_NT 10.0.16299
gyp ERR! command "D:\Program Files\nodejs\node.exe" "C:\Users\berec\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "build" "--fallback-to-build" "--msvs_version=2015" "--module=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64\binding.node" "--module_name=binding" "--module_path=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64"
gyp ERR! cwd D:\noble-uwp-master\uwp\windows.foundation
gyp ERR! node -v v9.4.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'D:\Program Files\nodejs\node.exe C:\Users\berec\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --msvs_version=2015 --module=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64\binding.node --module_name=binding --module_path=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64' (1)
node-pre-gyp ERR! stack at ChildProcess. (D:\noble-uwp-master\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:160:13)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:943:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
node-pre-gyp ERR! System Windows_NT 10.0.16299
node-pre-gyp ERR! command "D:\Program Files\nodejs\node.exe" "D:\noble-uwp-master\node_modules\node-pre-gyp\bin\node-pre-gyp" "install" "--fallback-to-build" "--msvs_version=2015"
node-pre-gyp ERR! cwd D:\noble-uwp-master\uwp\windows.foundation
node-pre-gyp ERR! node -v v9.4.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.39
node-pre-gyp ERR! not ok
Failed to execute 'D:\Program Files\nodejs\node.exe C:\Users\berec\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --msvs_version=2015 --module=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64\binding.node --module_name=binding --module_path=D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: install.cmd
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\berec\AppData\Roaming\npm-cache_logs\2018-01-14T19_45_47_119Z-debug.log

When i try to run something:

PS D:\noble-uwp-master> node test.js
D:\noble-uwp-master\uwp\windows.foundation\lib\main.js:23
throw e;
^

Error: Cannot find module 'D:\noble-uwp-master\uwp\windows.foundation\binding\node-v59-win32-x64\binding.node'
at Function.Module._resolveFilename (module.js:555:15)
at Function.Module._load (module.js:482:25)
at Module.require (module.js:604:17)
at require (internal/module.js:11:18)
at Object. (D:\noble-uwp-master\uwp\windows.foundation\lib\main.js:19:20)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)

I attach the debug log.
2018-01-14T19_45_47_119Z-debug.log

discoverAllServicesAndCharacteristics() doesn't always call callback.

When I make calls to peripheral.discoverAllServicesAndCharacteristics([callback]) the callback is not always called. It seems that if I put the call to discoverAllServicesAndCharacteristics in a setTimeout I can get the callback to be called more frequently, but the callback is still mostly never called.

Could not get localName in advertisement data?

When I'm scanning devices, but get advertisement data without localName like this:

advertisement: { 
     localName: null,
     txPowerLevel: null,
     manufacturerData: undefined,
     serviceUuids: [ '1803', '1804' ],
     serviceData: [ {} ]
 }

Do I have any workaround for this?

Thanks.

Consider rewriting without NodeRT

I'm somewhat conflicted about this project's usage of NodeRT, that enables calling WinRT APIs from Node.js JavaScript.

I originally started using NodeRT because it allowed me to easily port an earlier (unpublished) version of this project that had used Node-Chakra WinRT projections. At least, it was supposed to be easy. In practice, I've encountered a number of issues/drawbacks with the use of NodeRT:

  1. I had to manually edit the Node-RT generated code in one place to fix a compilation error.
  2. NodeRT's WinRT to JS projections aren't as good as Chakra's. With NodeRT, extra JavaScript code is required to adapt many API projections, for example to convert a WinRT IVectorView to a JS array. This has cost a lot of extra development and debugging time.
  3. The build is 7x slower than it needs to be due to needing to build NodeRT adapter assemblies for 7 namespaces (where most of the code in each is not actually used).

As an alternative, this package could be written using a more ordinary Node.js native module, with C++ code calling WinRT APIs directly and implementing most of the logic, and a thin JavaScript adapter for the noble bindings.

But since it's working as it is, I don't have the time or motivation to rewrite it all now. Maybe someday there will be a better way of calling WinRT APIs from Node.js JavaScript.

crash on node 7.9.0

With the latest nodejs, noble-uwp crashes every time
It works with the same test on 6.x.
Could you update the uwp projects for node 7.x ?
I think it might solve the issue.
Thanks

noble
on -> stateChange: poweredOn
on -> discover:  undefined null
on -> discover:  undefined NeOse Pro Backup 1.3.35
on -> discover:  undefined NeOse Dev Martin
Stacktrace (bbbbbbbb-bbbbbbbb) 00000109134038B9 0000000000000000:
==== JS stack trace =========================================

Security context: 00000109134266A1 <JS Object>#0#
    1: checkCommunicationResult(aka checkCommunicationResult) [C:\dev\noble-uwp\lib\bindings.js:746] [pc=000000106CEBA220](this=0000024244802311 <undefined>,deviceUuid=000002894B1AACB1 <String[12]: 001bdc06cbed>,result=00000109134038B9 <FixedArray[189]>#1#)
    2: /* anonymous */(aka /* anonymous */) [C:\dev\noble-uwp\lib\bindings.js:170] [pc=000000106CEB9F01](this=0000024244802311 <undefined>,result=00000109134038B9 <FixedArray[189]>#1#)
    3: PromiseHandle(aka PromiseHandle) [native promise.js:1] [pc=000000106CEA8B42](this=0000024244802311 <undefined>,F=00000109134038B9 <FixedArray[189]>#1#,J=000002894B1B1309 <JS Function rt.promisify.then.result (SharedFunctionInfo 000001204D1957B9)>#2#,K=000002894B1B14F9 <an Object with map 0000001ECCAAE1A9>#3#)
    4: /* anonymous */(aka /* anonymous */) [native promise.js:1] [pc=000000106CEA87EA](this=0000024244802311 <undefined>)

==== Details ================================================

[1]: checkCommunicationResult(aka checkCommunicationResult) [C:\dev\noble-uwp\lib\bindings.js:746] [pc=000000106CEBA220](this=0000024244802311 <undefined>,deviceUuid=000002894B1AACB1 <String[12]: 001bdc06cbed>,result=00000109134038B9 <FixedArray[189]>#1#) {
  // expression stack (top to bottom)
  [03] : 000001204D196271 <FixedArray[20]>#4#
  [02] : 2
  [01] : 0000010913403501 <String[6]: status>
  [00] : 00000109134038B9 <FixedArray[189]>#1#
--------- s o u r c e   c o d e ---------
function checkCommunicationResult(deviceUuid, result) {\x0d\x0a\x09if (result.status === GattCommunicationStatus.unreachable) {\x0d\x0a\x09\x09throw new Error('Device unreachable: ' + deviceUuid);\x0d\x0a\x09} else if (result.status === GattCommunicationStatus.protocolError) {\x0d\x0a\x09\x09throw new Error('Protocol error communicating with device: ' + deviceUuid);\x0d\x0a\x09}\x0d\x0a}
-----------------------------------------
}

[2]: /* anonymous */(aka /* anonymous */) [C:\dev\noble-uwp\lib\bindings.js:170] [pc=000000106CEB9F01](this=0000024244802311 <undefined>,result=00000109134038B9 <FixedArray[189]>#1#) {
  // stack-allocated locals
  var services = 0000024244802351 <the hole>
  var serviceUuids = 0000024244802351 <the hole>
  // expression stack (top to bottom)
  [05] : 00000109134038B9 <FixedArray[189]>#1#
  [04] : 000002894B1AACB1 <String[12]: 001bdc06cbed>
  [03] : 0000024244802311 <undefined>
  [02] : 0000026E92F233D9 <JS Function checkCommunicationResult (SharedFunctionInfo 000001998EE5D299)>#5#
--------- s o u r c e   c o d e ---------
function result => {\x0d\x0a\x09\x09checkCommunicationResult(deviceUuid, result);\x0d\x0a\x0d\x0a\x09\x09let services = rt.toArray(result.services);\x0d\x0a\x09\x09let serviceUuids = services.map(s => formatUuid(s.uuid))\x0d\x0a\x09\x09\x09.filter(filterUuids(filterServiceUuids));\x0d\x0a\x0d\x0a\x09\x09debug(deviceUuid + ' services: %o', serviceUuids);\x0d\x0a\x09\x09this.emit('servicesDiscov...

-----------------------------------------
}

[3]: PromiseHandle(aka PromiseHandle) [native promise.js:1] [pc=000000106CEA8B42](this=0000024244802311 <undefined>,F=00000109134038B9 <FixedArray[189]>#1#,J=000002894B1B1309 <JS Function rt.promisify.then.result (SharedFunctionInfo 000001204D1957B9)>#2#,K=000002894B1B14F9 <an Object with map 0000001ECCAAE1A9>#3#) {
  // stack-allocated locals
  var D = 0000024244802421 <false>
  var L = 0000024244802311 <undefined>
  // expression stack (top to bottom)
  [06] : 00000109134038B9 <FixedArray[189]>#1#
  [05] : 0000024244802311 <undefined>
  [04] : 000002894B1B1309 <JS Function rt.promisify.then.result (SharedFunctionInfo 000001204D1957B9)>#2#
  [03] : 000001091341ADE1 <FixedArray[45]>#6#
  [02] : 000001091341ADE1 <FixedArray[45]>#6#
--------- s o u r c e   c o d e ---------
function PromiseHandle(F,J,K){\x0avar D=(%_DebugIsActive()!=0);\x0atry{\x0aif(D)%DebugPushPromise(K.promise);\x0avar L=J(F);\x0aK.resolve(L);\x0a}%catch(exception){\x0atry{K.reject(exception);}catch(e){}\x0a}finally{\x0aif(D)%DebugPopPromise();\x0a}\x0a}
-----------------------------------------
}

[4]: /* anonymous */(aka /* anonymous */) [native promise.js:1] [pc=000000106CEA87EA](this=0000024244802311 <undefined>) {
  // stack-allocated locals
  var P = 0000024244802311 <undefined>
  // expression stack (top to bottom)
  [05] : 000002894B1B14F9 <an Object with map 0000001ECCAAE1A9>#3#
  [04] : 000002894B1B1309 <JS Function rt.promisify.then.result (SharedFunctionInfo 000001204D1957B9)>#2#
  [03] : 00000109134038B9 <FixedArray[189]>#1#
  [02] : 0000024244802311 <undefined>
  [01] : 000001091341B489 <JS Function PromiseHandle (SharedFunctionInfo 0000024244822939)>#7#
--------- s o u r c e   c o d e ---------
function (){\x0aif(O){\x0a%DebugAsyncTaskEvent({type:"willHandle",id:M,name:N});\x0a}\x0aif((%_IsArray(H))){\x0afor(var P=0;P<H.length;P+=2){\x0aPromiseHandle(F,H[P],H[P+1]);\x0a}\x0a}else{\x0aPromiseHandle(F,H,I);\x0a}\x0aif(O){\x0a%DebugAsyncTaskEvent({type:"didHandle",id:M,name:N});\x0a}\x0a}
-----------------------------------------
}

==== Key         ============================================

 #0# 00000109134266A1: 00000109134266A1 <JS Object>
 #1# 00000109134038B9: 00000109134038B9 <FixedArray[189]>
                 0: 0000010913403EB1 <JS Function (SharedFunctionInfo 0000024244807FB1)>#8#
                 1: 0
                 2: 00000109134266A1 <JS Object>#0#
                 3: 00000109134038B9 <FixedArray[189]>#1#
                 4: 000003F31E2A0159 <JS Global Object>#9#
                 5: 000003F31E2A0371 <FixedArray[33]>#10#
                 6: 0000036566585F31 <Map(FAST_HOLEY_ELEMENTS)>#11#
                 7: 0000024244802311 <undefined>
                 8: 0000010913408C81 <JS Function ArrayBuffer (SharedFunctionInfo 00000242448449A1)>#12#
                 9: 00000365665830C9 <Map(FAST_HOLEY_SMI_ELEMENTS)>#13#
                  ...
 #2# 000002894B1B1309: 000002894B1B1309 <JS Function rt.promisify.then.result (SharedFunctionInfo 000001204D1957B9)>
 #3# 000002894B1B14F9: 000002894B1B14F9 <an Object with map 0000001ECCAAE1A9>
           promise: 000002894B1B1389 <a Promise with map 0000001ECCAAE201>#14#
           resolve: 000002894B1B1431 <JS Function y (SharedFunctionInfo 0000026E92F6EC61)>#15#
            reject: 000002894B1B1479 <JS Function z (SharedFunctionInfo 0000026E92F6ED29)>#16#
 #4# 000001204D196271: 000001204D196271 <FixedArray[20]>
                 0: 000001204D196121 <FixedArray[5]>#17#
                 1: 1
                 2: 00000242448049F9 <Symbol: uninitialized_symbol>#18#
                 3: 00000242448049F9 <Symbol: uninitialized_symbol>#18#
                 4: 00000242448049F9 <Symbol: uninitialized_symbol>#18#
                 5: 00000242448049F9 <Symbol: uninitialized_symbol>#18#
                 6: 0
                 7: 00000242448049F9 <Symbol: uninitialized_symbol>#18#
                 8: 0
                 9: 0000024244802559 WeakCell for 0#19#
                  ...
 #5# 0000026E92F233D9: 0000026E92F233D9 <JS Function checkCommunicationResult (SharedFunctionInfo 000001998EE5D299)>
 #6# 000001091341ADE1: 000001091341ADE1 <FixedArray[45]>
                 0: 000001091341AF59 <JS Function (SharedFunctionInfo 0000024244821B49)>#20#
                 1: 00000109134038B9 <FixedArray[189]>#1#
                 3: 00000109134038B9 <FixedArray[189]>#1#
                 4: 0000010913406891 <JS Function InternalArray (SharedFunctionInfo 0000024244848981)>#21#
                 5: 0000024244804429 <Symbol: promise_async_stack_id_symbol>#22#
                 6: 00000242448045F1 <Symbol: promise_handled_by_symbol>#23#
                 7: 0000024244804539 <Symbol: promise_forwarding_handler_symbol>#24#
                 8: 00000242448046A1 <Symbol: promise_has_handler_symbol>#25#
                 9: 0000024244804749 <Symbol: promise_reject_reactions_symbol>#26#
                  ...
 #7# 000001091341B489: 000001091341B489 <JS Function PromiseHandle (SharedFunctionInfo 0000024244822939)>
 #8# 0000010913403EB1: 0000010913403EB1 <JS Function (SharedFunctionInfo 0000024244807FB1)>
 #9# 000003F31E2A0159: 000003F31E2A0159 <JS Global Object>
 #10# 000003F31E2A0371: 000003F31E2A0371 <FixedArray[33]>
                 0: 0000024244802311 <undefined>
                 1: 0000024244802311 <undefined>
                 2: 0000024244802311 <undefined>
                 3: 0000024244802311 <undefined>
                 4: 0000024244802311 <undefined>
                 5: 0000024244802311 <undefined>
                 6: 0000024244802311 <undefined>
                 7: 0000024244802311 <undefined>
                 8: 0000024244802311 <undefined>
                 9: 0000024244802311 <undefined>
                  ...
 #11# 0000036566585F31: 0000036566585F31 <Map(FAST_HOLEY_ELEMENTS)>
 #12# 0000010913408C81: 0000010913408C81 <JS Function ArrayBuffer (SharedFunctionInfo 00000242448449A1)>
 #13# 00000365665830C9: 00000365665830C9 <Map(FAST_HOLEY_SMI_ELEMENTS)>
 #14# 000002894B1B1389: 000002894B1B1389 <a Promise with map 0000001ECCAAE201>
 #15# 000002894B1B1431: 000002894B1B1431 <JS Function y (SharedFunctionInfo 0000026E92F6EC61)>
 #16# 000002894B1B1479: 000002894B1B1479 <JS Function z (SharedFunctionInfo 0000026E92F6ED29)>
 #17# 000001204D196121: 000001204D196121 <FixedArray[5]>
                 0: 18
                 1: 000001204D196159 <FixedArray[11]>#27#
                 2: 41945090
                 3: 2326624
                 4: 234921986
 #18# 00000242448049F9: 00000242448049F9 <Symbol: uninitialized_symbol>
 #19# 0000024244802559: 0000024244802559 WeakCell for 0
 #20# 000001091341AF59: 000001091341AF59 <JS Function (SharedFunctionInfo 0000024244821B49)>
 #21# 0000010913406891: 0000010913406891 <JS Function InternalArray (SharedFunctionInfo 0000024244848981)>
 #22# 0000024244804429: 0000024244804429 <Symbol: promise_async_stack_id_symbol>
 #23# 00000242448045F1: 00000242448045F1 <Symbol: promise_handled_by_symbol>
 #24# 0000024244804539: 0000024244804539 <Symbol: promise_forwarding_handler_symbol>
 #25# 00000242448046A1: 00000242448046A1 <Symbol: promise_has_handler_symbol>
 #26# 0000024244804749: 0000024244804749 <Symbol: promise_reject_reactions_symbol>
 #27# 000001204D196159: 000001204D196159 <FixedArray[11]>
                 0: 1
                 1: 0
                 2: 4
                 3: 7
                 4: 0000024244802D19 <String[5]: Error>
                 5: 0000024244802311 <undefined>
                 6: 0000024244802311 <undefined>
                 7: 0000024244802311 <undefined>
                 8: 0000024244802311 <undefined>
                 9: 0000024244802311 <undefined>
                  ...
=====================

Electron rebuild error

I'm now trying on this module rebuild for electron. But some error occured when rebuiling or running modules. Any help would be greatly appreciated.
Please see this issue too. -> #17

advertisement discovery is really slow

Using the advertisment-discovery.js script from examples enabling allowDuplicates in startScanning i get results between say 5 and 12 seconds for a device that advertises once every 500ms. I get much quicker responses when using the hci-socket binding.

I'm using a BCM20702A based dongle and node 10.6.0

Can anybody else replicate this sort of behavior?

"Protocol error communicating with device" while trying to read

Hi,

I was trying to simple try some another devices according to bug #24, and while using LightBlue Explorer on my iPhone to create Virtual Periperals I got this as a value (sic!) on .read() some of the characteristics

Protocol error communicating with device

Seemed pretty strange for me so I tried same code on macOS & noble and got proper value.

Best, JH

subscribe does not send notifications

Thank your for this module!

Everything works for me on windows, I can discover and connect the device and send
commands to the device.
However, when I try to subscribe for notification characteristic, I don't get any data.

This code works with noble on Mac, but the callback in on('data') is not called on Windows.
Any hints what I might be doing wrong? Thank you in advance!

let readChar = device.characteristics[readCharacteristicUUID];
readChar.on('data', (data, isNotification) => {
  console.log('data');
  console.log(data);
});
readChar.subscribe((err) => {
  if (err) console.log(err);
  console.log('Notification started');
});

errors when trying npm install noble-uwp

Sorry for the big dump below, but I'm trying to install noble-uwp and it gives me a bunch of errors. It looks like there is a problem with the Bluetooth. May it have something to do with me running the latest version of Windows (15063) instead of the preview version? Also I'm running the latest NodeJS on my system.

I noticed it builds all the NodeRT stuff, while it only needs the Bluetooth ones right?

I'm planning on using it in my Electron application. Any help is greatly appreciated!

C:\Projects\Diagnoptics>npm install noble-uwp

[email protected] install C:\Projects\Diagnoptics\node_modules\usb
node-pre-gyp install --fallback-to-build

[usb] Success: "C:\Projects\Diagnoptics\node_modules\usb\src\binding\usb_bindings.node" is installed via remote

[email protected] install C:\Projects\Diagnoptics\node_modules\bluetooth-hci-socket
node-gyp rebuild

C:\Projects\Diagnoptics\node_modules\bluetooth-hci-socket>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
win_delay_load_hook.cc
Generating code
Finished generating code
binding.vcxproj -> C:\Projects\Diagnoptics\node_modules\bluetooth-hci-socket\build\Release\binding.node

[email protected] install C:\Projects\Diagnoptics\node_modules\noble-uwp
build.cmd

Building NodeRT UWP adapter for Windows.Foundation
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
_nodert_generated.cpp
NodeRtUtils.cpp
OpaqueWrapper.cpp
CollectionsConverterUtils.cpp
win_delay_load_hook.cc
Creating library C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.foundation\build\Release\binding.lib and object C:\Projects\Di
agnoptics\node_modules\noble-uwp\uwp\windows.foundation\build\Release\binding.exp
Generating code
Finished generating code
binding.vcxproj -> C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.foundation\build\Release\binding.node

Building NodeRT UWP adapter for Windows.Storage.Streams
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
_nodert_generated.cpp
NodeRtUtils.cpp
OpaqueWrapper.cpp
CollectionsConverterUtils.cpp
win_delay_load_hook.cc
Creating library C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.storage.streams\build\Release\binding.lib and object C:\Projec
ts\Diagnoptics\node_modules\noble-uwp\uwp\windows.storage.streams\build\Release\binding.exp
Generating code
Finished generating code
binding.vcxproj -> C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.storage.streams\build\Release\binding.node

Building NodeRT UWP adapter for Windows.Devices.Bluetooth
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
nodert_generated.cpp
NodeRtUtils.cpp
OpaqueWrapper.cpp
.._nodert_generated.cpp(64): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_m
odules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(64): error C2065: 'BluetoothAdapter': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\window
s.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(64): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(65): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_m
odules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(65): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(65): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(65): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(65): note: compiler replacing '^' with '*' to continue parsing
.._nodert_generated.cpp(67): error C2039: 'BluetoothDeviceId': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node

modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(67): error C2065: 'BluetoothDeviceId': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windo
ws.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(67): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(68): error C2039: 'BluetoothDeviceId': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(68): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(68): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(68): note: compiler replacing '^' with '' to continue parsing
.._nodert_generated.cpp(70): error C2039: 'BluetoothUuidHelper': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\nod
e_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(70): error C2065: 'BluetoothUuidHelper': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\win
dows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(70): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(71): error C2039: 'BluetoothUuidHelper': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\nod
e_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(71): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(71): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(71): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(71): note: compiler replacing '^' with '
' to continue parsing
.._nodert_generated.cpp(79): error C2039: 'BluetoothLEAppearanceCategories': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Dia
gnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(79): error C2065: 'BluetoothLEAppearanceCategories': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble
-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(79): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(80): error C2039: 'BluetoothLEAppearanceCategories': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Dia
gnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(80): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(80): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(80): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(80): note: compiler replacing '^' with '' to continue parsing
.._nodert_generated.cpp(82): error C2039: 'BluetoothLEAppearanceSubcategories': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects
Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(82): error C2065: 'BluetoothLEAppearanceSubcategories': undeclared identifier [C:\Projects\Diagnoptics\node_modules\no
ble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(82): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(83): error C2039: 'BluetoothLEAppearanceSubcategories': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects
Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(83): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(83): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(83): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(83): note: compiler replacing '^' with '
' to continue parsing
.._nodert_generated.cpp(85): error C2039: 'BluetoothLEAppearance': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\n
ode_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(85): error C2065: 'BluetoothLEAppearance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(85): error C2065: 'wintRtInstance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.
devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(86): error C2039: 'BluetoothLEAppearance': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\n
ode_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(86): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.dev
ices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(86): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [C:\Projects\Diagnoptic
s\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(86): error C3699: '^': cannot use this indirection on type 'int' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\w
indows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(86): note: compiler replacing '^' with '' to continue parsing
.._nodert_generated.cpp(249): error C2838: 'DisabledByUser': illegal qualified name in member declaration [C:\Projects\Diagnoptics\node_module
s\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(249): error C2065: 'DisabledByUser': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows
.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(249): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(250): error C2838: 'ConsentRequired': illegal qualified name in member declaration [C:\Projects\Diagnoptics\node_modul
es\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(250): error C2065: 'ConsentRequired': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\window
s.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(250): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(251): error C2838: 'TransportNotSupported': illegal qualified name in member declaration [C:\Projects\Diagnoptics\node
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(251): error C2065: 'TransportNotSupported': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp
windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(251): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(261): error C3083: 'BluetoothAddressType': the symbol to the left of a '::' must be a type [C:\Projects\Diagnoptics\no
de_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(261): error C2039: 'Public': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_modules\no
ble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(261): error C2065: 'Public': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices
.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(261): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(262): error C3083: 'BluetoothAddressType': the symbol to the left of a '::' must be a type [C:\Projects\Diagnoptics\no
de_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(262): error C2039: 'Random': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_modules\no
ble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(262): error C2065: 'Random': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices
.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(262): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(263): error C3083: 'BluetoothAddressType': the symbol to the left of a '::' must be a type [C:\Projects\Diagnoptics\no
de_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(263): error C2039: 'Unspecified': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_modul
es\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(263): error C2065: 'Unspecified': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.de
vices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(263): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Projects\Diagnoptics\node_modules\noble-uw
p\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(315): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node

modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(315): error C2061: syntax error: identifier 'BluetoothAdapter' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\win
dows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(854): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(854): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.de
vices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(854): error C2461: 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter': constructor syntax missing formal paramete
rs [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(854): error C2238: unexpected token(s) preceding ';' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devic
es.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(857): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(857): error C2061: syntax error: identifier 'BluetoothAdapter' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\win
dows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(857): error C2365: 'NodeRT::Windows::Devices::Bluetooth::WrapBluetoothAdapter': redefinition; previous definition was
'data variable' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(64): note: see declaration of 'NodeRT::Windows::Devices::Bluetooth::WrapBluetoothAdapter'
.._nodert_generated.cpp(858): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(858): error C2143: syntax error: missing ';' before '^' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.de
vices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(858): error C2433: 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter': 'friend' not permitted on data declaration
s [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(858): error C2238: unexpected token(s) preceding ';' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devic
es.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(310): error C2065: '_instance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devi
ces.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(317): error C2065: 'instance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devi
ces.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(317): error C2065: 'instance': undeclared identifier [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devic
es.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(360): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node

modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(360): error C3699: '^': cannot use this indirection on type 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter' [C
:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(360): note: compiler replacing '^' with '
' to continue parsing
.._nodert_generated.cpp(364): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(364): error C2059: syntax error: '>' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(364): error C2783: 'bool NodeRT::Utils::IsWinRtWrapperOf(v8::Localv8::Value)': could not deduce template argument fo
r 'T' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
c:\projects\diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\NodeRtUtils.h(60): note: see declaration of 'NodeRT::Utils::IsWi
nRtWrapperOf'
.._nodert_generated.cpp(368): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(368): error C2059: syntax error: ')' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(384): error C2664: 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter::BluetoothAdapter(const NodeRT::Windows::Dev
ices::Bluetooth::BluetoothAdapter &)': cannot convert argument 1 from 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter *' to 'const NodeR
T::Windows::Devices::Bluetooth::BluetoothAdapter &' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding
.vcxproj]
.._nodert_generated.cpp(384): note: Reason: cannot convert from 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter ' to 'const NodeRT::
Windows::Devices::Bluetooth::BluetoothAdapter'
.._nodert_generated.cpp(384): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot b
e called
.._nodert_generated.cpp(395): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(395): error C2059: syntax error: '>' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(395): error C2783: 'bool NodeRT::Utils::IsWinRtWrapperOf(v8::Localv8::Value)': could not deduce template argument fo
r 'T' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
c:\projects\diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\NodeRtUtils.h(60): note: see declaration of 'NodeRT::Utils::IsWi
nRtWrapperOf'
.._nodert_generated.cpp(401): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(401): error C3699: '^': cannot use this indirection on type 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter' [C
:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(401): note: compiler replacing '^' with '
' to continue parsing
.._nodert_generated.cpp(404): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(404): error C2059: syntax error: ')' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(412): error C2064: term does not evaluate to a function taking 1 arguments [C:\Projects\Diagnoptics\node_modules\noble
-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(420): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_
modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(420): error C2059: syntax error: '>' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(420): error C2783: 'bool NodeRT::Utils::IsWinRtWrapperOf(v8::Localv8::Value)': could not deduce template argument fo
r 'T' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
c:\projects\diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\NodeRtUtils.h(60): note: see declaration of 'NodeRT::Utils::IsWi
nRtWrapperOf'
.._nodert_generated.cpp(440): error C2039: 'instance': is not a member of 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter' [C:\Project
s\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(269): note: see declaration of 'NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter'
.._nodert_generated.cpp(440): error C2227: left of '->GetRadioAsync' must point to class/struct/union/generic type [C:\Projects\Diagnoptics\no
de_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(511): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node

modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(511): error C2059: syntax error: '>' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\bui
ld\binding.vcxproj]
.._nodert_generated.cpp(511): error C2976: 'Windows::Foundation::IAsyncOperation': too few generic arguments [C:\Projects\Diagnoptics\node_mod
ules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(511): error C2955: 'Windows::Foundation::IAsyncOperation': use of class generic requires generic argument list [C:\Pro
jects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(521): error C3083: 'BluetoothAdapter': the symbol to the left of a '::' must be a type [C:\Projects\Diagnoptics\node_m
odules\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(521): error C2039: 'FromIdAsync': is not a member of 'Windows::Devices::Bluetooth' [C:\Projects\Diagnoptics\node_modul
es\noble-uwp\uwp\windows.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(521): error C2664: 'void NodeRT::Windows::Devices::Bluetooth::BluetoothAdapter::FromIdAsync(Nan::NAN_METHOD_ARGS_TYPE)
': cannot convert argument 1 from 'Platform::String ^' to 'Nan::NAN_METHOD_ARGS_TYPE' [C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windo
ws.devices.bluetooth\build\binding.vcxproj]
.._nodert_generated.cpp(521): fatal error C1003: error count exceeds 100; stopping compilation [C:\Projects\Diagnoptics\node_modules\noble-uwp
\uwp\windows.devices.bluetooth\build\binding.vcxproj]
CollectionsConverterUtils.cpp
win_delay_load_hook.cc
gyp ERR! build error
gyp ERR! stack Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--msvs_version=2015"
gyp ERR! cwd C:\Projects\Diagnoptics\node_modules\noble-uwp\uwp\windows.devices.bluetooth
gyp ERR! node -v v6.10.2
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
[email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bplist-parser -> node_modules\bplist-parser
[email protected] node_modules\noble-uwp\node_modules\debug\node_modules\ms -> node_modules\ms
[email protected] node_modules\noble-uwp\node_modules\debug -> node_modules\debug
[email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\nan -> node_modules\nan
[email protected] node_modules\noble-uwp\node_modules\noble\node_modules\debug\node_modules\ms -> node_modules\noble-uwp\node_modules\ms

  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\mkdirp\node_modules\minimist
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\mkdirp
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\nopt\node_modules\abbrev
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\nopt
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\delegates
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\buffer-shims
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\core-util-is
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\inherits
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\isarray
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\process-nextick-args
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\string_decoder
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream\node_modules\util-deprecate
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet\node_modules\readable-stream
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\are-we-there-yet
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\console-control-strings
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\aproba
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\has-color
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\has-unicode
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\object-assign
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\signal-exit
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\string-width\node_modules\code-point-at\node_modules\number-is-nan
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\string-width\node_modules\code-point-at
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\string-width\node_modules\is-fullwidth-code-point\node_modules\number-is-nan
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\string-width\node_modules\is-fullwidth-code-point
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\strip-ansi\node_modules\ansi-regex
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\strip-ansi
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\string-width
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge\node_modules\wide-align
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\gauge
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog\node_modules\set-blocking
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\npmlog
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\rc\node_modules\deep-extend
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\rc\node_modules\ini
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\rc\node_modules\minimist
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\rc\node_modules\strip-json-comments
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\rc
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature\node_modules\assert-plus
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature\node_modules\jsprim\node_modules\extsprintf
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature\node_modules\jsprim\node_modules\json-schema
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature\node_modules\jsprim\node_modules\verror
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature\node_modules\jsprim
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request\node_modules\http-signature
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp\node_modules\request
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb\node_modules\node-pre-gyp
  • [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket\node_modules\usb
    [email protected] node_modules\noble-uwp\node_modules\noble\node_modules\bluetooth-hci-socket -> node_modules\bluetooth-hci-socket
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@~0.1.4 (node_modules\noble-uwp\node_modules\noble\node_modules\xpc-connection):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    npm ERR! Windows_NT 10.0.15063
    npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "noble-uwp"
    npm ERR! node v6.10.2
    npm ERR! npm v3.10.10
    npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: build.cmd
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'build.cmd'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the noble-uwp package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! build.cmd
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs noble-uwp
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls noble-uwp
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! C:\Projects\Diagnoptics\npm-debug.log

Connection callback not triggered

Hello,
I recently started using noble-uwp in place of noble in my electron app. My Windows 10 machine is at update 1709 - Fall creators update. I am seeing two problems.

First of all I do not see the scan UUID being used as a filter. Currently, I removed all the filters and started looking for all the devices.

Second problem is more critical. When I trigger "connect" to my device, no callback is triggered. In the bindings.js file, I could trace the flow up to the call to fromBluetoothAddressAsync. Neither did the promise resolve, nor was it rejected.

I normally do keep the scan running periodically. I also tried to stop scan forever before triggering the connection request. This did not result in any change in behavior.

Is this a known issue with Windows/ noble-uwp or can this issue be seen due to any mistakes in the setup?

Thanks

issue on some windows 10 computers

On some windows 10 computers we are facing issues with noble-uwp
the computer is running windows 10 creators update but with a very simple npm project with only noble-uwp i get this:

PS D:\Users\aryballe\test> node .\node_modules\noble-uwp\test.js
D:\Users\aryballe\test\node_modules\noble-uwp\uwp\windows.foundation\lib\main.js:23
  throw e;
  ^

Error: Le module spécifié est introuvable.
\\?\D:\Users\aryballe\test\node_modules\noble-uwp\uwp\windows.foundation\binding\node-v57-win32-x64\binding.node
    at Object.Module._extensions..node (module.js:672:18)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (D:\Users\aryballe\test\node_modules\noble-uwp\uwp\windows.foundation\lib\main.js:19:20)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
PS D:\Users\aryballe\test>

The file is there just it won't load and i think it's related to something not beeing found.

screenshot

In case you see something obvious... Maybe it needs some redistributable? but i have never seen the need for it

Thanks

Listeners map not cleared when device is disconnected

Scenario:

  • Discover device x
  • Connect
  • Subscribe to characteristic c in service s
  • Connection drops
  • Discover device x again
  • Connect to device x again
  • Subscribe to characteristic c in service s again
  • Callback is never called

It seems noble-uwp caches the listener attached to a subscription and do not call the nodert library to subscribe to it again, but doesn't clear this cache once a device is disconnected.

ERror building

Hi,
I am trying your module.
I have win 10 Insider 10.0.15042.0 with the SDK.
Though it won't build:

..\_nodert_generated.cpp(64): error C2039: 'BluetoothAdapter': is not a member of 'Windows::Devices::Bluetooth' [C:\Users\mguillon\dev\aryballe\noble-uwp\uwp\windows.devices .bluetooth\build\binding.vcxproj]

I guess this is because it actually builds with VC14 and not VC17.
How did you get node-gyp to use VC17?

BTW i forked your repo and already refactored the gyp files to prevent duplicate and to make it easier to update the win SDK version. I can make a PR if you want

updateRssi always returns 0

Hi,

very simple case, I connect to the device and try to updateRssi, but the function always return non-errors but value 0.

Best, JH

Is Win 10 Falls Creator Update Supported?

Has anyone manage to get this to work under version 1709 of Windows 10?

I have run npm install --global --production windows-build-tools

Rebooted. Then npm install node-uwp

I get the following error snippet

..\OpaqueWrapper.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment variable

Is it because NodeRT doesn't yet support it?

"Device is not connectable" error randomly occurs when connecting

Hi,

I'm trying to connect to some bluetooth devices, however I randomly get the error Device is not connectable: 00:01:cc:94:16:0fNobleBindings.connect. The error points to

if (!deviceRecord.connectable) {
  throw new Error("Device is not connectable: " + deviceRecord.formattedAddress);
}

https://github.com/jasongin/noble-uwp/blob/master/lib/bindings.js#L99-L101

It doesn't always happen, and sometimes I can connect to up to 10 devices without error. However, when the issue occurs it is usually after the 3rd device being connected (but I have seen it happen on the one 2nd also). It is also usually after the 2nd attempt of connecting a bunch of devices, after a clean restart, so I'm wondering if it is some caching issue - maybe with advertisementType?

Doing some console.log'ing, it appears that the peripheral is in a connecting state internally, if that helps.

Any ideas?

Thanks!

doesn't work on 32 bit systems?

I am working on a 64 bit Windows, but I'm making an Electron app that is supposed to work on 32 bit systems as well. Therefore I'm making ia32 builds, that run fine on 32 and 64 systems.

Now I'm trying to make noble-uwp work here. It builds and runs with no errors. However the bluetooth state keeps being 'unsupported'. It looks like it's not discovering any bluetooth adapters.

It works fine in x64 Electron builds but not in ia32 builds. Anyone have any idea what the problem may be?

allowDuplicates parameter for startScanning() is not implemented

Hi, as I see in source code the option about allowDuplicates isn't interpreted in any way.
Is this because of lack of setting this in Windows 10 Bluetooth API (can't find anything about this in documentation) or I should configure this in other place?

I'm using this to detect disconnection of BT device, in noble this way works well but transfer to -uwp causes this kind of problems.

node-gyp rebuild noble-uwp error

Hi,

I'm trying to do electron-rebuild (as well as node-gyp rebuild which is the part of electron-rebuild) noble-uwp and after installing Windows SDK (matching version) and VS 2015 Express and also windows-build-tools i got this error

https://pastebin.com/mfYu34uQ

Any ideas?

I've never messed with any flags, neither in system settings nor in noble-uwp configuration files.

[BUILD] wrong bindings on npm rebuild with different platform or node api ver

There is an issue with the way you load and name bindings in the modules. You always use "binding.node".

Let me explain:

  • i build my app on my current node install version =>
  • noble-uwp build process finds that i can remote install using your releases in github
  • GREAT
  • I now rebuild my app for electron which uses a different version of node (we usually do this npm rebuild --runtime=electron --target=1.7.5 --arch=x64 --rebuild --update-binary)
  • node-pre-gyp checks if it needs to rebuild the noble-uwp modules bindings.
  • it sees that there are already ./lib/binding/binding.node so it thinks it's good and tells you it does not need to rebuild

But you end up with bindings built for the wrong version of node.
The issue is that in your modules package.json in the binary section, you dont use node_abi

here is a working example:
https://github.com/peterbraden/node-opencv/blob/master/package.json

discoverCharacteristics failing when a valid characteristic UUID is passed

Trying to run a script that works on noble on OS X/linux, that uses the discoverCharacteristics([uuids, ...], callback()) format. The uuids are formatted without -'s and using lower case for hex, while it looks like windows is returning uuids with -'s and upper case hex. Should probably clean up uuid format in the filteruuid function before comparison?

advertisment always empty

I now got it work and it is already discovering a lot of devices !
Now about the device that i am interested in. The advertisment data is always empty

{ localName: null,
  txPowerLevel: null,
  manufacturerData: null,
  serviceUuids: [],
  serviceData: [] }

I see this in my log before i get the 'discover' event:

Mon, 10 Apr 2017 14:28:13 GMT noble-uwp watcher received: 5c:7e:e3:ca:4e:09 
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     address type: public
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     advertisement type: connectableUndirected
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     data section: flags
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     data section: manufacturerSpecificData
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     flags: 6
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp watcher received: 5c:7e:e3:ca:4e:09 
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     address type: public
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     advertisement type: scanResponse
Mon, 10 Apr 2017 14:28:13 GMT noble-uwp     flags: undefined

Maybe advertisment is not already implemented?

Set up node-pre-gyp

It would be nice to publish pre-built binaries using node-pre-gyp so that most people don't have to build all the NodeRT C++ code when installing the noble-uwp package.

I don't have any experience with node-pre-gyp personally. And this project is a little more complex than most since there are several DLLs that need to be built/published. (Perhaps the solution would involve breaking them out into dependent packages.) If anyone can help with this, it would be appreciated. Otherwise I'll find time to look into it eventually.

notifications not working (apparently Windows issue)

Notifications didn't seem to work on my and my colleague's computer using noble-uwp in an x64 Electron build. Scanning and connecting works though.

Turns out there apparently is an issue in Windows that is causing this. Regular UWP apps work fine but the problem is specific with 'external' use like dlls.

Supposedly there is a Windows Update that fixes this, but probably only people in the fast ring have this (which I'm not).

There is a topic that addresses this issue:

https://social.msdn.microsoft.com/Forums/en-US/58da3fdb-a0e1-4161-8af3-778b6839f4e1/bluetooth-bluetoothledevicefromidasync-does-not-complete-on-10015063?forum=wdk#ad57e5ff-0699-4868-ad04-b6fdf19859de

Fortunately the regedit fix that is proposed here does work for me and my colleague. However this is not really a realistic solution for my customers of course. So I'm wondering if it's possible that one of the solutions mentioned in the link can be integrated in node-uwp somehow?

no disconnect on device hard shutdown

I have a device running using bleno on Pi/Edison
I use noble-uwp on windows and noble on Mac/Linux.
I recently found an issue with noble-uwp.

If i shut down my bleno app genlty, which calls disconnect, the noble-uwp client gets the disconnect event. And i see nothing in the debug console (with DEBUG=*)
Now if i hard shutdown my bleno device, the noble-uwp client still think it's connected.
Noble on mac/linux does get the event.

I think it should be very easy to reproduce with a bleno/noble-uwp setup

I am not where this might come from. There is also a heartbeat on windows? I mean does BLE on Windows regularly "ping" the connected devices?
If so it should see that the device is not there anymore. Maybe it s a timeout duration issue
I will investigate that but as you know windows bluetooth a lot better than i do, i think you could understand it better.

Does not support indications

When subscribing to a characteristic, noble-uwp writes the configuration in the descriptor for notifications, whether the characteristic supports it or not.
This causes features like setting a nordic chip into DFU mode without button.
Using the descriptors, it should be possible to choose notify or indicate automatically in the bindings

noble-uwp.state returns undefined

Before using noble i'm checking if noble.state is one of the following state: "resetting", "poweredOff", "poweredOn" which is fine with noble.

With noble-uwp, noble.state returns undefined.

It's not very important but as the documentation says it can be used as the same way as noble, it may be an issue.

Noble fallback is unsupported because of os dependency

https://github.com/jasongin/noble-uwp/blob/master/package.json#L10

Package.json is setup to make sure the platform is windows, however the readme states:

On non-Windows platforms, the benavior is unchanged from noble, while on Windows the UWP bindings are used instead of noble's Bluetooth HCI bindings.

Would you be open to removing the os line? We have multiplatform support in our app and we want to avoid having to check the os and switch between noble and noble-uwp

Typescript import doesn't work with noble-uwp

First, I really appreciate that I no longer have to replace WinUSB and BTHUSB with noble-uwp.

I could use typescript syntax including import clause, testing "noble" by installing types/noble.

But, I couldn't do the same with noble-uwp.

To be honest, I am not that good at nodejs.

Would there be a way to solve this?

And I wonder whether on Windows OS as client side, this(kind of electron using noble) can mimic android apps having on/off toggle buttons to write 0 or 1 to things like arduino BLE LED diode to turn on and off the light.

I mean, should the client have to install visual studio, python and so on to install BLE app?

Thank you for reading.

Where can I find build.cmd

I use this library in my electron app. And from this issue( #17 ), I try to run build.cmd.
But I cannot find that file.
Where can I find this command?

error building for electron 1.8.2

I just tried to build for the very latest electron 1.8.2
i fails with a lot of errors like

noble-uwp\uwp\windows.foundation\node-async.h(286): error C2665: 'Nan::MakeCallback': none of
 the 3 overloads could convert all the argument types (compiling source file ..\_nodert_generated.cpp) [noble-uwp\uwp\windows.foundation\build\binding.vcxproj]

I think the sources need to be regenerated.
I cant remember how you do that.
Can you guide me?

Thanks

Peripheral disconnects after 30 seconds

Hello!

I am currently using noble-uwp as a replacement for noble on Windows 10 Fall Creators update, and I must say I am impressed how decent it works compared to the bluetooth-hci-socket implementation. Great work!

Currently we are investigating an issue with some of our custom-built BLE devices, where after almost exactly 30 seconds the device is disconnected from the PC. This happens on every connect, but weirdly only affects some devices. We have tested those devices with Noble on MacOS High Sierra and have encountered no issues whatsoever. Our device debug logs indicate that the device is disconnected by the PC, suggesting that the issue is either related to noble-uwp or the Windows Bluetooth API.

I have included both the logs from both our Electron app and the device. When trying to write to a characteristic, Noble will throw an error (failed to write characteristic for device e9b98f92883e: Error: The object has been closed.), if the write happens more than 30 seconds after connecting.

Device Logs

 0> Hello World! Let's go 
 0> ACC gevonden!
 0> DEBUG: Orientatie veranderd, update BLE (4) 
 0> Orientatie verandering doorgevoerd 
 0> DEBUG: BLE connection started 
 0> DEBUG: Orientation reset 
 0> DEBUG: Orientatie veranderd na reset, update BLE (4) 
 0> Orientatie verandering doorgevoerd 
 0> Bluetooth write!
 0> 1 
 0> Bluetooth FLASH write!
 0> Bluetooth write!
 0> 2 
 0> Bluetooth write!
 0> 2 
 0> DEBUG: BLE connection disconnected 
 0> Reason disconnect: 13

Console Log

14:53:28.097 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp     flags: undefined +0ms
14:53:28.097 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp     service UUID: {8BB30001-7113-2B9C-C649-C9AD5A461F3B} +1ms
14:53:28.160 C:\Users\Lei\Documents\Github\iMO-Connect\js\mdm.js:81 Connecting to device e9b98f92883e, attempt #1
14:53:28.165 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp stopScanning() +67ms
14:53:28.165 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp keepAlive(false) => 0 +1ms
14:53:28.166 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp connect(e9b98f92883e) +0ms
14:53:28.170 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp watcher stopped +4ms
14:53:28.196 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp got bluetooth device: iMO MDM (5) +27ms
14:53:28.198 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp discoverServices(e9b98f92883e, 8bb3152371132b9cc649c9ad5a461f3b) +1ms
14:53:28.886 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp e9b98f92883e services: Array(1) +688ms
14:53:28.889 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp discoverCharacteristics(e9b98f92883e, 8bb3152371132b9cc649c9ad5a461f3b, 8bb3accc71132b9cc649c9ad5a461f3b,8bb3152571132b9cc649c9ad5a461f3b,8bb3a3e171132b9cc649c9ad5a461f3b,8bb3c01071132b9cc649c9ad5a461f3b +3ms
14:53:29.568 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp e9b98f92883e 8bb3152371132b9cc649c9ad5a461f3b characteristics: Array(4) +679ms
14:53:29.570 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp write(e9b98f92883e, 8bb3152371132b9cc649c9ad5a461f3b, 8bb3152571132b9cc649c9ad5a461f3b, (data), false) +2ms
14:53:29.804 C:\Users\Lei\Documents\Github\iMO-Connect\js\mdm.js:159 Flash was sent for device e9b98f92883e
14:53:29.805 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp notify(e9b98f92883e, 8bb3152371132b9cc649c9ad5a461f3b, 8bb3accc71132b9cc649c9ad5a461f3b, true) +235ms
14:53:30.283 C:\Users\Lei\Documents\Github\iMO-Connect\node_modules\noble\node_modules\noble-uwp\node_modules\de…:123 noble-uwp keepAlive(true) => 1 +479ms
14:53:30.284 C:\Users\Lei\Documents\Github\iMO-Connect\js\mdm.js:172 Device e9b98f92883e was successfully connected

UWP Loopback IPC

[Question] - I am new to this technology stack. Does noble-uwp bypass the issue of UWP apps not allowing loopback IPC, either with Electron or without? My intention is to implement a noble-uwp server app and control BLE devices through a client on the same machine, with the client implemented as a JS React app (maybe with Electron) or through a Java client.

Error in build from source

I tried to rebuild modules by npm run install --build-from-source but failed with next log.


> [email protected] install C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp
> install.cmd

Installing NodeRT UWP adapter for Windows.Foundation
このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してく ださい。
  _nodert_generated.cpp
  NodeRtUtils.cpp
  OpaqueWrapper.cpp
  CollectionsConverterUtils.cpp
..\_nodert_generated.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly sear
ch path using /AI or by setting the LIBPATH environment variable [C:\Users\itome\Projects\MaBeeeElectron\node_modules\n
oble-uwp\uwp\windows.foundation\build\binding.vcxproj]
..\NodeRtUtils.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search pat
h using /AI or by setting the LIBPATH environment variable [C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-u
wp\uwp\windows.foundation\build\binding.vcxproj]
..\CollectionsConverterUtils.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assem
bly search path using /AI or by setting the LIBPATH environment variable [C:\Users\itome\Projects\MaBeeeElectron\node_m
odules\noble-uwp\uwp\windows.foundation\build\binding.vcxproj]
..\OpaqueWrapper.cpp : fatal error C1107: could not find assembly 'Windows.winmd': please specify the assembly search p
ath using /AI or by setting the LIBPATH environment variable [C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble
-uwp\uwp\windows.foundation\build\binding.vcxproj]
  win_delay_load_hook.cc
C:\Users\itome\Projects\MaBeeeElectron\node_modules\node-gyp\src\win_delay_load_hook.cc : fatal error C1107: could not
find assembly 'Windows.winmd': please specify the assembly search path using /AI or by setting the LIBPATH environment
variable [C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation\build\binding.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\itome\Projects\MaBeeeElectron\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\itome\\Projects\\MaBeeeElectron\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--msvs_version=2015" "--module=C:\\Users\\itome\\Projects\\MaBeeeElectron\\node_modules\\noble-uwp\\uwp\\windows.foundation\\binding\\node-v48-win32-x64\\binding.node" "--module_name=binding" "--module_path=C:\\Users\\itome\\Projects\\MaBeeeElectron\\node_modules\\noble-uwp\\uwp\\windows.foundation\\binding\\node-v48-win32-x64"
gyp ERR! cwd C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation
gyp ERR! node -v v6.11.2
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\itome\Projects\MaBeeeElectron\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --msvs_version=2015 --module=C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation\binding\node-v48-win32-x64\binding.node --module_name=binding --module_path=C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation\binding\node-v48-win32-x64' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:891:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
node-pre-gyp ERR! System Windows_NT 10.0.15063
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\itome\\Projects\\MaBeeeElectron\\node_modules\\noble-uwp\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build" "--msvs_version=2015"
node-pre-gyp ERR! cwd C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation
node-pre-gyp ERR! node -v v6.11.2
node-pre-gyp ERR! node-pre-gyp -v v0.6.36
node-pre-gyp ERR! not ok
Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\itome\Projects\MaBeeeElectron\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --msvs_version=2015 --module=C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation\binding\node-v48-win32-x64\binding.node --module_name=binding --module_path=C:\Users\itome\Projects\MaBeeeElectron\node_modules\noble-uwp\uwp\windows.foundation\binding\node-v48-win32-x64' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `install.cmd`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\itome\AppData\Roaming\npm-cache\_logs\2017-08-20T03_16_02_323Z-debug.log

Any ideas about this?

How to use with bleno

Hi @jasongin !
This module is very useful because I no longer have to change a ble driver on Windows10.

I want to develop a software including noble + bleno.
But maybe noble-uwp doesn't work with bleno because each module require different driver.

Is there a way to use this with bleno ?
or do you have a plan to develop 'bleno-uwp' ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.