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