// Uncomment the following line to change the fontsize and font: // fontsize=14 // fontfamily=SansSerif //possible: SansSerif,Serif,Monospaced

////////////////////////////////////////////////////////////////////////////////////////////// // Welcome to UMLet! // // Double-click on elements to add them to the diagram, or to copy them // Edit elements by modifying the text in this panel // Hold Ctrl to select multiple elements // Use Ctrl+mouse to select via lasso // // Use +/- or Ctrl+mouse wheel to zoom // Drag a whole relation at its central square icon // // Press Ctrl+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word) // Edit the files in the "palettes" directory to create your own element palettes // // Select "Custom Elements > New..." to create new element types //////////////////////////////////////////////////////////////////////////////////////////////

// This text will be stored with each diagram; use it for notes.
9
UMLClass
288
234
252
117
ButtonEventsHandler <<Singleton>>

bg=white
Text
63
27
522
36
*ButtonManager - Basic Class Structure - Overview*

style=wordwrap fontsize=22
Relation
54
45
504
27
lt=- lw=2.5
10.0;10.0;540.0;10.0
UMLClass
63
756
882
27
lt=.. halign=right 2021-11-09
UMLNote
63
567
882
180
Note:

- ButtonsController receives button IO interrupts and debounces them - ButtonsController handles all buttons present on the board - ButtonsController sends button pressed/realeased notifications via a callback method

- ButtonEventsHandler creates button short pressed and button long pressed notifications - ButtonEventsHandler notifies via an observer pattern.

- ButtonEventsLogger logs the button short/long pressed notifications via Trace to the host PC

bg=#FFCCCC
UMLClass
288
468
252
72
ButtonsController <<Singleton>>

bg=white
UMLClass
288
90
252
72
app::ButtonEventsLogger bg=#53C05B
Relation
405
153
90
99
lt=<- <<observing>>
10.0;90.0;10.0;10.0
Relation
405
342
81
144
lt=<- <<callback>>
10.0;140.0;10.0;10.0
UMLClass
63
90
135
189
app::Factory bg=#53C05B --

-- + initialize() + build()
Relation
189
108
117
36
lt=<<<<<-> m2=1
10.0;10.0;110.0;10.0
UMLClass
630
90
288
72
/ButtonEventsHandlerObserver/ <<interface>> bg=#90cbe0 -- + onButtonShortPressed(buttonIndex) + onButtonLongPressed(buttonIndex)
Relation
531
108
117
27
lt=<<.
110.0;10.0;10.0;10.0
Relation
513
126
135
126
lt=<<<<-> r2=observer m2=*
10.0;120.0;10.0;80.0;60.0;20.0;130.0;20.0
UMLPackage
63
405
126
135
XF -- bg=#BBBBBB
Relation
180
135
126
387
lt=<.
10.0;410.0;70.0;410.0;70.0;10.0;120.0;10.0
Relation
180
423
126
99
lt=<.
10.0;90.0;70.0;90.0;70.0;10.0;120.0;10.0
Relation
180
495
126
27
lt=<.
10.0;10.0;120.0;10.0
UMLClass
603
468
315
72
/ButtonIrq/ <<interface>> bg=#90cbe0 -- + onIrq()
Relation
531
504
90
36
lt=<<.
80.0;20.0;10.0;10.0
UMLClass
603
387
315
72
/ButtonsControllerCallbackCaller/ <<interface>> bg=#90cbe0 -- + registerCallback(callbackProvider, callbackMethod)
Relation
531
414
90
117
lt=<<.
80.0;10.0;10.0;110.0
UMLClass
603
279
315
72
/ButtonsControllerCallbackProvider/ <<interface>> bg=#90cbe0 -- + onButtonChanged(buttonIndex, pressed : bool)
UMLClass
603
198
315
72
/ButtonEventsHandlerSubject/ <<interface>> bg=#90cbe0 -- + subscribe(observer) + unsubscribe(observer)
Relation
531
225
90
81
lt=<<.
80.0;10.0;10.0;70.0
Relation
531
279
90
54
lt=<<.
80.0;40.0;10.0;10.0
Relation
765
153
27
63
lt=<.
10.0;10.0;10.0;50.0
Relation
477
153
144
72
lt=<.
140.0;60.0;110.0;40.0;20.0;40.0;10.0;10.0
Relation
477
342
144
81
lt=<.
140.0;70.0;110.0;40.0;20.0;40.0;10.0;10.0
Relation
765
342
27
63
lt=<.
10.0;10.0;10.0;50.0
UMLClass
288
405
99
45
ButtonStateSm
Relation
306
342
36
81
lt=<<<<<-> m2=4
10.0;10.0;10.0;70.0
Relation
351
342
36
81
lt=<<<<-> m2=1
10.0;70.0;10.0;10.0