Work-in-progress native CANOpen protocol master implementation.
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