#include "driver_cache.hpp" #include #include #include "display.hpp" #include "display_init.hpp" #include "storage.hpp" #include "touchwheel.hpp" namespace drivers { DriverCache::DriverCache() : gpios_(std::make_unique()) {} DriverCache::~DriverCache() {} auto DriverCache::AcquireGpios() -> GpioExpander* { return gpios_.get(); } auto DriverCache::AcquireDac() -> std::shared_ptr { return Acquire(dac_, [&]() -> AudioDac* { return AudioDac::create(AcquireGpios()).value_or(nullptr); }); } auto DriverCache::AcquireDisplay() -> std::shared_ptr { return Acquire(display_, [&]() -> Display* { return Display::create(AcquireGpios(), displays::kST7735R); }); } auto DriverCache::AcquireStorage() -> std::shared_ptr { return Acquire(storage_, [&]() -> SdStorage* { return SdStorage::create(AcquireGpios()).value_or(nullptr); }); } auto DriverCache::AcquireTouchWheel() -> std::shared_ptr { return Acquire(touchwheel_, [&]() -> TouchWheel* { return new TouchWheel(); }); } } // namespace drivers