Skip to content

Commit 021b764

Browse files
committed
Begin calibration
1 parent 2aee6db commit 021b764

File tree

4 files changed

+94
-35
lines changed

4 files changed

+94
-35
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ Web Components library for micro:bit
77

88
# Implementation Status
99

10-
## Connection
10+
## Actions
1111
- [x] Connect/Disconnect
12+
- [ ] Calibrate Compass
1213

1314
## Device Information
1415
- [x] Name

src/components.d.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,21 @@ export namespace Components {
243243
interface MicrobitApp {}
244244
interface MicrobitAppAttributes extends StencilHTMLAttributes {}
245245

246+
interface MicrobitCalibrate {
247+
/**
248+
* The button label to calibrate
249+
*/
250+
'calibrateLabel': string;
251+
'services': Services;
252+
}
253+
interface MicrobitCalibrateAttributes extends StencilHTMLAttributes {
254+
/**
255+
* The button label to calibrate
256+
*/
257+
'calibrateLabel'?: string;
258+
'services'?: Services;
259+
}
260+
246261
interface MicrobitConnect {
247262
/**
248263
* The button label to connect
@@ -410,6 +425,7 @@ declare global {
410425
'MicrobitMatrix': Components.MicrobitMatrix;
411426
'MicrobitText': Components.MicrobitText;
412427
'MicrobitApp': Components.MicrobitApp;
428+
'MicrobitCalibrate': Components.MicrobitCalibrate;
413429
'MicrobitConnect': Components.MicrobitConnect;
414430
'MicrobitStateButtonA': Components.MicrobitStateButtonA;
415431
'MicrobitStateButtonB': Components.MicrobitStateButtonB;
@@ -429,6 +445,7 @@ declare global {
429445
'microbit-matrix': Components.MicrobitMatrixAttributes;
430446
'microbit-text': Components.MicrobitTextAttributes;
431447
'microbit-app': Components.MicrobitAppAttributes;
448+
'microbit-calibrate': Components.MicrobitCalibrateAttributes;
432449
'microbit-connect': Components.MicrobitConnectAttributes;
433450
'microbit-state-button-a': Components.MicrobitStateButtonAAttributes;
434451
'microbit-state-button-b': Components.MicrobitStateButtonBAttributes;
@@ -503,6 +520,12 @@ declare global {
503520
new (): HTMLMicrobitAppElement;
504521
};
505522

523+
interface HTMLMicrobitCalibrateElement extends Components.MicrobitCalibrate, HTMLStencilElement {}
524+
var HTMLMicrobitCalibrateElement: {
525+
prototype: HTMLMicrobitCalibrateElement;
526+
new (): HTMLMicrobitCalibrateElement;
527+
};
528+
506529
interface HTMLMicrobitConnectElement extends Components.MicrobitConnect, HTMLStencilElement {}
507530
var HTMLMicrobitConnectElement: {
508531
prototype: HTMLMicrobitConnectElement;
@@ -545,6 +568,7 @@ declare global {
545568
'microbit-matrix': HTMLMicrobitMatrixElement
546569
'microbit-text': HTMLMicrobitTextElement
547570
'microbit-app': HTMLMicrobitAppElement
571+
'microbit-calibrate': HTMLMicrobitCalibrateElement
548572
'microbit-connect': HTMLMicrobitConnectElement
549573
'microbit-state-button-a': HTMLMicrobitStateButtonAElement
550574
'microbit-state-button-b': HTMLMicrobitStateButtonBElement
@@ -564,6 +588,7 @@ declare global {
564588
'microbit-matrix': HTMLMicrobitMatrixElement;
565589
'microbit-text': HTMLMicrobitTextElement;
566590
'microbit-app': HTMLMicrobitAppElement;
591+
'microbit-calibrate': HTMLMicrobitCalibrateElement;
567592
'microbit-connect': HTMLMicrobitConnectElement;
568593
'microbit-state-button-a': HTMLMicrobitStateButtonAElement;
569594
'microbit-state-button-b': HTMLMicrobitStateButtonBElement;

src/components/microbit-calibrate.tsx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { Component, Prop, Element, State, Watch } from "@stencil/core";
2+
import { Services } from "microbit-web-bluetooth";
3+
import DeviceTunnel from '../device-tunnel';
4+
5+
@Component({
6+
tag: 'microbit-calibrate'
7+
})
8+
export class MicrobitCalibrate {
9+
@Element() el;
10+
@Prop() services: Services = undefined;
11+
12+
/**
13+
* The button label to calibrate
14+
*/
15+
@Prop() calibrateLabel: string = "Calibrate"
16+
17+
@State() disabled = true;
18+
19+
@Watch('services')
20+
async watchHandler() {
21+
this.disabled = !this.services || !this.services.magnetometerService;
22+
}
23+
24+
render() {
25+
return (
26+
<button disabled={this.disabled} onClick={() => this.calibrate()}>{this.calibrateLabel}</button>
27+
);
28+
}
29+
30+
private async calibrate() {
31+
/*
32+
if (this.services.magnetometerService) {
33+
this.services.magnetometerService.
34+
}
35+
*/
36+
}
37+
}
38+
39+
DeviceTunnel.injectProps(MicrobitCalibrate, ['services']);

src/index.html

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
<head>
44
<title>Microbit Web Components</title>
55
<style>
6+
microbit-app > * {
7+
display: block;
8+
}
69
.microbit-disconnected > .state {
710
background: lightcoral;
811
}
@@ -57,35 +60,27 @@
5760

5861
<body>
5962
<microbit-app>
60-
<div><microbit-connect></microbit-connect></div>
61-
<div><microbit-name></microbit-name></div>
62-
<div><microbit-manufacturer></microbit-manufacturer></div>
63-
<div><microbit-model></microbit-model></div>
64-
<div><microbit-serial></microbit-serial></div>
65-
<div><microbit-firmware></microbit-firmware></div>
66-
<div><microbit-hardware></microbit-hardware></div>
67-
<div><microbit-temperature></microbit-temperature></div>
68-
<div><microbit-text button-label="Write"></microbit-text></div>
69-
<div>
70-
<microbit-state-connection>
71-
<span class="state">Connected</span>
72-
</microbit-state-connection>
73-
</div>
74-
<div>
75-
<microbit-state-button-a>
76-
<span class="state">Button A</span>
77-
</microbit-state-button-a>
78-
</div>
79-
<div>
80-
<microbit-state-button-b>
81-
<span class="state">Button B</span>
82-
</microbit-state-button-b>
83-
</div>
84-
<div>
85-
<microbit-state-movement sensitivity="1.2">
86-
<span class="state">Movement</span>
87-
</microbit-state-movement>
88-
</div>
63+
<microbit-connect></microbit-connect>
64+
<microbit-name></microbit-name>
65+
<microbit-manufacturer></microbit-manufacturer>
66+
<microbit-model></microbit-model>
67+
<microbit-serial></microbit-serial>
68+
<microbit-firmware></microbit-firmware>
69+
<microbit-hardware></microbit-hardware>
70+
<microbit-temperature></microbit-temperature>
71+
<microbit-text button-label="Write"></microbit-text>
72+
<microbit-state-connection>
73+
<span class="state">Connected</span>
74+
</microbit-state-connection>
75+
<microbit-state-button-a>
76+
<span class="state">Button A</span>
77+
</microbit-state-button-a>
78+
<microbit-state-button-b>
79+
<span class="state">Button B</span>
80+
</microbit-state-button-b>
81+
<microbit-state-movement sensitivity="1.2">
82+
<span class="state">Movement</span>
83+
</microbit-state-movement>
8984
<microbit-matrix class="microbit-matrix" id-template="matrix-${row}-${column}">
9085
<div id="matrix-0-0" class="microbit-matrix-led"></div>
9186
<div id="matrix-0-1" class="microbit-matrix-led"></div>
@@ -113,11 +108,10 @@
113108
<div id="matrix-4-3" class="microbit-matrix-led"></div>
114109
<div id="matrix-4-4" class="microbit-matrix-led"></div>
115110
</microbit-matrix>
116-
<div>
117-
<microbit-compass>
118-
<div id="compass"></div>
119-
</microbit-compass>
120-
</div>
111+
<microbit-calibrate></microbit-calibrate>
112+
<microbit-compass>
113+
<div id="compass"></div>
114+
</microbit-compass>
121115
</microbit-app>
122116
</body>
123117

0 commit comments

Comments
 (0)