{-# LANGUAGE UndecidableInstances #-} module Bluetooth.Internal.Serialize where import qualified Data.ByteString as BS import qualified Data.Serialize as S import Bluetooth.Internal.Errors encodeRead :: S.Serialize a => Handler a -> Handler BS.ByteString encodeRead h = S.encode <$> h encodeWrite :: (S.Serialize a) => (a -> Handler Bool) -> (BS.ByteString -> Handler Bool) encodeWrite h v = case S.decode v of Left _ -> errorFailed Right v' -> h v'