{-# LINE 1 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
-- Automatically generated by util/generate-tmr-hsc.pl
{-# LANGUAGE OverloadedStrings, FlexibleInstances, DeriveDataTypeable #-}
module System.Hardware.MercuryApi.Enums where

import Data.Hashable ( Hashable(..) )
import Data.Int ( Int8, Int16, Int32 )
import Data.Monoid ( (<>) )
import Data.Text (Text)
import qualified Data.Text as T ( pack )
import Data.Word ( Word8, Word16, Word32 )
import Text.Printf ( printf )





-- | Indicates a general category of error.
data StatusType =
    SUCCESS_TYPE
  | ERROR_TYPE_COMM
  | ERROR_TYPE_CODE
  | ERROR_TYPE_MISC
  | ERROR_TYPE_LLRP
  | ERROR_TYPE_BINDING -- ^ An error which originates from the Haskell binding, not the underlying C library.
  | ERROR_TYPE_UNKNOWN -- ^ Not a recognized status type
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

toStatusType :: Word32 -> StatusType
toStatusType 0 = SUCCESS_TYPE
{-# LINE 30 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType 1 = ERROR_TYPE_COMM
{-# LINE 31 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType 2 = ERROR_TYPE_CODE
{-# LINE 32 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType 3 = ERROR_TYPE_MISC
{-# LINE 33 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType 4 = ERROR_TYPE_LLRP
{-# LINE 34 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType 127 = ERROR_TYPE_BINDING
{-# LINE 35 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatusType _ = ERROR_TYPE_UNKNOWN

-- | A specific error encountered by the C API or the Haskell binding.
data Status =
    SUCCESS -- ^ Success!  (Never thrown in an exception)
  | ERROR_MSG_WRONG_NUMBER_OF_DATA -- ^ Invalid number of arguments
  | ERROR_INVALID_OPCODE -- ^ Command opcode not recognized.
  | ERROR_UNIMPLEMENTED_OPCODE -- ^ Command opcode recognized, but is not supported.
  | ERROR_MSG_POWER_TOO_HIGH -- ^ Requested power setting is above the allowed maximum.
  | ERROR_MSG_INVALID_FREQ_RECEIVED -- ^ Requested frequency is outside the allowed range.
  | ERROR_MSG_INVALID_PARAMETER_VALUE -- ^ Parameter value is outside the allowed range.
  | ERROR_MSG_POWER_TOO_LOW -- ^ Requested power setting is below the allowed minimum.
  | ERROR_UNIMPLEMENTED_FEATURE -- ^ Command not supported.
  | ERROR_INVALID_BAUD_RATE -- ^ Requested serial speed is not supported.
  | ERROR_INVALID_REGION -- ^ Region is not supported.
  | ERROR_INVALID_LICENSE_KEY -- ^  License key code is invalid
  | ERROR_BL_INVALID_IMAGE_CRC -- ^ Firmware is corrupt: Checksum doesn\'t match content.
  | ERROR_BL_INVALID_APP_END_ADDR -- ^ Serial protocol status code for this exception.
  | ERROR_FLASH_BAD_ERASE_PASSWORD -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_BAD_WRITE_PASSWORD -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_UNDEFINED_SECTOR -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_ILLEGAL_SECTOR -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_WRITE_TO_NON_ERASED_AREA -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_WRITE_TO_ILLEGAL_SECTOR -- ^ Internal reader error.  Contact support.
  | ERROR_FLASH_VERIFY_FAILED -- ^ Internal reader error.  Contact support.
  | ERROR_NO_TAGS_FOUND -- ^ Reader was asked to find tags, but none were detected.
  | ERROR_NO_PROTOCOL_DEFINED -- ^ RFID protocol has not been configured.
  | ERROR_INVALID_PROTOCOL_SPECIFIED -- ^ Requested RFID protocol is not recognized.
  | ERROR_WRITE_PASSED_LOCK_FAILED -- ^ Lock failed after write operation
  | ERROR_PROTOCOL_NO_DATA_READ -- ^ Tag data was requested, but could not be read.
  | ERROR_AFE_NOT_ON -- ^ AFE not on - reader not sufficiently configured
  | ERROR_PROTOCOL_WRITE_FAILED -- ^ Write to tag failed.
  | ERROR_NOT_IMPLEMENTED_FOR_THIS_PROTOCOL -- ^ Command is not supported in the current RFID protocol.
  | ERROR_PROTOCOL_INVALID_WRITE_DATA -- ^ Data does not conform to protocol standards.
  | ERROR_PROTOCOL_INVALID_ADDRESS -- ^ Requested data address is outside the valid range.
  | ERROR_GENERAL_TAG_ERROR -- ^ Unknown error during RFID operation.
  | ERROR_DATA_TOO_LARGE -- ^ Read Tag Data was asked for more data than it supports.
  | ERROR_PROTOCOL_INVALID_KILL_PASSWORD -- ^ Incorrect password was provided to Kill Tag.
  | ERROR_PROTOCOL_KILL_FAILED -- ^ Kill failed for unknown reason.
  | ERROR_PROTOCOL_BIT_DECODING_FAILED -- ^ Internal reader error.  Contact support.
  | ERROR_PROTOCOL_INVALID_EPC -- ^ Internal reader error.  Contact support.
  | ERROR_PROTOCOL_INVALID_NUM_DATA -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_OTHER_ERROR -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_MEMORY_LOCKED -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_V2_AUTHEN_FAILED -- ^ Authentication failed with specified key.
  | ERROR_GEN2_PROTOCOL_V2_UNTRACE_FAILED -- ^  Untrace operation failed.
  | ERROR_GEN2_PROTOCOL_INSUFFICIENT_POWER -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_NON_SPECIFIC_ERROR -- ^ Internal reader error.  Contact support.
  | ERROR_GEN2_PROTOCOL_UNKNOWN_ERROR -- ^ Internal reader error.  Contact support.
  | ERROR_AHAL_INVALID_FREQ -- ^ A command was received to set a frequency outside the specified range.
  | ERROR_AHAL_CHANNEL_OCCUPIED -- ^ With LBT enabled an attempt was made to set the frequency to an occupied channel.
  | ERROR_AHAL_TRANSMITTER_ON -- ^ Checking antenna status while CW is on is not allowed.
  | ERROR_ANTENNA_NOT_CONNECTED -- ^  Antenna not detected during pre-transmit safety test.
  | ERROR_TEMPERATURE_EXCEED_LIMITS -- ^ Reader temperature outside safe range.
  | ERROR_HIGH_RETURN_LOSS -- ^  Excess power detected at transmitter port, usually due to antenna tuning mismatch.
  | ERROR_INVALID_ANTENNA_CONFIG -- ^ Invalid antenna configuration
  | ERROR_TAG_ID_BUFFER_NOT_ENOUGH_TAGS_AVAILABLE -- ^ Asked for more tags than were available in the buffer.
  | ERROR_TAG_ID_BUFFER_FULL -- ^ Too many tags are in buffer.  Remove some with Get Tag ID Buffer or Clear Tag ID Buffer.
  | ERROR_TAG_ID_BUFFER_REPEATED_TAG_ID -- ^ Internal error -- reader is trying to insert a duplicate tag record.  Contact support.
  | ERROR_TAG_ID_BUFFER_NUM_TAG_TOO_LARGE -- ^ Asked for tags than a single transaction can handle.
  | ERROR_TAG_ID_BUFFER_AUTH_REQUEST -- ^ Blocked response to get additional data from host.
  | ERROR_SYSTEM_UNKNOWN_ERROR -- ^ Internal reader error.  Contact support.
  | ERROR_TM_ASSERT_FAILED -- ^ Internal reader error.  Contact support.
  | ERROR_TIMEOUT -- ^ Timeout
  | ERROR_NO_HOST -- ^ No matching host found
  | ERROR_LLRP -- ^ LLRP error
  | ERROR_PARSE -- ^ Error parsing device response
  | ERROR_DEVICE_RESET -- ^ Device was reset externally
  | ERROR_CRC_ERROR -- ^ CRC Error
  | ERROR_INVALID -- ^ Invalid argument
  | ERROR_UNIMPLEMENTED -- ^ Unimplemented operation
  | ERROR_UNSUPPORTED -- ^ Unsupported operation
  | ERROR_NO_ANTENNA -- ^ No antenna or invalid antenna
  | ERROR_READONLY -- ^ Value is read-only
  | ERROR_TOO_BIG -- ^ Value too big
  | ERROR_NO_THREADS -- ^ Thread initialization failed
  | ERROR_NO_TAGS -- ^ No tags to be retrieved
  | ERROR_NOT_FOUND -- ^ Key not found
  | ERROR_FIRMWARE_FORMAT -- ^ Size or format of firmware image is incorrect
  | ERROR_TRYAGAIN -- ^ Temporary error, try again
  | ERROR_OUT_OF_MEMORY -- ^ Out of memory
  | ERROR_INVALID_WRITE_MODE -- ^ Invalid write mode
  | ERROR_ILLEGAL_VALUE -- ^ Illegal value
  | ERROR_END_OF_READING
  | ERROR_UNSUPPORTED_READER_TYPE -- ^ Unsupported reader type
  | ERROR_BUFFER_OVERFLOW -- ^ Buffer overflow
  | ERROR_LOADSAVE_CONFIG
  | ERROR_AUTOREAD_ENABLED -- ^ Autonomous mode is enabled on reader. Please disable it
  | ERROR_FIRMWARE_UPDATE_ON_AUTOREAD -- ^ Firmware update is successful. Autonomous mode is already enabled on reader
  | ERROR_TIMESTAMP_NULL -- ^ Timestamp cannot be null
  | ERROR_LLRP_GETTYPEREGISTRY -- ^ LLRP Reader GetTypeRegistry Failed
  | ERROR_LLRP_CONNECTIONFAILED -- ^ LLRP Reader Connection attempt is failed
  | ERROR_LLRP_SENDIO_ERROR -- ^ LLRP Reader Send Messages failed
  | ERROR_LLRP_RECEIVEIO_ERROR -- ^ LLRP Reader Receive Messages failed
  | ERROR_LLRP_RECEIVE_TIMEOUT -- ^ LLRP Reader Receive Messages Timeout
  | ERROR_LLRP_MSG_PARSE_ERROR -- ^ Error parsing LLRP message
  | ERROR_LLRP_ALREADY_CONNECTED -- ^ Already connected to reader
  | ERROR_LLRP_INVALID_RFMODE -- ^ Specified RF Mode operation is not supported
  | ERROR_LLRP_UNDEFINED_VALUE -- ^ Undefined Value
  | ERROR_LLRP_READER_ERROR -- ^ LLRP reader unknown error
  | ERROR_LLRP_READER_CONNECTION_LOST -- ^ LLRP reader connection lost
  | ERROR_LLRP_CLIENT_CONNECTION_EXISTS -- ^ LLRP Reader Connection attempt is failed, A Client initiated connection already exists
  | ERROR_ALREADY_DESTROYED -- ^ Attempt to use reader after it was destroyed.
  | ERROR_INVALID_PARAM_TYPE -- ^ The parameter value was not of the type expected.
  | ERROR_UNIMPLEMENTED_PARAM -- ^ The given parameter is not yet implemented in the Haskell binding.
  | ERROR_UNKNOWN Word32 -- ^ C API returned an unrecognized status code
  deriving (Eq, Ord, Show, Read)

toStatus :: Word32 -> Status
toStatus 0 = SUCCESS
{-# LINE 146 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554688 = ERROR_MSG_WRONG_NUMBER_OF_DATA
{-# LINE 147 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554689 = ERROR_INVALID_OPCODE
{-# LINE 148 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554690 = ERROR_UNIMPLEMENTED_OPCODE
{-# LINE 149 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554691 = ERROR_MSG_POWER_TOO_HIGH
{-# LINE 150 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554692 = ERROR_MSG_INVALID_FREQ_RECEIVED
{-# LINE 151 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554693 = ERROR_MSG_INVALID_PARAMETER_VALUE
{-# LINE 152 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554694 = ERROR_MSG_POWER_TOO_LOW
{-# LINE 153 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554697 = ERROR_UNIMPLEMENTED_FEATURE
{-# LINE 154 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554698 = ERROR_INVALID_BAUD_RATE
{-# LINE 155 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554699 = ERROR_INVALID_REGION
{-# LINE 156 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554700 = ERROR_INVALID_LICENSE_KEY
{-# LINE 157 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554944 = ERROR_BL_INVALID_IMAGE_CRC
{-# LINE 158 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33554945 = ERROR_BL_INVALID_APP_END_ADDR
{-# LINE 159 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555200 = ERROR_FLASH_BAD_ERASE_PASSWORD
{-# LINE 160 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555201 = ERROR_FLASH_BAD_WRITE_PASSWORD
{-# LINE 161 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555202 = ERROR_FLASH_UNDEFINED_SECTOR
{-# LINE 162 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555203 = ERROR_FLASH_ILLEGAL_SECTOR
{-# LINE 163 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555204 = ERROR_FLASH_WRITE_TO_NON_ERASED_AREA
{-# LINE 164 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555205 = ERROR_FLASH_WRITE_TO_ILLEGAL_SECTOR
{-# LINE 165 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555206 = ERROR_FLASH_VERIFY_FAILED
{-# LINE 166 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555456 = ERROR_NO_TAGS_FOUND
{-# LINE 167 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555457 = ERROR_NO_PROTOCOL_DEFINED
{-# LINE 168 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555458 = ERROR_INVALID_PROTOCOL_SPECIFIED
{-# LINE 169 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555459 = ERROR_WRITE_PASSED_LOCK_FAILED
{-# LINE 170 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555460 = ERROR_PROTOCOL_NO_DATA_READ
{-# LINE 171 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555461 = ERROR_AFE_NOT_ON
{-# LINE 172 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555462 = ERROR_PROTOCOL_WRITE_FAILED
{-# LINE 173 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555463 = ERROR_NOT_IMPLEMENTED_FOR_THIS_PROTOCOL
{-# LINE 174 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555464 = ERROR_PROTOCOL_INVALID_WRITE_DATA
{-# LINE 175 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555465 = ERROR_PROTOCOL_INVALID_ADDRESS
{-# LINE 176 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555466 = ERROR_GENERAL_TAG_ERROR
{-# LINE 177 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555467 = ERROR_DATA_TOO_LARGE
{-# LINE 178 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555468 = ERROR_PROTOCOL_INVALID_KILL_PASSWORD
{-# LINE 179 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555470 = ERROR_PROTOCOL_KILL_FAILED
{-# LINE 180 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555471 = ERROR_PROTOCOL_BIT_DECODING_FAILED
{-# LINE 181 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555472 = ERROR_PROTOCOL_INVALID_EPC
{-# LINE 182 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555473 = ERROR_PROTOCOL_INVALID_NUM_DATA
{-# LINE 183 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555488 = ERROR_GEN2_PROTOCOL_OTHER_ERROR
{-# LINE 184 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555491 = ERROR_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC
{-# LINE 185 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555492 = ERROR_GEN2_PROTOCOL_MEMORY_LOCKED
{-# LINE 186 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555493 = ERROR_GEN2_PROTOCOL_V2_AUTHEN_FAILED
{-# LINE 187 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555494 = ERROR_GEN2_PROTOCOL_V2_UNTRACE_FAILED
{-# LINE 188 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555499 = ERROR_GEN2_PROTOCOL_INSUFFICIENT_POWER
{-# LINE 189 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555503 = ERROR_GEN2_PROTOCOL_NON_SPECIFIC_ERROR
{-# LINE 190 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555504 = ERROR_GEN2_PROTOCOL_UNKNOWN_ERROR
{-# LINE 191 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555712 = ERROR_AHAL_INVALID_FREQ
{-# LINE 192 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555713 = ERROR_AHAL_CHANNEL_OCCUPIED
{-# LINE 193 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555714 = ERROR_AHAL_TRANSMITTER_ON
{-# LINE 194 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555715 = ERROR_ANTENNA_NOT_CONNECTED
{-# LINE 195 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555716 = ERROR_TEMPERATURE_EXCEED_LIMITS
{-# LINE 196 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555717 = ERROR_HIGH_RETURN_LOSS
{-# LINE 197 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555719 = ERROR_INVALID_ANTENNA_CONFIG
{-# LINE 198 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555968 = ERROR_TAG_ID_BUFFER_NOT_ENOUGH_TAGS_AVAILABLE
{-# LINE 199 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555969 = ERROR_TAG_ID_BUFFER_FULL
{-# LINE 200 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555970 = ERROR_TAG_ID_BUFFER_REPEATED_TAG_ID
{-# LINE 201 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555971 = ERROR_TAG_ID_BUFFER_NUM_TAG_TOO_LARGE
{-# LINE 202 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33555972 = ERROR_TAG_ID_BUFFER_AUTH_REQUEST
{-# LINE 203 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33586944 = ERROR_SYSTEM_UNKNOWN_ERROR
{-# LINE 204 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 33586945 = ERROR_TM_ASSERT_FAILED
{-# LINE 205 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777217 = ERROR_TIMEOUT
{-# LINE 206 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777218 = ERROR_NO_HOST
{-# LINE 207 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777219 = ERROR_LLRP
{-# LINE 208 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777220 = ERROR_PARSE
{-# LINE 209 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777221 = ERROR_DEVICE_RESET
{-# LINE 210 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 16777222 = ERROR_CRC_ERROR
{-# LINE 211 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331649 = ERROR_INVALID
{-# LINE 212 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331650 = ERROR_UNIMPLEMENTED
{-# LINE 213 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331651 = ERROR_UNSUPPORTED
{-# LINE 214 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331652 = ERROR_NO_ANTENNA
{-# LINE 215 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331653 = ERROR_READONLY
{-# LINE 216 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331654 = ERROR_TOO_BIG
{-# LINE 217 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331655 = ERROR_NO_THREADS
{-# LINE 218 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331656 = ERROR_NO_TAGS
{-# LINE 219 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331657 = ERROR_NOT_FOUND
{-# LINE 220 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331658 = ERROR_FIRMWARE_FORMAT
{-# LINE 221 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331659 = ERROR_TRYAGAIN
{-# LINE 222 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331660 = ERROR_OUT_OF_MEMORY
{-# LINE 223 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331661 = ERROR_INVALID_WRITE_MODE
{-# LINE 224 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331662 = ERROR_ILLEGAL_VALUE
{-# LINE 225 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331663 = ERROR_END_OF_READING
{-# LINE 226 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331664 = ERROR_UNSUPPORTED_READER_TYPE
{-# LINE 227 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331665 = ERROR_BUFFER_OVERFLOW
{-# LINE 228 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331666 = ERROR_LOADSAVE_CONFIG
{-# LINE 229 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331667 = ERROR_AUTOREAD_ENABLED
{-# LINE 230 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331668 = ERROR_FIRMWARE_UPDATE_ON_AUTOREAD
{-# LINE 231 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 50331669 = ERROR_TIMESTAMP_NULL
{-# LINE 232 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108865 = ERROR_LLRP_GETTYPEREGISTRY
{-# LINE 233 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108866 = ERROR_LLRP_CONNECTIONFAILED
{-# LINE 234 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108867 = ERROR_LLRP_SENDIO_ERROR
{-# LINE 235 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108868 = ERROR_LLRP_RECEIVEIO_ERROR
{-# LINE 236 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108869 = ERROR_LLRP_RECEIVE_TIMEOUT
{-# LINE 237 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108870 = ERROR_LLRP_MSG_PARSE_ERROR
{-# LINE 238 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108871 = ERROR_LLRP_ALREADY_CONNECTED
{-# LINE 239 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108872 = ERROR_LLRP_INVALID_RFMODE
{-# LINE 240 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108873 = ERROR_LLRP_UNDEFINED_VALUE
{-# LINE 241 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108874 = ERROR_LLRP_READER_ERROR
{-# LINE 242 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108875 = ERROR_LLRP_READER_CONNECTION_LOST
{-# LINE 243 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 67108876 = ERROR_LLRP_CLIENT_CONNECTION_EXISTS
{-# LINE 244 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus 2130706433 = ERROR_ALREADY_DESTROYED
{-# LINE 245 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toStatus x = ERROR_UNKNOWN x

type RawRegion = Word32
{-# LINE 248 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | RFID regulatory regions
data Region =
    REGION_NONE -- ^ Unspecified region
  | REGION_NA -- ^ North America
  | REGION_EU -- ^ European Union
  | REGION_KR -- ^ Korea
  | REGION_IN -- ^ India
  | REGION_JP -- ^ Japan
  | REGION_PRC -- ^ People\'s Republic of China
  | REGION_EU2 -- ^ European Union 2
  | REGION_EU3 -- ^ European Union 3
  | REGION_KR2 -- ^ Korea 2
  | REGION_PRC2 -- ^ People\'s Republic of China(840MHZ)
  | REGION_AU -- ^ Australia
  | REGION_NZ -- ^ New Zealand !!EXPERIMENTAL!!
  | REGION_NA2 -- ^ Reduced FCC region
  | REGION_NA3 -- ^ 5MHZ FCC band
  | REGION_IS -- ^ Israel
  | REGION_OPEN -- ^ Open
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

toRegion :: RawRegion -> Region
toRegion 0 = REGION_NONE
{-# LINE 272 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 1 = REGION_NA
{-# LINE 273 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 2 = REGION_EU
{-# LINE 274 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 3 = REGION_KR
{-# LINE 275 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 4 = REGION_IN
{-# LINE 276 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 5 = REGION_JP
{-# LINE 277 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 6 = REGION_PRC
{-# LINE 278 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 7 = REGION_EU2
{-# LINE 279 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 8 = REGION_EU3
{-# LINE 280 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 9 = REGION_KR2
{-# LINE 281 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 10 = REGION_PRC2
{-# LINE 282 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 11 = REGION_AU
{-# LINE 283 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 12 = REGION_NZ
{-# LINE 284 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 13 = REGION_NA2
{-# LINE 285 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 14 = REGION_NA3
{-# LINE 286 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 15 = REGION_IS
{-# LINE 287 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion 255 = REGION_OPEN
{-# LINE 288 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toRegion _ = REGION_NONE

fromRegion :: Region -> RawRegion
fromRegion REGION_NONE = 0
{-# LINE 292 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_NA = 1
{-# LINE 293 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_EU = 2
{-# LINE 294 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_KR = 3
{-# LINE 295 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_IN = 4
{-# LINE 296 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_JP = 5
{-# LINE 297 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_PRC = 6
{-# LINE 298 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_EU2 = 7
{-# LINE 299 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_EU3 = 8
{-# LINE 300 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_KR2 = 9
{-# LINE 301 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_PRC2 = 10
{-# LINE 302 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_AU = 11
{-# LINE 303 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_NZ = 12
{-# LINE 304 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_NA2 = 13
{-# LINE 305 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_NA3 = 14
{-# LINE 306 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_IS = 15
{-# LINE 307 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromRegion REGION_OPEN = 255
{-# LINE 308 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | A description of the given region, useful for a user interface.
displayRegionDescription :: Region -> Text
displayRegionDescription REGION_NONE = "Unspecified region"
displayRegionDescription REGION_NA = "North America"
displayRegionDescription REGION_EU = "European Union"
displayRegionDescription REGION_KR = "Korea"
displayRegionDescription REGION_IN = "India"
displayRegionDescription REGION_JP = "Japan"
displayRegionDescription REGION_PRC = "People's Republic of China"
displayRegionDescription REGION_EU2 = "European Union 2"
displayRegionDescription REGION_EU3 = "European Union 3"
displayRegionDescription REGION_KR2 = "Korea 2"
displayRegionDescription REGION_PRC2 = "People's Republic of China(840MHZ)"
displayRegionDescription REGION_AU = "Australia"
displayRegionDescription REGION_NZ = "New Zealand !!EXPERIMENTAL!!"
displayRegionDescription REGION_NA2 = "Reduced FCC region"
displayRegionDescription REGION_NA3 = "5MHZ FCC band"
displayRegionDescription REGION_IS = "Israel"
displayRegionDescription REGION_OPEN = "Open"

type RawTagProtocol = Word32
{-# LINE 330 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | The protocol used by an RFID tag.  Only 'TAG_PROTOCOL_GEN2'
-- is supported by the M6e Nano, and therefore the Haskell
-- binding currently only supports that protocol.
data TagProtocol =
    TAG_PROTOCOL_NONE
  | TAG_PROTOCOL_ISO180006B
  | TAG_PROTOCOL_GEN2
  | TAG_PROTOCOL_ISO180006B_UCODE
  | TAG_PROTOCOL_IPX64
  | TAG_PROTOCOL_IPX256
  | TAG_PROTOCOL_ATA
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

toTagProtocol :: RawTagProtocol -> TagProtocol
toTagProtocol 0 = TAG_PROTOCOL_NONE
{-# LINE 346 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 3 = TAG_PROTOCOL_ISO180006B
{-# LINE 347 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 5 = TAG_PROTOCOL_GEN2
{-# LINE 348 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 6 = TAG_PROTOCOL_ISO180006B_UCODE
{-# LINE 349 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 7 = TAG_PROTOCOL_IPX64
{-# LINE 350 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 8 = TAG_PROTOCOL_IPX256
{-# LINE 351 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol 29 = TAG_PROTOCOL_ATA
{-# LINE 352 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toTagProtocol _ = TAG_PROTOCOL_NONE

fromTagProtocol :: TagProtocol -> RawTagProtocol
fromTagProtocol TAG_PROTOCOL_NONE = 0
{-# LINE 356 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_ISO180006B = 3
{-# LINE 357 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_GEN2 = 5
{-# LINE 358 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_ISO180006B_UCODE = 6
{-# LINE 359 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_IPX64 = 7
{-# LINE 360 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_IPX256 = 8
{-# LINE 361 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromTagProtocol TAG_PROTOCOL_ATA = 29
{-# LINE 362 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

type RawMetadataFlag = Word32
{-# LINE 364 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Various metadata parameters which can be requested
-- in 'PARAM_METADATAFLAG'.
data MetadataFlag =
    METADATA_FLAG_READCOUNT
  | METADATA_FLAG_RSSI
  | METADATA_FLAG_ANTENNAID
  | METADATA_FLAG_FREQUENCY
  | METADATA_FLAG_TIMESTAMP
  | METADATA_FLAG_PHASE
  | METADATA_FLAG_PROTOCOL
  | METADATA_FLAG_DATA
  | METADATA_FLAG_GPIO_STATUS
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

fromMetadataFlag :: MetadataFlag -> RawMetadataFlag
fromMetadataFlag METADATA_FLAG_READCOUNT = 1
{-# LINE 381 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_RSSI = 2
{-# LINE 382 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_ANTENNAID = 4
{-# LINE 383 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_FREQUENCY = 8
{-# LINE 384 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_TIMESTAMP = 16
{-# LINE 385 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_PHASE = 32
{-# LINE 386 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_PROTOCOL = 64
{-# LINE 387 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_DATA = 128
{-# LINE 388 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromMetadataFlag METADATA_FLAG_GPIO_STATUS = 256
{-# LINE 389 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

type RawBank = Word32
{-# LINE 391 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Gen2 memory banks
data GEN2_Bank =
    GEN2_BANK_RESERVED -- ^ Reserved bank (kill and access passwords)
  | GEN2_BANK_EPC -- ^ EPC memory bank
  | GEN2_BANK_TID -- ^ TID memory bank
  | GEN2_BANK_USER -- ^ User memory bank
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

fromBank :: GEN2_Bank -> RawBank
fromBank GEN2_BANK_RESERVED = 0
{-# LINE 402 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromBank GEN2_BANK_EPC = 1
{-# LINE 403 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromBank GEN2_BANK_TID = 2
{-# LINE 404 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromBank GEN2_BANK_USER = 3
{-# LINE 405 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

toBank :: RawBank -> GEN2_Bank
toBank 0 = GEN2_BANK_RESERVED
{-# LINE 408 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toBank 1 = GEN2_BANK_EPC
{-# LINE 409 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toBank 2 = GEN2_BANK_TID
{-# LINE 410 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toBank 3 = GEN2_BANK_USER
{-# LINE 411 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toBank x = error $ "didn't expect bank to be " ++ show x

fromExtraBank :: GEN2_Bank -> RawBank
fromExtraBank GEN2_BANK_RESERVED = 4
{-# LINE 415 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromExtraBank GEN2_BANK_EPC = 8
{-# LINE 416 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromExtraBank GEN2_BANK_TID = 16
{-# LINE 417 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromExtraBank GEN2_BANK_USER = 32
{-# LINE 418 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

type RawLockBits = Word32
{-# LINE 420 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Memory lock bits
data GEN2_LockBits =
    GEN2_LOCK_BITS_USER_PERM -- ^ User memory bank lock permalock bit
  | GEN2_LOCK_BITS_USER -- ^ User memory bank lock bit
  | GEN2_LOCK_BITS_TID_PERM -- ^ TID memory bank lock permalock bit
  | GEN2_LOCK_BITS_TID -- ^ TID memory bank lock bit
  | GEN2_LOCK_BITS_EPC_PERM -- ^ EPC memory bank lock permalock bit
  | GEN2_LOCK_BITS_EPC -- ^ EPC memory bank lock bit
  | GEN2_LOCK_BITS_ACCESS_PERM -- ^ Access password lock permalock bit
  | GEN2_LOCK_BITS_ACCESS -- ^ Access password lock bit
  | GEN2_LOCK_BITS_KILL_PERM -- ^ Kill password lock permalock bit
  | GEN2_LOCK_BITS_KILL -- ^ Kill password lock bit
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

fromLockBits :: GEN2_LockBits -> RawLockBits
fromLockBits GEN2_LOCK_BITS_USER_PERM = 1
{-# LINE 437 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_USER = 2
{-# LINE 438 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_TID_PERM = 4
{-# LINE 439 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_TID = 8
{-# LINE 440 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_EPC_PERM = 16
{-# LINE 441 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_EPC = 32
{-# LINE 442 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_ACCESS_PERM = 64
{-# LINE 443 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_ACCESS = 128
{-# LINE 444 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_KILL_PERM = 256
{-# LINE 445 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromLockBits GEN2_LOCK_BITS_KILL = 512
{-# LINE 446 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

opcodeName :: Word8 -> Text
opcodeName 1 = "WRITE_FLASH"
{-# LINE 449 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 2 = "READ_FLASH"
{-# LINE 450 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 3 = "VERSION"
{-# LINE 451 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 4 = "BOOT_FIRMWARE"
{-# LINE 452 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 6 = "SET_BAUD_RATE"
{-# LINE 453 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 7 = "ERASE_FLASH"
{-# LINE 454 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 8 = "VERIFY_IMAGE_CRC"
{-# LINE 455 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 9 = "BOOT_BOOTLOADER"
{-# LINE 456 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 16 = "HW_VERSION"
{-# LINE 457 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 10 = "MODIFY_FLASH"
{-# LINE 458 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 11 = "GET_DSP_SILICON_ID"
{-# LINE 459 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 12 = "GET_CURRENT_PROGRAM"
{-# LINE 460 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 13 = "WRITE_FLASH_SECTOR"
{-# LINE 461 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 14 = "GET_SECTOR_SIZE"
{-# LINE 462 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 15 = "MODIFY_FLASH_SECTOR"
{-# LINE 463 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 33 = "READ_TAG_ID_SINGLE"
{-# LINE 464 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 34 = "READ_TAG_ID_MULTIPLE"
{-# LINE 465 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 35 = "WRITE_TAG_ID"
{-# LINE 466 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 36 = "WRITE_TAG_DATA"
{-# LINE 467 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 37 = "LOCK_TAG"
{-# LINE 468 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 38 = "KILL_TAG"
{-# LINE 469 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 40 = "READ_TAG_DATA"
{-# LINE 470 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 41 = "GET_TAG_ID_BUFFER"
{-# LINE 471 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 42 = "CLEAR_TAG_ID_BUFFER"
{-# LINE 472 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 45 = "WRITE_TAG_SPECIFIC"
{-# LINE 473 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 46 = "ERASE_BLOCK_TAG_SPECIFIC"
{-# LINE 474 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 47 = "MULTI_PROTOCOL_TAG_OP"
{-# LINE 475 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 97 = "GET_ANTENNA_PORT"
{-# LINE 476 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 98 = "GET_READ_TX_POWER"
{-# LINE 477 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 99 = "GET_TAG_PROTOCOL"
{-# LINE 478 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 100 = "GET_WRITE_TX_POWER"
{-# LINE 479 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 101 = "GET_FREQ_HOP_TABLE"
{-# LINE 480 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 102 = "GET_USER_GPIO_INPUTS"
{-# LINE 481 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 103 = "GET_REGION"
{-# LINE 482 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 104 = "GET_POWER_MODE"
{-# LINE 483 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 105 = "GET_USER_MODE"
{-# LINE 484 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 106 = "GET_READER_OPTIONAL_PARAMS"
{-# LINE 485 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 107 = "GET_PROTOCOL_PARAM"
{-# LINE 486 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 108 = "GET_READER_STATS"
{-# LINE 487 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 109 = "GET_USER_PROFILE"
{-# LINE 488 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 112 = "GET_AVAILABLE_PROTOCOLS"
{-# LINE 489 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 113 = "GET_AVAILABLE_REGIONS"
{-# LINE 490 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 114 = "GET_TEMPERATURE"
{-# LINE 491 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 145 = "SET_ANTENNA_PORT"
{-# LINE 492 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 146 = "SET_READ_TX_POWER"
{-# LINE 493 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 147 = "SET_TAG_PROTOCOL"
{-# LINE 494 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 148 = "SET_WRITE_TX_POWER"
{-# LINE 495 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 149 = "SET_FREQ_HOP_TABLE"
{-# LINE 496 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 150 = "SET_USER_GPIO_OUTPUTS"
{-# LINE 497 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 151 = "SET_REGION"
{-# LINE 498 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 152 = "SET_POWER_MODE"
{-# LINE 499 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 153 = "SET_USER_MODE"
{-# LINE 500 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 154 = "SET_READER_OPTIONAL_PARAMS"
{-# LINE 501 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 155 = "SET_PROTOCOL_PARAM"
{-# LINE 502 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 157 = "SET_USER_PROFILE"
{-# LINE 503 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 158 = "SET_PROTOCOL_LICENSEKEY"
{-# LINE 504 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 193 = "SET_OPERATING_FREQ"
{-# LINE 505 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName 195 = "TX_CW_SIGNAL"
{-# LINE 506 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
opcodeName x = "Unknown opcode " <> T.pack (printf "0x%02X" x)

type RawWriteMode = Word32
{-# LINE 509 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Whether to use word write or block write for
-- 'System.Hardware.MercuryApi.TagOp_GEN2_WriteData'.
data GEN2_WriteMode =
    GEN2_WORD_ONLY
  | GEN2_BLOCK_ONLY
  | GEN2_BLOCK_FALLBACK
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

fromWriteMode :: GEN2_WriteMode -> RawWriteMode
fromWriteMode GEN2_WORD_ONLY = 0
{-# LINE 520 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromWriteMode GEN2_BLOCK_ONLY = 1
{-# LINE 521 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromWriteMode GEN2_BLOCK_FALLBACK = 2
{-# LINE 522 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

toWriteMode :: RawWriteMode -> GEN2_WriteMode
toWriteMode 0 = GEN2_WORD_ONLY
{-# LINE 525 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toWriteMode 1 = GEN2_BLOCK_ONLY
{-# LINE 526 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toWriteMode 2 = GEN2_BLOCK_FALLBACK
{-# LINE 527 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toWriteMode x = error $ "didn't expect WriteMode to be " ++ show x

type RawPowerMode = Word32
{-# LINE 530 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Value for parameter 'PARAM_POWERMODE'.  On the M6e Nano,
-- 'POWER_MODE_MINSAVE', 'POWER_MODE_MEDSAVE', and
-- 'POWER_MODE_MAXSAVE' are all the same.
data PowerMode =
    POWER_MODE_FULL
  | POWER_MODE_MINSAVE
  | POWER_MODE_MEDSAVE
  | POWER_MODE_MAXSAVE
  | POWER_MODE_SLEEP
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

fromPowerMode :: PowerMode -> RawPowerMode
fromPowerMode POWER_MODE_FULL = 0
{-# LINE 544 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromPowerMode POWER_MODE_MINSAVE = 1
{-# LINE 545 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromPowerMode POWER_MODE_MEDSAVE = 2
{-# LINE 546 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromPowerMode POWER_MODE_MAXSAVE = 3
{-# LINE 547 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromPowerMode POWER_MODE_SLEEP = 4
{-# LINE 548 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

toPowerMode :: RawPowerMode -> PowerMode
toPowerMode 0 = POWER_MODE_FULL
{-# LINE 551 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toPowerMode 1 = POWER_MODE_MINSAVE
{-# LINE 552 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toPowerMode 2 = POWER_MODE_MEDSAVE
{-# LINE 553 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toPowerMode 3 = POWER_MODE_MAXSAVE
{-# LINE 554 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toPowerMode 4 = POWER_MODE_SLEEP
{-# LINE 555 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toPowerMode x = error $ "didn't expect PowerMode to be " ++ show x

type RawParam = Word32
{-# LINE 558 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | Reader parameters which you can get and set.  The names
-- are the same as the names of the enum in the C API.
-- (Unfortunately, these do not correspond to the
-- \"path\"-style names in any systematic way.)
-- Each parameter is listed with its \"path\", and the
-- Haskell type which is used to store it.  Some parameters
-- are also listed with the physical units the parameter
-- is in.  Not all parameters are implemented in the Haskell
-- binding.  Please file a Github issue if there is a parameter
-- you need which is not implemented.
data Param =
    PARAM_NONE -- ^ No such parameter - used as a return value from 'System.Hardware.MercuryApi.paramID'.
  | PARAM_BAUDRATE -- ^ @\/reader\/baudRate@ 'Word32'
  | PARAM_COMMANDTIMEOUT -- ^ @\/reader\/commandTimeout@ 'Word32' (milliseconds)
  | PARAM_CURRENTTIME -- ^ @\/reader\/currentTime@ (Not yet implemented)
  | PARAM_READER_DESCRIPTION -- ^ @\/reader\/description@ 'Text'
  | PARAM_EXTENDEDEPC -- ^ @\/reader\/extendedEpc@ 'Bool'
  | PARAM_READER_HOSTNAME -- ^ @\/reader\/hostname@ 'Text'
  | PARAM_LICENSE_KEY -- ^ @\/reader\/licenseKey@ ['Word8']
  | PARAM_LICENSED_FEATURES -- ^ @\/reader\/licensedFeatures@ ['Word8']
  | PARAM_METADATAFLAG -- ^ @\/reader\/metadataflags@ ['MetadataFlag']
  | PARAM_POWERMODE -- ^ @\/reader\/powerMode@ 'PowerMode'
  | PARAM_PROBEBAUDRATES -- ^ @\/reader\/probeBaudRates@ ['Word32']
  | PARAM_READER_STATISTICS -- ^ @\/reader\/statistics@ (Not yet implemented)
  | PARAM_READER_STATS -- ^ @\/reader\/stats@ (Not yet implemented)
  | PARAM_TRANSPORTTIMEOUT -- ^ @\/reader\/transportTimeout@ 'Word32' (milliseconds)
  | PARAM_URI -- ^ @\/reader\/uri@ 'Text' (read-only)
  | PARAM_USER_CONFIG -- ^ @\/reader\/userConfig@ (Not yet implemented)
  | PARAM_USERMODE -- ^ @\/reader\/userMode@ (Not yet implemented)
  | PARAM_ANTENNA_CHECKPORT -- ^ @\/reader\/antenna\/checkPort@ 'Bool'
  | PARAM_ANTENNA_CONNECTEDPORTLIST -- ^ @\/reader\/antenna\/connectedPortList@ ['Word8'], or typedef ['System.Hardware.MercuryApi.AntennaPort'] (read-only)
  | PARAM_ANTENNA_PORTLIST -- ^ @\/reader\/antenna\/portList@ ['Word8'], or typedef ['System.Hardware.MercuryApi.AntennaPort'] (read-only)
  | PARAM_ANTENNA_PORTSWITCHGPOS -- ^ @\/reader\/antenna\/portSwitchGpos@ ['Word8'], or typedef ['System.Hardware.MercuryApi.PinNumber']
  | PARAM_ANTENNA_RETURNLOSS -- ^ @\/reader\/antenna\/returnLoss@ (Not yet implemented)
  | PARAM_ANTENNA_SETTLINGTIMELIST -- ^ @\/reader\/antenna\/settlingTimeList@ (Not yet implemented)
  | PARAM_ANTENNA_TXRXMAP -- ^ @\/reader\/antenna\/txRxMap@ (Not yet implemented)
  | PARAM_GEN2_BLF -- ^ @\/reader\/gen2\/BLF@ (Not yet implemented)
  | PARAM_GEN2_ACCESSPASSWORD -- ^ @\/reader\/gen2\/accessPassword@ 'Word32', or typedef 'System.Hardware.MercuryApi.GEN2_Password'
  | PARAM_GEN2_BAP -- ^ @\/reader\/gen2\/bap@ (Not yet implemented)
  | PARAM_GEN2_PROTOCOLEXTENSION -- ^ @\/reader\/gen2\/protocolExtension@ (Not yet implemented)
  | PARAM_GEN2_Q -- ^ @\/reader\/gen2\/q@ (Not yet implemented)
  | PARAM_GEN2_SESSION -- ^ @\/reader\/gen2\/session@ (Not yet implemented)
  | PARAM_GEN2_TAGENCODING -- ^ @\/reader\/gen2\/tagEncoding@ (Not yet implemented)
  | PARAM_GEN2_TARGET -- ^ @\/reader\/gen2\/target@ (Not yet implemented)
  | PARAM_GEN2_TARI -- ^ @\/reader\/gen2\/tari@ (Not yet implemented)
  | PARAM_READER_WRITE_EARLY_EXIT -- ^ @\/reader\/gen2\/writeEarlyExit@ 'Bool'
  | PARAM_GEN2_WRITEMODE -- ^ @\/reader\/gen2\/writeMode@ 'GEN2_WriteMode'
  | PARAM_READER_WRITE_REPLY_TIMEOUT -- ^ @\/reader\/gen2\/writeReplyTimeout@ 'Word16' (microseconds)
  | PARAM_GPIO_INPUTLIST -- ^ @\/reader\/gpio\/inputList@ ['Word8'], or typedef ['System.Hardware.MercuryApi.PinNumber']
  | PARAM_GPIO_OUTPUTLIST -- ^ @\/reader\/gpio\/outputList@ ['Word8'], or typedef ['System.Hardware.MercuryApi.PinNumber']
  | PARAM_ISO180006B_BLF -- ^ @\/reader\/iso180006b\/BLF@ (Not yet implemented)
  | PARAM_ISO180006B_DELIMITER -- ^ @\/reader\/iso180006b\/delimiter@ (Not yet implemented)
  | PARAM_ISO180006B_MODULATION_DEPTH -- ^ @\/reader\/iso180006b\/modulationDepth@ (Not yet implemented)
  | PARAM_RADIO_ENABLEPOWERSAVE -- ^ @\/reader\/radio\/enablePowerSave@ 'Bool'
  | PARAM_RADIO_ENABLESJC -- ^ @\/reader\/radio\/enableSJC@ 'Bool'
  | PARAM_RADIO_PORTREADPOWERLIST -- ^ @\/reader\/radio\/portReadPowerList@ (Not yet implemented)
  | PARAM_RADIO_PORTWRITEPOWERLIST -- ^ @\/reader\/radio\/portWritePowerList@ (Not yet implemented)
  | PARAM_RADIO_POWERMAX -- ^ @\/reader\/radio\/powerMax@ 'Int16' (centi-dBm, read-only)
  | PARAM_RADIO_POWERMIN -- ^ @\/reader\/radio\/powerMin@ 'Int16' (centi-dBm, read-only)
  | PARAM_RADIO_READPOWER -- ^ @\/reader\/radio\/readPower@ 'Int32' (centi-dBm)
  | PARAM_RADIO_TEMPERATURE -- ^ @\/reader\/radio\/temperature@ 'Int8' (degrees C, read-only)
  | PARAM_RADIO_WRITEPOWER -- ^ @\/reader\/radio\/writePower@ 'Int32' (centi-dBm)
  | PARAM_READ_ASYNCOFFTIME -- ^ @\/reader\/read\/asyncOffTime@ 'Word32' (milliseconds)
  | PARAM_READ_ASYNCONTIME -- ^ @\/reader\/read\/asyncOnTime@ 'Word32' (milliseconds)
  | PARAM_READ_PLAN -- ^ @\/reader\/read\/plan@ 'System.Hardware.MercuryApi.ReadPlan'
  | PARAM_REGION_HOPTABLE -- ^ @\/reader\/region\/hopTable@ ['Word32'] (kHz)
  | PARAM_REGION_HOPTIME -- ^ @\/reader\/region\/hopTime@ 'Word32' (milliseconds)
  | PARAM_REGION_ID -- ^ @\/reader\/region\/id@ 'Region'
  | PARAM_REGION_SUPPORTEDREGIONS -- ^ @\/reader\/region\/supportedRegions@ ['Region'] (read-only)
  | PARAM_REGION_LBT_ENABLE -- ^ @\/reader\/region\/lbt\/enable@ 'Bool'
  | PARAM_READER_STATS_ENABLE -- ^ @\/reader\/stats\/enable@ (Not yet implemented)
  | PARAM_STATUS_ENABLE_ANTENNAREPORT -- ^ @\/reader\/status\/antennaEnable@ 'Bool'
  | PARAM_STATUS_ENABLE_FREQUENCYREPORT -- ^ @\/reader\/status\/frequencyEnable@ 'Bool'
  | PARAM_STATUS_ENABLE_TEMPERATUREREPORT -- ^ @\/reader\/status\/temperatureEnable@ 'Bool'
  | PARAM_TAGREADDATA_ENABLEREADFILTER -- ^ @\/reader\/tagReadData\/enableReadFilter@ 'Bool'
  | PARAM_TAGREADDATA_READFILTERTIMEOUT -- ^ @\/reader\/tagReadData\/readFilterTimeout@ 'Int32'
  | PARAM_TAGREADDATA_RECORDHIGHESTRSSI -- ^ @\/reader\/tagReadData\/recordHighestRssi@ 'Bool'
  | PARAM_TAGREADDATA_REPORTRSSIINDBM -- ^ @\/reader\/tagReadData\/reportRssiInDbm@ 'Bool'
  | PARAM_TAGREADATA_TAGOPFAILURECOUNT -- ^ @\/reader\/tagReadData\/tagopFailures@ 'Word16' (read-only)
  | PARAM_TAGREADATA_TAGOPSUCCESSCOUNT -- ^ @\/reader\/tagReadData\/tagopSuccesses@ 'Word16' (read-only)
  | PARAM_TAGREADDATA_UNIQUEBYANTENNA -- ^ @\/reader\/tagReadData\/uniqueByAntenna@ 'Bool'
  | PARAM_TAGREADDATA_UNIQUEBYDATA -- ^ @\/reader\/tagReadData\/uniqueByData@ 'Bool'
  | PARAM_TAGREADDATA_UNIQUEBYPROTOCOL -- ^ @\/reader\/tagReadData\/uniqueByProtocol@ 'Bool'
  | PARAM_TAGOP_ANTENNA -- ^ @\/reader\/tagop\/antenna@ 'Word8', or typedef 'System.Hardware.MercuryApi.AntennaPort'
  | PARAM_TAGOP_PROTOCOL -- ^ @\/reader\/tagop\/protocol@ 'TagProtocol'
  | PARAM_TRIGGER_READ_GPI -- ^ @\/reader\/trigger\/read\/Gpi@ ['Word8'], or typedef ['System.Hardware.MercuryApi.PinNumber']
  | PARAM_VERSION_HARDWARE -- ^ @\/reader\/version\/hardware@ 'Text' (read-only)
  | PARAM_VERSION_MODEL -- ^ @\/reader\/version\/model@ 'Text' (read-only)
  | PARAM_PRODUCT_GROUP -- ^ @\/reader\/version\/productGroup@ 'Text' (read-only)
  | PARAM_PRODUCT_GROUP_ID -- ^ @\/reader\/version\/productGroupID@ 'Word16' (read-only)
  | PARAM_PRODUCT_ID -- ^ @\/reader\/version\/productID@ 'Word16' (read-only)
  | PARAM_VERSION_SERIAL -- ^ @\/reader\/version\/serial@ 'Text'
  | PARAM_VERSION_SOFTWARE -- ^ @\/reader\/version\/software@ 'Text' (read-only)
  | PARAM_VERSION_SUPPORTEDPROTOCOLS -- ^ @\/reader\/version\/supportedProtocols@ ['TagProtocol'] (read-only)
  | PARAM_SELECTED_PROTOCOLS
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

instance Hashable Param where
  hash = fromEnum
  salt `hashWithSalt` p = salt `hashWithSalt` fromEnum p

toParam :: RawParam -> Param
toParam 0 = PARAM_NONE
{-# LINE 662 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 1 = PARAM_BAUDRATE
{-# LINE 663 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 2 = PARAM_PROBEBAUDRATES
{-# LINE 664 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 3 = PARAM_COMMANDTIMEOUT
{-# LINE 665 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 4 = PARAM_TRANSPORTTIMEOUT
{-# LINE 666 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 5 = PARAM_POWERMODE
{-# LINE 667 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 6 = PARAM_USERMODE
{-# LINE 668 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 7 = PARAM_ANTENNA_CHECKPORT
{-# LINE 669 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 8 = PARAM_ANTENNA_PORTLIST
{-# LINE 670 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 9 = PARAM_ANTENNA_CONNECTEDPORTLIST
{-# LINE 671 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 10 = PARAM_ANTENNA_PORTSWITCHGPOS
{-# LINE 672 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 11 = PARAM_ANTENNA_SETTLINGTIMELIST
{-# LINE 673 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 12 = PARAM_ANTENNA_RETURNLOSS
{-# LINE 674 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 13 = PARAM_ANTENNA_TXRXMAP
{-# LINE 675 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 14 = PARAM_GPIO_INPUTLIST
{-# LINE 676 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 15 = PARAM_GPIO_OUTPUTLIST
{-# LINE 677 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 16 = PARAM_GEN2_ACCESSPASSWORD
{-# LINE 678 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 17 = PARAM_GEN2_Q
{-# LINE 679 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 18 = PARAM_GEN2_TAGENCODING
{-# LINE 680 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 19 = PARAM_GEN2_SESSION
{-# LINE 681 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 20 = PARAM_GEN2_TARGET
{-# LINE 682 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 21 = PARAM_GEN2_BLF
{-# LINE 683 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 22 = PARAM_GEN2_TARI
{-# LINE 684 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 23 = PARAM_GEN2_WRITEMODE
{-# LINE 685 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 24 = PARAM_GEN2_BAP
{-# LINE 686 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 25 = PARAM_GEN2_PROTOCOLEXTENSION
{-# LINE 687 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 26 = PARAM_ISO180006B_BLF
{-# LINE 688 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 27 = PARAM_ISO180006B_MODULATION_DEPTH
{-# LINE 689 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 28 = PARAM_ISO180006B_DELIMITER
{-# LINE 690 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 29 = PARAM_READ_ASYNCOFFTIME
{-# LINE 691 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 30 = PARAM_READ_ASYNCONTIME
{-# LINE 692 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 31 = PARAM_READ_PLAN
{-# LINE 693 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 32 = PARAM_RADIO_ENABLEPOWERSAVE
{-# LINE 694 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 33 = PARAM_RADIO_POWERMAX
{-# LINE 695 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 34 = PARAM_RADIO_POWERMIN
{-# LINE 696 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 35 = PARAM_RADIO_PORTREADPOWERLIST
{-# LINE 697 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 36 = PARAM_RADIO_PORTWRITEPOWERLIST
{-# LINE 698 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 37 = PARAM_RADIO_READPOWER
{-# LINE 699 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 38 = PARAM_RADIO_WRITEPOWER
{-# LINE 700 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 39 = PARAM_RADIO_TEMPERATURE
{-# LINE 701 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 40 = PARAM_TAGREADDATA_RECORDHIGHESTRSSI
{-# LINE 702 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 41 = PARAM_TAGREADDATA_REPORTRSSIINDBM
{-# LINE 703 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 42 = PARAM_TAGREADDATA_UNIQUEBYANTENNA
{-# LINE 704 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 43 = PARAM_TAGREADDATA_UNIQUEBYDATA
{-# LINE 705 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 44 = PARAM_TAGOP_ANTENNA
{-# LINE 706 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 45 = PARAM_TAGOP_PROTOCOL
{-# LINE 707 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 46 = PARAM_VERSION_HARDWARE
{-# LINE 708 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 47 = PARAM_VERSION_SERIAL
{-# LINE 709 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 48 = PARAM_VERSION_MODEL
{-# LINE 710 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 49 = PARAM_VERSION_SOFTWARE
{-# LINE 711 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 50 = PARAM_VERSION_SUPPORTEDPROTOCOLS
{-# LINE 712 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 51 = PARAM_REGION_HOPTABLE
{-# LINE 713 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 52 = PARAM_REGION_HOPTIME
{-# LINE 714 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 53 = PARAM_REGION_ID
{-# LINE 715 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 54 = PARAM_REGION_SUPPORTEDREGIONS
{-# LINE 716 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 55 = PARAM_REGION_LBT_ENABLE
{-# LINE 717 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 56 = PARAM_LICENSE_KEY
{-# LINE 718 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 57 = PARAM_USER_CONFIG
{-# LINE 719 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 58 = PARAM_RADIO_ENABLESJC
{-# LINE 720 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 59 = PARAM_EXTENDEDEPC
{-# LINE 721 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 60 = PARAM_READER_STATISTICS
{-# LINE 722 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 61 = PARAM_READER_STATS
{-# LINE 723 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 62 = PARAM_URI
{-# LINE 724 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 63 = PARAM_PRODUCT_GROUP_ID
{-# LINE 725 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 64 = PARAM_PRODUCT_GROUP
{-# LINE 726 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 65 = PARAM_PRODUCT_ID
{-# LINE 727 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 66 = PARAM_TAGREADATA_TAGOPSUCCESSCOUNT
{-# LINE 728 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 67 = PARAM_TAGREADATA_TAGOPFAILURECOUNT
{-# LINE 729 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 68 = PARAM_STATUS_ENABLE_ANTENNAREPORT
{-# LINE 730 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 69 = PARAM_STATUS_ENABLE_FREQUENCYREPORT
{-# LINE 731 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 70 = PARAM_STATUS_ENABLE_TEMPERATUREREPORT
{-# LINE 732 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 71 = PARAM_TAGREADDATA_ENABLEREADFILTER
{-# LINE 733 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 72 = PARAM_TAGREADDATA_READFILTERTIMEOUT
{-# LINE 734 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 73 = PARAM_TAGREADDATA_UNIQUEBYPROTOCOL
{-# LINE 735 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 74 = PARAM_READER_DESCRIPTION
{-# LINE 736 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 75 = PARAM_READER_HOSTNAME
{-# LINE 737 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 76 = PARAM_CURRENTTIME
{-# LINE 738 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 77 = PARAM_READER_WRITE_REPLY_TIMEOUT
{-# LINE 739 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 78 = PARAM_READER_WRITE_EARLY_EXIT
{-# LINE 740 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 79 = PARAM_READER_STATS_ENABLE
{-# LINE 741 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 80 = PARAM_TRIGGER_READ_GPI
{-# LINE 742 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 81 = PARAM_METADATAFLAG
{-# LINE 743 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 82 = PARAM_LICENSED_FEATURES
{-# LINE 744 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam 83 = PARAM_SELECTED_PROTOCOLS
{-# LINE 745 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
toParam _ = PARAM_NONE

fromParam :: Param -> RawParam
fromParam PARAM_NONE = 0
{-# LINE 749 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_BAUDRATE = 1
{-# LINE 750 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_PROBEBAUDRATES = 2
{-# LINE 751 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_COMMANDTIMEOUT = 3
{-# LINE 752 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TRANSPORTTIMEOUT = 4
{-# LINE 753 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_POWERMODE = 5
{-# LINE 754 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_USERMODE = 6
{-# LINE 755 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_CHECKPORT = 7
{-# LINE 756 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_PORTLIST = 8
{-# LINE 757 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_CONNECTEDPORTLIST = 9
{-# LINE 758 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_PORTSWITCHGPOS = 10
{-# LINE 759 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_SETTLINGTIMELIST = 11
{-# LINE 760 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_RETURNLOSS = 12
{-# LINE 761 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ANTENNA_TXRXMAP = 13
{-# LINE 762 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GPIO_INPUTLIST = 14
{-# LINE 763 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GPIO_OUTPUTLIST = 15
{-# LINE 764 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_ACCESSPASSWORD = 16
{-# LINE 765 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_Q = 17
{-# LINE 766 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_TAGENCODING = 18
{-# LINE 767 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_SESSION = 19
{-# LINE 768 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_TARGET = 20
{-# LINE 769 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_BLF = 21
{-# LINE 770 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_TARI = 22
{-# LINE 771 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_WRITEMODE = 23
{-# LINE 772 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_BAP = 24
{-# LINE 773 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_GEN2_PROTOCOLEXTENSION = 25
{-# LINE 774 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ISO180006B_BLF = 26
{-# LINE 775 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ISO180006B_MODULATION_DEPTH = 27
{-# LINE 776 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_ISO180006B_DELIMITER = 28
{-# LINE 777 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READ_ASYNCOFFTIME = 29
{-# LINE 778 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READ_ASYNCONTIME = 30
{-# LINE 779 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READ_PLAN = 31
{-# LINE 780 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_ENABLEPOWERSAVE = 32
{-# LINE 781 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_POWERMAX = 33
{-# LINE 782 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_POWERMIN = 34
{-# LINE 783 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_PORTREADPOWERLIST = 35
{-# LINE 784 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_PORTWRITEPOWERLIST = 36
{-# LINE 785 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_READPOWER = 37
{-# LINE 786 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_WRITEPOWER = 38
{-# LINE 787 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_TEMPERATURE = 39
{-# LINE 788 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_RECORDHIGHESTRSSI = 40
{-# LINE 789 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_REPORTRSSIINDBM = 41
{-# LINE 790 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_UNIQUEBYANTENNA = 42
{-# LINE 791 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_UNIQUEBYDATA = 43
{-# LINE 792 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGOP_ANTENNA = 44
{-# LINE 793 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGOP_PROTOCOL = 45
{-# LINE 794 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_VERSION_HARDWARE = 46
{-# LINE 795 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_VERSION_SERIAL = 47
{-# LINE 796 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_VERSION_MODEL = 48
{-# LINE 797 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_VERSION_SOFTWARE = 49
{-# LINE 798 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_VERSION_SUPPORTEDPROTOCOLS = 50
{-# LINE 799 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_REGION_HOPTABLE = 51
{-# LINE 800 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_REGION_HOPTIME = 52
{-# LINE 801 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_REGION_ID = 53
{-# LINE 802 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_REGION_SUPPORTEDREGIONS = 54
{-# LINE 803 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_REGION_LBT_ENABLE = 55
{-# LINE 804 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_LICENSE_KEY = 56
{-# LINE 805 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_USER_CONFIG = 57
{-# LINE 806 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_RADIO_ENABLESJC = 58
{-# LINE 807 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_EXTENDEDEPC = 59
{-# LINE 808 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_STATISTICS = 60
{-# LINE 809 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_STATS = 61
{-# LINE 810 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_URI = 62
{-# LINE 811 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_PRODUCT_GROUP_ID = 63
{-# LINE 812 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_PRODUCT_GROUP = 64
{-# LINE 813 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_PRODUCT_ID = 65
{-# LINE 814 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADATA_TAGOPSUCCESSCOUNT = 66
{-# LINE 815 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADATA_TAGOPFAILURECOUNT = 67
{-# LINE 816 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_STATUS_ENABLE_ANTENNAREPORT = 68
{-# LINE 817 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_STATUS_ENABLE_FREQUENCYREPORT = 69
{-# LINE 818 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_STATUS_ENABLE_TEMPERATUREREPORT = 70
{-# LINE 819 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_ENABLEREADFILTER = 71
{-# LINE 820 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_READFILTERTIMEOUT = 72
{-# LINE 821 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TAGREADDATA_UNIQUEBYPROTOCOL = 73
{-# LINE 822 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_DESCRIPTION = 74
{-# LINE 823 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_HOSTNAME = 75
{-# LINE 824 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_CURRENTTIME = 76
{-# LINE 825 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_WRITE_REPLY_TIMEOUT = 77
{-# LINE 826 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_WRITE_EARLY_EXIT = 78
{-# LINE 827 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_READER_STATS_ENABLE = 79
{-# LINE 828 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_TRIGGER_READ_GPI = 80
{-# LINE 829 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_METADATAFLAG = 81
{-# LINE 830 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_LICENSED_FEATURES = 82
{-# LINE 831 "src/System/Hardware/MercuryApi/Enums.hsc" #-}
fromParam PARAM_SELECTED_PROTOCOLS = 83
{-# LINE 832 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

paramMax :: RawParam
paramMax = 83
{-# LINE 835 "src/System/Hardware/MercuryApi/Enums.hsc" #-}

-- | For parameters which are expressed in physical units,
-- returns a string describing the units.  Returns 'Nothing'
-- for parameters which are not expressed in physical units.
-- This can be useful for displaying in a user interface,
-- for example.
paramUnits :: Param -> Maybe Text
paramUnits PARAM_COMMANDTIMEOUT = Just "milliseconds"
paramUnits PARAM_TRANSPORTTIMEOUT = Just "milliseconds"
paramUnits PARAM_GEN2_BLF = Just "kHz"
paramUnits PARAM_READ_ASYNCOFFTIME = Just "milliseconds"
paramUnits PARAM_READ_ASYNCONTIME = Just "milliseconds"
paramUnits PARAM_RADIO_POWERMAX = Just "centi-dBm"
paramUnits PARAM_RADIO_POWERMIN = Just "centi-dBm"
paramUnits PARAM_RADIO_PORTREADPOWERLIST = Just "centi-dBm"
paramUnits PARAM_RADIO_PORTWRITEPOWERLIST = Just "centi-dBm"
paramUnits PARAM_RADIO_READPOWER = Just "centi-dBm"
paramUnits PARAM_RADIO_WRITEPOWER = Just "centi-dBm"
paramUnits PARAM_RADIO_TEMPERATURE = Just "degrees C"
paramUnits PARAM_REGION_HOPTABLE = Just "kHz"
paramUnits PARAM_REGION_HOPTIME = Just "milliseconds"
paramUnits PARAM_READER_WRITE_REPLY_TIMEOUT = Just "microseconds"
paramUnits _ = Nothing

-- | The Haskell data type expected for a particular parameter.
data ParamType =
    ParamTypeBool
  | ParamTypeGEN2_WriteMode
  | ParamTypeInt16
  | ParamTypeInt32
  | ParamTypeInt8
  | ParamTypeMetadataFlagList
  | ParamTypePowerMode
  | ParamTypeReadPlan
  | ParamTypeRegion
  | ParamTypeRegionList
  | ParamTypeTagProtocol
  | ParamTypeTagProtocolList
  | ParamTypeText
  | ParamTypeWord16
  | ParamTypeWord32
  | ParamTypeWord32List
  | ParamTypeWord8
  | ParamTypeWord8List
  | ParamTypeUnimplemented
  deriving (Eq, Ord, Show, Read, Bounded, Enum)

-- | Indicates the type expected for a given parameter.
paramType :: Param -> ParamType
paramType PARAM_BAUDRATE = ParamTypeWord32
paramType PARAM_PROBEBAUDRATES = ParamTypeWord32List
paramType PARAM_COMMANDTIMEOUT = ParamTypeWord32
paramType PARAM_TRANSPORTTIMEOUT = ParamTypeWord32
paramType PARAM_POWERMODE = ParamTypePowerMode
paramType PARAM_ANTENNA_CHECKPORT = ParamTypeBool
paramType PARAM_ANTENNA_PORTLIST = ParamTypeWord8List
paramType PARAM_ANTENNA_CONNECTEDPORTLIST = ParamTypeWord8List
paramType PARAM_ANTENNA_PORTSWITCHGPOS = ParamTypeWord8List
paramType PARAM_GPIO_INPUTLIST = ParamTypeWord8List
paramType PARAM_GPIO_OUTPUTLIST = ParamTypeWord8List
paramType PARAM_GEN2_ACCESSPASSWORD = ParamTypeWord32
paramType PARAM_GEN2_WRITEMODE = ParamTypeGEN2_WriteMode
paramType PARAM_READ_ASYNCOFFTIME = ParamTypeWord32
paramType PARAM_READ_ASYNCONTIME = ParamTypeWord32
paramType PARAM_READ_PLAN = ParamTypeReadPlan
paramType PARAM_RADIO_ENABLEPOWERSAVE = ParamTypeBool
paramType PARAM_RADIO_POWERMAX = ParamTypeInt16
paramType PARAM_RADIO_POWERMIN = ParamTypeInt16
paramType PARAM_RADIO_READPOWER = ParamTypeInt32
paramType PARAM_RADIO_WRITEPOWER = ParamTypeInt32
paramType PARAM_RADIO_TEMPERATURE = ParamTypeInt8
paramType PARAM_TAGREADDATA_RECORDHIGHESTRSSI = ParamTypeBool
paramType PARAM_TAGREADDATA_REPORTRSSIINDBM = ParamTypeBool
paramType PARAM_TAGREADDATA_UNIQUEBYANTENNA = ParamTypeBool
paramType PARAM_TAGREADDATA_UNIQUEBYDATA = ParamTypeBool
paramType PARAM_TAGOP_ANTENNA = ParamTypeWord8
paramType PARAM_TAGOP_PROTOCOL = ParamTypeTagProtocol
paramType PARAM_VERSION_HARDWARE = ParamTypeText
paramType PARAM_VERSION_SERIAL = ParamTypeText
paramType PARAM_VERSION_MODEL = ParamTypeText
paramType PARAM_VERSION_SOFTWARE = ParamTypeText
paramType PARAM_VERSION_SUPPORTEDPROTOCOLS = ParamTypeTagProtocolList
paramType PARAM_REGION_HOPTABLE = ParamTypeWord32List
paramType PARAM_REGION_HOPTIME = ParamTypeWord32
paramType PARAM_REGION_ID = ParamTypeRegion
paramType PARAM_REGION_SUPPORTEDREGIONS = ParamTypeRegionList
paramType PARAM_REGION_LBT_ENABLE = ParamTypeBool
paramType PARAM_LICENSE_KEY = ParamTypeWord8List
paramType PARAM_RADIO_ENABLESJC = ParamTypeBool
paramType PARAM_EXTENDEDEPC = ParamTypeBool
paramType PARAM_URI = ParamTypeText
paramType PARAM_PRODUCT_GROUP_ID = ParamTypeWord16
paramType PARAM_PRODUCT_GROUP = ParamTypeText
paramType PARAM_PRODUCT_ID = ParamTypeWord16
paramType PARAM_TAGREADATA_TAGOPSUCCESSCOUNT = ParamTypeWord16
paramType PARAM_TAGREADATA_TAGOPFAILURECOUNT = ParamTypeWord16
paramType PARAM_STATUS_ENABLE_ANTENNAREPORT = ParamTypeBool
paramType PARAM_STATUS_ENABLE_FREQUENCYREPORT = ParamTypeBool
paramType PARAM_STATUS_ENABLE_TEMPERATUREREPORT = ParamTypeBool
paramType PARAM_TAGREADDATA_ENABLEREADFILTER = ParamTypeBool
paramType PARAM_TAGREADDATA_READFILTERTIMEOUT = ParamTypeInt32
paramType PARAM_TAGREADDATA_UNIQUEBYPROTOCOL = ParamTypeBool
paramType PARAM_READER_DESCRIPTION = ParamTypeText
paramType PARAM_READER_HOSTNAME = ParamTypeText
paramType PARAM_READER_WRITE_REPLY_TIMEOUT = ParamTypeWord16
paramType PARAM_READER_WRITE_EARLY_EXIT = ParamTypeBool
paramType PARAM_TRIGGER_READ_GPI = ParamTypeWord8List
paramType PARAM_METADATAFLAG = ParamTypeMetadataFlagList
paramType PARAM_LICENSED_FEATURES = ParamTypeWord8List
paramType _ = ParamTypeUnimplemented

-- | A textual representation of the Haskell type corresponding
-- to a particular 'ParamType'.
displayParamType :: ParamType -> Text
displayParamType ParamTypeBool = "Bool"
displayParamType ParamTypeGEN2_WriteMode = "GEN2_WriteMode"
displayParamType ParamTypeInt16 = "Int16"
displayParamType ParamTypeInt32 = "Int32"
displayParamType ParamTypeInt8 = "Int8"
displayParamType ParamTypePowerMode = "PowerMode"
displayParamType ParamTypeReadPlan = "ReadPlan"
displayParamType ParamTypeRegion = "Region"
displayParamType ParamTypeTagProtocol = "TagProtocol"
displayParamType ParamTypeText = "Text"
displayParamType ParamTypeWord16 = "Word16"
displayParamType ParamTypeWord32 = "Word32"
displayParamType ParamTypeWord8 = "Word8"
displayParamType ParamTypeMetadataFlagList = "[MetadataFlag]"
displayParamType ParamTypeRegionList = "[Region]"
displayParamType ParamTypeTagProtocolList = "[TagProtocol]"
displayParamType ParamTypeWord32List = "[Word32]"
displayParamType ParamTypeWord8List = "[Word8]"
displayParamType _ = "(Not yet implemented)"