Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 1.09 KB

File metadata and controls

42 lines (33 loc) · 1.09 KB

network-canopen

GitHub Workflow Status Hackage version

Work-in-progress native CANOpen protocol master implementation.

Usage

import Data.Word (Word8)
import Network.CANOpen
  ( CANOpen(..)
  , CNode(..)
  , Mux(..)
  , NodeID(..)
  , Permission(..)
  , Variable(..)
  )

import qualified Network.CANOpen
import qualified Network.SocketCAN

outputs :: Variable Word8
outputs =
  Variable
  { variableName = "Outputs"
  , variableMux  = Mux 0x6000 1
  , variablePerm = Permission_ReadWrite
  }

main :: IO ()
main = do
  Network.SocketCAN.withSocketCAN (Network.SocketCAN.mkCANInterface "vcan0") $ \can ->
    Network.CANOpen.withCANOpen can $ \CANOpen{..} -> do

      io <- canOpenAddNode (NodeID 1)

      cNodeSDOWrite io outputs 0b1
      cNodeSDORead io outputs
      >>= putStrLn . show