-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Please see README.org @package ham @version 0.1.0.0 module Ham.Data -- | RST report. data RST -- | Readability, signal strength, tone. RST :: Int -> Int -> Int -> RST -- | Readability, signal strength RS :: Int -> Int -> RST NoRST :: RST -- | Frequency in MHz. newtype Frequency MHz :: Float -> Frequency -- | Wavelength in metres. wavelength :: Frequency -> Float data Band -- | Band in metres M :: Float -> Band -- | Anything 15% shorter than about 23cm. Microwave :: Band -- | Find canonical band name for frequency. band :: Frequency -> Band -- | Modes for a QSO. TODO: This is following Cabrillo; this should go into -- the Cabrillo module and this type here should have many more entries. data QsoMode -- | Morse code. CW :: QsoMode -- | Voice. PH :: QsoMode -- | FM voice. FM :: QsoMode -- | RTTY or other teletype mode. RY :: QsoMode DATA :: QsoMode module Ham.Cabrillo data VersionNumber VersionNumber :: Int -> Int -> VersionNumber data CategoryAssisted Assisted :: CategoryAssisted NonAssisted :: CategoryAssisted data CategoryMode CMCW :: CategoryMode CMDIGI :: CategoryMode CMFM :: CategoryMode CMRTTY :: CategoryMode CMSSB :: CategoryMode CMMIXED :: CategoryMode data CategoryOperator SINGLE_OP :: CategoryOperator MULTI_OP :: CategoryOperator CHECKLOG :: CategoryOperator data CategoryPower HIGH :: CategoryPower LOW :: CategoryPower QRP :: CategoryPower data CategoryStation FIXED :: CategoryStation MOBILE :: CategoryStation PORTABLE :: CategoryStation ROVER :: CategoryStation ROVER_LIMITED :: CategoryStation ROVER_UNLIMITED :: CategoryStation EXPEDITION :: CategoryStation HQ :: CategoryStation SCHOOL :: CategoryStation data CategoryTime HOURS_6 :: CategoryTime HOURS_12 :: CategoryTime HOURS_24 :: CategoryTime data CategoryTransmitter ONE :: CategoryTransmitter TWO :: CategoryTransmitter LIMITED :: CategoryTransmitter UNLIMITED :: CategoryTransmitter SWL :: CategoryTransmitter data CategoryOverlay CLASSIC :: CategoryOverlay ROOKIE :: CategoryOverlay TB_WIRES :: CategoryOverlay NOVICE_TECH :: CategoryOverlay OVER_50 :: CategoryOverlay data YesNo YES :: YesNo NO :: YesNo data Cabrillo Cabrillo :: VersionNumber -> Maybe Text -> Maybe Text -> Maybe CategoryAssisted -> Maybe Text -> Maybe CategoryMode -> Maybe CategoryOperator -> Maybe CategoryPower -> Maybe CategoryStation -> Maybe CategoryTime -> Maybe CategoryTransmitter -> Maybe CategoryOverlay -> Maybe YesNo -> Maybe Integer -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe [Text] -> Cabrillo [version] :: Cabrillo -> VersionNumber [callsign] :: Cabrillo -> Maybe Text [contest] :: Cabrillo -> Maybe Text [category_assisted] :: Cabrillo -> Maybe CategoryAssisted [category_band] :: Cabrillo -> Maybe Text [category_mode] :: Cabrillo -> Maybe CategoryMode [category_operator] :: Cabrillo -> Maybe CategoryOperator [category_power] :: Cabrillo -> Maybe CategoryPower [category_station] :: Cabrillo -> Maybe CategoryStation [category_time] :: Cabrillo -> Maybe CategoryTime [category_transmitter] :: Cabrillo -> Maybe CategoryTransmitter [category_overlay] :: Cabrillo -> Maybe CategoryOverlay [certificate] :: Cabrillo -> Maybe YesNo [claimed_score] :: Cabrillo -> Maybe Integer [club] :: Cabrillo -> Maybe Text [created_by] :: Cabrillo -> Maybe Text [email] :: Cabrillo -> Maybe Text [grid_locator] :: Cabrillo -> Maybe Text [location] :: Cabrillo -> Maybe Text [name] :: Cabrillo -> Maybe Text [address_city] :: Cabrillo -> Maybe Text [address_state_province] :: Cabrillo -> Maybe Text [address_postalcode] :: Cabrillo -> Maybe Text [address_country] :: Cabrillo -> Maybe Text [operators] :: Cabrillo -> Maybe [Text] defaultCabrillo :: Cabrillo showtext :: Functor f => t -> (t -> f Text) -> [Char] -> f [Char] showother :: (Functor f, Show a) => t -> (t -> f a) -> [Char] -> f [Char] showlist :: d -> (d -> Maybe [Text]) -> String -> Maybe String data CabrilloLine CLSoapbox :: Text -> CabrilloLine CLQso :: CabrilloQso -> CabrilloLine CLX :: Text -> Text -> CabrilloLine CLXQso :: CabrilloQso -> CabrilloLine data CabrilloQso CabrilloQso :: Frequency -> Mode -> UTCTime -> CabrilloInfoSent -> CabrilloInfoReceived -> Maybe TransmitterNumber -> CabrilloQso data CabrilloInfo CabrilloInfo :: Callsign -> Exchange -> CabrilloInfo type Exchange = String type Callsign = String type Location = String type CabrilloInfoSent = CabrilloInfo type CabrilloInfoReceived = CabrilloInfo type TransmitterNumber = Int data Mode CW :: Mode PH :: Mode FM :: Mode RY :: Mode DG :: Mode data CabrilloLog CabrilloLog :: Cabrillo -> [CabrilloLine] -> CabrilloLog class ToCabrillo a toCabrillo :: ToCabrillo a => a -> [CabrilloLine] instance GHC.Read.Read Ham.Cabrillo.Mode instance GHC.Show.Show Ham.Cabrillo.Mode instance GHC.Read.Read Ham.Cabrillo.YesNo instance GHC.Show.Show Ham.Cabrillo.YesNo instance GHC.Read.Read Ham.Cabrillo.CategoryTransmitter instance GHC.Show.Show Ham.Cabrillo.CategoryTransmitter instance GHC.Read.Read Ham.Cabrillo.CategoryPower instance GHC.Show.Show Ham.Cabrillo.CategoryPower instance GHC.Show.Show Ham.Cabrillo.CabrilloLog instance GHC.Show.Show Ham.Cabrillo.CabrilloLine instance GHC.Show.Show Ham.Cabrillo.CabrilloQso instance GHC.Show.Show Ham.Cabrillo.CabrilloInfo instance GHC.Show.Show Ham.Cabrillo.Cabrillo instance GHC.Show.Show Ham.Cabrillo.CategoryOverlay instance GHC.Show.Show Ham.Cabrillo.CategoryTime instance GHC.Show.Show Ham.Cabrillo.CategoryStation instance GHC.Show.Show Ham.Cabrillo.CategoryOperator instance GHC.Show.Show Ham.Cabrillo.CategoryMode instance GHC.Show.Show Ham.Cabrillo.CategoryAssisted instance GHC.Show.Show Ham.Cabrillo.VersionNumber module Ham.CabrilloTypes naqp :: Callsign -> Location -> String -> Cabrillo field_day :: Callsign -> Location -> String -> Cabrillo module Ham.CAT.SerialCAT -- | Interface for radios that are communicating via serial interface. data SerialCAT SerialCAT :: (SerialPort -> IO (Maybe Frequency)) -> (SerialPort -> IO (Maybe QsoMode)) -> (SerialPort -> Int -> IO ()) -> (SerialPort -> IO (Maybe Int)) -> (SerialPort -> IO Bool) -> SerialCAT [serialGetFrequency] :: SerialCAT -> SerialPort -> IO (Maybe Frequency) [serialGetMode] :: SerialCAT -> SerialPort -> IO (Maybe QsoMode) [serialSetPowerSSB] :: SerialCAT -> SerialPort -> Int -> IO () [serialGetPowerSSB] :: SerialCAT -> SerialPort -> IO (Maybe Int) [serialIdentify] :: SerialCAT -> SerialPort -> IO Bool -- | Get a value from a radio connected to a serial port. This uses a -- format that seems to be used by more than one manufacturer, such as -- Yaesu and Elecraft. The command format is "XY;" for getting something, -- where XY is a string. XY is given as second argument to this function. serialGet :: SerialPort -> String -> (ByteString -> Parser a) -> IO (Maybe a) -- | Send a string to the radio. serialSend :: SerialPort -> String -> IO () module Ham.CAT.Parser parseFrequency :: ByteString -> Maybe Frequency frequencyFromAnswer :: ByteString -> Parser Frequency -- | Parse a double from an answer from the radio given the prefix. doubleFromAnswer :: ByteString -> Parser Double -- | Parse an integer from an answer from the radio given the prefix. intFromAnswer :: ByteString -> Parser Int module Ham.CAT.YaesuFT891 -- | Interface for the Yaesu FT-891 yaesuFT891 :: SerialCAT module Ham.CAT.ElecraftKX2 -- | Interface for the Elecraft radios K3, KX2, KX3. elecraftKX2 :: SerialCAT -- | Definitions for supported radios. module Ham.CAT.Radios -- | Identifier for each of the supported radios. The names are more or -- less self-explanatory. data Radio YaesuFT891 :: Radio -- | This includes K3, KX2, KX3. ElecraftK3 :: Radio -- | Map from radio identifiers to serial interfaces. This is used e.g. -- when reading a radio identifier from a configuration file, to -- instantiate the correct SerialCAT. serialInterface :: Map Radio SerialCAT instance GHC.Classes.Eq Ham.CAT.Radios.Radio instance GHC.Classes.Ord Ham.CAT.Radios.Radio instance GHC.Generics.Generic Ham.CAT.Radios.Radio instance GHC.Show.Show Ham.CAT.Radios.Radio module Ham.CAT -- | Configuration for the CAT monad. data CATConfig CATConfig :: String -> Radio -> SerialPortSettings -> CATConfig -- | Serial port the radio is connected to. In Linux e.g. -- "devttyUSB0". [catPort] :: CATConfig -> String -- | Radio identifier. [catRadio] :: CATConfig -> Radio -- | Serial settings for the connection. Note the radio must have the same -- settings. [catSerialSettings] :: CATConfig -> SerialPortSettings -- | Default configuration. Note this assumes port and radio, so you will -- want to adjust it. defaultConfig :: CATConfig -- | State type for the CAT monad. data CATState CATState :: Maybe SerialPort -> SerialCAT -> CATState -- | Serial port, if one is open. [statePort] :: CATState -> Maybe SerialPort -- | SerialCAT implementation for the radio. [stateInterface] :: CATState -> SerialCAT -- | Default state. Note that this sets the SerialCAT to a default -- implementation. You will want to change that. defaultState :: CATState data CATError CATError :: CATErrorType -> Text -> CATError data CATErrorType CATErrorGeneric :: CATErrorType CATErrorIdentify :: CATErrorType -- | The computer aided transceiver monad. newtype CAT m a CAT :: RWST CATConfig [Text] CATState (ExceptT CATError m) a -> CAT m a [unCAT] :: CAT m a -> RWST CATConfig [Text] CATState (ExceptT CATError m) a -- | Throw an exception in the Overpass monad. throwCAT :: Monad m => CATError -> CAT m a -- | Catching exceptions in the Overpass monad. catchCAT :: Monad m => CAT m a -> (CATError -> CAT m a) -> CAT m a -- | Run an action in the CAT monad. runCAT :: MonadIO m => CATConfig -> CATState -> CAT m a -> m (Either CATError (a, [Text])) -- | FIXME: Add error handling. What if the radio can not be opened? catInit :: MonadIO m => CAT m () -- | Close everything down. catDeinit :: MonadIO m => CAT m () -- | Get the current frequency from the transceiver. catFrequency :: MonadIO m => CAT m (Maybe Frequency) -- | Get the current mode from the transceiver. catMode :: MonadIO m => CAT m (Maybe QsoMode) -- | Get the SSB power setting in watts. catPowerSSB :: MonadIO m => CAT m (Maybe Int) -- | Set the SSB power in watts. catSetPowerSSB :: MonadIO m => Int -> CAT m () module Ham.Fcc -- | Lookup an entry for a callsign in the FCC online database. If an entry -- can be found, it is returned. fccLookup' :: Text -> IO (Maybe FccResult) -- | Look up the first active license given a callsign. fccLookup :: Text -> IO (Maybe FccLicense) -- | Look up the operator's name from the first active license given a -- callsign. fccLookupName :: Text -> IO Text fccLicenseFromResult :: FccResult -> Maybe FccLicense -- | Result received from a FCC database query. data FccResult data FccLicense FccLicense :: String -> String -> String -> String -> String -> String -> String -> String -> String -> FccLicense [frn] :: FccLicense -> String [licName] :: FccLicense -> String [serviceDesc] :: FccLicense -> String [licDetailURL] :: FccLicense -> String [statusDesc] :: FccLicense -> String [expiredDate] :: FccLicense -> String [licenseID] :: FccLicense -> String [callsign] :: FccLicense -> String [categoryDesc] :: FccLicense -> String data FccLicenses -- | The actual licenses. licenses :: FccResult -> FccLicenses instance Data.Aeson.Types.ToJSON.ToJSON Ham.Internal.Fcc.FccLicense instance Data.Aeson.Types.FromJSON.FromJSON Ham.Internal.Fcc.FccLicense instance Data.Aeson.Types.FromJSON.FromJSON Ham.Internal.Fcc.FccResult instance Data.Aeson.Types.FromJSON.FromJSON Ham.Internal.Fcc.FccLicenses module Ham.Qso -- | Modes for a QSO. TODO: This is following Cabrillo; this should go into -- the Cabrillo module and this type here should have many more entries. data QsoMode -- | Morse code. CW :: QsoMode -- | Voice. PH :: QsoMode -- | FM voice. FM :: QsoMode -- | RTTY or other teletype mode. RY :: QsoMode DATA :: QsoMode -- | Contains information about a ham radio contact. data Qso Qso :: UTCTime -> UTCTime -> Frequency -> QsoMode -> Text -> Text -> RST -> Text -> Text -> Text -> RST -> Text -> Text -> Qso [_qsoTimeStart] :: Qso -> UTCTime [_qsoTimeEnd] :: Qso -> UTCTime [_qsoFrequency] :: Qso -> Frequency [_qsoMode] :: Qso -> QsoMode [_qsoCallsign] :: Qso -> Text [_qsoLocation] :: Qso -> Text [_qsoRST] :: Qso -> RST [_qsoExchange] :: Qso -> Text [_qsoSentCallsign] :: Qso -> Text [_qsoSentLocation] :: Qso -> Text [_qsoSentRST] :: Qso -> RST [_qsoSentExchange] :: Qso -> Text [_qsoNotes] :: Qso -> Text -- | Default values to fill in to a Qso. These are kept in the -- configuration. For each entry in Qso, there is one default that -- either marks one as fixed value, or changeable value. data QsoDefaults QsoDefaults :: DefaultValue UTCTime -> DefaultValue UTCTime -> DefaultValue Frequency -> DefaultValue QsoMode -> DefaultValue Text -> DefaultValue Text -> DefaultValue RST -> DefaultValue Text -> DefaultValue Text -> DefaultValue Text -> DefaultValue RST -> DefaultValue Text -> DefaultValue Text -> QsoDefaults [_qsoDefaultTimeStart] :: QsoDefaults -> DefaultValue UTCTime [_qsoDefaultTimeEnd] :: QsoDefaults -> DefaultValue UTCTime [_qsoDefaultFrequency] :: QsoDefaults -> DefaultValue Frequency [_qsoDefaultMode] :: QsoDefaults -> DefaultValue QsoMode [_qsoDefaultCallsign] :: QsoDefaults -> DefaultValue Text [_qsoDefaultLocation] :: QsoDefaults -> DefaultValue Text [_qsoDefaultRST] :: QsoDefaults -> DefaultValue RST [_qsoDefaultExchange] :: QsoDefaults -> DefaultValue Text [_qsoDefaultSentCallsign] :: QsoDefaults -> DefaultValue Text [_qsoDefaultSentLocation] :: QsoDefaults -> DefaultValue Text [_qsoDefaultSentRST] :: QsoDefaults -> DefaultValue RST [_qsoDefaultSentExchange] :: QsoDefaults -> DefaultValue Text [_qsoDefaultNotes] :: QsoDefaults -> DefaultValue Text data DefaultValue a FixedValue :: a -> DefaultValue a DefaultValue :: a -> DefaultValue a emptyQso :: Qso qsoWithDefaults :: QsoDefaults -> Qso emptyQsoDefaults :: QsoDefaults -- | Frequency in MHz. newtype Frequency MHz :: Float -> Frequency -- | Sanitizing a Qso. Strips leading and trailing whitespace and converts -- to upper case. sanitizeQso :: Qso -> Qso qsoTimeStart :: Lens' Qso UTCTime qsoTimeEnd :: Lens' Qso UTCTime qsoFrequency :: Lens' Qso Frequency qsoMode :: Lens' Qso QsoMode qsoCallsign :: Lens' Qso Text qsoLocation :: Lens' Qso Text qsoRST :: Lens' Qso RST qsoExchange :: Lens' Qso Text qsoSentCallsign :: Lens' Qso Text qsoSentLocation :: Lens' Qso Text qsoSentRST :: Lens' Qso RST qsoSentExchange :: Lens' Qso Text qsoNotes :: Lens' Qso Text instance Ham.Cabrillo.ToCabrillo Ham.Internal.Qso.Qso -- | Ham radio logging and other operations. This module provides a monad -- that abstracts some of the work necessary for logging ham radio -- contacts, as well as doing related tasks. module Ham.Log -- | Write a log to a file in JSON format. logToFile :: Log -> FilePath -> IO () -- | Read a log from a file in JSON format. logFromFile :: FilePath -> IO (Maybe Log) -- | Write the log configuration to a text file. configToFile :: LogConfig -> FilePath -> IO () -- | Read the log configuration from a text file. configFromFile :: FilePath -> IO (Maybe LogConfig) -- | Log monad. You would normally run the monad for example with -- evalHamLog, and use the monadic actions such as readLog, -- newQsoNow, writeLog, etc. to modify the log and QSOs. type HamLog = RWST LogConfig [Text] LogState IO data LogState LogState :: Log -> Bool -> Maybe SerialCAT -> LogState [_stateLog] :: LogState -> Log -- | Mirroring the configuration in _configCat in the LogConfig to be able -- to turn it off after a failed action. [_stateUseCat] :: LogState -> Bool [_stateSerialCAT] :: LogState -> Maybe SerialCAT emptyLogState :: LogState -- | Configuration for a log, version 2. data LogConfigV3 LogConfigV3 :: FilePath -> QsoDefaults -> Bool -> CATConfig -> LogConfigV3 -- | File to store the logged Qsos in. [_configLogFile] :: LogConfigV3 -> FilePath -- | Default values, if any, for Qsos. [_configQsoDefaults] :: LogConfigV3 -> QsoDefaults -- | Flag to turn CAT support on or off. [_configUseCat] :: LogConfigV3 -> Bool -- | CAT configuration. [_configCat] :: LogConfigV3 -> CATConfig type LogConfig = LogConfigV3 configLogFile :: Lens' LogConfigV3 FilePath configQsoDefaults :: Lens' LogConfigV3 QsoDefaults defaultConfig :: LogConfig -- | Run a HamLog action and return the result and potential logging -- text. evalHamLog :: LogConfig -> LogState -> HamLog a -> IO (a, [Text]) -- | Run a HamLog action and return the final state and potential -- logging text. execHamLog :: LogConfig -> LogState -> HamLog a -> IO (LogState, [Text]) -- | Run a HamLog action and return the result, final state, and -- potential logging text. runHamLog :: LogConfig -> LogState -> HamLog a -> IO (a, LogState, [Text]) -- | Read the log database from the file set in _configLogFile entry -- of the LogConfig. The log is then set to the _stateLog -- entry of the current LogState. readLog :: HamLog () -- | Write the log database to the file set in _configLogFile entry -- of the LogConfig. writeLog :: HamLog () -- | Add the given QSO at the front of the current log. addQso :: Qso -> HamLog () -- | Create a new QSO with the current UTC time as reported by the -- operating system, and set the default values from the -- _configQsoDefaults values. uses fillFromCAT to fill some -- values from a connected radio, if any. newQsoNow :: HamLog Qso -- | Try to get a few values from a CAT connected radio. If the function is -- turned off (_stateUseCat is False), then the input is going to be -- returned unchanged. The same is true if there is an error while -- retrieving data from the radio. Note that when the functionality is -- turned on and there is an error, it may take a few seconds for the -- function to return. A message will be set in the Writer layer of -- HamLog, so that you can get the messages back with evalHamLog, -- execHamLog, or runHamLog. fillFromCAT :: Qso -> HamLog Qso -- | Update the QSO at the given position in the log with the given QSO. updateQso :: Int -> Qso -> HamLog () -- | Delete the QSO at the given position in the log. deleteQso :: Int -> HamLog () -- | Sort the log according to the given key. sortLog :: Ord a => (Qso -> a) -> HamLog () -- | Get the current UTC time up to seconds. currentUtcTime :: HamLog UTCTime -- | Return a sequence of all QSOs with a given callsign. filterCallsign :: Text -> HamLog (Seq Qso) -- | Checks if there is already at least one entry with the given callsign. -- DEPRECATED. Use findDuplicateQsos. isDuplicate :: Text -> HamLog Bool -- | Find qsos containing the given information. findQsos :: Text -> Maybe Band -> Maybe QsoMode -> HamLog (Seq Qso) findDuplicateQsos :: Qso -> HamLog (Seq Duplicate) data Duplicate Duplicate :: Bool -> Bool -> Qso -> Duplicate -- | Indicates whether band matches [duplicateBand] :: Duplicate -> Bool -- | Indicates whether mode matches [duplicateMode] :: Duplicate -> Bool -- | The potential duplicate QSO [duplicateQso] :: Duplicate -> Qso -- | Get a list of QSOs. Use qsoSeq for better performance. getQsoList :: HamLog [Qso] -- | Get the sequence of stored QSOs. getQsoSeq :: HamLog (Seq Qso) -- | Retrieve a function of the current environment. -- --
asks :: (Monoid w, Monad m) => (r -> a) -> RWST r w s m a -- | Run a CAT action. cat :: CAT IO a -> HamLog (Either CATError (a, [Text])) -- | Get the FCC information for a given callsign. lookupFcc :: Text -> HamLog (Maybe FccResult) -- | Get the operator's name for a given callsign from the FCC. lookupFccName :: Text -> HamLog Text -- | A log. A log contains a set of Qsos data Log Log :: Seq Qso -> Log -- | The set of QSOs contained in this log. [_logQsos] :: Log -> Seq Qso -- | Add a QSO to the beginning of the log list. addQsoToLog :: Log -> Qso -> Log sortLog_ :: Ord a => Log -> (Qso -> a) -> Log -- | An empty log. emptyLog :: Log -- | Make a cabrillo log from the current log, given a cabrillo -- configuration. makeCabrillo :: Cabrillo -> HamLog CabrilloLog instance GHC.Show.Show Ham.Log.Duplicate -- | Contest related things. Functions to compute points, so far. module Ham.Contest data FieldDayPoints FieldDayPoints :: Float -> Float -> Float -> [(String, [(String, Int)])] -> FieldDayPoints [fdpTotal] :: FieldDayPoints -> Float [fdpPowerMult] :: FieldDayPoints -> Float [fdpBonus] :: FieldDayPoints -> Float [fdpQsos] :: FieldDayPoints -> [(String, [(String, Int)])] data FieldDay data NAQPCW data NAQPSSB class Contest a where { type family Points a :: *; type family Config a :: *; } computePoints :: Contest a => Proxy a -> Config a -> HamLog (Points a) data ConfigFieldDay ConfigFieldDay :: Bool -> FieldDayPower -> Bool -> Bool -> Bool -> Int -> Bool -> Float -> ConfigFieldDay -- | Whether we are 100% on emergency power [fdEmergencyPower] :: ConfigFieldDay -> Bool -- | Whether we are <= 5 Watts for all contacts [fdPower] :: ConfigFieldDay -> FieldDayPower -- | Whether media publicity was done. Must provide proof. [fdMediaPublicity] :: ConfigFieldDay -> Bool -- | Whether we operate in a public location. [fdPublicLocation] :: ConfigFieldDay -> Bool -- | Whether there is an information table for people to stop by. [fdPublicInfoTable] :: ConfigFieldDay -> Bool -- | Number of formal messages relayed. [fdFormalMessages] :: ConfigFieldDay -> Int -- | Whether all batteries were charging from alternate power (no mains or -- gas). [fdAlternatePower] :: ConfigFieldDay -> Bool [fdOtherBonusPoints] :: ConfigFieldDay -> Float data FieldDayPower FD5W :: FieldDayPower FD150W :: FieldDayPower FDHighPower :: FieldDayPower module Ham.UI.Brick -- | Default AppState. emptyAppState :: AppState -- | Modes for the UI. data AppMode -- | Editing the log list. AppModeList :: AppMode -- | Editing the current QSO entry. AppModeQso :: AppMode -- | Asking a yes/no question from the user. AppModeQuestion :: AppMode -> Dialog Bool -> (AppState -> EventM AppResource AppState) -> (AppState -> EventM AppResource AppState) -> AppMode [appModeQuestionPrev] :: AppMode -> AppMode [appModeQuestionDialog] :: AppMode -> Dialog Bool [appModeQuestionYes] :: AppMode -> AppState -> EventM AppResource AppState [appModeQuestionNo] :: AppMode -> AppState -> EventM AppResource AppState AppModeSort :: AppMode -> AppMode [appModeSortPrev] :: AppMode -> AppMode -- | Application state for the Brick UI. data AppState AppState :: LogState -> LogConfig -> List AppResource Qso -> Form Qso HamlogEvent AppResource -> FocusRing AppResource -> AppMode -> Int -> FixedSequence Text -> [Text] -> Seq Duplicate -> AppState -- | State for the Hamlog monad. [logState] :: AppState -> LogState -- | Configuration for the Hamlog monad. [logConfig] :: AppState -> LogConfig -- | List of contacts to display [qsoList] :: AppState -> List AppResource Qso -- | Form to enter new contacts [qsoForm] :: AppState -> Form Qso HamlogEvent AppResource -- | Focus ring to use [focusRing] :: AppState -> FocusRing AppResource -- | Current mode of the app [appMode] :: AppState -> AppMode -- | Index of the currently selected contact [selectedQsoIndex] :: AppState -> Int -- | Text to display in the info window [infoText] :: AppState -> FixedSequence Text -- | Text to display in the status line [statusText] :: AppState -> [Text] -- | Any potential duplicates found. [duplicateQsos] :: AppState -> Seq Duplicate -- | Resource type to index widgets data AppResource -- | App to use for constructing the Brick UI. app :: App AppState HamlogEvent AppResource instance GHC.Show.Show Ham.UI.Brick.AppResource instance GHC.Classes.Ord Ham.UI.Brick.AppResource instance GHC.Classes.Eq Ham.UI.Brick.AppResource