From 6bbc0e5e5d5b9eafd6da3e23a4f3ee6a93db3331 Mon Sep 17 00:00:00 2001 From: Matthew Colvin Date: Fri, 11 Aug 2023 12:50:28 -0500 Subject: [PATCH] Add Quick draft of some UML to help conceptualize the Architecture a bit better. --- Platformio/HAL/Architecture.png | Bin 0 -> 26035 bytes Platformio/HAL/Architecture.puml | 40 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Platformio/HAL/Architecture.png create mode 100644 Platformio/HAL/Architecture.puml diff --git a/Platformio/HAL/Architecture.png b/Platformio/HAL/Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3de9e0dc4d701ff0000abc0eecb4b592b8dcda GIT binary patch literal 26035 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 literal 0 HcmV?d00001 diff --git a/Platformio/HAL/Architecture.puml b/Platformio/HAL/Architecture.puml new file mode 100644 index 0000000..11696e8 --- /dev/null +++ b/Platformio/HAL/Architecture.puml @@ -0,0 +1,40 @@ +@startuml +' KEY +' --> : is a +' *-- : must have +' o-- : should have + +namespace HAL{ + interface BatteryInterface + interface WifiInterface + interface OtherHWInterface + + abstract HardwareAbstract + + HardwareAbstract o-- BatteryInterface + HardwareAbstract o-- WifiInterface + HardwareAbstract o-- OtherHWInterface +} + +namespace Simulator{ + class BatterySimulator + class WifiSimulator + BatterySimulator --> HAL.BatteryInterface + WifiSimulator --> HAL.WifiInterface +} + +namespace ESP32{ + class Battery + class WifiHandler + Battery --> HAL.BatteryInterface + WifiHandler --> HAL.WifiInterface +} + + +namespace UI { + class OmoteUI + OmoteUI *-- HAL.HardwareAbstract +} + + +@enduml \ No newline at end of file