{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
module Data.RTCM3.TH
( module Data.RTCM3.TH
) where
import BasicPrelude hiding (length)
import Data.Binary
import Data.ByteString
import Data.ByteString.Lazy hiding (length)
import Data.RTCM3.Types
import Language.Haskell.TH
deriveRTCM3 :: Name -> Q [Dec]
deriveRTCM3 name =
[d|instance ToRTCM3 $(conT name) where
toRTCM3 n = Msg len (Bytes pay) crc where
pay = toStrict $ encode n
len = fromIntegral $ length pay
crc = checkCrc len pay
|]