From OpenSCADAWiki
Jump to: navigation, search

Implementation of planned tasks

In accordance with the plane of the release there were made the following tasks:

  • Formation of the provision of commercial services based on OpenSCADA — The concept is built and the mechanisms are created to provide commercial services by the developers based on OpenSCADA (http://oscada.org/en/services).
  • Adaptation of OpenSCADA to work on the ARM hardware platform — The building, adaptation and full testing of OpenSCADA on the ARM architecture is made on the N800 Internet tablet of the Nokia company (http://wiki.oscada.org/Works/Tests/ARM). The build and adaptation of OpenSCADA for complex (very old) software environment of the LP-5451 controller are completed, as well as build for the SMH2Gi controller and Nokia smart phones: N900, N950, N9 are completed also. As part of the build and adaptation to different mobile devices the following tasks were done:
    • SYS:
      • Functions' prototypes TMess::put(), TMess::get(), TCntrNode::grpSize(), TCntrNode::grpId(), TCntrNode::grpAt() are changed to correct the usage of an unsigned type "char" on the ARM as a signed.
      • The adaptation to build with GLibC version less than 2.5 (2.3.2) is done.
      • TVariant, DAQ.{AMRDevs, OPC_UA}: The not aligned access to data is fixed.
      • DAQ.OPC_UA: The system functions floatLE(), floatLErev(), doubleLE(), doubleLErev() are added to convert the storage format of a real number on different architectures.
      • The adaptation to uClibc is done. Build begins with 0.9.32 version, which has the support of real-time functions such as clock_nanosleep().
      • The check and disable the usage the "Iconv" and "Intl" (I18N) API is added.
      • The automatic detection and enabling the --enable-CrossCompile configuration option for cross-compilation environment is added.
      • The --enable-CoreLibStatic configuration option to disable the OpenSCADA kernel shared library build and static linking of the call-launch program is added.
      • The usleep() function is everywhere replaced by the own wrapper function TSYS::sysSleep() due to lack of the usleep() function in uCLibc and availability of it only in the case of special configuration of the uClibc build. The nanosleep() is used at the TSYS::sysSleep() function.
      • The pthread_yield() function is replaced by the sched_yield().
    • DAQ:
      • JavaLikeCalc: Virtual Machine is rewritten for direct using the structures of commands to avoid alignment problems, as well as for some increasing of productivity.
      • Siemens: The problem of the NoDave library for a global packing structures command calling "#pragma pack(1)" is fixed.
      • ICP_DAS: The "ICP DAS" API library libi8k.a for the ARM architecture is added, the ability to build the module for ARM is added.
    • Archive:
      • Functions' prototypes TArchiveS::messPut() and TArchiveS::messGet() are changed to correct variable of the message level as a signed number.
      • FSArch:
        • The LE format real number storage in the archive on the ARM architecture is fixed.
        • The algorithm of the quickly count the number of bits uses the function of not aligned reading TSYS::getUnalign32().
        • The encoding field size in the plane archive of messages expanded from 9 to 99 characters.
    • UI.QTCfg: The short time sleep after closing all windows in the switch off function is added, in order to provide the time for the object of all the windows to be finally destroyed and to prevent crashing.
  • The implementation of the editing changes rollbacks mechanism in the Vision. — As a part of the widgets' visual editing window the multi-level changes rollback mechanism it is implemented for all basic operations: visual geometry changes, the widget attribute's value change, add/remove widgets, widget's copy and edit the widgets, based on the "ElFigure" primitive.