packages feed

udev-0.0.0.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
    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
        BC.putStrLn $ BS.concat
          [ "VID/PID: ", getSysattrValue pdev "idVendor" , " "
                       , getSysattrValue pdev "idProduct", "\n"
          , getSysattrValue pdev "manufacturer", "\n"
          , getSysattrValue pdev "product"     , "\n"
--          , "serial: ",  getSysattrValue pdev "serial"
          ]
    return ()