etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: image/svg+xml etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: Implementation overview etisserant@158: etisserant@158: etisserant@158: Targetinterface etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: (GUI generated .c+.h file,one per node,to compile and link with your code) etisserant@158: Node DATA CO_Datadata.h etisserant@158: OBJECT DICTIONARY etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: OD ACCESSobjaccess.c etisserant@158: etisserant@158: CanFestival Library etisserant@158: CanOpen Protocols etisserant@158: Node Management etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: STATE MACHINEstates.c etisserant@158: CanDispatch etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: SERVICE DATA OBJECTSsdo.c etisserant@158: etisserant@158: etisserant@158: etisserant@158: PROCESS DATA OBJECTSpdo.c etisserant@158: etisserant@158: etisserant@158: etisserant@158: NETWORK MANAGEMENTnmtMaster.c + nmtSlave.c etisserant@158: etisserant@158: etisserant@158: etisserant@158: SYNCHRONIZATIONsync.c etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: AUTO CAN BAUDRATElss.c etisserant@158: etisserant@158: Application(master/slave) etisserant@158: etisserant@158: etisserant@158: etisserant@158: libcanfestival_$(CAN_DRIVER).so$(CAN_DRIVER).dll,cyg$(CAN_DRIVER).dll etisserant@158: libcanfestival.a etisserant@158: etisserant@158: Mandatory:- Open CAN interfaces- Initiate TImersOptional:- Declare some callbacksEach call to the CanFestival API provide a pointer to the related node's CO_Data struct.In order to respect data integrity in the stack, all calls to the API should be made from mandatory nodes callback. etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: Node Callbacks:SDOtimeoutErrorheartbeatErrorcanSendinitialisationpreOperationaoperationalstoppedpost_syncpost_TPDO etisserant@158: etisserant@158: etisserant@158: etisserant@158: NodesInitialisationCalled atinitialisationof stack,once CANinterfacesopened. etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: SCHEDULINGtimer.c etisserant@158: etisserant@158: etisserant@158: etisserant@158: SYSTEM TIMERSINTERFACEtimers_xxx.c etisserant@158: etisserant@158: libcanfestival_$(TARGET).acanfestival_$(TARGET).lib etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: etisserant@158: OS interfaceunix.corwin32.c etisserant@158: etisserant@158: etisserant@158: CAN DRIVERINTERFACEcan_xxx.c etisserant@158: RCV etisserant@158: TRS etisserant@158: etisserant@158: CANinterface etisserant@158: Dynamicaly loadedor Linked etisserant@158: etisserant@158: