From OpenSCADAWiki
< Documents | Release 0.8.0
This update of the 0.8 LTS release fixes about 60 bugs and appends some improvements, which you can read wholly in the update ChangeLog.
API
!!!!:Changes:
- SYS: More functions set to constant after some objects appending by a copy constructor.
- TConfig::cfgChange() expanded by previous configuration value argument "pc".
- TVariant: It's expanded in string type for STL-string using always except fields marked as "stdStringOmit", mostly for TCfg as a constant.
- Node's function load() and load_() expanded by argument TConfig *cfg for allow direct loading after the seeking request. Argument "force" of node's function load() was removed and replaced by modifG() pre-call.
- The RW resources allocation object "Res" renamed to "ResRW".
- TModule::modFunc() of declared functions pointer getting was expanded by no exceptional calls and a result.
- Function strNoSpace() expanded for processing symbols control and renamed to strTrim(). Default processing symbols set to " \n\t\r".
- time2str() and tm2s() of the astronomic time were renamed to atime2str() and atm2s() and the relative time were moved from microseconds to seconds origin.
- taskSleep() in the cron argument is moved to pure (string) representing for the origin point hold for the astronomic clock changing detect and cron's target correction then and also for the consumption measuring by the taskUtilizTm().
- TVariant::propClear() expanded to single property clean.
- taskUtilizTm() expanded by the argument "max" to obtain the maximum value and the value changed to seconds.
- The function taskDescr() added to get a link to the current task description structure.
- DAQ: Template's configure's field variant "Constant" renamed to "Variable" and "Public constant" to "Constant" respectively.
- Archive: Value archivator is expanded for the accumulation mode support, mostly for Archive.DBArch. Attribute "tm" of the Array result of user API function "getMess" changed to type "int".
- Protocol: Input part's API moved for the Work branch kind one by the functions srcAddr(), setSrcAddr() appending and mess() changing.
Appends:
- SYS: The system option clockRT is added for select the tasks planning clock as CLOCK_REALTIME but else it's CLOCK_MONOTONIC (default now).
- Conditional variable management object "CondVar" is added.
- Function mess_sys() is added to the object TCntrNode to create system messages with the node path into the category and the node's location into the message begin, by the new function nodeNameSYSM().
- Function err_sys() is added to object TCntrNode to create error objects with the node path and the node's location.
- The functional templates fmin() and fmax() added.
- For function strTrim() created a short call sTrm() and its used everywhere.
- TSecurity: User API function User::groups() and Group::user() added.
- New user API function TVal::isCfg() added.
- DB: Errors placing to result's Array attribute "err" from exceptions are added for user API function SQLReq().
- DAQ.JavaLikeCalc: String functions list expanded by a function trim().
- Transport: User API function messIO() expanded by the input buffer size.
- Transport.Serial: User API function sendbreak() is added to output transport.
- UI: Expanded by function mimeGet() to detect mime type by the original info, file extension and this content.
- Special.FLibSYS: Appended by function the Message Digest 5 (MD5) calculation function by OpenSSL and by function floatExtract() for extract exponent and mantissa from that float value.
SYS
- TCntrNode: Moved to the stabilized resources managing conception from the Work branch.
- More errors and warnings fix from PVS-Studio report, thanks to Maksim Kochetkov.
- All parts adapted to the new argument "cfg" of loading functions, preloaded dataSeek() and the direct loading after the seeking request.
- New TCntrNode object's functions mess_sys(), err_sys() have used everywhere into the OpenSCADA core and modules.
- Modules version of the subsystem "DB", "DAQ", "Archive", "Transport" rose to 9 and the subsystem "Protocol", "UI" rose to 8. Library version set to 2:5:0.
- LibZ functions were rewrote for some unification and the used memory optimization.
- Adapted and some fixed to build by GCC v6 with C++11 by default.
- Minimal messages level for all configurations set to "Info(1)".
DB
- {.,FireBird,MySQL,PostgreSQL,SQLite}: Preloading scanning mode added for functions fieldSeek() and dataSeek() for significant performance rise here.
- *: getVal() expanded and unified.
- {SQLite,MySQL,PostgreSQL,FireBird}: Expanded to NULL using for generic EVAL store/represent.
- PostgreSQL: DB object expanded by a statistic to control the activity and lags.
DAQ
- The task's execution status was expanded by the maximum consumption value.
- DAQGate: Adapted to store parameters' assignment for stations to allow its for early restoring without need to sync. Control for automatic removing parameters and attributes added by an option.
- LogicLev: Moved for set the attribute "f_frq" to the real frequency, taken from the task description structure.
- OPC_UA.libOPC_UA: Chunks support was added to server's part. Tested on chunks into input requests for insecure and secure connections. Publish requests, and messages in general, queuing and next its processing fixed for secure connections and for Acknowledges for insecure ones after in direct processing.
- JavaLikeCalc: Support of the dynamic linking to external functions added in way: function {nm} = "{addr}"; {nm}();. Object's functions call was optimized for the name direct pass into the calling command. Expanded by operator "delete" for objects or its properties free.
- System: Expanded by "FS" data source. Automatic creation of sources expanded to modes of the sources "Fast" and "Slow".
Archive
- Spare writings direct to the archivators prevented for TVArchive::setVals(). getMess() fix for double call modules' function get(), by fmin() using.
- {.,FSArch}: Last read buffer information is added and the property using fix. Exceptions into archivatorAttach() at the archivator's object stopping are prevented for allow the archive early start.
- DBArch: Messages archivation part fixed for "needMeta" and to deny an access to the archivator before the successful meta get. Reading of the value archives set optimal for the request time, up to ten times, through using the "MARK" key and the seek request. The value archivation part expanded by the archives grouping into one group table, mostly for the archivation performance rise.
Transport
- The input buffer size added to the manual request dialog of the output transports.
- Serial: Output transport expanded to check and use I2C. Appended by RTS toggle (true/false) flow control and echo filtering.
- Sockets: Output transport's reading for reply in check to SO_ERROR moved to step 2 to take some time for delayed reading but same SO_ERROR reading sometime long. Reading reply of the output transport after FD_ISSET is false expanded by reading socket's SO_ERROR and waiting interruption on any socket error. Early broken pipe detection and like ones for sockets allowed.
- SSL: Expanded by the direct methods TLSv1.1, TLSv1.2, DTLSv1.
Protocol
- SelfSystem: XML loading expanded by option LD_NoTxtSpcRemEnBeg using to allow for spaces at begin and end of the text items.
- HTTP: Significant unified into service pages creation by the single function pgCreator(). The function pgCreator() primarily implemented as an user API function of HTTP module's object for allow its using into WEB-submodules for self but single-style service pages. External calls to the WEB submodules expanded by functions HTTP_GET(), HTTP_POST() with an argument TProtocolIn *iprt, but the old calls HttpGet(), HttpPost() also continued to check and support. Expanded for the main selection dialog with images and context help for allowing WWW-modules. The main page's template splited from the generic template for allow absolutely custom main pages.
UI
- {WebUser,WebVision}: Expanded to using the unified service interface from Protocol.HTTP by pgCreator() and the new HTTP call functions HTTP_GET, HTTP_POST.
- QTStarter: X Session manager disabled from restart the closed at exit programms. Expanded by a command line argument "--noX11" for allow the Qt disabling.
- QTCfg: Dangerous missed page refreshing prevented into applying changes on widgets of the replacing page, "Apply dialog for changes missing prevent". Moved from QMutex and QWaitCondition to ResMtx and CondVar, mostly to prevent here hangs on the system time changing.
- VCAEngine: FuncM resources lock set for a recursive to prevent dead locks. Session calculation time expanded by its maximum value. Adapted to TUIS::mimeGet() using.
- Vision: Visualizer specific attributes are alowed for the primitives and an attribute "sclWin" added and used to primitive "Diagram" for trends view in scale by window drawn by mouse. To primitive "Diagram" of the mode "Trend" the sliding by mouse is added in the time axis. Widget's tooltip and statustip set to show at not full transparent widget's parts.
- WebVision: Adapted to asynchronous calls for all regular updatings by servGet() and makeEl() adapting to it. SVG images show fixed by correct mime processing into UI.VCAEngine and TUIS::mimeGet() using. View "Button" of primitive "FormEl": fixed for next line processing, fixed for true text and image represent. For primitive "Text" set "line-height" for prevent upper font's padding and its representing for rotated texts moved to use CSS property "transform: rotate({X}deg)". * The prototype "Media" processing some fix for "fit" toggle and container's scale changing. Font's behaviour was expanded to support for text decorations "underline" and "line-through".
- WebUser: Semantics of the page's function expanded by two objects' arguments "This object" and "Protocol's object".
- WebCfgD: A new design created.