module Bindings.Libpafe.Types(
Felica(..)
,Pasori
,CUInt8
,CUInt16
,FelicaBlockInfo(..)
)
where
import Foreign.Ptr
import Foreign.C.Types
import Foreign.Storable
import Foreign.Marshal.Array
import Data.Word
type CUInt8 = Word8
type CUInt16 = Word16
data Pasori
data Felica = Felica {
p :: Ptr Pasori
,systemCode :: CUInt16
,idm :: [CUInt8]
,pmm :: [CUInt8]
,areaNum :: CUInt16
,felicaArea :: [Area]
,serviceNum:: CUInt16
,service :: [Area]
,nextFelica :: Ptr Felica
}
data Area = Area {
code :: CUInt16
,attr :: CUInt16
,bin :: CUInt16
,nextArea :: Ptr Area
}
data FelicaBlockInfo = FelicaBlockInfo {
blockService :: CUInt16
,mode :: CUInt8
,block :: CUInt16
}
data FelicaBlock = FelicaBlock {
blockData :: [CUInt8]
}
instance Storable Felica where
sizeOf x = (8240)
alignment = sizeOf
peek ptr = do
p <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
sc <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
idm <- peekArray 8 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 10)) ptr
pmm <- peekArray 8 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 18)) ptr
an <- ((\hsc_ptr -> peekByteOff hsc_ptr 26)) ptr
fa <- peekArray 256 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 32)) ptr
sn <- ((\hsc_ptr -> peekByteOff hsc_ptr 4128)) ptr
s <- peekArray 256 $ ((\hsc_ptr -> hsc_ptr `plusPtr` 4136)) ptr
n <- ((\hsc_ptr -> peekByteOff hsc_ptr 8232)) ptr
return $ Felica p sc idm pmm an fa sn s n
poke ptr (Felica p sc idm pmm an fa sn s n) = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr p
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr sc
pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 10)) ptr) idm
pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 18)) ptr) pmm
((\hsc_ptr -> pokeByteOff hsc_ptr 26)) ptr an
pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 32)) ptr) fa
((\hsc_ptr -> pokeByteOff hsc_ptr 4128)) ptr sn
pokeArray (((\hsc_ptr -> hsc_ptr `plusPtr` 4136)) ptr) s
((\hsc_ptr -> pokeByteOff hsc_ptr 8232)) ptr n
instance Storable Area where
sizeOf x = (16)
alignment = sizeOf
peek ptr = do
cde <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
attrb <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
binary <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
nextarea <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
return $ Area cde attrb binary nextarea
poke ptr (Area cde attrib binary nextarea) = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr cde
((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr attrib
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr binary
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr nextarea
instance Storable FelicaBlockInfo where
sizeOf x = (6)
alignment = sizeOf
peek ptr = do
svc <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
md <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
blk <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) ptr
return $ FelicaBlockInfo svc md blk
poke ptr (FelicaBlockInfo svc md blk) = do
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr svc
((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr md
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr blk
instance Show FelicaBlockInfo where
show = show . block
instance Show Felica where
show = show . idm
instance Show Area where
show = show . code