module System.HID.Internal.Types where
import Foreign.C.String
import Foreign.C.Types
import Foreign.Ptr
import Foreign.Storable
type HIDDevice = ((Ptr ()))
data HIDDeviceInfo = HIDDeviceInfo {
hidPath :: CString
, hidVendorID :: CUShort
, hidProductID :: CUShort
, hidSerialNumber :: CWString
, hidReleaseNumber :: CUShort
, hidManufacturerString :: CWString
, hidProductString :: CWString
, hidUsagePage :: CUShort
, hidUsage :: CUShort
, hidInterfaceNumber :: CInt
, hidNext :: Ptr HIDDeviceInfo
} deriving (Eq,Show)
instance Storable HIDDeviceInfo where
sizeOf _ = 64
alignment _ = 8
peek p =
HIDDeviceInfo
<$> peekByteOff p (0)
<*> peekByteOff p (8)
<*> peekByteOff p (10)
<*> peekByteOff p (16)
<*> peekByteOff p (24)
<*> peekByteOff p (32)
<*> peekByteOff p (40)
<*> peekByteOff p (48)
<*> peekByteOff p (50)
<*> peekByteOff p (52)
<*> peekByteOff p (56)
poke p di = do
pokeByteOff p (0) $ hidPath di
pokeByteOff p (8) $ hidVendorID di
pokeByteOff p (10) $ hidProductID di
pokeByteOff p (16) $ hidSerialNumber di
pokeByteOff p (24) $ hidReleaseNumber di
pokeByteOff p (32) $ hidManufacturerString di
pokeByteOff p (40) $ hidProductString di
pokeByteOff p (48) $ hidUsagePage di
pokeByteOff p (50) $ hidUsage di
pokeByteOff p (52) $ hidInterfaceNumber di
pokeByteOff p (56) $ hidNext di