# HG changeset patch # User etisserant # Date 1176454623 -7200 # Node ID b505f7116a1cb427a2f36a7ae0a0a2b5ee9d2cab # Parent 8b45ff4202c3caaa7db1925c555b2f48a063ed12 Moved DS-301 PDF into objdictgen. Fixed installation on linux. Now TestMasterSlave is also installed in $PREFIX/bin. diff -r 8b45ff4202c3 -r b505f7116a1c .cvsignore --- a/.cvsignore Thu Apr 12 17:11:16 2007 +0200 +++ b/.cvsignore Fri Apr 13 10:57:03 2007 +0200 @@ -15,3 +15,4 @@ Pcan_2pcc.dll Pcan_pcc.dll Release +.pydevproject diff -r 8b45ff4202c3 -r b505f7116a1c CONTRIBUTORS --- a/CONTRIBUTORS Thu Apr 12 17:11:16 2007 +0200 +++ b/CONTRIBUTORS Fri Apr 13 10:57:03 2007 +0200 @@ -2,11 +2,14 @@ Contributors : ============== +Leonid Tochinski ltochinski _at_ chattenassociates.com ( native win32 port (visual studio)) + Raphael Zulliger (author of slavelib project) -Camille BOSSARD -David DUMINY (sté A6R) -Laurent ROMIEUX -Zakaria BELAMRI +Other unsorted contribs: + Camille BOSSARD + David DUMINY (sté A6R) + Laurent ROMIEUX + Zakaria BELAMRI Many thanks to the main contributors for their great work. diff -r 8b45ff4202c3 -r b505f7116a1c Makefile.in --- a/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -38,11 +38,14 @@ install: canfestival driver $(MAKE) -C drivers $@ $(MAKE) -C src $@ + $(MAKE) -C examples $@ $(MAKE) -C objdictgen $@ + ldconfig uninstall: $(MAKE) -C drivers $@ $(MAKE) -C src $@ + $(MAKE) -C examples $@ $(MAKE) -C objdictgen $@ clean: diff -r 8b45ff4202c3 -r b505f7116a1c doc/301_v04000201.pdf Binary file doc/301_v04000201.pdf has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/about.html --- a/doc/about.html Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ - - -
- -

-CanFestival is an OpenSource (LGPL) CANOpen framework. -

-http://canfestival.sourceforge.net -

-Copyright ©: Edouard TISSERANT, Francis DUPIN and Laurent BESSARD -

-Version: CAN Festival 3.0 -

- - - - - - - - - -
- Contributor : - - LIVIC
- http://www.inrets.fr/ur/livic -
- Supported by : - - LOLITech
- http://www.lolitech.fr -
-
- - \ No newline at end of file diff -r 8b45ff4202c3 -r b505f7116a1c doc/architecture.sxd Binary file doc/architecture.sxd has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival.gif Binary file doc/canfestival.gif has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival.html --- a/doc/canfestival.html Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ - - -
- -


- -


- -
- - \ No newline at end of file diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_CAN.png Binary file doc/canfestival_CAN.png has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_OS.png Binary file doc/canfestival_OS.png has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_OS.svg --- a/doc/canfestival_OS.svg Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1303 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - My_App.c - - - - - CanSend - - - - CAN driver interfacecan_xxx.c)canOpen_drivercanClose_drivercanSend_drivercanReceive_driver - - OSinterface - - - SYSTEM TIMERSINTERFACE(timers_xxx.c)CreateReceiveTaskWaitReceiveTaskEnd(Start/Stop)TimerLoop - - - - ThreadCANReceiveLoop - - Timer - - - - - - - - - - - - - - - - - - - - creates/stopthread - - - - } - - - - - SCHEDULINGtimer.cTimeDispatch - - CanFestival Library - - - - - - CANDISPATCHINGstates.ccanDispatch - - - - - - mutex - - - - - creates/stoptimer - - - - createsmutex - - #include canfestival.h //GUI generated header #include MyNode.hvoid InitNode(CO_Data* d, UNS32 id){ setNodeId(&MyNode_Data, 0x01); setState(&MyNode_Data, Initialisation);}void Operational(){ /* Your code for Operational State */}int main(int argc, char *argv[]){ LoadCanDriver("can_peak_win32.dll"); MyNode_Data.operational = Operational; s_BOARD MyBoard = {"0", "500K"}; MyCanHandle = canOpen(&MyBoard,&MyNode_Data); StartTimerLoop(&InitNode); /* Your Code Here */ StopTimerLoop(); canClose(&MyNode_Data);} - - - unix.c or win32.c - - CAN_xxx .dll/.so - - - LoadCanDriver - - - - canOpen - - - - - - - - canClose - - - - - - - - Callbacks - Predefined or OD entry accesscallbacks registered withRegisterSetODentryCallBack - - - - - - - - - - - - - - Register the predefined"On Operational State" callback. - Start the scheduler with InitNode as the firstscheduled function call. - - - - - - - - Always surround stack calls withEnterMutex()LeaveMutex() - - ! - - - Load the CAN interfacedynamic linking library (optional) - - Open Can poard and associateit with the CanOpen node. - - CanFestival integration with Unix and win32 OS - - diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_OSless.png Binary file doc/canfestival_OSless.png has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_OSless.svg --- a/doc/canfestival_OSless.svg Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,661 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - CanFestival interface to target(on OS-less targets) - - - - - - SCHEDULINGtimer.cTimeDispatch - - CanFestival Library - - - - - - - Application - - - Callbacks - - - - - CANDISPATCHINGstates.ccanDispatch - - - - - - - - - - HW interfaces (for µC) - - - CAN DRIVERINTERFACE(can_xxx.c)canSendcanReceiveLoop - - - - SYSTEM TIMERSINTERFACE(timers_xxx.c)CreateReceiveTaskTimerLoop - - - - CANreceiveIRQ - - - - - - TIMERIRQ - - - - - - - diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_overview.png Binary file doc/canfestival_overview.png has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_overview.svg --- a/doc/canfestival_overview.svg Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1153 +0,0 @@ - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - Implementation overview - - - Targetinterface - - - - - - - - - - (GUI generated .c+.h file,one per node,to compile and link with your code) - Node DATA CO_Datadata.h - OBJECT DICTIONARY - - - - - OD ACCESSobjaccess.c - - CanFestival Library - CanOpen Protocols - Node Management - - - - - - - - - - STATE MACHINEstates.c - CanDispatch - - - - - - - - - SERVICE DATA OBJECTSsdo.c - - - - PROCESS DATA OBJECTSpdo.c - - - - NETWORK MANAGEMENTnmtMaster.c + nmtSlave.c - - - - SYNCHRONIZATIONsync.c - - - - - - AUTO CAN BAUDRATElss.c - - Application(master/slave) - - - - libcanfestival_$(CAN_DRIVER).so$(CAN_DRIVER).dll,cyg$(CAN_DRIVER).dll - libcanfestival.a - - 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. - - - - - Node Callbacks:SDOtimeoutErrorheartbeatErrorcanSendinitialisationpreOperationaoperationalstoppedpost_syncpost_TPDO - - - - NodesInitialisationCalled atinitialisationof stack,once CANinterfacesopened. - - - - - - SCHEDULINGtimer.c - - - - SYSTEM TIMERSINTERFACEtimers_xxx.c - - libcanfestival_$(TARGET).acanfestival_$(TARGET).lib - - - - - - OS interfaceunix.corwin32.c - - - CAN DRIVERINTERFACEcan_xxx.c - RCV - TRS - - CANinterface - Dynamicaly loadedor Linked - - diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_scheduling.png Binary file doc/canfestival_scheduling.png has changed diff -r 8b45ff4202c3 -r b505f7116a1c doc/canfestival_scheduling.svg --- a/doc/canfestival_scheduling.svg Thu Apr 12 17:11:16 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,855 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - CanFestival Scheduling - - - - - - Alarm A value - - - - - - - - - - - Alarm Bvalue - Alarm Bperiod - - Alarm Bperiod - - - - - Alarm Bperiod - Alarm Bperiod - - - Clock range - t0 - t1 - t2 - t3 - t4 - t5 - t6 - t7 - t8 - Clock value - Time - - A CanOpen must be able to take delayed actions. As exemples, periodic sync emission, heartbeat production or SDO timeout need to set some alarms that will be called later and do the job.µC generaly do not have many anough free timers to handle all the CanOpen needs directly. Moreover, CanFestival internal data may be corrupt by reentrant calls. CanFestival implement a mini-scheduler (timer.c). It uses only one timer to mimic many timers. It manage an alarm table, and call alarms at time.Scheduler can handle short clock value ranges limitation found on some µC. As an example, value range for a 16bit clock counter with 4µs tick is crossed within 0.26 seconds... Long alarms must be segmented.Chronogram illustrate a long alarm (A) and a short periodic alarm (B), with a A value > clock range > B value. Values t0...t8 are successive setTimer values. t1 illustrates an intermediate call to TimeDispatch, caused by a delay longer than clock range. At the end of t1, TimeDispatch call will not trig any alarm callback. - - - HW interfaces - - - - - SCHEDULINGtimer.cSetAlarmDelAlarmTimeDispatch - - - - SYSTEM TIMERSINTERFACE(timers_xxx.c)setTimergetElapsedTime - - - - - - - - - - - - - - - - - - - - - - CanFestival Library - - - - - - - - - - - - Application - - - Callbacks - - - - - - - diff -r 8b45ff4202c3 -r b505f7116a1c doc/manual/en/canfestival_OS.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/manual/en/canfestival_OS.svg Fri Apr 13 10:57:03 2007 +0200 @@ -0,0 +1,1303 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + My_App.c + + + + + CanSend + + + + CAN driver interfacecan_xxx.c)canOpen_drivercanClose_drivercanSend_drivercanReceive_driver + + OSinterface + + + SYSTEM TIMERSINTERFACE(timers_xxx.c)CreateReceiveTaskWaitReceiveTaskEnd(Start/Stop)TimerLoop + + + + ThreadCANReceiveLoop + + Timer + + + + + + + + + + + + + + + + + + + + creates/stopthread + + + + } + + + + + SCHEDULINGtimer.cTimeDispatch + + CanFestival Library + + + + + + CANDISPATCHINGstates.ccanDispatch + + + + + + mutex + + + + + creates/stoptimer + + + + createsmutex + + #include canfestival.h //GUI generated header #include MyNode.hvoid InitNode(CO_Data* d, UNS32 id){ setNodeId(&MyNode_Data, 0x01); setState(&MyNode_Data, Initialisation);}void Operational(){ /* Your code for Operational State */}int main(int argc, char *argv[]){ LoadCanDriver("can_peak_win32.dll"); MyNode_Data.operational = Operational; s_BOARD MyBoard = {"0", "500K"}; MyCanHandle = canOpen(&MyBoard,&MyNode_Data); StartTimerLoop(&InitNode); /* Your Code Here */ StopTimerLoop(); canClose(&MyNode_Data);} + + + unix.c or win32.c + + CAN_xxx .dll/.so + + + LoadCanDriver + + + + canOpen + + + + + + + + canClose + + + + + + + + Callbacks + Predefined or OD entry accesscallbacks registered withRegisterSetODentryCallBack + + + + + + + + + + + + + + Register the predefined"On Operational State" callback. + Start the scheduler with InitNode as the firstscheduled function call. + + + + + + + + Always surround stack calls withEnterMutex()LeaveMutex() + + ! + + + Load the CAN interfacedynamic linking library (optional) + + Open Can poard and associateit with the CanOpen node. + + CanFestival integration with Unix and win32 OS + + diff -r 8b45ff4202c3 -r b505f7116a1c doc/manual/en/canfestival_OSless.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/manual/en/canfestival_OSless.svg Fri Apr 13 10:57:03 2007 +0200 @@ -0,0 +1,661 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + CanFestival interface to target(on OS-less targets) + + + + + + SCHEDULINGtimer.cTimeDispatch + + CanFestival Library + + + + + + + Application + + + Callbacks + + + + + CANDISPATCHINGstates.ccanDispatch + + + + + + + + + + HW interfaces (for µC) + + + CAN DRIVERINTERFACE(can_xxx.c)canSendcanReceiveLoop + + + + SYSTEM TIMERSINTERFACE(timers_xxx.c)CreateReceiveTaskTimerLoop + + + + CANreceiveIRQ + + + + + + TIMERIRQ + + + + + + + diff -r 8b45ff4202c3 -r b505f7116a1c doc/manual/en/canfestival_overview.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/manual/en/canfestival_overview.svg Fri Apr 13 10:57:03 2007 +0200 @@ -0,0 +1,1153 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + Implementation overview + + + Targetinterface + + + + + + + + + + (GUI generated .c+.h file,one per node,to compile and link with your code) + Node DATA CO_Datadata.h + OBJECT DICTIONARY + + + + + OD ACCESSobjaccess.c + + CanFestival Library + CanOpen Protocols + Node Management + + + + + + + + + + STATE MACHINEstates.c + CanDispatch + + + + + + + + + SERVICE DATA OBJECTSsdo.c + + + + PROCESS DATA OBJECTSpdo.c + + + + NETWORK MANAGEMENTnmtMaster.c + nmtSlave.c + + + + SYNCHRONIZATIONsync.c + + + + + + AUTO CAN BAUDRATElss.c + + Application(master/slave) + + + + libcanfestival_$(CAN_DRIVER).so$(CAN_DRIVER).dll,cyg$(CAN_DRIVER).dll + libcanfestival.a + + 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. + + + + + Node Callbacks:SDOtimeoutErrorheartbeatErrorcanSendinitialisationpreOperationaoperationalstoppedpost_syncpost_TPDO + + + + NodesInitialisationCalled atinitialisationof stack,once CANinterfacesopened. + + + + + + SCHEDULINGtimer.c + + + + SYSTEM TIMERSINTERFACEtimers_xxx.c + + libcanfestival_$(TARGET).acanfestival_$(TARGET).lib + + + + + + OS interfaceunix.corwin32.c + + + CAN DRIVERINTERFACEcan_xxx.c + RCV + TRS + + CANinterface + Dynamicaly loadedor Linked + + diff -r 8b45ff4202c3 -r b505f7116a1c doc/manual/en/canfestival_scheduling.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/manual/en/canfestival_scheduling.svg Fri Apr 13 10:57:03 2007 +0200 @@ -0,0 +1,855 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + CanFestival Scheduling + + + + + + Alarm A value + + + + + + + + + + + Alarm Bvalue + Alarm Bperiod + + Alarm Bperiod + + + + + Alarm Bperiod + Alarm Bperiod + + + Clock range + t0 + t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + Clock value + Time + + A CanOpen must be able to take delayed actions. As exemples, periodic sync emission, heartbeat production or SDO timeout need to set some alarms that will be called later and do the job.µC generaly do not have many anough free timers to handle all the CanOpen needs directly. Moreover, CanFestival internal data may be corrupt by reentrant calls. CanFestival implement a mini-scheduler (timer.c). It uses only one timer to mimic many timers. It manage an alarm table, and call alarms at time.Scheduler can handle short clock value ranges limitation found on some µC. As an example, value range for a 16bit clock counter with 4µs tick is crossed within 0.26 seconds... Long alarms must be segmented.Chronogram illustrate a long alarm (A) and a short periodic alarm (B), with a A value > clock range > B value. Values t0...t8 are successive setTimer values. t1 illustrates an intermediate call to TimeDispatch, caused by a delay longer than clock range. At the end of t1, TimeDispatch call will not trig any alarm callback. + + + HW interfaces + + + + + SCHEDULINGtimer.cSetAlarmDelAlarmTimeDispatch + + + + SYSTEM TIMERSINTERFACE(timers_xxx.c)setTimergetElapsedTime + + + + + + + + + + + + + + + + + + + + + + CanFestival Library + + + + + + + + + + + + Application + + + Callbacks + + + + + + + diff -r 8b45ff4202c3 -r b505f7116a1c doc/manual/en/manual.pdf Binary file doc/manual/en/manual.pdf has changed diff -r 8b45ff4202c3 -r b505f7116a1c drivers/can_lincan/Makefile.in --- a/drivers/can_lincan/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/drivers/can_lincan/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -56,7 +56,7 @@ install: libcanfestival_$(CAN_DRIVER).so mkdir -p $(PREFIX)/lib/ - cp $@ $(PREFIX)/lib/ + cp $< $(PREFIX)/lib/ uninstall: rm -f $(TARGET_HFILES) diff -r 8b45ff4202c3 -r b505f7116a1c drivers/can_peak_linux/Makefile.in --- a/drivers/can_peak_linux/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/drivers/can_peak_linux/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -57,8 +57,8 @@ install: libcanfestival_$(CAN_DRIVER).so mkdir -p $(PREFIX)/lib/ - cp $@ $(PREFIX)/lib/ - + cp $< $(PREFIX)/lib/ + uninstall: rm -f $(TARGET_SOFILES) diff -r 8b45ff4202c3 -r b505f7116a1c drivers/can_peak_win32/Makefile.in --- a/drivers/can_peak_win32/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/drivers/can_peak_win32/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -62,8 +62,8 @@ install: libcanfestival_$(CAN_DRIVER).so mkdir -p $(PREFIX)/lib/ - cp $@ $(PREFIX)/lib/ - + cp $< $(PREFIX)/lib/ + uninstall: rm -f $(TARGET_SOFILES) diff -r 8b45ff4202c3 -r b505f7116a1c drivers/can_socket/Makefile.in --- a/drivers/can_socket/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/drivers/can_socket/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -57,7 +57,7 @@ install: libcanfestival_$(CAN_DRIVER).so mkdir -p $(PREFIX)/lib/ - cp $@ $(PREFIX)/lib/ + cp $< $(PREFIX)/lib/ uninstall: rm -f $(TARGET_SOFILES) diff -r 8b45ff4202c3 -r b505f7116a1c drivers/can_virtual/Makefile.in --- a/drivers/can_virtual/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/drivers/can_virtual/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -57,7 +57,7 @@ install: libcanfestival_$(CAN_DRIVER).so mkdir -p $(PREFIX)/lib/ - cp $@ $(PREFIX)/lib/ + cp $< $(PREFIX)/lib/ uninstall: rm -f $(TARGET_SOFILES) diff -r 8b45ff4202c3 -r b505f7116a1c examples/Makefile.in --- a/examples/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/examples/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -47,4 +47,12 @@ $(MAKE) -C TestMasterSlave $@ endif +install: +ifeq ($(TARGET),unix) + $(MAKE) -C TestMasterSlave $@ +endif +uninstall: +ifeq ($(TARGET),unix) + $(MAKE) -C TestMasterSlave $@ +endif diff -r 8b45ff4202c3 -r b505f7116a1c examples/TestMasterSlave/Makefile.in --- a/examples/TestMasterSlave/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/examples/TestMasterSlave/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -71,6 +71,12 @@ rm -f TestSlave.c rm -f TestMaster.c +install: TestMasterSlave + mkdir -p $(PREFIX)/bin/ + cp $< $(PREFIX)/bin/ + +uninstall: + rm -f $(PREFIX)/bin/TestMasterSlave diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/Makefile.in --- a/objdictgen/Makefile.in Thu Apr 12 17:11:16 2007 +0200 +++ b/objdictgen/Makefile.in Fri Apr 13 10:57:03 2007 +0200 @@ -34,13 +34,13 @@ rm -rf Gnosis_Utils-1.2.1 install: gnosis - cp -r ../objdictgen $(PREFIX)/ - rm -f $(PREFIX)/objdictgen/Gnosis_Utils-1.2.1.tar.gz + mkdir -p $(PREFIX)/objdictgen + cp -r *.py* *.sh config doc doc_index examples gnosis $(PREFIX)/objdictgen chmod -R a+r $(PREFIX)/objdictgen mkdir -p $(PREFIX)/bin - ln -s $(PREFIX)/objdictgen/objdictedit.py $(PREFIX)/bin/objdictedit + ln -sf $(PREFIX)/objdictgen/objdictedit.py $(PREFIX)/bin/objdictedit chmod 755 $(PREFIX)/objdictgen/objdictedit.py - ln -s $(PREFIX)/objdictgen/objdictgen.py $(PREFIX)/bin/objdictgen + ln -sf $(PREFIX)/objdictgen/objdictgen.py $(PREFIX)/bin/objdictgen chmod 755 $(PREFIX)/objdictgen/objdictgen.py uninstall: diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/doc/301_v04000201.pdf Binary file objdictgen/doc/301_v04000201.pdf has changed diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/doc/about.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/objdictgen/doc/about.html Fri Apr 13 10:57:03 2007 +0200 @@ -0,0 +1,36 @@ + + +
+ +

+CanFestival is an OpenSource (LGPL) CANOpen framework. +

+http://canfestival.sourceforge.net +

+Copyright ©: Edouard TISSERANT, Francis DUPIN and Laurent BESSARD +

+Version: CAN Festival 3.0 +

+ + + + + + + + + +
+ Contributor : + + LIVIC
+ http://www.inrets.fr/ur/livic +
+ Supported by : + + LOLITech
+ http://www.lolitech.fr +
+
+ + \ No newline at end of file diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/doc/canfestival.gif Binary file objdictgen/doc/canfestival.gif has changed diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/doc/manual_en.pdf Binary file objdictgen/doc/manual_en.pdf has changed diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/doc_index/DS301_index.py --- a/objdictgen/doc_index/DS301_index.py Thu Apr 12 17:11:16 2007 +0200 +++ b/objdictgen/doc_index/DS301_index.py Fri Apr 13 10:57:03 2007 +0200 @@ -6,14 +6,14 @@ DS301_PDF_INDEX = {0x1000: 86, 0x1001: 87, 0x1002: 87, 0x1003: 88, 0x1005: 89, 0x1006: 90, 0x1007: 90, 0x1008: 91, 0x1009: 91, 0x100A: 91, 0x100C: 92, 0x100D: 92, 0x1010: 92, 0x1011: 94, 0x1012: 97, 0x1013: 98, 0x1014: 98, 0x1015: 99, 0x1016: 100, 0x1017: 101, 0x1018: 101, 0x1020: 117, 0x1200: 103, 0x1201: 103, 0x1280: 105, 0x1400: 106, 0x1600: 109, 0x1800: 111, 0x1A00: 112} def OpenPDFDocIndex(index, cwd): - if not os.path.isfile(os.path.join(cwd, "../doc/301_v04000201.pdf")): + if not os.path.isfile(os.path.join(cwd, "doc/301_v04000201.pdf")): return """No documentation file available. Please read can festival documentation to know how to obtain one.""" try: if index in DS301_PDF_INDEX: - os.system("xpdf -remote DS301 %s %d &"%(os.path.join(cwd, "../doc/301_v04000201.pdf"), DS301_PDF_INDEX[index])) + os.system("xpdf -remote DS301 %s %d &"%(os.path.join(cwd, "doc/301_v04000201.pdf"), DS301_PDF_INDEX[index])) else: - os.system("xpdf -remote DS301 %s &"%os.path.join(cwd, "../doc/301_v04000201.pdf")) + os.system("xpdf -remote DS301 %s &"%os.path.join(cwd, "doc/301_v04000201.pdf")) return True except: return """Check if xpdf is correctly installed on your computer""" diff -r 8b45ff4202c3 -r b505f7116a1c objdictgen/objdictedit.py --- a/objdictgen/objdictedit.py Thu Apr 12 17:11:16 2007 +0200 +++ b/objdictgen/objdictedit.py Fri Apr 13 10:57:03 2007 +0200 @@ -1,4 +1,3 @@ -#Boa:Frame:objdictedit #!/usr/bin/env python # -*- coding: utf-8 -*- @@ -125,7 +124,7 @@ sys.exit() filesOpen = args -WorkingDirectory = sys.path[0] +ScriptDirectory = sys.path[0] ColSizes = [75, 250, 150, 125, 100, 60, 250] ColAlignements = [wxALIGN_CENTER, wxALIGN_LEFT, wxALIGN_CENTER, wxALIGN_RIGHT, wxALIGN_CENTER, wxALIGN_CENTER, wxALIGN_LEFT] @@ -1059,13 +1058,13 @@ if result: find_index = True index, subIndex = result - result = OpenPDFDocIndex(index, WorkingDirectory) + result = OpenPDFDocIndex(index, ScriptDirectory) if type(result) == StringType: message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR) message.ShowModal() message.Destroy() if not find_index: - result = OpenPDFDocIndex(None, WorkingDirectory) + result = OpenPDFDocIndex(None, ScriptDirectory) if type(result) == StringType: message = wxMessageDialog(self, result, "ERROR", wxOK|wxICON_ERROR) message.ShowModal() @@ -1073,12 +1072,12 @@ event.Skip() def OnHelpCANFestivalMenu(self, event): - #self.OpenHtmlFrame("CAN Festival Reference", os.path.join(WorkingDirectory, "../doc/canfestival.html"), wx.Size(1000, 600)) - os.system("xpdf -remote CANFESTIVAL %s %d &"%(os.path.join(WorkingDirectory, "../doc/manual/en/manual.pdf"),16)) + #self.OpenHtmlFrame("CAN Festival Reference", os.path.join(ScriptDirectory, "doc/canfestival.html"), wx.Size(1000, 600)) + os.system("xpdf -remote CANFESTIVAL %s %d &"%(os.path.join(ScriptDirectory, "doc/manual_en.pdf"),16)) event.Skip() def OnAboutMenu(self, event): - self.OpenHtmlFrame("About CAN Festival", os.path.join(WorkingDirectory, "../doc/about.html"), wx.Size(500, 450)) + self.OpenHtmlFrame("About CAN Festival", os.path.join(ScriptDirectory, "doc/about.html"), wx.Size(500, 450)) event.Skip() def OpenHtmlFrame(self, title, file, size): @@ -2196,7 +2195,7 @@ self.Type.SetStringSelection("slave") self.ListProfile = {"None" : ""} self.Profile.Append("None") - self.Directory = os.path.join(os.getcwd(), "config") + self.Directory = os.path.join(ScriptDirectory, "config") listfiles = os.listdir(self.Directory) listfiles.sort() for item in listfiles: