module Data.CMX.Types where import qualified Data.Set as Set type Kb = Int type Mhz = Int data MCU = MCU { mcuCore :: String , mcuFamily :: String , mcuHasPowerPad :: Bool , mcuIoType :: String , mcuDie :: String , mcuLine :: String , mcuPackage :: String , mcuRefName :: String , mcuFrequency :: Maybe Mhz , mcuNumberOfIO :: Int , mcuDbVersion :: String , mcuRamVariants :: [Kb] , mcuFlashVariants :: [Kb] , mcuCcmRam :: Maybe Kb , mcuLimits :: [Limit] , mcuIps :: Set.Set IP , mcuPins :: Set.Set Pin } deriving (Eq, Ord, Show) data LimitType = Min | Max | Lowest | Run deriving (Eq, Ord, Show) data LimitUnit = Voltage | Current | Temperature deriving (Eq, Ord, Show) data Limit = Limit { limitType :: LimitType , limitUnit :: LimitUnit , limitVal :: Float } deriving (Eq, Ord, Show) data IP = IP { ipName :: String , ipVersion :: String , ipConfigFile :: String , ipClockEnableMode :: String , ipInstanceName :: String } deriving (Eq, Ord, Show) data Pin = Pin { pinName :: String , pinType :: String , pinPosition :: String , pinSignals :: [Signal] } deriving (Eq, Ord, Show) data Signal = Signal { sigName :: String , sigIOModes :: String } deriving (Eq, Ord, Show)