udev-0.1.1.0: examples/hidraw.hs
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Data.ByteString as BS
import Data.ByteString.Char8 as BC
import System.UDev.Context
import System.UDev.Device
import System.UDev.Enumerate
import System.UDev.List
main :: IO ()
main = do
withUDev $ \ udev -> do
e <- newEnumerate udev
addMatchSubsystem e "hidraw"
scanDevices e
Just ls <- getListEntry e
path <- getName ls
print path
dev <- newFromSysPath udev path
print $ getDevnode dev
mdev <- getParentWithSubsystemDevtype dev "usb" "usb_device"
case mdev of
Nothing -> BC.putStrLn "unable to find parent usb device"
Just pdev -> do
vid <- getSysattrValue pdev "idVendor"
pid <- getSysattrValue pdev "idProduct"
manifacturer <- getSysattrValue pdev "manufacturer"
productName <- getSysattrValue pdev "product"
BC.putStrLn $ BS.concat
[ "VID/PID: ", vid, " "
, pid, "\n"
, manifacturer, "\n"
, productName , "\n"
-- , "serial: ", getSysattrValue pdev "serial"
]
return ()