QP actor frameworks and QM modeling tool Icon

QP actor frameworks and QM modeling tool

1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 (14) Read Reviews | Last Updated
Home / QM
Name Modified Size Downloads / Week Status
Parent folder
Totals: 20 Items   51.8 kB 2
3.2.2 2015-01-07 161161 weekly downloads
3.2.1 2014-10-12 11 weekly downloads
3.2.0 2014-08-22 11 weekly downloads
3.1.3 2014-07-08 33 weekly downloads
3.1.2 2014-04-25 11 weekly downloads
3.1.1 2014-04-16 11 weekly downloads
3.1.0 2014-04-03 11 weekly downloads
3.0.1 2014-01-08 11 weekly downloads
3.0.0 2014-01-03 11 weekly downloads
2.3.2 2013-05-20 55 weekly downloads
2.3.1 2013-05-17 11 weekly downloads
2.2.03 2012-09-11 11 weekly downloads
2.2.02 2012-09-03 11 weekly downloads
2.2.01 2012-08-14 11 weekly downloads
2.2.00 2012-08-10 11 weekly downloads
2.1.02 2012-03-11 11 weekly downloads
2.1.01 2011-12-02 33 weekly downloads
2.1.00 2011-10-22 11 weekly downloads
2.0.00 2011-09-25 11 weekly downloads
README-QM.txt 2014-10-16 51.8 kB 22 weekly downloads
What's New? =========== Scroll down a bit to the section "QM Revision History". What is QM? =========== QM (QP Modeler) is a freeware graphical modeling tool for designing and implementing real-time embedded software based on the UML state machines and the lightweight QP active object frameworks. QM is available for Windows 64-bit, Linux 64-bit, and Mac OS X. **** NOTE: For more information, please refer to the online QM Help at: http://www.state-machine.com/qm/help **** Installing QM on Windows (64-bit) ================================= CAUTION: Starting from version 3.2.0, QM is available only for 64-bit versions of Windows. Also, if you have any previous version of QM installed on your system, please *uninstall* it before installing the new version. Download the QM installer for Windows, which is a Windows executable. Run the installer. The installation is very straightforward and offers you options of installing a desktop icon and associate QM model files (*.qm) with the QM tool. The uninstaller is provided. Installing QM on Linux (64-bit) =============================== CAUTION: Starting from version 3.2.0, QM is available only for 64-bit versions of Linux. Also, if you have any previous version of QM installed on your system, please *uninstall* it before installing the new version. Download the QM installer for Linux. You need to make the file executable in order to run it. You can either do this with your desktop's file manager or at the command line, type: chmod u+x qm_3.2.0-linux64 You should now be able to execute the installer. You can do this from your file manager (by double-clicking on the installer), or from the command line by typing: ./qm_3.2.0-linux64 Run the installer. The uninstaller is provided. **** NOTE: To run the QM application on Linux, you need to run the <qm installation dir>/bin/qm.sh script. Make sure that the file has executable permissions. **** Installing QM on Mac OS X ========================= CAUTION: If you have any previous version of QM installed on your system, please *uninstall* it before installing the new version. Double click on the provided qm_3.2.0-macx64.dmg file. This will mount and open the disk image. To install the QM tool, you simply drag the qm.app image into the Applications folder (typically visible in the Dock). If you wish, you might also create the alias of the qm.app and place it on your Desktop. To uninstall QM, simply delete the qm.app file and the examples. **** NOTE: The QM application contains both the QM GUI and the QMC model compiler command-line utility. You can invoke the QMC utility from the terminal by typing: /Applications/qm.app/Contents/MacOS/qmc **** EXAMPLE PROJECTS ================ The QM example models are included in the QP baseline distributions. The console-type examples are available for Windows (MinGW and Visual C++ Express 2012), Linux, and Mac OS X. GUI-based simulations are available for Windows with the raw Win32 API. Cross-platform GUI examples based on the Qt framework are available in the QDK/C++ for Qt (QDK-Cpp_Qt). Embedded examples are available for the Tiva-C LaunchPad Cortex-M4F board as well as the EK-LM3S811 ARM Cortex-M3 board with the IAR EWARM, ARM/KEIL-MDK, and GNU (Sourcery CodeBench) compilers. The examples are located in the <qp>/examples/ directory, where <qp> denotes the folder where you have installed the specific version of the QP framework (QP/C, QP/C++, or QP-nano). **** NOTE: All QP projects assume that the location of the QP frameworks are specified via environment variables QPC, QPCPP, and QPN for QP/C, QP/C++, and QP-nano, respectively. **** For example, assuming that you have installed QP/C into the directory C:\qp\qpc, you should define the environment variable QPC to C:\qp\qpc. Additionally, the provided Makefile assumes that the MinGW bin\ directory is added to the PATH. **** NOTE: The MinGW toolset is now part of the Qtools collection. **** Editing the Environment Variables on Windows ============================================ Open the Windows Explorer and right-click on the Computer icon. Then select Properties from the pop-up menu. This opens a window with the basic information about your computer. In the left panel of this window, click on "Advanced system settings". This opens the dialog "System Properties". Click the "Environment Variables..." button. To add a new environment variable, click the "New..." button in the system variables section and provide the variable name (e.g., QPC) and value (e.g., C:\qp\qpc). To modify the Path variable, look in the bottom panel "System Variables" and scroll down to find the variable Path. Click on it and then press "Edit..." button. Click on the Variable value edit field. At the end of the string append ;C:\qtools\bin (assuming that you have installed Qtools in the root of the C: drive). Make sure that there is a semicolon ';' between the last entry and the added path. **** NOTE: After updating environment variables, you should reboot your computer so that all applications (such as Visual Studio or IAR EWARM) can pick up the changes. **** Editing the Environment Variables on Linux ========================================== You need to edit the ~/.bash_profile file to add the following lines: export QPC=~/qpc export QPCPP=~/qpcpp export QPN=~/qpn assuming that you have installed QP/C into ~/qpc, QP/C++ into ~/qpcpp, and QP-nano into ~/qpn, respectively. **** NOTE: After updating the ~/.bash_profile file, you should log off your account and then log on again so that all applications can pick up the changes. **** Editing the Environment Variables on Mac OS X ============================================= You need to edit the ~/.profile file to add the following line: export QPC=~/qpc assuming that you have installed QP/C into ~/qpc. **** NOTE: After updating the ~/.profile file, you should log off your account and then log on again so that all applications can pick up the changes. **** LICENSING QM ============ The QM graphical modeling tool is freeware. It is free to download and free use, but is not open source. During the installation you will need to accept a basic End-User License Agreement (see http://www.state-machine.com/qm/LICENSE-QM.txt ), which legally protects Quantum Leaps from any warranty claims, prohibits removing any copyright notices from QM, selling it, and creating similar competitive products. The EULA also prohibits distributing QM from third-party websites. The only legitimate source of QM is the SourceForge.net/projects/qpc/ website. **** NOTE: Starting from version 3.2.0 QM uses the Qt toolkit under LGPL v2.1. Please refer to the LGPL Compliance Package for QM (http://www.state-machine.com/qm/qt_lgpl) for more information how to obtain, install, and build the Qt toolkit from sources. **** LICENSING QM Code Generator =========================== The code generated by QM is licensed under the same terms as the underlying QP framework, for which the code has been generated. Please refer to the QP licensing (http://www.state-machine.com/licensing ) for more information. SUPPORT AND REPORTING BUGS & ISSUES =================================== Support for QM is provided in the Free Support forum at: https://sourceforge.net/projects/qpc/forums/forum/668726 REPORTING BUGS & ISSUES ======================= The QM software has many assertions inside, and the assertions are ENABLED in the release version. When you hit an assertion, or any other error, please check the "Bug Tracker" available at: https://sourceforge.net/tracker/?group_id=190182&atid=932314 If you don't find your problem, please try to reliably reproduce the problem, and submit a concise report to the "Bug Tracker" Also, if you find inconsistencies or any awkward features, please submit a suggestion how to improve this functionality to the "Feature Tracker" at: https://sourceforge.net/tracker/?group_id=190182&atid=932317 Thank you for your help in improving QM! CONTACT INFORMATION =================== Web: http://www.state-machine.com Email: info@state-machine.com ####################################################################### ###################### QM Revision History ############################ Release 3.2.2, date: 2014-10-16 ------------------------------- This QM release fixes the following bugs: #108 "Corrupted references reported in models with long class names" http://sourceforge.net/p/qpc/bugs/108/ Release 3.2.1, date: 2014-10-09 ------------------------------- This release implements the feature request #100 "Conditional compilation for state machine elements" (see https://sourceforge.net/p/qpc/feature-requests/100/ ) The feature description and usage are available in the QM Help at the following URL: http://www.state-machine.com/qm/help/ce_cond.html This release also improves generation of the comments with model links (to navigate from the code to the model). The links now consistently use abbreviated names (significant to 16 first characters). Finally, this QM release fixes the following bugs: #107 "multiline guard conditions indented incorrectly" ( https://sourceforge.net/p/qpc/bugs/107/ ) #100 "QM 3.1.3 multiple sigs on one transition no longer generates compileable code" ( https://sourceforge.net/p/qpc/bugs/100/ ) #99 "Pastelink function does not work" ( https://sourceforge.net/p/qpc/bugs/99/ ) #84 "Export to EMF bug" ( https://sourceforge.net/p/qpc/bugs/84/ ) #69 Search can lose pending changes ( https://sourceforge.net/p/qpc/bugs/69/ ) Release 3.2.0, date: 2014-08-02 ------------------------------- This release is only for 64-bit desktop operating systems, such as Windows 7/8 64-bit, Linux 64-bit, and Mac OS X 64-bit. Also, this release switches from using Qt4 to the latest Qt5 toolkit. The the Qt5 toolkit is now used under the terms of the LGPL 2.1 license, whereas before the Qt4 toolkit was used under a commercial Nokia license. For compliance with LGPL 2.1, the QM distributions contain the LGPL Compliance Package, which provides information how to obtain, install, and build the Qt toolkit from sources. Release 3.1.3, date: 2014-04-30 ------------------------------- This release fixes the following bugs, all related to the history connector (see https://sourceforge.net/p/qpc/bugs): #95 "Resizing of state with history generates "Assertion failed" error." #96 "Incoming transitions to a history connector stretch incorrectly when the state is moved" #97 "Newly added history connector not moving when the state is resized." **** NOTE: This release does not change the QM code generation in any way. **** Release 3.1.2, date: 25-Apr-2014 -------------------------------- This release fixes the following bugs (see https://sourceforge.net/p/qpc/bugs): #93 "CATCH_ALL: code for action is generated twice" #94 "Transition to history from a choice segment generates incorrect code" Also, this release changes the C++ code generation for QP/C++. Only short names, not qualified by the class name are used inside the state-handler functions and action-state tables. For example Q_TRAN(&state1) is used instead of Q_TRAN(&Foo::state1). Release 3.1.1, date: 15-Apr-2014 -------------------------------- This release fixes the inconsistency in copying model links into the clipboard (bug #92). The model links are now generated in the format ${name::name::name} which is the same as links inserted into the generated code. Also, this removes the decoration of the names of superclasses displayed in the Class Property Sheet. The superclass names were displayed in the combo box in the form ${name::name::name}, whereas they should be shown as name::name::name. Release 3.1.0, date: 2014-03-31 ------------------------------- This release adds the "transition to history" (deep history) to QHsm and QMsm state machine classes and their subclasses, such as QActive and QMActive. NOTE: To build the code generated for the "transition to history" feature in QM 3.1.0, you need QP 5.3.0 or newer. NOTE: QM 3.1.0 remains backwards compatible with models generated by the earlier QM versions (2.x) for QP 4.x, but you need to re-generate the code to build it for the QP 5.3.0 frameworks. The "transition to history" feature is implemented by adding a new "transition to history" icon to the state diagram drawing toolbar. This new connector can be added to states, but it binds only to the *border* of a state, as opposed to the interior of a state. This is intentional to make transitions to history also available to submachine states, which will be supported in the future. Once the "transition to history" connector is attached to a state border, it's other end with an arrow needs to point to a substate, which will be the initial value of the state history, before the state is visited and the actual history is recorded. The 'H' circle of the "transition to history" connector can be a target for regular transitions and for choice segments. There can be only one "transition to history" connector attached to a given state. For each "transition to history" connector, tghe code generator in QM generates a history attribute in the state machine. This history attribute is set in the exit action of the corresponding state to store the history of the composite state. This release also brings several improvements to the QM code generator. First, the model reference comments are now generated for user-specified names rather than for the internal model references. This makes the references human-readable, but more importantly, the references don't change after adding/deleting/reordering model elements. This prevents many instances of re-generating code where only the references in the comments changed, while in fact the actual code was the same. Other improvements to the code generator include removal of unused tags in declarations of structures. This is to achieve compliance with the new MISRA-C:2012 Rule 2.4. Also, the code generator now detects unused 'me' arguments, and generates code "(void)me;" to prevent compiler warnings about unused arguments. This release makes slight improvements in the rendering of diagrams. The boarder of selected diagram items (e.g., states, transitions, etc.) is now thinner (2 pixels) as opposed to heavy-looking 3 pixels before. Also, to save precious space, the entry/exit labels for state actions have been abbreviated to e/x. This release fixes the following bugs (see https://sourceforge.net/p/qpc/bugs/): #88 "Problem with QM model encoding" #87 "QM 3.0.1 crashes with Assert after undo" #84 "Export to EMF bug" #70 "Property change not sensed as pending change" #67 "Constructor code not always generated" Finally, this release implements the following feature requests (see https://sourceforge.net/p/qpc/feature-requests/): #17 "Deep history feature support" #67 "Implement history pattern in QM" #61 "Compiler rises warning when modeling a transition to history" #90 "Enlarge default transition text box": the initial size of the transition box has been increased from 6 to 10 grid units. Release 3.0.1, date: 2014-01-07 ------------------------------- This release fixes a bug in generating the default case in state machines based on QFsm. Also the code generation for the special case of the CATCH_ALL trigger for QHsm/QFsm has been improved. Release 3.0.0, date: 2014-01-01 ------------------------------- The main purpose of this milestone release is the new code generation for the new state machine implementation added in QP5. This new type of state machine implementation in QP5 is based on the new QMsm class, which takes advantage of the QM tool as an advanced "state machine compiler". QM can perform optimizations that were not possible with the C pre-processor alone. Specifically, the QM can easily determine the LCA (Least-Common-Ancestor) state for every transition and it can generate the complete transition-action-tables (sequences of exit/entry/initial actions) at code-generation time. The resulting code is still highly human-readable, but it is no longer human-maintainable, because generating transition-action-tables by humans is too error-prone. The lab tests indicate that the new "housekeeping" code for executing hierarchical state machines is about twice as fast as the code based on the QHsm class. Additionally, the new code requires less run-time support (smaller event processor) and uses 70% less of stack space in the call to the QMsm::dispatch() operation than QHsm::dispatch(). This release also fixes several bugs related to Cut-and-Paste feature, saving the model with the shortcut Ctrl-S, and editing the actions while searching the model. NOTE: QM 3.0.0 remains backwards compatible with models generated by the earlier QM versions (2.x) for QP 4.x. In other words, you don't necessarily need to upgrade to QP5 to use QM 3.x, but you won't be able to use the QMsm and QMActive base classes, as they are not provided in QP 4.x. Release 2.3.2, date: 20-May-2013 -------------------------------- This is a quick update release to fix the bug introduced in 2.3.1, which caused a crash when adding a class item to a package. Additionally, this relase brings the following minor improvements: 1. The TAB key in the code editor does not always indent the line. When no selection is present, a TAB key inserts 4 spaces at the cursor position instead of indenting the whole line. 2. The log has a new option to clear the log via the "Clear All" popup menu. The log is also cleared when (re)opeinig a new model file. 3. Fis for an occasional inconsistency in the "Replace Mode" option setting and the state of the Search Options button. Release 2.3.1, date: 16-May-2013 -------------------------------- This is a quick update release that fixes a few following problems found in 2.3.0: 1. The copy/paste feature didn't reliably detect the element type in the Clipboard. The formatting of the Clipboard MIME data has been slightly changed, which fixed the problem. 2. The code generation and external tools actions were not properly enabled after creating a new model. 3. The window title of a state diagram didn't change after changing the class name. 4. The CATCH_ALL trigger was not implemented for FSMs. Thank you to all reviewers, who immediately contacted Quantum Leaps. This is "massive parallel testing" at its best! Release 2.3.0, date: 15-May-2013 -------------------------------- This release introduces a number of features and fixes most of the reported bugs in QM (see feature requests and bug reports on sourceforge.net/p/qpc/_list/tickets ). NOTE: QM 2.3.0 remains compatible with models generated by the earlier QM versions (2.x). New GUI Features: 1. Model-wide search and replace (feature request #49). The QM GUI now includes a search dock-widget with a search box and model tree-view similar to the Model Explorer. The tree-view allows the user to select the model element for search, which can be recursive. A number of usual search options are provided, such as case-sensitivity, match whole word, etc. The search elements can be finely controlled by provided options, e.g., search in names, code, pseudocode (abbreviations), documentation, etc. The replace feature allows the user to replace strings one at a time, or replace all in the given model element. Just like the search, replace can be recursive. 2. Storing/restoring the current QM session (feature request #41). QM now stores the current session, including the open windows and their arrangement, external tool settings, locked items, etc. The session is associated with a given model and is stored in this model's directory. The session is restored when this model is (re)opened. 3. License management for QM code generator. QM now displays the license information of the underlying QP framework, which is licensed separately either under the GPL open source license, or commercially. The QP license information is now also embedded in the generated code. This feature is designed to educate and inform about open source licensing obligations without being intrusive. The feature also offers a commercial QP license registration to all commercial QP licensees. 4. Fine-granularity locking/unlocking model items (feature requests #56/#52). QM now allows you to lock individual packages, directories, and files from editing, whereas previously you could lock only the entire model. This version also fixes a number of "holes" in the protection of the locked items. 5. Improved MDI (multiple document interface), which now supports movable tabs (feature request #5). Also, the window-state (normal/maximized) is now independent on the use of tabs. For example, you can have tabs and normal re-sizable windows at the same time. 6. Added new grid options for diagrams and added grid selection button to the View toolbar. The grid can be displayed as fine-dot fine-line, and dot-line. This feature helps in aligning states/transitions and indirectly addresses the feature request #35. 7. Added listing of triggers for states. The feature is available in the popup-menu for state items. QM performs the non trivial analysis of triggers with guards, and lists triggers that can "bubble up" to higher level states. 8. Added toolbar buttons to quickly hide/show all dock-panels of the GUI, such as Property Editor, Bird's Eye View, Log, etc. (feature request #39). 9. Added exporting diagrams to the .png raster format for all platforms. The EMF vector format (Enhanced Windows Meta-File) is available only on Windows. 10. Improved importing/exporting packages to external files. Now, the extension .qmp (QM Package) is enforced and any non-existing directories for exporting package files are created correctly. 11. Added read-only protection to the model files and package files. 12. Improved the status bar display of current (x,y) cursor position in the diagram. Allowed negative (x,y) values. 13. Improved the status bar display of the current (Line/Column) cursor position in the file(s). The column position starts with 1, consistently with all other editors. New QM Code Editor Features: 14. Added Quick search in the current editor (F3-search), which is independent on model-wide search (but is integrated with the search view). The quick F3-search can be initiated by selecting a text and pressing Ctrl-F3. Next, you can search forward (F3) or backward (Shift-F3). 15. Improved code indenting/un-indenting with TAB/Shft-TAB. 16. Added brace/parenthesis matching (brace "kiss") with Ctrl+K 17. Added "delete till end-of-line" with Ctrl+Del 18. Added new file type and syntax highlighter for TCL/TK scripts (extension .tcl) 19. Improved syntax highlighter for C/C++ by adding all missing keywords. New Code Generation Features: 20. Added generation of comments from QM documentation properties (feature requests #26/#23/#24/#37). The documentation for states, operations, and attributes can contain embedded comments, which are emitted to the generated source code (separate comments can be applied to declarations and definitions). This allows users to generate doxygen-type comments for automatic generation of HTML documentation. Also users can generate "comment boxes" for compliance with their coding standards. 21. Changed the local variable returned from states from 'status' to 'status_' to avoid name conflicts with user-defined variables. 22. Introduced the special CATCH_ALL trigger to catch processing of all events in a given state (feature requested from a commercial customer). This feature is NOT generally recommended. 23. Improved code generation and inconsistent "static" linking for file- scope functions and attributes. Added missing new-lines in several cases (bugs #34/#40). New External Tools Features 24. Added environment variables for the external tools. For example, you can modify the PATH variable locally or specify any variable consistently for all tools. The environment variables can be also used in the arguments of external tools and are substituted before invocation of the external tool. Fixed problems with parameters surrounded by double quotes (bug #50). The output from external tools to the QM Log has been improved, so that the output is identical as it would be on a console. Finally, external tools can also be detached from the QM GUI, which can be useful for launching external serial terminals, QSPY, or other such tools. Other Bug Fixes: 25. Added toolbar buttons for moving model items up and down in the Explorer (bugs #36/#37/#45/#47, feature request #54). This fixes the problems with the shortcuts for these commands (Ctrl+UP/Ctrl+DOWN) and allows re-arranging the order quickly and easily. 26. Fixed the problem with copy/paste statechart items (bugs #53/#57). 27. Fixed problems with Property Editor switching current item when losing the keyboard focus to other applications (bug #38). Now switching between applications on your desktop no longer changes the current item when you get back to QM. Release 2.2.03, date: 10-Sep-2012 --------------------------------- This release fixes two bugs introduced in 2.2.02 and brings a few improvements to the code generation. 1. Restored saving the model before generating code, which was not happening in version 2.2.02. 2. Fixed the bug #34 (inconsistent linkage error), in which a free operation with 'file' visibility had a declaration without 'static' and definition with the 'static' keyword. The fix for this bug also improves the consistency of checking whether an item is declared and defined in the same file scope (so that 'static' can be generated automatically). 3. Fixed the bug #35 (assertion in QM 2.2.02, module statesheet:140), which fired after editing the exit abbreviation in the state property sheet. 4. Added code generation for packages. A package item in the Explorer window now has the "Generate Code" option in the popup-menu and a package item can be specified in the code generating directives $declare() and $define. 5. Added 5th external tool to the Tools menu with the keyboard shortcut F12, so now the Tools menu uses the following shortcuts: F7 for code generation and F8-F12 for tool1-tool5, respectively. Release 2.2.02, date: 02-Sep-2012 --------------------------------- The main focus of this release is the External Tools feature, which allows the users to execute their own command-line tools, such as make, lint, qspy, etc. directly from the QM IDE. This release also fixes all known bugs and implements a few feature requests. The detailed changes are as follows: 1. Implemented the new Tools menu and customizable toolbar. Please refer to the QM help file http://www.state-machine.com/qm/help/tools.html for the description of how to use the new feature. 2. Implemented block-indenting of code with the TAB key and un-indenting with Shitf+TAB. 3. Moved the "Generate Code" action from the File menu/toolbar to the Tools menu/toolbar. 4. Fixed bug #29 (assertion when dragging a component and droping it on self). 5. Fixed other drag-and-drop issues. 6. Added documentation panel to the state item (feature request #37) and generation of the doxygen comment from this documentation. 7. Fixed the problem with black diagram background in the EMF export (feature request #36). 8. Added keyboard shortcuts to hide/show docking windows (Property Editor, Explorer, Log, Bird's Eye View) for the feature request #39. 9. Code Generation: raised the state nesting limit to 10 (including the top state) and the choice segment nesting limit to 10. 10. Improved the precision of syntax highlighting for pre-processor symbols and for C/C++ keywords. Release 2.2.01, date: 14-Aug-2012 --------------------------------- This minor release fixes bug #33 (assertion in module item, line 383), which popped up with new attribute or operation was added to a package. Release 2.2.00, date: 06-Aug-2012 --------------------------------- The main focus of this release is MISRA compliance of the generated code. This release also brings several feature improvements, new features, and bug fixes. This release also removes the separate project examples that used to ship with QM. This release is compatible with QP 4.5.02 or later, all of which include QM models in the example projects. The detailed changes are as follows: Code Generation: * Changed code generators for QP/C, QP/C++, and QP-nano to use the MISRA switch statement syntax rather than "return" statements in each case. * Chagned code generators for QP/C and QP-nano to generate "static" class methods if the class declaration and defition is made in the same file scope (MISRA-C:2004 Rule 8.11-required). * Chagned code generators for QP/C and QP-nano to use "ClassType * const me" instead of just "ClassType * me" for class methods, including state handlers. * Updated all internal QP models to QP 4.5.xx (e.g., use QEvt instead of QEvent, etc.) * Changed code generators for QP/C, QP/C++, and QP-nano to use QEvt instead of QEvent for state machines. NOTE: For backwards-compatibility, the base class name "QEvent" is recognized and replaced with "QEvt". * Changed code generator for QP/C++ to generate the QP namespace prefix for all QP elements (e.g., QP::QEvt, QP::QState, etc.), which is required by MISRA-C++:2008. * Added code generation errors for too many levels of state nesting (greater than 6) and choice-segment nesting (greater than 5). Explorer View: * Eliminated the file-system item and replaced it with directory item. * Allowed Directory items in Package items, so that directories and files can be exported to external packages. * Removed the little toolbar from the top of the Explorer View and added the "Move Up" and "Move Down" actions to the pop-up menus for items. Property Sheets: * Added "namespace" attribute to the Package property sheet. Using namespaces is required for MISRA-C++:2008 compliance (feature request #3527678). * Added abbreviation to the Choice-segment guard specification (feature request #3527678). * Added property sheets for Framework, Directory, and File items. * Added "encoding" property to the File item property sheet. Diagrams: * Allowed the diagram viewport to expand to enclose all items, including items moved outside the drawing canvas above the top edge or left of the left-edge. * Changed the default postion for pasting state shapes to the diagram to be oustide the drawing canvas (just right of the right edge of the canvas.) This was done to reduce the interference of the pasted state shapes with already existing states. Bug fixes: * Bug # 3505266: Fixed the bug with copying-and-pasting classes, which disconnected all transitions in the statechart of the pasted class. NOTE: The copy-and-paste feature has been re-designed for this release. * Bug # 3447488: Fixed occasional QM crash after clicking "File|Close Model" menu. * Bug # 3472949: Fixed the problem of drag-and-dropping a component onto its child. * Bug # 3553912: Fixed the incorrect handling of the Ctrl+W shortcut (close window) in the Tabbed mode. Now, the shortcut Ctrl+W is implemented explicitly (whereas before is was showing as Ctrl+F4). Miscellaneous: * Added wait cursor when loading/re-loading the model file. * Added dran-and-drop for directories into packages. Release 2.1.02, date: 28-Dec-2011 ---------------------------------- * Fixed the problem with the keyboard focus being removed from the Property Editor when the mouse pointer is moved over a diagram. Now editing text properties can continue regardless of the position of the mouse pointer. * Modified the behavior of the main window to eliminate the annoying context switches when the user moves the keyboard focus to another desktop application. Now the Bird's Eye View, the Toolbox, and the Property Editor would not be deactivated when the user clicks outside the QM application. * Added menu command and toolbar button for copying model links to the Clipboard. This is useful for quickly finding the corresponding model elements in the generated code (through the standard text find feature available in virtually all code editors and IDEs). * Changed the code generation to generate consistently the @()-style model links to match the copy-link feature. * Fixed the bug with model name not appearing in the Model Explorer when a new model is first created. * Fixed the unexpected switching of the Current Model Item when the user double-clicked text or code in the Property Editor. * Improved model checking to disallow creating circular dependencies of choice segments, which was possible when the begin of the parent choice segment was moved to the free-end of a child choice segment. * Changed displaying text in the diagrams to show only complete lines rather than cutting the text horizontally and showing only top slice of the last line. * Added the standard file extension ".ino" for the Arduino sketches, to recognize this file type and apply the correct (C++) syntax highlighting. The extension ".ino" has been added in the latest release of the Arduino IDE (Arduino 1.0). Release 2.1.01, date: 04-Nov-2011 ---------------------------------- * This release allows specifying comma-separated trigger lists for transitions as opposed to just single triggers. The code generator converts the trigger list into fall-through case statements. * Updated all examples for compatibility with QP 4.3.00. * Fixed a bug which caused crash when a model file failed to opened (due to version incompatiblity or a missing imported package) and the user would double-click on the Log message to inspect the failure cause. * Fixed a bug causing assertion on Mac OS X in module nodeglyph, line 289. Release 2.1.00, date: 20-Oct-2011 ---------------------------------- * This release provides support for breaking up model files into separate package files, which can be imported (included) in any number of models. This feature allows teams to work on different parts of a large model by breaking it up into independently managed and version-controlled packages. * Fixed the inconsistency between reading and writing the file items, which for empty files lead to "WARNING F802> ...parsing the model template file failed". Specifically, this warning occured for the model templates provided in the QM distribution. * Fixed the bug in resizing the diagram canvas, which could lead to breaking an assertion on Mac OS X (when the mouse coursor would momentarily leave and re-enter the diagram area). * Fixed the inconsistentcy in enabling and disabling of copy/cut/ paste/delete actions, which could lead to breaking an assertion in explorerview, line 321. Release 2.0.00, date: 21-Sep-2011 ---------------------------------- * This release provides support for Cut/Copy/Paste of model items within one model and accross different models opened in separate instances of QM. * The model file format has chaned compared to QM 1.x (to reuse the model serialization for Cut/Copy/Paste). This means that the models created with QM 1.x are incompatible with QM 2.x. *** NOTE: the <qm>/bin/ directory contains the utility qmconv-1-2 for converting models created with QM 1.x to QM 2.x. *** * Added panning of the current viewport to the Bird's Eye View. * Added Cut/Copy/Paste/Delete actions to the popup menus inside the Model Explorer. * Fixed several bugs and inconsistencies. Release 1.1.08, date: 11-Aug-2011 ---------------------------------- * This release is the first one available for all three platforms: Windows, Linux, and Mac OS X. * The directory structure of the QM installation has been modified to accomodate Mac OS X and to make it common for all platforms. * Changed the behavior of the "Generate Code" command to save the model to disk before generating code. * Changed the keys for panning and zooming of diagrams with the mouse to make it consistent with popular programs such as GIMP or Google Maps (bug #3381122). Now SHIFT activates panning and horizontal scrolling with the mouse wheel. When SHIFT is depressed, rotating the mouse wheel towards the back of the mouse will scroll horizontally right (i.e., the horizontal scroll bar will move right). This is exactly as in GIMP. CTRL activates selecting and zooming with the mouse wheel. When CTRL is depressed, rotating the mouse wheel towards the back of the mouse will zoom out. * Fixed the problem with C-style comments at the end of a file (bug #3355437). * Fixed the problem with print crashing QM on Linux (bug #3325130). * Added drag-and-drop of model elements inside the Model Explorer. Now you can drag packages, classes, attributes, operations, and paramters as well as directories and files (feature request #3116849). The drag-and drop feature verifies the types of the elements and allows only the meaningful operations. For example, dragging a class operation to another class, but not allowing dragging a state to a directory. * Added drag-and-drop of model elements from the Model Explorer to files. This allows quick generation of code directives without manually typing the element paths. * Added drag-and-drop of model files from the File Explorer (File Finder on the Mac) to the QM manin window, to open the model file. * Added "Close Model" command to the File menu. Release 1.1.07, date: 23-Jun-2011 ---------------------------------- * Fixed the bug causing a crash for the sequence: open an existing model, create new model, checking class properties. * Modified code generation to include generating Doxygen comments from the documentation for classes, class attributes, class operations, free attributes, and free operations. * Fixed bug related to incorrect updating of free attribute documentation from the property sheet. * Added collapse/expand button for documentation box in the operation property sheet. This is to allow more space for the code box. * Added toggle buttons to the View toolbar to allow easy toggling the view of the docking windows (Explorer, Property Editor, Bird's Eye View, and the Log). * Improved/corrected the locked/unloced button behavior and added the locked/unlocked status to the status bar. * Improved/corrected the Grid view button behavior and added grid status to the status bar. * Updated ARM Cortex examples for EK-LM3S811 to use the latest IAR EWARM 6.20. Release 1.1.06, date: 27-Apr-2011 ---------------------------------- * This release adds the "locked" moded for exploring or reviewing the model without the risk of inadvertently modifiying the model. * Fixed the EMF (Enhanced Windows Metafile) generation issue with the bounding box. When shapes in a diagram are selected only the selected shapes are rendered to EMF and the bounding box is adjusted so that it contains only the selected shapes. Previously, the EMF bounding box was always the size of the diagram canvas, regardless if only a tiny fragment of the diagram was selected and rendered to EMF. * Fixed the bug with keyboard focus, in which occasionally a diagram would ignore the Ctrl or Shift keys (for going into Selecting and Panning modes, respectively). * Added the Show/Hide Grid menu option and toolbar button. Release 1.1.05, date: 22-Apr-2011 ---------------------------------- * This release changes the permissions of the generated files to READ-ONLY, to prevent users from editing these files. This is to reinforce the policy that all changes need to be really made to the QM MODELS, not the generated files. * Fixed the bug in creating new models, which led to code generation errors: "ERROR F031 state machine not allowed in this class" * Fixed the EMF (Enhanced Windows Metafile) generation bug, in which all single ampersands ('&') were dropped and double ampersands ('&&') were replaced with a single ampersand. * Fixed the problem with closing a minimized window, which would lead to problems in opening the window again. * Fiexed the problem of not adding newly created models to the list of most-recently used models. * Improved error message reporting from XML parsing of the model file. * Added Help button to the "New Model" dialog box. * Added .pde file stereotype for Arduino sketches Release 1.1.04, date: 18-Mar-2011 ---------------------------------- * This release adds the QMC (QP Model Compiler) command line utility for automated builds. * Several minor improvements and bug fixes related to abrupt interrupting the QM session by popus (such as system update notifications). Release 1.1.03, date: 02-Mar-2011 ---------------------------------- * This release includes examples of QM models and projects for Windows, Linux, and ARM Cortex. * The default location of the help and model templates have been modified. Release 1.1.02, date: 05-Jan-2011 --------------------------------- * Made the code compatible with the Linux build (this is the first QM version offered for Windows and Linux). * Added the View|Styles menu. Release 1.1.01, date: 01-Jan-2011 --------------------------------- * Fixed internal framework models of QP/C++ and QP-nano to correctly inherit QActive from QHsm. * Fixed a bug in the MDI (multiple document interface) related to deleting a item with an active open MDI window (such as file item or statechart item). Release 1.1.00, date: 30-Dec-2010 --------------------------------- * Added consistent support for Unicode, from the model file, through all model elements, to generated code. Now, you can use Unicode characters (e.g., Chinese, Japanese, etc.) in your documenation and code (e.g., comments) and they will be preserved and propagated to the generated code. * Added options for specifying text endcoding for the generated code and the model file explicitly for most encodings used in the world. * Added customizability of look and feel via a style sheet (file qm.qss stored in the QM directory). Now you can customize fonts and colors of editors and diagrams. * Improved log file by adding double-click functionality for quickly selecting model elements corresponding to errors or warnings. Now you can double-click on any warning or error and the related item gets highlighted. * Added similar double-click functionality to documentation. This allows you to build hyper-links for cross-referencing items within the model. * Added documentation entry in property sheets to several model items, such as model, class attribute, class operation, free attribute, free operation. * Changed the way of storing documentation in the model file from HTML to plain text. * Added tons of documentation for the QP framework models. Now, when you expand the QP framework model item, you can find detailed documentation and code examples for all classes, operations, and macros provided in the QP frameworks. * Added support for QFsm (flat, not-hierarchical state machines), including code generation for classes derived from QFsm. * Improved selecting of diagram items (with Ctrl key) and panning of diagrams (with Shift key). * Fixed bug related to moving complex selections of states and transitions, in which transitions could occasionally get detached from states. * Fixed bugs and inconsistencies in the tabbed view (this was really an issue of the underlying Qt framework). * Improved syntax coloring for C/C++. The syntax coloring now highlights QM-specific elements, such as code generation directives, QP services, etc. * Added support for Makefiles (syntax coloring and proper generation of makefiles). * Eliminated any dependencies of the QM Windows executable on the Visual Studio runtime library redistributable (such as msvcr90.dll). The runtime libraries are now linked statically. * Many other cosmetic improvements. Release 1.0.08, date: 12-Dec-2010 --------------------------------- * Fixed a bug related to undo/redo of moving transitions with choice segments attached. The bug occurred when the user moved the choice-end of a transition, which had some choice segments attached. After executing undo (Ctrl-Z) the attached choice segments would not be moved, so they would become detached from the transition end. * Fixed a bug related to invalid initial transitions. The bug occurred when the target state of an initial transition was deleted (at which point the initial transition changed to dashed line) and the user tried to move the ball-end of the initial transition. * Changed the top-level comment placed in the generated code. Now, the top-level comment contains only the model file name *without* the full path name of the model file. This change was to make sure that a given QM model generates exactly the same code regardless of the directory in which the model file resides. Teams working with VCSs (version control systems) often check out the master model in various working directories, but they rightly expect that the generated code be identical. * Changed the code generator so that every generated file is terminated with the new-line character. Some C/C++ compilers require all files to be terminated with new line. Also improved parsing of the files and error reporting. * Added context-sensitive help, which is activated by 'Ctrl+F1'. The context-sensitive help checks the position of the mouse cursor and displays the help for the specific window under the cursor. NOTE: The actual help pages are under development, so currently only a placeholder page is displayed in your browser. The online help will be gradually added and you will not need to upgrade the QM tool to get the new help. * Other cosmetic improvements. Release 1.0.07, date: 27-Nov-2010 --------------------------------- * Fixed bug related to adding connectors without dragging them out of the attachment point, which results in zero-sized connectors. Such connectors are illegal and were deleted, but the property sheet was not cleaned up. Now adding a zero-size connector removes the connector and cleans up all views. * Added a proactive fix to an unreproducible bug (assertion in diagramview, line 214). * Changed how code editors resize in the Property Editor window. Previously the code editor grew only to about 20 lines of code in vertical direction. Now the code editor always fills the whole available vertical space of the Property Editor docking widget. * Made the same change for text (documentation) editors in the Property Editor window. * Added version number reporting in the Assertion message box. Most users never reported the QM version number when they encountered an assertion failure. * Implemented editing of a new directory name and a new file name immediately after these elements have been added to the model. * Added close button (x) to the subwindow tabs in the tabbed view. * Fixed inconsistent behavior of the tabbed view after closing a subwindow. * Other cosmetic improvements. Release 1.0.06, date: 20-Nov-2010 --------------------------------- * added docking widget with the zoomed-out view of the current diagram ("Bird's Eye View"). The "Bird's Eye View" is designed to improve orientation in large diagrams by showing the position of the current viewport in the relation to the diagram. * improved consistency of the diagram panning mode and fixed bugs related to entering the panning mode while in the middle of moving/resizing nodes or dragging connectors. Now, the panning mode can be activated only when there is no dragging in progress. * added vertical scrolling of diagrams with the mouse-wheel * added horizontal scrolling of diagrams with Shift mouse-wheel * changed zooming of the diagram to Ctrl-mouse-wheel * fixed bug related to pressing right or middle mouse buttons in the middle of moving node(s) or connectors. * fixed incorrect behavior of connectors when dragged to zero-size (when the begin overlapped with the end). * other cosmetic improvements. Release 1.0.05, date: 17-Nov-2010 --------------------------------- * this release fixes the bug in C-code generation in definition of free operations. * there are some cosmetic improvements as well. Release 1.0.04, date: 17-Nov-2010 --------------------------------- * bug fix in adding, deleting, and adding a class to a package * added diagram zoom slider and buttons in the status bar * added panning of the diagrams. Panning is activated by pressing Shift in an active diagram. Release 1.0.03, date: 29-Oct-2010 --------------------------------- * bug fix in editing of class documentation that can break assertion in classheet, line 148 (this turned out to be an undo/redo issue of incorrect unwinding of the undo stack.) * improved consistency of line-wrapping between screen output and EMF output. * allowed using backslash characters ('\') in guard conditions to enforce line breaks in displaying the guard in the diagram. The backslashes are removed in the generated code. * used lighter background colors for states in the EMF output * added cleanup of the generated code, so that it contains no superfluous white space (extra spaces could be present in the user-defined action code.) Release 1.0.02, date: 26-Oct-2010 --------------------------------- Release 1.0.00, date: 20-Oct-2010 --------------------------------- The first official QM™ release contains the following features: * Graphical modeling tool based on the UML state machine subset * Automatic generation of production-quality C or C++ code * Automatic model verification during the code generation * Built-in support for QP/C, QP/C++, and QP-nano frameworks * 100% traceability from design to code * Ultimate flexibility in generated code design * Friendly to version control systems (VCS) * Intuitive diagramming environment for making clean, good- looking diagrams * Export of diagrams to EMF vector format for direct pasting into MS-Office and Open Office applications * Modern user interface with docking windows with the layout saved across sessions * State of the art editors for action code with syntax highlighting * Undo/redo of all model edits * Quick Clipboard-based navigation between the model and third- party tools * Support for user-generated model templates * Ready-made project examples and online tutorials * Completely free to download and free to use
Source: README-QM.txt, updated 2014-10-16