Presentation is loading. Please wait.

Presentation is loading. Please wait.

March 19th 2007 TANGO collaboration 1 POGO-7 Pascal Verdier ESRF- Hamburg - 25 th of October 2010 A Short History of Pogo A Short History of Pogo New Technology.

Similar presentations


Presentation on theme: "March 19th 2007 TANGO collaboration 1 POGO-7 Pascal Verdier ESRF- Hamburg - 25 th of October 2010 A Short History of Pogo A Short History of Pogo New Technology."— Presentation transcript:

1 March 19th 2007 TANGO collaboration 1 POGO-7 Pascal Verdier ESRF- Hamburg - 25 th of October 2010 A Short History of Pogo A Short History of Pogo New Technology New Technology New Features New Features Preferences Preferences Generated code Generated code Pogo-6 compatibility Pogo-6 compatibility Conclusions Conclusions

2 POGO-7 Pogo History TANGO Meeting 2 The goal of Pogo: The goal of Pogo: Use a simple GUI to define device classes. Use a simple GUI to define device classes. Write a class easily without re-invent “how to” every time. Write a class easily without re-invent “how to” every time. Have classes based on same skeleton. Have classes based on same skeleton. Share classes. Share classes. Allow everybody to maintain or modify code Allow everybody to maintain or modify code Help programmer to dance the (good and same) TANGO.

3 POGO-7 Pogo History TANGO Meeting 3 It is a Java tool started in 1999. It is a Java tool started in 1999. It was based on very basic parsing technology. It was based on very basic parsing technology. For 10 years, the Tango devices have been subjected to many evolutions and features: For 10 years, the Tango devices have been subjected to many evolutions and features: Java and C++ APIs diverged, Java and C++ APIs diverged, The attribute model changed for C++, The attribute model changed for C++, The inheritance (in C++) must be managed, The inheritance (in C++) must be managed, A 3rd language (python) has been added, A 3rd language (python) has been added, IDL change (IDL-4 for C++ and Python and IDL-2 for Java), IDL change (IDL-4 for C++ and Python and IDL-2 for Java), New Types, New Types, Polling, Polling, Event push. Event push. The Tango community has grown up: The Tango community has grown up: 300 device classes on sourceforge. 300 device classes on sourceforge. 180 device classes on ESRF repository. 180 device classes on ESRF repository. Many device classes in each institute repository. Many device classes in each institute repository.

4 POGO-7 Pogo History TANGO Meeting 4 The backward and universal compatibility is more and more difficult to be maintained with an in house parsing. The backward and universal compatibility is more and more difficult to be maintained with an in house parsing. So we would like to re-write it with an advanced parsing tool. So we would like to re-write it with an advanced parsing tool. And openArchitectureWare (oAW) seems to be a good candidate to base this new development.

5 POGO-7 New Technology TANGO Meeting 5 MDA/MDD: Model Driven Architecture Model Driven Development. openArchitectureWare : openArchitectureWare : It is a modular MDA/MDD generator framework implemented in Java(TM). It is a modular MDA/MDD generator framework implemented in Java(TM). It supports parsing of arbitrary models, and a language family to check and transform models as well as generate code based on them. It supports parsing of arbitrary models, and a language family to check and transform models as well as generate code based on them. Supporting editors are based on Eclipse platform. oAW has strong support for EMF (Eclipse Model Framework) based model. Supporting editors are based on Eclipse platform. oAW has strong support for EMF (Eclipse Model Framework) based model. It uses the Xtext/Xpand technology. It uses the Xtext/Xpand technology. The TANGO class model is defined with Eclipse using xtext grammar. The TANGO class model is defined with Eclipse using xtext grammar. oAW will generate a java API with classes and methods for commands, attributes, properties,... oAW will generate a java API with classes and methods for commands, attributes, properties,... The TANGO class code is defined by templates with Eclipse, using Xpand language. The TANGO class code is defined by templates with Eclipse, using Xpand language. This template can contain protected zones for programmer code. This template can contain protected zones for programmer code.

6 POGO-7 New Technology TANGO Meeting 6 Development diagram: Development diagram:

7 POGO-7 New Technology TANGO Meeting 7 Tool principle diagram: Tool principle diagram:

8 POGO-7 New Features TANGO Meeting 8 The class model is now saved in a.xmi file. The class model is now saved in a.xmi file. The areas for programmer’s code are well defined. The areas for programmer’s code are well defined. Inheritance is not simply used as template. Inheritance is not simply used as template. Inheritance could be done from a class containing code and not only from pure abstract class. Inheritance could be done from a class containing code and not only from pure abstract class. A method has been added to add dynamic attributes (add_dynamic_attributes()) A method has been added to add dynamic attributes (add_dynamic_attributes()) The read attribute pointer allocation can be generated by Pogo The read attribute pointer allocation can be generated by Pogo An inheritance diagram is displayed. An inheritance diagram is displayed. All classes in this diagram are edited. All classes in this diagram are edited.

9 POGO-7 Programmer’s Preferences TANGO Meeting 9 Previous project is re-load at Pogo startup email address for contact in class ID Default directory to search inherited classes

10 POGO-7 Site Preferences TANGO Meeting 10

11 POGO-7 Generated Code TANGO Meeting 11

12 POGO-7 Generated Code TANGO Meeting 12

13 POGO-7 Pogo-6 compatibility TANGO Meeting 13

14 POGO-7 Pogo-6 compatibility TANGO Meeting 14 Known Problems : D Declaration duplicated (one time by generator, one time by code insertion) For writable attribute, in write_MyAttribute method, the attr.get_write_value() method management has changed. It is now returned in a local variable. Your old global variable does not exist any more (it is not necessary to be global in 99% of cases). It is now local and it is named : w_val. It will try to insert your own code at right place. Of course all cases cannot be tested, and something could be missing (test your server before any other modification !)

15 POGO-7 WARNINGS TANGO Meeting 15 http://www.esrf.eu/computing/cs/tango/tango_doc/tools_doc/pogo_doc/index.htmlwww.esrf.eu/computing/cs/tango/tango_doc/tools_doc/pogo_doc/index.html

16 POGO-7 Conclusions TANGO Meeting 16 Pogo is now ready for C++ classes. Pogo is now ready for C++ classes. Pogo is now waiting for Java code. Pogo is now waiting for Java code. And for Python code. And for Python code.

17 17


Download ppt "March 19th 2007 TANGO collaboration 1 POGO-7 Pascal Verdier ESRF- Hamburg - 25 th of October 2010 A Short History of Pogo A Short History of Pogo New Technology."

Similar presentations


Ads by Google