#pragma once #include #include #include #include #include namespace witherspoon { namespace power { class UCD90160; namespace ucd90160 { /** * Defines which extra analysis is required * on failures, if any. */ enum class extraAnalysisType { none, gpuPGOOD, gpuOverTemp, memGOOD0, memGOOD1 }; /** * Options for the GPIOs * * Used as a bitmask */ enum class optionFlags { none = 0, shutdownOnFault = 1 }; constexpr auto gpioNumField = 0; constexpr auto gpioCalloutField = 1; using GPIODefinition = std::tuple; using GPIODefinitions = std::vector; constexpr auto gpioDevicePathField = 0; constexpr auto gpioPolarityField = 1; constexpr auto errorFunctionField = 2; constexpr auto optionFlagsField = 3; constexpr auto gpioDefinitionField = 4; using ErrorFunction = std::function; using GPIOGroup = std::tuple; using GPIOAnalysis = std::map; constexpr auto gpiNumField = 0; constexpr auto pinIDField = 1; constexpr auto gpiNameField = 2; constexpr auto pollField = 3; constexpr auto extraAnalysisField = 4; using GPIConfig = std::tuple; using GPIConfigs = std::vector; using RailNames = std::vector; constexpr auto pathField = 0; constexpr auto railNamesField = 1; constexpr auto gpiConfigField = 2; constexpr auto gpioAnalysisField = 3; using DeviceDefinition = std::tuple; // Maps a device instance to its definition using DeviceMap = std::map; } // namespace ucd90160 } // namespace power } // namespace witherspoon