@@ -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