packages feed

ivory-examples-0.1.0.3: examples/BitDataTypes.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module BitDataTypes where

import Ivory.Language

[ivory|
 bitdata SPIBaud :: Bits 3
   = spi_baud_div_2   as 0
   | spi_baud_div_4   as 1
   | spi_baud_div_8   as 2
   | spi_baud_div_16  as 3
   | spi_baud_div_32  as 4
   | spi_baud_div_64  as 5
   | spi_baud_div_128 as 6
   | spi_baud_div_256 as 7
|]

-- | Examples from Ivory paper.
[ivory|
 bitdata BaudRate :: Bits 2
   = baud_9600  as 0b00
   | baud_19200 as 0b01
   | baud_38400 as 0b10
   -- bit pattern 0b11 is invalid
|]