Web Bluetooth WeDo 2.0 support
This commit is contained in:
parent
e7b5e977d9
commit
edf5606814
@ -1376,7 +1376,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1502,7 +1502,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1674,7 +1674,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3499,7 +3499,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3719,7 +3719,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3895,7 +3895,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4072,7 +4072,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4280,7 +4280,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4969,7 +4969,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -1376,7 +1376,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1502,7 +1502,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1674,7 +1674,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3162,7 +3162,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3382,7 +3382,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3558,7 +3558,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3735,7 +3735,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -1096,7 +1096,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1208,7 +1208,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1366,7 +1366,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1525,7 +1525,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1731,7 +1731,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1893,7 +1893,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2056,7 +2056,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2250,7 +2250,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2388,7 +2388,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -1173,7 +1173,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1294,7 +1294,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1461,7 +1461,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2275,7 +2275,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2490,7 +2490,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2661,7 +2661,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2833,7 +2833,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3036,7 +3036,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3693,7 +3693,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -1376,7 +1376,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1502,7 +1502,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1674,7 +1674,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3242,7 +3242,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3462,7 +3462,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3638,7 +3638,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3815,7 +3815,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4023,7 +4023,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4712,7 +4712,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -1214,7 +1214,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1340,7 +1340,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1512,7 +1512,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2359,7 +2359,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2579,7 +2579,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2755,7 +2755,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2932,7 +2932,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -148,8 +148,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-45">line 45</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-45">line 45</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -315,8 +315,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-91">line 91</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-91">line 91</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -426,8 +426,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-83">line 83</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-83">line 83</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -584,8 +584,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-100">line 100</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-100">line 100</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -692,8 +692,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-56">line 56</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-56">line 56</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -780,8 +780,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-71">line 71</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-71">line 71</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -938,8 +938,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-148">line 148</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-148">line 148</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -153,7 +153,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-15">line 15</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-16">line 16</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1092,7 +1092,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-195">line 195</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-221">line 221</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1339,7 +1339,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-147">line 147</a>
|
||||
<a href="hub.js.html#sunlight-1-line-103">line 103</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1460,7 +1460,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-211">line 211</a>
|
||||
<a href="hub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1627,7 +1627,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-219">line 219</a>
|
||||
<a href="hub.js.html#sunlight-1-line-175">line 175</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1809,7 +1809,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-204">line 204</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-230">line 230</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2043,7 +2043,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-175">line 175</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-201">line 201</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2205,7 +2205,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-94">line 94</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-120">line 120</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2415,7 +2415,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-124">line 124</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-150">line 150</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2653,7 +2653,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-220">line 220</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-246">line 246</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2891,7 +2891,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-141">line 141</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-167">line 167</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3053,7 +3053,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-75">line 75</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-101">line 101</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3165,7 +3165,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-112">line 112</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-138">line 138</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3337,7 +3337,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-187">line 187</a>
|
||||
<a href="hub.js.html#sunlight-1-line-143">line 143</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3552,7 +3552,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-155">line 155</a>
|
||||
<a href="hub.js.html#sunlight-1-line-111">line 111</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3723,7 +3723,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-173">line 173</a>
|
||||
<a href="hub.js.html#sunlight-1-line-129">line 129</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3895,7 +3895,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-200">line 200</a>
|
||||
<a href="hub.js.html#sunlight-1-line-156">line 156</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4098,7 +4098,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4260,7 +4260,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-301">line 301</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-326">line 326</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4422,7 +4422,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-346">line 346</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-371">line 371</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4569,7 +4569,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4731,7 +4731,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-335">line 335</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-360">line 360</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4893,7 +4893,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-376">line 376</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-401">line 401</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5079,7 +5079,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-364">line 364</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-389">line 389</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -115,8 +115,8 @@ class BoostMoveHub extends lpf2hub_1.LPF2Hub {
|
||||
peripheral.advertisement.serviceUuids &&
|
||||
peripheral.advertisement.serviceUuids.indexOf(Consts.BLEService.LPF2_HUB.replace(/-/g, "")) >= 0 && peripheral.advertisement.manufacturerData[3] === Consts.BLEManufacturerData.BOOST_MOVE_HUB_ID);
|
||||
}
|
||||
constructor(peripheral, autoSubscribe = true) {
|
||||
super(peripheral, autoSubscribe);
|
||||
constructor(device, autoSubscribe = true) {
|
||||
super(device, autoSubscribe);
|
||||
this.type = Consts.HubType.BOOST_MOVE_HUB;
|
||||
this._ports = {
|
||||
"A": new port_1.Port("A", 55),
|
||||
@ -306,7 +306,7 @@ class BoostMoveHub extends lpf2hub_1.LPF2Hub {
|
||||
}
|
||||
}
|
||||
exports.BoostMoveHub = BoostMoveHub;
|
||||
</pre>
|
||||
//# sourceMappingURL=boostmovehub.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
@ -335,7 +335,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -1024,7 +1024,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2065,7 +2065,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2203,7 +2203,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -2374,7 +2374,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3031,7 +3031,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -3852,8 +3852,8 @@
|
||||
<dd class="tag-source">
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="poweredup.js.html">poweredup.js</a>,
|
||||
<a href="poweredup.js.html#sunlight-1-line-148">line 148</a>
|
||||
<a href="poweredup-node.js.html">poweredup-node.js</a>,
|
||||
<a href="poweredup-node.js.html#sunlight-1-line-148">line 148</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4029,7 +4029,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -4718,7 +4718,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5621,7 +5621,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-256">line 256</a>
|
||||
<a href="hub.js.html#sunlight-1-line-212">line 212</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5783,7 +5783,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-301">line 301</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-326">line 326</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -5945,7 +5945,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-346">line 346</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-371">line 371</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -6092,7 +6092,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="hub.js.html">hub.js</a>,
|
||||
<a href="hub.js.html#sunlight-1-line-268">line 268</a>
|
||||
<a href="hub.js.html#sunlight-1-line-224">line 224</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -6254,7 +6254,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-335">line 335</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-360">line 360</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -6416,7 +6416,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-376">line 376</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-401">line 401</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
@ -6602,7 +6602,7 @@
|
||||
<ul class="dummy">
|
||||
<li>
|
||||
<a href="wedo2smarthub.js.html">wedo2smarthub.js</a>,
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-364">line 364</a>
|
||||
<a href="wedo2smarthub.js.html#sunlight-1-line-389">line 389</a>
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
|
@ -237,7 +237,7 @@ var BLECharacteristic;
|
||||
BLECharacteristic["WEDO2_NAME_ID"] = "00001524-1212-efde-1523-785feabcd123";
|
||||
BLECharacteristic["LPF2_ALL"] = "00001624-1212-efde-1623-785feabcd123";
|
||||
})(BLECharacteristic = exports.BLECharacteristic || (exports.BLECharacteristic = {}));
|
||||
</pre>
|
||||
//# sourceMappingURL=consts.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
@ -139,8 +139,8 @@ class DuploTrainBase extends lpf2hub_1.LPF2Hub {
|
||||
peripheral.advertisement.serviceUuids &&
|
||||
peripheral.advertisement.serviceUuids.indexOf(Consts.BLEService.LPF2_HUB.replace(/-/g, "")) >= 0 && peripheral.advertisement.manufacturerData[3] === Consts.BLEManufacturerData.DUPLO_TRAIN_HUB_ID);
|
||||
}
|
||||
constructor(peripheral, autoSubscribe = true) {
|
||||
super(peripheral, autoSubscribe);
|
||||
constructor(device, autoSubscribe = true) {
|
||||
super(device, autoSubscribe);
|
||||
this.type = Consts.HubType.DUPLO_TRAIN_HUB;
|
||||
this._ports = {
|
||||
"MOTOR": new port_1.Port("MOTOR", 0),
|
||||
@ -255,7 +255,7 @@ class DuploTrainBase extends lpf2hub_1.LPF2Hub {
|
||||
}
|
||||
}
|
||||
exports.DuploTrainBase = DuploTrainBase;
|
||||
</pre>
|
||||
//# sourceMappingURL=duplotrainbase.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
@ -175,7 +175,6 @@ class Hub extends events_1.EventEmitter {
|
||||
*/
|
||||
connect() {
|
||||
return new Promise(async (connectResolve, connectReject) => {
|
||||
const self = this;
|
||||
if (this._isConnecting) {
|
||||
return connectReject("Already connecting");
|
||||
}
|
||||
@ -185,49 +184,6 @@ class Hub extends events_1.EventEmitter {
|
||||
this._isConnecting = true;
|
||||
await this._bleDevice.connect();
|
||||
return connectResolve();
|
||||
// this._peripheral.connect((err: string) => {
|
||||
// this._rssi = this._peripheral.rssi;
|
||||
// const rssiUpdateInterval = setInterval(() => {
|
||||
// this._peripheral.updateRssi((err: string, rssi: number) => {
|
||||
// if (!err) {
|
||||
// if (this._rssi !== rssi) {
|
||||
// this._rssi = rssi;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }, 2000);
|
||||
// self._peripheral.on("disconnect", () => {
|
||||
// clearInterval(rssiUpdateInterval);
|
||||
// this._isConnecting = false;
|
||||
// this._isConnected = false;
|
||||
// this.emit("disconnect");
|
||||
// });
|
||||
// self._peripheral.discoverServices([], (err: string, services: Service[]) => {
|
||||
// if (err) {
|
||||
// this.emit("error", err);
|
||||
// return;
|
||||
// }
|
||||
// debug("Service/characteristic discovery started");
|
||||
// const servicePromises: Array<Promise<null>> = [];
|
||||
// services.forEach((service) => {
|
||||
// servicePromises.push(new Promise((resolve, reject) => {
|
||||
// service.discoverCharacteristics([], (err, characteristics) => {
|
||||
// characteristics.forEach((characteristic) => {
|
||||
// this._characteristics[characteristic.uuid] = characteristic;
|
||||
// });
|
||||
// return resolve();
|
||||
// });
|
||||
// }));
|
||||
// });
|
||||
// Promise.all(servicePromises).then(() => {
|
||||
// debug("Service/characteristic discovery finished");
|
||||
// this._isConnecting = false;
|
||||
// this._isConnected = true;
|
||||
// this.emit("connect");
|
||||
// return connectResolve();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
});
|
||||
}
|
||||
/**
|
||||
@ -444,7 +400,7 @@ class Hub extends events_1.EventEmitter {
|
||||
}
|
||||
}
|
||||
exports.Hub = Hub;
|
||||
</pre>
|
||||
//# sourceMappingURL=hub.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
@ -460,7 +460,7 @@ class LPF2Hub extends hub_1.Hub {
|
||||
}
|
||||
}
|
||||
exports.LPF2Hub = LPF2Hub;
|
||||
</pre>
|
||||
//# sourceMappingURL=lpf2hub.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
380
docs/poweredup-node.js.html
Normal file
380
docs/poweredup-node.js.html
Normal file
@ -0,0 +1,380 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>DocStrap Source: poweredup-node.js</title>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
|
||||
|
||||
<link type="text/css" rel="stylesheet" href="styles/site.simplex.css">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-default navbar-fixed-top navbar-inverse">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-brand" href="index.html">DocStrap</a>
|
||||
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse" id="topNavigation">
|
||||
<ul class="nav navbar-nav">
|
||||
|
||||
<li class="dropdown">
|
||||
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
|
||||
<ul class="dropdown-menu ">
|
||||
<li><a href="BoostMoveHub.html">BoostMoveHub</a></li><li><a href="DuploTrainBase.html">DuploTrainBase</a></li><li><a href="Hub.html">Hub</a></li><li><a href="LPF2Hub.html">LPF2Hub</a></li><li><a href="PoweredUP.html">PoweredUP</a></li><li><a href="PUPHub.html">PUPHub</a></li><li><a href="PUPRemote.html">PUPRemote</a></li><li><a href="WeDo2SmartHub.html">WeDo2SmartHub</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
<a href="events.list.html" class="dropdown-toggle" data-toggle="dropdown">Events<b class="caret"></b></a>
|
||||
<ul class="dropdown-menu ">
|
||||
<li><a href="BoostMoveHub.html#event:attach">BoostMoveHub#event:attach</a></li><li><a href="BoostMoveHub.html#event:button">BoostMoveHub#event:button</a></li><li><a href="BoostMoveHub.html#event:color">BoostMoveHub#event:color</a></li><li><a href="BoostMoveHub.html#event:colorAndDistance">BoostMoveHub#event:colorAndDistance</a></li><li><a href="BoostMoveHub.html#event:detach">BoostMoveHub#event:detach</a></li><li><a href="BoostMoveHub.html#event:distance">BoostMoveHub#event:distance</a></li><li><a href="BoostMoveHub.html#event:rotate">BoostMoveHub#event:rotate</a></li><li><a href="BoostMoveHub.html#event:tilt">BoostMoveHub#event:tilt</a></li><li><a href="DuploTrainBase.html#event:color">DuploTrainBase#event:color</a></li><li><a href="DuploTrainBase.html#event:speed">DuploTrainBase#event:speed</a></li><li><a href="Hub.html#event:attach">Hub#event:attach</a></li><li><a href="Hub.html#event:detach">Hub#event:detach</a></li><li><a href="LPF2Hub.html#event:attach">LPF2Hub#event:attach</a></li><li><a href="LPF2Hub.html#event:button">LPF2Hub#event:button</a></li><li><a href="LPF2Hub.html#event:color">LPF2Hub#event:color</a></li><li><a href="LPF2Hub.html#event:colorAndDistance">LPF2Hub#event:colorAndDistance</a></li><li><a href="LPF2Hub.html#event:detach">LPF2Hub#event:detach</a></li><li><a href="LPF2Hub.html#event:distance">LPF2Hub#event:distance</a></li><li><a href="LPF2Hub.html#event:rotate">LPF2Hub#event:rotate</a></li><li><a href="LPF2Hub.html#event:speed">LPF2Hub#event:speed</a></li><li><a href="LPF2Hub.html#event:tilt">LPF2Hub#event:tilt</a></li><li><a href="PoweredUP.html#event:discover">PoweredUP#event:discover</a></li><li><a href="PUPHub.html#event:attach">PUPHub#event:attach</a></li><li><a href="PUPHub.html#event:button">PUPHub#event:button</a></li><li><a href="PUPHub.html#event:color">PUPHub#event:color</a></li><li><a href="PUPHub.html#event:colorAndDistance">PUPHub#event:colorAndDistance</a></li><li><a href="PUPHub.html#event:detach">PUPHub#event:detach</a></li><li><a href="PUPHub.html#event:distance">PUPHub#event:distance</a></li><li><a href="PUPHub.html#event:tilt">PUPHub#event:tilt</a></li><li><a href="PUPRemote.html#event:button">PUPRemote#event:button</a></li><li><a href="PUPRemote.html#event:colorAndDistance">PUPRemote#event:colorAndDistance</a></li><li><a href="WeDo2SmartHub.html#event:attach">WeDo2SmartHub#event:attach</a></li><li><a href="WeDo2SmartHub.html#event:button">WeDo2SmartHub#event:button</a></li><li><a href="WeDo2SmartHub.html#event:color">WeDo2SmartHub#event:color</a></li><li><a href="WeDo2SmartHub.html#event:detach">WeDo2SmartHub#event:detach</a></li><li><a href="WeDo2SmartHub.html#event:distance">WeDo2SmartHub#event:distance</a></li><li><a href="WeDo2SmartHub.html#event:rotate">WeDo2SmartHub#event:rotate</a></li><li><a href="WeDo2SmartHub.html#event:tilt">WeDo2SmartHub#event:tilt</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="dropdown">
|
||||
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
|
||||
<ul class="dropdown-menu ">
|
||||
<li><a href="global.html">Global</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<div class="col-sm-3 col-md-3">
|
||||
<form class="navbar-form" role="search">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="container" id="toc-content">
|
||||
<div class="row">
|
||||
|
||||
|
||||
<div class="col-md-12">
|
||||
|
||||
<div id="main">
|
||||
|
||||
|
||||
<h1 class="page-title">Source: poweredup-node.js</h1>
|
||||
|
||||
<section>
|
||||
<article>
|
||||
<pre
|
||||
class="sunlight-highlight-javascript linenums">"use strict";
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result["default"] = mod;
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const bledevice_1 = require("./bledevice");
|
||||
const boostmovehub_1 = require("./boostmovehub");
|
||||
const duplotrainbase_1 = require("./duplotrainbase");
|
||||
const puphub_1 = require("./puphub");
|
||||
const pupremote_1 = require("./pupremote");
|
||||
const wedo2smarthub_1 = require("./wedo2smarthub");
|
||||
const utils_1 = require("./utils");
|
||||
const Consts = __importStar(require("./consts"));
|
||||
const events_1 = require("events");
|
||||
const Debug = require("debug");
|
||||
const debug = Debug("poweredup");
|
||||
const noble = require("noble-mac");
|
||||
let ready = false;
|
||||
let wantScan = false;
|
||||
let discoveryEventAttached = false;
|
||||
const startScanning = () => {
|
||||
if (utils_1.isBrowserContext) {
|
||||
noble.startScanning([Consts.BLEService.WEDO2_SMART_HUB, Consts.BLEService.LPF2_HUB]);
|
||||
}
|
||||
else {
|
||||
noble.startScanning();
|
||||
}
|
||||
};
|
||||
noble.on("stateChange", (state) => {
|
||||
ready = (state === "poweredOn");
|
||||
if (ready) {
|
||||
if (wantScan) {
|
||||
debug("Scanning started");
|
||||
startScanning();
|
||||
}
|
||||
}
|
||||
else {
|
||||
noble.stopScanning();
|
||||
}
|
||||
});
|
||||
/**
|
||||
* @class PoweredUP
|
||||
* @extends EventEmitter
|
||||
*/
|
||||
class PoweredUP extends events_1.EventEmitter {
|
||||
constructor() {
|
||||
super();
|
||||
this.autoSubscribe = true;
|
||||
this._connectedHubs = {};
|
||||
this._discoveryEventHandler = this._discoveryEventHandler.bind(this);
|
||||
}
|
||||
/**
|
||||
* Begin scanning for Powered UP Hub devices.
|
||||
* @method PoweredUP#scan
|
||||
*/
|
||||
scan() {
|
||||
wantScan = true;
|
||||
if (!discoveryEventAttached) {
|
||||
noble.on("discover", this._discoveryEventHandler);
|
||||
discoveryEventAttached = true;
|
||||
}
|
||||
if (ready) {
|
||||
debug("Scanning started");
|
||||
startScanning();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Stop scanning for Powered UP Hub devices.
|
||||
* @method PoweredUP#stop
|
||||
*/
|
||||
stop() {
|
||||
wantScan = false;
|
||||
if (discoveryEventAttached) {
|
||||
noble.removeListener("discover", this._discoveryEventHandler);
|
||||
discoveryEventAttached = false;
|
||||
}
|
||||
noble.stopScanning();
|
||||
}
|
||||
/**
|
||||
* Retrieve a list of Powered UP Hubs.
|
||||
* @method PoweredUP#getConnectedHubs
|
||||
* @returns {Hub[]}
|
||||
*/
|
||||
getConnectedHubs() {
|
||||
return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]);
|
||||
}
|
||||
/**
|
||||
* Retrieve a Powered UP Hub by UUID.
|
||||
* @method PoweredUP#getConnectedHubByUUID
|
||||
* @param {string} uuid
|
||||
* @returns {Hub | null}
|
||||
*/
|
||||
getConnectedHubByUUID(uuid) {
|
||||
return this._connectedHubs[uuid];
|
||||
}
|
||||
/**
|
||||
* Retrieve a list of Powered UP Hub by name.
|
||||
* @method PoweredUP#getConnectedHubsByName
|
||||
* @param {string} name
|
||||
* @returns {Hub[]}
|
||||
*/
|
||||
getConnectedHubsByName(name) {
|
||||
return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.name === name);
|
||||
}
|
||||
async _discoveryEventHandler(peripheral) {
|
||||
const device = new bledevice_1.BLEDevice(peripheral);
|
||||
let hub;
|
||||
if (await wedo2smarthub_1.WeDo2SmartHub.IsWeDo2SmartHub(peripheral)) {
|
||||
hub = new wedo2smarthub_1.WeDo2SmartHub(device, this.autoSubscribe);
|
||||
}
|
||||
else if (await boostmovehub_1.BoostMoveHub.IsBoostMoveHub(peripheral)) {
|
||||
hub = new boostmovehub_1.BoostMoveHub(device, this.autoSubscribe);
|
||||
}
|
||||
else if (await puphub_1.PUPHub.IsPUPHub(peripheral)) {
|
||||
hub = new puphub_1.PUPHub(device, this.autoSubscribe);
|
||||
}
|
||||
else if (await pupremote_1.PUPRemote.IsPUPRemote(peripheral)) {
|
||||
hub = new pupremote_1.PUPRemote(device, this.autoSubscribe);
|
||||
}
|
||||
else if (await duplotrainbase_1.DuploTrainBase.IsDuploTrainBase(peripheral)) {
|
||||
hub = new duplotrainbase_1.DuploTrainBase(device, this.autoSubscribe);
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
peripheral.removeAllListeners();
|
||||
// noble.stopScanning();
|
||||
// if (!isBrowserContext) {
|
||||
// startScanning();
|
||||
// }
|
||||
device.on("discoverComplete", () => {
|
||||
hub.on("connect", () => {
|
||||
debug(`Hub ${hub.uuid} connected`);
|
||||
this._connectedHubs[hub.uuid] = hub;
|
||||
});
|
||||
hub.on("disconnect", () => {
|
||||
debug(`Hub ${hub.uuid} disconnected`);
|
||||
delete this._connectedHubs[hub.uuid];
|
||||
if (wantScan) {
|
||||
startScanning();
|
||||
}
|
||||
});
|
||||
debug(`Hub ${hub.uuid} discovered`);
|
||||
/**
|
||||
* Emits when a Powered UP Hub device is found.
|
||||
* @event PoweredUP#discover
|
||||
* @param {WeDo2SmartHub | BoostMoveHub | PUPHub | PUPRemote | DuploTrainBase} hub
|
||||
*/
|
||||
this.emit("discover", hub);
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.PoweredUP = PoweredUP;
|
||||
//# sourceMappingURL=poweredup-node.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal fade" id="searchResults">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title">Search results</h4>
|
||||
</div>
|
||||
<div class="modal-body"></div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div>
|
||||
|
||||
|
||||
<footer>
|
||||
|
||||
|
||||
<span class="copyright">
|
||||
node-poweredup by Nathan Kellenicki licensed under the MIT license.
|
||||
</span>
|
||||
|
||||
<span class="jsdoc-message">
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a>
|
||||
|
||||
on Wed Feb 6th 2019
|
||||
|
||||
using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
|
||||
</span>
|
||||
</footer>
|
||||
|
||||
<script src="scripts/docstrap.lib.js"></script>
|
||||
<script src="scripts/toc.js"></script>
|
||||
|
||||
<script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
$( function () {
|
||||
$( "[id*='$']" ).each( function () {
|
||||
var $this = $( this );
|
||||
|
||||
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
|
||||
} );
|
||||
|
||||
$( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
|
||||
var $this = $( this );
|
||||
|
||||
var example = $this.find( "code" );
|
||||
exampleText = example.html();
|
||||
var lang = /{@lang (.*?)}/.exec( exampleText );
|
||||
if ( lang && lang[1] ) {
|
||||
exampleText = exampleText.replace( lang[0], "" );
|
||||
example.html( exampleText );
|
||||
lang = lang[1];
|
||||
} else {
|
||||
var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
|
||||
lang = langClassMatch ? langClassMatch[1] : "javascript";
|
||||
}
|
||||
|
||||
if ( lang ) {
|
||||
|
||||
$this
|
||||
.addClass( "sunlight-highlight-" + lang )
|
||||
.addClass( "linenums" )
|
||||
.html( example.html() );
|
||||
|
||||
}
|
||||
} );
|
||||
|
||||
Sunlight.highlightAll( {
|
||||
lineNumbers : true,
|
||||
showMenu : true,
|
||||
enableDoclinks : true
|
||||
} );
|
||||
|
||||
$.catchAnchorLinks( {
|
||||
navbarOffset: 10
|
||||
} );
|
||||
$( "#toc" ).toc( {
|
||||
anchorName : function ( i, heading, prefix ) {
|
||||
return $( heading ).attr( "id" ) || ( prefix + i );
|
||||
},
|
||||
selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
|
||||
showAndHide : false,
|
||||
smoothScrolling: true
|
||||
} );
|
||||
|
||||
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
|
||||
$( '.dropdown-toggle' ).dropdown();
|
||||
|
||||
$( "table" ).each( function () {
|
||||
var $this = $( this );
|
||||
$this.addClass('table');
|
||||
} );
|
||||
|
||||
} );
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!--Navigation and Symbol Display-->
|
||||
|
||||
|
||||
<!--Google Analytics-->
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
SearcherDisplay.init();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
@ -119,8 +119,8 @@ class PUPHub extends lpf2hub_1.LPF2Hub {
|
||||
peripheral.advertisement.serviceUuids &&
|
||||
peripheral.advertisement.serviceUuids.indexOf(Consts.BLEService.LPF2_HUB.replace(/-/g, "")) >= 0 && peripheral.advertisement.manufacturerData[3] === Consts.BLEManufacturerData.POWERED_UP_HUB_ID);
|
||||
}
|
||||
constructor(peripheral, autoSubscribe = true) {
|
||||
super(peripheral, autoSubscribe);
|
||||
constructor(device, autoSubscribe = true) {
|
||||
super(device, autoSubscribe);
|
||||
this.type = Consts.HubType.POWERED_UP_HUB;
|
||||
this._ports = {
|
||||
"A": new port_1.Port("A", 0),
|
||||
@ -263,7 +263,7 @@ class PUPHub extends lpf2hub_1.LPF2Hub {
|
||||
}
|
||||
}
|
||||
exports.PUPHub = PUPHub;
|
||||
</pre>
|
||||
//# sourceMappingURL=puphub.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
@ -139,8 +139,8 @@ class PUPRemote extends lpf2hub_1.LPF2Hub {
|
||||
peripheral.advertisement.serviceUuids &&
|
||||
peripheral.advertisement.serviceUuids.indexOf(Consts.BLEService.LPF2_HUB.replace(/-/g, "")) >= 0 && peripheral.advertisement.manufacturerData[3] === Consts.BLEManufacturerData.POWERED_UP_REMOTE_ID);
|
||||
}
|
||||
constructor(peripheral, autoSubscribe = true) {
|
||||
super(peripheral, autoSubscribe);
|
||||
constructor(device, autoSubscribe = true) {
|
||||
super(device, autoSubscribe);
|
||||
this.type = Consts.HubType.POWERED_UP_REMOTE;
|
||||
this._ports = {
|
||||
"LEFT": new port_1.Port("LEFT", 0),
|
||||
@ -193,7 +193,7 @@ class PUPRemote extends lpf2hub_1.LPF2Hub {
|
||||
}
|
||||
}
|
||||
exports.PUPRemote = PUPRemote;
|
||||
</pre>
|
||||
//# sourceMappingURL=pupremote.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -97,6 +97,7 @@ const hub_1 = require("./hub");
|
||||
const port_1 = require("./port");
|
||||
const Consts = __importStar(require("./consts"));
|
||||
const Debug = require("debug");
|
||||
const utils_1 = require("./utils");
|
||||
const debug = Debug("wedo2smarthub");
|
||||
/**
|
||||
* The WeDo2SmartHub is emitted if the discovered device is a WeDo 2.0 Smart Hub.
|
||||
@ -104,8 +105,8 @@ const debug = Debug("wedo2smarthub");
|
||||
* @extends Hub
|
||||
*/
|
||||
class WeDo2SmartHub extends hub_1.Hub {
|
||||
constructor(peripheral, autoSubscribe = true) {
|
||||
super(peripheral, autoSubscribe);
|
||||
constructor(device, autoSubscribe = true) {
|
||||
super(device, autoSubscribe);
|
||||
this._lastTiltX = 0;
|
||||
this._lastTiltY = 0;
|
||||
this.type = Consts.HubType.WEDO2_SMART_HUB;
|
||||
@ -131,27 +132,52 @@ class WeDo2SmartHub extends hub_1.Hub {
|
||||
await super.connect();
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_2);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_3);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_4);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_5);
|
||||
if (!utils_1.isBrowserContext) {
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_3);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_4);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_5);
|
||||
}
|
||||
else {
|
||||
await this._bleDevice.discoverCharacteristicsForService("battery_service");
|
||||
await this._bleDevice.discoverCharacteristicsForService("device_information");
|
||||
}
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_PORT_TYPE, this._parsePortMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_SENSOR_VALUE, this._parseSensorMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BUTTON, this._parseSensorMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, this._parseBatteryMessage.bind(this));
|
||||
if (!utils_1.isBrowserContext) {
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, this._parseBatteryMessage.bind(this));
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
this._bleDevice.readFromCharacteristic("00002a19-0000-1000-8000-00805f9b34fb", (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
this._bleDevice.subscribeToCharacteristic("00002a19-0000-1000-8000-00805f9b34fb", this._parseHighCurrentAlert.bind(this));
|
||||
}
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_HIGH_CURRENT_ALERT, this._parseHighCurrentAlert.bind(this));
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_FIRMWARE_REVISION, (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
if (!utils_1.isBrowserContext) {
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_FIRMWARE_REVISION, (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
this._bleDevice.readFromCharacteristic("00002a26-0000-1000-8000-00805f9b34fb", (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
setTimeout(() => {
|
||||
this._activatePortDevice(0x03, 0x15, 0x00, 0x00); // Activate voltage reports
|
||||
this._activatePortDevice(0x04, 0x14, 0x00, 0x00); // Activate current reports
|
||||
// this._activatePortDevice(0x03, 0x15, 0x00, 0x00); // Activate voltage reports
|
||||
// this._activatePortDevice(0x04, 0x14, 0x00, 0x00); // Activate current reports
|
||||
debug("Connect completed");
|
||||
this.emit("connect");
|
||||
return resolve();
|
||||
@ -361,7 +387,6 @@ class WeDo2SmartHub extends hub_1.Hub {
|
||||
}
|
||||
_parseHighCurrentAlert(data) {
|
||||
debug("Received Message (WEDO2_HIGH_CURRENT_ALERT)", data);
|
||||
// console.log(data);
|
||||
}
|
||||
_parseBatteryMessage(data) {
|
||||
debug("Received Message (WEDO2_BATTERY)", data);
|
||||
@ -472,7 +497,7 @@ class WeDo2SmartHub extends hub_1.Hub {
|
||||
}
|
||||
}
|
||||
exports.WeDo2SmartHub = WeDo2SmartHub;
|
||||
</pre>
|
||||
//# sourceMappingURL=wedo2smarthub.js.map</pre>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
|
3753
package-lock.json
generated
3753
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
25
package.json
25
package.json
@ -3,30 +3,35 @@
|
||||
"version": "1.9.1",
|
||||
"description": "A Node.js module to interface with LEGO Powered UP components.",
|
||||
"homepage": "https://github.com/nathankellenicki/node-poweredup/",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index-node.js",
|
||||
"types": "dist/index-node.d.ts",
|
||||
"scripts": {
|
||||
"build": "tslint -c tslint.json \"src/*.ts\" && tsc",
|
||||
"docs": "jsdoc -d docs -c jsdoc.conf.json -t ./node_modules/ink-docstrap/template -R README.md dist/consts.js dist/poweredup.js dist/lpf2hub.js dist/wedo2smarthub.js dist/boostmovehub.js dist/puphub.js dist/pupremote.js dist/duplotrainbase.js dist/hub.js dist/consts.js",
|
||||
"all": "npm run build && npm run docs",
|
||||
"prepublishOnly": "npm run build"
|
||||
"build:node": "tslint -c tslint.json \"./src/*.ts\" && tsc",
|
||||
"build:browser": "webpack --mode=production",
|
||||
"docs": "jsdoc -d docs -c jsdoc.conf.json -t ./node_modules/ink-docstrap/template -R README.md dist/consts.js dist/poweredup-node.js dist/lpf2hub.js dist/wedo2smarthub.js dist/boostmovehub.js dist/puphub.js dist/pupremote.js dist/duplotrainbase.js dist/hub.js dist/consts.js",
|
||||
"all": "npm run build:node && npm run docs",
|
||||
"prepublishOnly": "npm run build:node"
|
||||
},
|
||||
"author": "Nathan Kellenicki <nathan@kellenicki.com>",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^4.1.1",
|
||||
"noble": "1.9.1",
|
||||
"noble-mac": "https://github.com/Timeular/noble-mac.git#af4418e"
|
||||
"noble-mac": "git+https://github.com/Timeular/noble-mac.git#af4418e"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/debug": "0.0.31",
|
||||
"@types/noble": "0.0.38",
|
||||
"@types/node": "^10.12.18",
|
||||
"@types/node": "^10.12.21",
|
||||
"@types/web-bluetooth": "0.0.4",
|
||||
"ink-docstrap": "^1.3.2",
|
||||
"jsdoc": "^3.5.5",
|
||||
"jsdoc-to-markdown": "^4.0.1",
|
||||
"tslint": "^5.12.0",
|
||||
"typescript": "^3.2.2"
|
||||
"ts-loader": "^5.3.3",
|
||||
"tslint": "^5.12.1",
|
||||
"typescript": "^3.3.1",
|
||||
"webpack": "^4.29.2",
|
||||
"webpack-cli": "^3.2.3"
|
||||
},
|
||||
"resolutions": {
|
||||
"xpc-connection": "sandeepmistry/node-xpc-connection#pull/26/head"
|
||||
|
@ -2,6 +2,7 @@ import { Characteristic, Peripheral, Service } from "noble";
|
||||
|
||||
import Debug = require("debug");
|
||||
import { EventEmitter } from "events";
|
||||
import { write } from "fs";
|
||||
const debug = Debug("bledevice");
|
||||
|
||||
|
||||
@ -16,6 +17,8 @@ export class BLEDevice extends EventEmitter {
|
||||
|
||||
private _characteristics: {[uuid: string]: Characteristic} = {};
|
||||
|
||||
private _writeQueue: Promise<any> = Promise.resolve();
|
||||
|
||||
|
||||
constructor (device: any) {
|
||||
super();
|
||||
@ -29,9 +32,11 @@ export class BLEDevice extends EventEmitter {
|
||||
}, 1000);
|
||||
} else {
|
||||
this._webBLEServer = device;
|
||||
this._uuid = device.id;
|
||||
this._name = device.name;
|
||||
this.emit("discoverComplete");
|
||||
this._uuid = device.device.id;
|
||||
this._name = device.device.name;
|
||||
setTimeout(() => {
|
||||
this.emit("discoverComplete");
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,9 +78,9 @@ export class BLEDevice extends EventEmitter {
|
||||
|
||||
|
||||
public discoverCharacteristicsForService (uuid: string) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
return new Promise(async (discoverResolve, discoverReject) => {
|
||||
if (this._noblePeripheral) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
this._noblePeripheral.discoverServices([uuid], (err: string, services: Service[]) => {
|
||||
if (err) {
|
||||
return discoverReject(err);
|
||||
@ -118,8 +123,8 @@ export class BLEDevice extends EventEmitter {
|
||||
|
||||
|
||||
public subscribeToCharacteristic (uuid: string, callback: (data: Buffer) => void) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
if (this._noblePeripheral) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
this._characteristics[uuid].on("data", (data: Buffer) => {
|
||||
return callback(data);
|
||||
});
|
||||
@ -131,35 +136,50 @@ export class BLEDevice extends EventEmitter {
|
||||
} else if (this._webBLEServer) {
|
||||
// @ts-ignore
|
||||
this._characteristics[uuid].addEventListener("characteristicvaluechanged", (event) => {
|
||||
return callback(event.target.value.buffer);
|
||||
const buf = Buffer.alloc(event.target.value.buffer.byteLength);
|
||||
const view = new Uint8Array(event.target.value.buffer);
|
||||
for (let i = 0; i < buf.length; i++) {
|
||||
buf[i] = view[i];
|
||||
}
|
||||
return callback(buf);
|
||||
});
|
||||
// @ts-ignore
|
||||
this._characteristics[uuid].startNotifications();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public readFromCharacteristic (uuid: string, callback: (err: string | null, data: Buffer | null) => void) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
if (this._noblePeripheral) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
this._characteristics[uuid].read((err: string, data: Buffer) => {
|
||||
return callback(err, data);
|
||||
});
|
||||
} else if (this._webBLEServer) {
|
||||
try {
|
||||
// @ts-ignore
|
||||
this._characteristics[uuid].readValue().then((data) => {
|
||||
callback(null, data);
|
||||
});
|
||||
} catch (err) {
|
||||
callback(err, null);
|
||||
}
|
||||
// @ts-ignore
|
||||
this._characteristics[uuid].readValue().then((data) => {
|
||||
const buf = Buffer.alloc(data.buffer.byteLength);
|
||||
const view = new Uint8Array(data.buffer);
|
||||
for (let i = 0; i < buf.length; i++) {
|
||||
buf[i] = view[i];
|
||||
}
|
||||
callback(null, buf);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public writeToCharacteristic (uuid: string, data: Buffer, callback?: () => void) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
if (this._noblePeripheral) {
|
||||
uuid = this._sanitizeUUID(uuid);
|
||||
this._characteristics[uuid].write(data, false, callback);
|
||||
} else {
|
||||
// @ts-ignore
|
||||
this._writeQueue = this._writeQueue.then(() => this._characteristics[uuid].writeValue(data)).then(() => {
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
11
src/index-browser.ts
Normal file
11
src/index-browser.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { BoostMoveHub } from "./boostmovehub";
|
||||
import * as Consts from "./consts";
|
||||
import { DuploTrainBase } from "./duplotrainbase";
|
||||
import { Hub } from "./hub";
|
||||
import { PoweredUP } from "./poweredup-browser";
|
||||
import { PUPHub } from "./puphub";
|
||||
import { PUPRemote } from "./pupremote";
|
||||
import { WeDo2SmartHub } from "./wedo2smarthub";
|
||||
|
||||
// @ts-ignore
|
||||
window.PoweredUP = { PoweredUP, Hub, WeDo2SmartHub, BoostMoveHub, PUPHub, PUPRemote, DuploTrainBase, Consts };
|
@ -2,17 +2,10 @@ import { BoostMoveHub } from "./boostmovehub";
|
||||
import * as Consts from "./consts";
|
||||
import { DuploTrainBase } from "./duplotrainbase";
|
||||
import { Hub } from "./hub";
|
||||
import { PoweredUP as PoweredUPNode } from "./poweredup-node";
|
||||
import { PoweredUP } from "./poweredup-node";
|
||||
import { PUPHub } from "./puphub";
|
||||
import { PUPRemote } from "./pupremote";
|
||||
import { WeDo2SmartHub } from "./wedo2smarthub";
|
||||
import { isBrowserContext } from "./utils";
|
||||
|
||||
let PoweredUP;
|
||||
|
||||
export default PoweredUP;
|
||||
export { PoweredUP, Hub, WeDo2SmartHub, BoostMoveHub, PUPHub, PUPRemote, DuploTrainBase, Consts };
|
||||
|
||||
if (!isBrowserContext) {
|
||||
PoweredUP = PoweredUPNode;
|
||||
}
|
149
src/poweredup-browser.ts
Normal file
149
src/poweredup-browser.ts
Normal file
@ -0,0 +1,149 @@
|
||||
import { BLEDevice } from "./bledevice";
|
||||
import { BoostMoveHub } from "./boostmovehub";
|
||||
import { DuploTrainBase } from "./duplotrainbase";
|
||||
import { Hub } from "./hub";
|
||||
import { PUPHub } from "./puphub";
|
||||
import { PUPRemote } from "./pupremote";
|
||||
import { WeDo2SmartHub } from "./wedo2smarthub";
|
||||
|
||||
import * as Consts from "./consts";
|
||||
|
||||
import { EventEmitter } from "events";
|
||||
|
||||
import Debug = require("debug");
|
||||
const debug = Debug("poweredup");
|
||||
|
||||
|
||||
/**
|
||||
* @class PoweredUP
|
||||
* @extends EventEmitter
|
||||
*/
|
||||
export class PoweredUP extends EventEmitter {
|
||||
|
||||
|
||||
public autoSubscribe: boolean = true;
|
||||
|
||||
|
||||
private _connectedHubs: {[uuid: string]: Hub} = {};
|
||||
|
||||
|
||||
constructor () {
|
||||
super();
|
||||
this._discoveryEventHandler = this._discoveryEventHandler.bind(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Begin scanning for Powered UP Hub devices.
|
||||
* @method PoweredUP#scan
|
||||
*/
|
||||
public async scan () {
|
||||
|
||||
const device = await navigator.bluetooth.requestDevice({
|
||||
filters: [
|
||||
{
|
||||
services: [
|
||||
Consts.BLEService.WEDO2_SMART_HUB
|
||||
]
|
||||
},
|
||||
{
|
||||
services: [
|
||||
Consts.BLEService.LPF2_HUB
|
||||
]
|
||||
}
|
||||
],
|
||||
optionalServices: [
|
||||
Consts.BLEService.WEDO2_SMART_HUB_2,
|
||||
"battery_service",
|
||||
"device_information"
|
||||
]
|
||||
});
|
||||
|
||||
// @ts-ignore
|
||||
const server = await device.gatt.connect();
|
||||
this._discoveryEventHandler.call(this, server);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a list of Powered UP Hubs.
|
||||
* @method PoweredUP#getConnectedHubs
|
||||
* @returns {Hub[]}
|
||||
*/
|
||||
public getConnectedHubs () {
|
||||
return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a Powered UP Hub by UUID.
|
||||
* @method PoweredUP#getConnectedHubByUUID
|
||||
* @param {string} uuid
|
||||
* @returns {Hub | null}
|
||||
*/
|
||||
public getConnectedHubByUUID (uuid: string) {
|
||||
return this._connectedHubs[uuid];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve a list of Powered UP Hub by name.
|
||||
* @method PoweredUP#getConnectedHubsByName
|
||||
* @param {string} name
|
||||
* @returns {Hub[]}
|
||||
*/
|
||||
public getConnectedHubsByName (name: string) {
|
||||
return Object.keys(this._connectedHubs).map((uuid) => this._connectedHubs[uuid]).filter((hub) => hub.name === name);
|
||||
}
|
||||
|
||||
|
||||
private async _discoveryEventHandler (server: BluetoothRemoteGATTServer) {
|
||||
|
||||
const device = new BLEDevice(server);
|
||||
|
||||
let hub: Hub;
|
||||
|
||||
let hubType = Consts.HubType.UNKNOWN;
|
||||
let isLPF2Hub = false;
|
||||
try {
|
||||
await device.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB);
|
||||
hubType = Consts.HubType.WEDO2_SMART_HUB;
|
||||
// tslint:disable-next-line
|
||||
} catch (error) {}
|
||||
try {
|
||||
if (hubType !== Consts.HubType.WEDO2_SMART_HUB) {
|
||||
await device.discoverCharacteristicsForService(Consts.BLEService.LPF2_HUB);
|
||||
isLPF2Hub = true;
|
||||
}
|
||||
// tslint:disable-next-line
|
||||
} catch (error) {}
|
||||
|
||||
hub = new WeDo2SmartHub(device, this.autoSubscribe);
|
||||
|
||||
device.on("discoverComplete", () => {
|
||||
|
||||
hub.on("connect", () => {
|
||||
debug(`Hub ${hub.uuid} connected`);
|
||||
this._connectedHubs[hub.uuid] = hub;
|
||||
});
|
||||
|
||||
hub.on("disconnect", () => {
|
||||
debug(`Hub ${hub.uuid} disconnected`);
|
||||
delete this._connectedHubs[hub.uuid];
|
||||
});
|
||||
|
||||
debug(`Hub ${hub.uuid} discovered`);
|
||||
|
||||
/**
|
||||
* Emits when a Powered UP Hub device is found.
|
||||
* @event PoweredUP#discover
|
||||
* @param {WeDo2SmartHub | BoostMoveHub | PUPHub | PUPRemote | DuploTrainBase} hub
|
||||
*/
|
||||
this.emit("discover", hub);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -7,6 +7,7 @@ import { Port } from "./port";
|
||||
import * as Consts from "./consts";
|
||||
|
||||
import Debug = require("debug");
|
||||
import { isBrowserContext } from "./utils";
|
||||
const debug = Debug("wedo2smarthub");
|
||||
|
||||
|
||||
@ -54,27 +55,49 @@ export class WeDo2SmartHub extends Hub {
|
||||
await super.connect();
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_2);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_3);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_4);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_5);
|
||||
if (!isBrowserContext) {
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_3);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_4);
|
||||
await this._bleDevice.discoverCharacteristicsForService(Consts.BLEService.WEDO2_SMART_HUB_5);
|
||||
} else {
|
||||
await this._bleDevice.discoverCharacteristicsForService("battery_service");
|
||||
await this._bleDevice.discoverCharacteristicsForService("device_information");
|
||||
}
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_PORT_TYPE, this._parsePortMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_SENSOR_VALUE, this._parseSensorMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BUTTON, this._parseSensorMessage.bind(this));
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, this._parseBatteryMessage.bind(this));
|
||||
if (!isBrowserContext) {
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, this._parseBatteryMessage.bind(this));
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this._bleDevice.readFromCharacteristic("00002a19-0000-1000-8000-00805f9b34fb", (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
this._bleDevice.subscribeToCharacteristic("00002a19-0000-1000-8000-00805f9b34fb", this._parseHighCurrentAlert.bind(this));
|
||||
}
|
||||
this._bleDevice.subscribeToCharacteristic(Consts.BLECharacteristic.WEDO2_HIGH_CURRENT_ALERT, this._parseHighCurrentAlert.bind(this));
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_BATTERY, (err, data) => {
|
||||
if (data) {
|
||||
this._parseBatteryMessage(data);
|
||||
}
|
||||
});
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_FIRMWARE_REVISION, (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
if (!isBrowserContext) {
|
||||
this._bleDevice.readFromCharacteristic(Consts.BLECharacteristic.WEDO2_FIRMWARE_REVISION, (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this._bleDevice.readFromCharacteristic("00002a26-0000-1000-8000-00805f9b34fb", (err, data) => {
|
||||
if (data) {
|
||||
this._parseFirmwareRevisionString(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
setTimeout(() => {
|
||||
this._activatePortDevice(0x03, 0x15, 0x00, 0x00); // Activate voltage reports
|
||||
this._activatePortDevice(0x04, 0x14, 0x00, 0x00); // Activate current reports
|
||||
// this._activatePortDevice(0x03, 0x15, 0x00, 0x00); // Activate voltage reports
|
||||
// this._activatePortDevice(0x04, 0x14, 0x00, 0x00); // Activate current reports
|
||||
debug("Connect completed");
|
||||
this.emit("connect");
|
||||
return resolve();
|
||||
|
44
test.html
Normal file
44
test.html
Normal file
@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>node-poweredup Web Bluetooth Test</title>
|
||||
<script src="./dist/bundle.js"></script>
|
||||
<script>
|
||||
|
||||
const scan = async function () {
|
||||
|
||||
localStorage.debug = "";
|
||||
|
||||
const poweredUP = new PoweredUP.PoweredUP();
|
||||
|
||||
poweredUP.scan(); // Start scanning for hubs
|
||||
|
||||
poweredUP.on("discover", async (hub) => { // Wait to discover hubs
|
||||
|
||||
await hub.connect(); // Connect to hub
|
||||
console.log(`Connected to ${hub.name}!`);
|
||||
|
||||
await hub.sleep(2000);
|
||||
console.log(hub.firmwareVersion);
|
||||
hub.setLEDColor(PoweredUP.Consts.Color.RED);
|
||||
hub.rampMotorSpeed("A", 0, 100, 10000);
|
||||
|
||||
hub.on("disconnect", () => {
|
||||
console.log("Hub disconnected");
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<button onclick="scan()">Scan</button>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -9,7 +9,7 @@
|
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||
"declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
"sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||
"outDir": "./dist", /* Redirect output structure to the directory. */
|
||||
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
|
26
webpack.config.js
Normal file
26
webpack.config.js
Normal file
@ -0,0 +1,26 @@
|
||||
const path = require("path");
|
||||
|
||||
module.exports = {
|
||||
entry: "./src/index-browser.ts",
|
||||
devtool: "source-map",
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.ts?$/,
|
||||
use: "ts-loader",
|
||||
exclude: /node_modules/
|
||||
}
|
||||
],
|
||||
},
|
||||
externals: {
|
||||
"noble": "noble",
|
||||
"noble-mac": "noble-mac"
|
||||
},
|
||||
resolve: {
|
||||
extensions: [".ts", ".js"]
|
||||
},
|
||||
output: {
|
||||
filename: "bundle.js",
|
||||
path: path.resolve(__dirname, "dist")
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user