etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: image/svg+xml etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: Implementation overview etisserant@0: etisserant@0: HWinterfaces etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: (GUI generated .c+.h file,one per node,to compile and link with your code) etisserant@0: Node DATA CO_Datadata.h etisserant@0: OBJECT DICTIONARY etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: SCHEDULINGtimer.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: OD ACCESSobjaccess.c etisserant@0: etisserant@0: HardwareAbstactionLayer etisserant@0: CanFestival Library etisserant@0: CanOpen Protocols etisserant@0: Node Management etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: STATE MACHINEstates.c etisserant@0: CanDispatch etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: SERVICE DATA OBJECTSsdo.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: PROCESS DATA OBJECTSpdo.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: NETWORK MANAGEMENTnmtMaster.c + nmtSlave.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: SYNCHRONIZATIONsync.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: CAN DRIVERINTERFACEcan_xxx.c etisserant@0: RCV etisserant@0: TRS etisserant@0: etisserant@0: etisserant@0: etisserant@0: SYSTEM TIMERSINTERFACEtimers_xxx.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: PERSITANT STORAGEnvram.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: LED INDICATORSled.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: PERSISTANTSTORAGE INTERFACEnvram_xxx.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: LEDINTERFACEled_xxx.c etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: AUTO CAN BAUDRATElss.c etisserant@0: etisserant@0: Application(master/slave) etisserant@0: etisserant@0: etisserant@0: etisserant@0: Optional:- NVRAM- LED- CAN LSS supportInterfaces can be provideddirectly by application. etisserant@0: libcanfestival_$(TARGET).a etisserant@0: libcanfestival.a etisserant@0: etisserant@0: Mandatory:- Declare nodes callbacks- Open CAN interfaces- Initiate TImersEach 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@0: etisserant@0: etisserant@0: etisserant@0: etisserant@0: Node Callbacks:SDOtimeoutErrorheartbeatErrorcanSendinitialisationpreOperationaoperationalstoppedpost_syncpost_TPDO etisserant@0: etisserant@0: etisserant@0: etisserant@0: NodesInitialisationCalled atinitialisationof stack,once CANinterfacesopened. etisserant@0: etisserant@0: etisserant@0: