1 #pragma once
2 
3 #include <map>
4 #include <string>
5 #include <tuple>
6 #include <vector>
7 
8 namespace witherspoon
9 {
10 namespace power
11 {
12 namespace ucd90160
13 {
14 
15 constexpr auto gpiNumField = 0;
16 constexpr auto pinIDField = 1;
17 constexpr auto gpiNameField = 2;
18 constexpr auto pollField = 3;
19 
20 using GPIConfig = std::tuple<size_t, size_t, std::string, bool>;
21 
22 using GPIConfigs = std::vector<GPIConfig>;
23 
24 using RailNames = std::vector<std::string>;
25 
26 constexpr auto pathField = 0;
27 constexpr auto railNamesField = 1;
28 constexpr auto gpiConfigField = 2;
29 
30 using DeviceDefinition = std::tuple<std::string, RailNames, GPIConfigs>;
31 
32 //Maps a device instance to its definition
33 using DeviceMap = std::map<size_t, DeviceDefinition>;
34 
35 }
36 }
37 }
38