Skip to content

Commit 53156bd

Browse files
Fix order of event stop and event start (#14)
1 parent 4d01a39 commit 53156bd

File tree

2 files changed

+30
-19
lines changed

2 files changed

+30
-19
lines changed

autogenerated.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,24 @@ namespace ml {
1313
events = [event.Unknown, event.Shake, event.Still, event.DrawCircle];
1414

1515
control.onEvent(MlRunnerIds.MlRunnerInference, 1, () => {
16-
maybeUpdateEventStats(event.Unknown);
16+
if (!event.Unknown.onStartHandler) {
17+
maybeUpdateEventStats(event.Unknown);
18+
}
1719
});
1820
control.onEvent(MlRunnerIds.MlRunnerInference, 2, () => {
19-
maybeUpdateEventStats(event.Shake);
21+
if (!event.Shake.onStartHandler) {
22+
maybeUpdateEventStats(event.Shake);
23+
}
2024
});
2125
control.onEvent(MlRunnerIds.MlRunnerInference, 3, () => {
22-
maybeUpdateEventStats(event.Still);
26+
if (!event.Still.onStartHandler) {
27+
maybeUpdateEventStats(event.Still);
28+
}
2329
});
2430
control.onEvent(MlRunnerIds.MlRunnerInference, 4, () => {
25-
maybeUpdateEventStats(event.DrawCircle);
31+
if (!event.DrawCircle.onStartHandler) {
32+
maybeUpdateEventStats(event.DrawCircle);
33+
}
2634
});
2735

2836
getModelBlob = (): Buffer => {

pxtextension.ts

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class MlEvent {
44
eventValue: number;
55
eventLabel: string;
66
lastDuration: number;
7+
onStartHandler: () => void;
78
onStopHandler: () => void;
89
onStopDetailedHandler: (duration: number) => void;
910

@@ -23,30 +24,33 @@ namespace ml {
2324
}
2425

2526
export let events = [event.Unknown];
26-
let prevEventInstance: MlEvent = event.Unknown;
27+
let prevEvent: MlEvent | undefined;
2728
let currentEvent: MlEvent = event.Unknown;
2829
let lastEventTimestamp: number = 0;
2930

3031
export function maybeUpdateEventStats(currentEvent: MlEvent) {
31-
if (currentEvent !== prevEventInstance) {
32-
let now = input.runningTime();
33-
prevEventInstance.lastDuration = now - lastEventTimestamp;
32+
const now = input.runningTime();
33+
if (!prevEvent) {
34+
lastEventTimestamp = now;
35+
prevEvent = currentEvent;
36+
return;
37+
}
38+
if (currentEvent !== prevEvent) {
39+
prevEvent.lastDuration = now - lastEventTimestamp;
3440

35-
if (prevEventInstance.onStopDetailedHandler) {
36-
prevEventInstance.onStopDetailedHandler(prevEventInstance.lastDuration);
41+
if (prevEvent.onStopDetailedHandler) {
42+
prevEvent.onStopDetailedHandler(prevEvent.lastDuration);
3743
}
3844

39-
if (prevEventInstance.onStopHandler) {
40-
prevEventInstance.onStopHandler();
45+
if (prevEvent.onStopHandler) {
46+
prevEvent.onStopHandler();
4147
}
4248

4349
lastEventTimestamp = now;
44-
prevEventInstance = currentEvent;
50+
prevEvent = currentEvent;
4551
}
4652
}
4753

48-
const deviceIsSim = control.deviceName().slice(0, 3) === "sim";
49-
5054
/**
5155
* Run this code when the model detects the input label has been predicted.
5256
*
@@ -63,12 +67,11 @@ namespace ml {
6367
//% parts="v2"
6468
//% group="micro:bit (V2)"
6569
export function onStart(event: MlEvent, body: () => void): void {
70+
event.onStartHandler = body;
6671
const wrappedBody = () => {
67-
if (prevEventInstance !== event || deviceIsSim) {
68-
body();
69-
}
70-
if (prevEventInstance !== event && deviceIsSim) {
72+
if (prevEvent !== event) {
7173
maybeUpdateEventStats(event);
74+
body();
7275
}
7376
};
7477
if (!isRunning()) {

0 commit comments

Comments
 (0)