Work-in-progress native CANOpen protocol master implementation.
importData.Word (Word8)
importNetwork.CANOpen
( CANOpen(..)
, CNode(..)
, Mux(..)
, NodeID(..)
, Permission(..)
, Variable(..)
)
importqualifiedNetwork.CANOpenimportqualifiedNetwork.SocketCANoutputs::VariableWord8
outputs =Variable
{ variableName ="Outputs"
, variableMux =Mux0x60001
, variablePerm =Permission_ReadWrite
}
main::IO()
main =doNetwork.SocketCAN.withSocketCAN (Network.SocketCAN.mkCANInterface "vcan0") $\can ->Network.CANOpen.withCANOpen can $\CANOpen{..} ->do
io <- canOpenAddNode (NodeID1)
cNodeSDOWrite io outputs 0b1
cNodeSDORead io outputs
>>=putStrLn.show