456 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			456 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | |
| <diagram program="umlet" version="14.3.0">
 | |
|   <help_text>
 | |
| 
 | |
| // 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.</help_text>
 | |
|   <zoom_level>9</zoom_level>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>288</x>
 | |
|       <y>234</y>
 | |
|       <w>252</w>
 | |
|       <h>117</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>ButtonEventsHandler
 | |
| <<Singleton>>
 | |
| 
 | |
| bg=white</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Text</id>
 | |
|     <coordinates>
 | |
|       <x>63</x>
 | |
|       <y>27</y>
 | |
|       <w>522</w>
 | |
|       <h>36</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>*ButtonManager - Basic Class Structure - Overview*
 | |
| 
 | |
| style=wordwrap
 | |
| fontsize=22</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>54</x>
 | |
|       <y>45</y>
 | |
|       <w>504</w>
 | |
|       <h>27</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=-
 | |
| lw=2.5</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;540.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>63</x>
 | |
|       <y>756</y>
 | |
|       <w>882</w>
 | |
|       <h>27</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=..
 | |
| halign=right
 | |
| 2021-11-09</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLNote</id>
 | |
|     <coordinates>
 | |
|       <x>63</x>
 | |
|       <y>567</y>
 | |
|       <w>882</w>
 | |
|       <h>180</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>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</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>288</x>
 | |
|       <y>468</y>
 | |
|       <w>252</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>ButtonsController
 | |
| <<Singleton>>
 | |
| 
 | |
| bg=white</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>288</x>
 | |
|       <y>90</y>
 | |
|       <w>252</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>app::ButtonEventsLogger
 | |
| bg=#53C05B</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>405</x>
 | |
|       <y>153</y>
 | |
|       <w>90</w>
 | |
|       <h>99</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<-
 | |
| <<observing>></panel_attributes>
 | |
|     <additional_attributes>10.0;90.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>405</x>
 | |
|       <y>342</y>
 | |
|       <w>81</w>
 | |
|       <h>144</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<-
 | |
| <<callback>></panel_attributes>
 | |
|     <additional_attributes>10.0;140.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>63</x>
 | |
|       <y>90</y>
 | |
|       <w>135</w>
 | |
|       <h>189</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>app::Factory
 | |
| bg=#53C05B
 | |
| --
 | |
| 
 | |
| --
 | |
| + initialize()
 | |
| + build()
 | |
| </panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>189</x>
 | |
|       <y>108</y>
 | |
|       <w>117</w>
 | |
|       <h>36</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<<<<->
 | |
| m2=1</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;110.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>630</x>
 | |
|       <y>90</y>
 | |
|       <w>288</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>/ButtonEventsHandlerObserver/
 | |
| <<interface>>
 | |
| bg=#90cbe0
 | |
| --
 | |
| + onButtonShortPressed(buttonIndex)
 | |
| + onButtonLongPressed(buttonIndex)</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>531</x>
 | |
|       <y>108</y>
 | |
|       <w>117</w>
 | |
|       <h>27</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<.</panel_attributes>
 | |
|     <additional_attributes>110.0;10.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>513</x>
 | |
|       <y>126</y>
 | |
|       <w>135</w>
 | |
|       <h>126</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<<<->
 | |
| r2=observer
 | |
| m2=*</panel_attributes>
 | |
|     <additional_attributes>10.0;120.0;10.0;80.0;60.0;20.0;130.0;20.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLPackage</id>
 | |
|     <coordinates>
 | |
|       <x>63</x>
 | |
|       <y>405</y>
 | |
|       <w>126</w>
 | |
|       <h>135</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>XF
 | |
| --
 | |
| bg=#BBBBBB</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>180</x>
 | |
|       <y>135</y>
 | |
|       <w>126</w>
 | |
|       <h>387</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>10.0;410.0;70.0;410.0;70.0;10.0;120.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>180</x>
 | |
|       <y>423</y>
 | |
|       <w>126</w>
 | |
|       <h>99</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>10.0;90.0;70.0;90.0;70.0;10.0;120.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>180</x>
 | |
|       <y>495</y>
 | |
|       <w>126</w>
 | |
|       <h>27</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;120.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>603</x>
 | |
|       <y>468</y>
 | |
|       <w>315</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>/ButtonIrq/
 | |
| <<interface>>
 | |
| bg=#90cbe0
 | |
| --
 | |
| + onIrq()</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>531</x>
 | |
|       <y>504</y>
 | |
|       <w>90</w>
 | |
|       <h>36</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<.</panel_attributes>
 | |
|     <additional_attributes>80.0;20.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>603</x>
 | |
|       <y>387</y>
 | |
|       <w>315</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>/ButtonsControllerCallbackCaller/
 | |
| <<interface>>
 | |
| bg=#90cbe0
 | |
| --
 | |
| + registerCallback(callbackProvider, callbackMethod)</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>531</x>
 | |
|       <y>414</y>
 | |
|       <w>90</w>
 | |
|       <h>117</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<.</panel_attributes>
 | |
|     <additional_attributes>80.0;10.0;10.0;110.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>603</x>
 | |
|       <y>279</y>
 | |
|       <w>315</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>/ButtonsControllerCallbackProvider/
 | |
| <<interface>>
 | |
| bg=#90cbe0
 | |
| --
 | |
| + onButtonChanged(buttonIndex, pressed : bool)</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>603</x>
 | |
|       <y>198</y>
 | |
|       <w>315</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>/ButtonEventsHandlerSubject/
 | |
| <<interface>>
 | |
| bg=#90cbe0
 | |
| --
 | |
| + subscribe(observer)
 | |
| + unsubscribe(observer)</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>531</x>
 | |
|       <y>225</y>
 | |
|       <w>90</w>
 | |
|       <h>81</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<.</panel_attributes>
 | |
|     <additional_attributes>80.0;10.0;10.0;70.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>531</x>
 | |
|       <y>279</y>
 | |
|       <w>90</w>
 | |
|       <h>54</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<.</panel_attributes>
 | |
|     <additional_attributes>80.0;40.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>765</x>
 | |
|       <y>153</y>
 | |
|       <w>27</w>
 | |
|       <h>63</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>477</x>
 | |
|       <y>153</y>
 | |
|       <w>144</w>
 | |
|       <h>72</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>140.0;60.0;110.0;40.0;20.0;40.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>477</x>
 | |
|       <y>342</y>
 | |
|       <w>144</w>
 | |
|       <h>81</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>140.0;70.0;110.0;40.0;20.0;40.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>765</x>
 | |
|       <y>342</y>
 | |
|       <w>27</w>
 | |
|       <h>63</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<.</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>UMLClass</id>
 | |
|     <coordinates>
 | |
|       <x>288</x>
 | |
|       <y>405</y>
 | |
|       <w>99</w>
 | |
|       <h>45</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>ButtonStateSm</panel_attributes>
 | |
|     <additional_attributes/>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>306</x>
 | |
|       <y>342</y>
 | |
|       <w>36</w>
 | |
|       <h>81</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<<<<->
 | |
| m2=4</panel_attributes>
 | |
|     <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
 | |
|   </element>
 | |
|   <element>
 | |
|     <id>Relation</id>
 | |
|     <coordinates>
 | |
|       <x>351</x>
 | |
|       <y>342</y>
 | |
|       <w>36</w>
 | |
|       <h>81</h>
 | |
|     </coordinates>
 | |
|     <panel_attributes>lt=<<<<->
 | |
| m2=1</panel_attributes>
 | |
|     <additional_attributes>10.0;70.0;10.0;10.0</additional_attributes>
 | |
|   </element>
 | |
| </diagram>
 |