2018-06-16 Roman 0.8.20 - FIX:SYS: The function TMess::codeConv() prevented from error messages due a recursion at wrong codepage. !!!:DB.SQLite,DAQ.BFN,Protocol.HTTP,UI.{WebCfgD,WebVision}: Revised for all original messages. TCntrNode: Changed for using the definition STD_WAIT_TM(10) instead DEF_TIMEOUT(2) and DEF_TIMEOUT_EXIT(60). chldDel() prevented from exceptions in the mode DoDisable. TFunction,TPrmTmpl,DAQ.JavaLikeCalc.FLib: Some control interface properties (ID, NAME, DESCR) set to relation with the DB configuration. TFunction,TPrmTmpl,UI.QTCfg: The control field "rows" of the control interface expanded for true processing, as a hint. - FIX:DB: Fixed for reloading databases at the configuration file reload. - Transports: The external hosts of OpenSCADA prevented from changing the modification time and reconnections at the loading. !!:FIX:{Sockets,SSL,Serial}: Preventing, by processing, the executions at closing the input protocol. Sockets: Appended by the IO log for UDP requests. -UI: FIX:{QTCfg,Vision}: Fixed for crashes at the module detaching. !:FIX:QTCfg: Fixed for crashes at going to in the list by double-click. FIX:WebVision: Header of the protocol table set to hidden at its disabling. 2018-06-06 Roman 0.8.20 - API: !!!!:Changes: SYS.*: Command line help unified in the function optDescr() for getting the hierarchical help in a string and for its printing in single place of the function TSYS::load_(). DAQ.JavaLikeCalc: The function String.toInt() of the user API set to the base "10" by default. UI.{VCAEngine,Vision}: The term "quittance" renamed to "quietance", from the word "quiet" which is a logical one for the alarms, but the user API is remained compatible. Backported for implementing the modes "Load", "Save", "Menu" of the view "Button" of the primitive "FormEl" and the attribute "checkable" renamed to "mode"! Appends: SYS: The function cmdOptPresent() added and is used only for the parameter presence checking. DB.DBF,Archive.FSArch,UI.Vision: Added for generic control for permition of created files by OpenSCADA, by the command-line parameter "--permCrtFiles" and the function TSYS::permCrtFiles(). TRegExp: Backported for UTF8 flag support, unset by default. The attribute "err" added to the result array of the match() request. The virtual functions TSubSYS::optDescr() and TModule::optDescr() added for the unified command line help. Generic labels appended for messages categories by the function TMess::labMessCat(). DAQ.JavaLikeCalc: The user API expanded by the casting functions {Boolean,Integer,Real}.{toReal,toInt}(). - SYS: FIX:*: The function cmdOpt() set to return empty strings at the empty command-line parameter. FIX: Final counters dysplay set before the object "Mess" deletion. !!!!:*: Most original messages are revised and improved. !!!!: All command line help messages of the core library and modules of OpenSCADA fully revised for the original texts and their translation to Ukrainian, Russian and German. "Template library" renamed to "Templates library", "Archives" renamed to "Archives-History", "ID" renamed to "Identifier". The expression "Gather task priority" replaced in whole to "Priority of the acquisition task". The Ukrainian word "Включено" replaced in whole to "Ввімкнено" and "Виключено" to "Вимкнено". The station name "Empty Station" renamed to "Initial Station". !:FIX:TCntrNode: Appended by the definition "DEF_TIMEOUT_EXIT(60)" for use this timeout of the nodes disable/remove at the program exit. The message "Expecting release %d users!" appearing set seldom and with period 1 second. !!: A new command-line argument --consoleCharSet added for control the console charset, for messages and help. !!: The command-line argument --modDir was added as a copy of the configuration file parameter "ModDir". XMLNode: isspace() replaced by own implementation isSpace(), mostly for QNX where isspace() is broken for UTF-8. The DB selection item "*.*" removed for the main page. DATA.icons,UI.{QTCfg,QTStarter,Vision}: Some low-resolution images of GUI toolbars expanded up to 64x64 dimension in way of the Android look improving. ARM CPU-frequency reading expanded in reading "scaling_cur_freq" which available for the ordinal users. - DB: !!:FIX:{SQLite,MySQL,PostgreSQL,FireBird}: Translation columns creation at the table fixing added for already and partial translated tables into the non multi-language mode. SQLite: Expanded for an error message mark as "Read Only". - DAQ: {DAQGate,ModBus,OPC_UA}: TSYS::sysSleep() in idle (missing connection) replaced to TSYS::taskSleep() for correcting the maximum requesting time. !!:{TPrmTempl,JavaLikeCalc}: Finished and tested at the implementing the class TPrmTempl::Impl of the using unification of the DAQ templates. JavaLikeCalc: The functions selection list made plain one and appended by the DAQ templates. FIX:ModBus: Fix for copy parameters of the logical type at the links initiate after. !!:SNMP: Expanded for the connection error control at the parameter level. - Archives: !!:FIX: The archivers' objects copying prevented from copy the configuration field "ADDR", prevented from startup and fixed for copying addition properties. !:FIX: Fixed for archivers loading at some archive module missing. Clean up of the current violations table was added by a new button. !!!:FIX:FSArch: Cache access moved under a critical section, for preventing crashes at high load. !!!: Hardly prevented from the configuration field "ADDR" changing in the running, both for messages and values. A procedure of the configuration field "ADDR" checking for duplicates added. !!: Archive files renamed from the format "%F %T" to "%F %H.%M.%S" to allow their creation on FAT. !:FIX:DBArch: Fixed for single-value request of the value archive. - Transports: {Sockets,SSL}: The connection error of the outgoing transport was expanded by details. !!:Serial: Added for measuring of the maximum char symbol time of the output transports in the requesting and debugging mode. Char timeout calculation expanded for take in account whether the device is local (ttyS{X}) where the char timeout multiply to 3 for not local ones. - FIX:Protocols.UserProtocol: Prevented from breaking all next starting protocols after one error starting. -UI: !!!!:{VCAEngine,Vision,WebVision}: The primitive "Text" was appended by an attribute "inHtml" and the support of display HTML. !!!:FIX:{QTStarter,QTCfg,Vision}: Most Qt objects removing moved to use deleteLater(), for safe removing under processEvents() call from the requesting in different thread. !!!: Size of icons and sub-fonts made adaptive from the main-system font real size by the new function icoSize(), for: the main window initial size, the title font, toolbars' icons, the navigation tree's icons, the control tree view, the splitter width. !!!: The QTStarter menu forming changed for make the actions independent but the problem of the native menu bar forming in Unity. QTStarter toolbar forming moved direct to the end module. Force visibility of the menubar disabled for the native menu bar. !!:Force switching to the style QPlastiqueStyle() (Qt4) or QCommonStyle() (Qt5) was removed by the implementing in OpenSCADA the control of the look and feels. !!!!:{VCAEngine,Vision}: Some measures were performed to allow the full-featured "hot" development for already running and remote sessions: - The projects expanded by the using sessions accounting for new projects hot enabling on the sessions. The "Use" field also added for the widgets libraries, as a count of whole using of their widgets. - FIX: The attribute "value" of the primitive "FormEl" prevented from the modification flag set at the type change. - FIX: Restored and fixed for hot tracing into sessions of changes into widget's links. - Implemented for hot update of the widget procedures of the runtime mode. - ElFigure: Some properties of the common part of the developing mode were moved to the private widget part. !!!!:FIX:QTStarter: Prevented from open the QTStarter main window after successful log in into the QTCfg module. FIX: Prevent from a multiple entry from processEvents() manual call, observed on QTCfg. !!!!: Expanded by the Look and Feel control itself and its profiles support from the configuration file table "LookFeel" of the module, with their renewing on the go and for: Generic font, Widgets style, Palette, CSS style. !!!:FIX:QTCfg: Fixed, in the closing mostly, for processing of requests into the different threads. FIX: Fixed for crashes at opened warning-error dialogs. FIX: Take in account the item's description set after its zero value. !!: Forming item's WhatsThis, ToolTip and StatusTip is unified moving to one function setHelp(). "ToolTip" limit set for control by a new configuration parameter "ToolTipLim", which is 150 by default. "ToolTip" expanded for HTML labels. !!: The fitting mechanism of the vertically scalable items was made: guaranty to the previous fit reset before the same fitting, faster and more precision. !: The images "ok.png" and "identity.png" removed and replaced. Going to branches through the list set for placing the previous address to the back list. Appended by the navigation tree refreshing after the error copying. Loading of the "endRunTimer" is decreased. WebCfgD: Renamed from "Dynamic WEB configurator" to "Program configurator (Dynamic WEB)". !!!:FIX:VCAEngine: Prevented from saving not enabled yet items at "enableByNeed". !!!:FIX: Fixed for accessing to the wrong created session items. Attr::ProcAttr was also appended to the direct inheriting like to the links. !!!: Archive mode of the primitive "Document" improved by the specific attributes set to the new mode Attr::NotStored. Prevented from the missing attributes warnings at switching the primitive "Document" to the dynamic mode. The syntax highlight rules of CSS expanded for comments by /* */ of the primitive "Document". !!:FIX:Vision: Scaling the main runtime window made absolute from the window original size. FIX: Fixed for closing child windows on QNX, commenting pg->setAttribute(Qt::WA_DeleteOnClose). FIX: Fixed for fit main page to the main window size on small screens - prevents from appearing scroll bars. FIX: The copy command rised before the cut one. !!!: The requisting into different thread is implemented but set to be enabled at the unpublic command line option "ReqInDifThread" but Qt loss releasing mouse events now, into event(). Then, by default the requisting into different thread is disabled now. !!: The view "Button" of the primitive "FormEl" forced to its background color changing by using CSS also, which is needed for the Qt Widgets style "GTK+". !:FIX: Prevented from the runtime window manual resize drop at the user change. !:The view "List" of the primitive "FormEl" rewrote to implement the light updating, for mobile devices like to Maemo, MeeGo. The images "it_*.png" renamed to "v_it_*.png". The images "ok.png" removed and replaced. The primitive "Diagram" and "Box" improved for late enabling (after whole loading) in the runtime mode, mostly for slow and bad remote connections. Access to user's name and password moved under the critical section. The InputDlg widget expanded for controlled save and restore the window size, for very expanded ones on the example of the fullsized text edition. Main window of the runtime mode set to readjust at the user change. Main menu of the main window of the runtime mode set to the not disabling mode. !!:WebVision: FIX: Some properties of the primitive "FormEl" were fixed to detect the changes. FIX: The primitive "Text" disabled from padding arguments by " " and " " used instead. !!!: The modes "Menu", "Load" and "Save" of the view "Button" of the primitive "FormEl" are implemented. The tree view implementation was set the generic one for use in two places. Tracing added for the Web-browser main window resize and the OpenSCADA main page reloading. 2017-12-29 Roman 0.8.19 - API: !!!!:Changes: SYS.*: The flag TCfg::TransltText was moved to TFld::TransltText and used instead TFld::NoStrTransl also which removed. Transports: The generic accessing lock of the outgoing transport was moved to mutex and the argument "noRes" was removed from the function messIO() to prevent from unexpected outcomes from the critical section of requests. Resource lock object nRes and its function nodeRes() removed for the input transport object. Appends: SYS: strEncode() expanded by the mode "ToLower" for conversion to lower register. Command-line options preloading and direct access-modification added by a new function cmdOpt(), full switch to cmdOpt() from getCmdOpt(). Binaries decoding into strDecode() expanded by the argument's value "" for text field in right forming. XMLNodeObj: Appended by an user API function getElementsBy() of XML nodes list obtaining by tag name or some attribute value. TArrayObj: arSet() adapted to the array end appending by a negative index. DAQ.{AMRDevs,ICP_DAS},Special.FLibSYS: A self implementation of the function atof() and strtod() in the function TSYS::str2real() and its shortcut s2r() and for understand both radix symbols of float point value that is "." and ",". Disabled now! DAQ.OPC_UA.libOPC_UA: Function TSYS::str2real() placed and used into the independent library. Disabled now! Transports: Generic IO log for both input and output transports was added into the core and all transports modules. UI.VCAEngine: Appended by user functions of the session space: reqTm(), reqUser(), userActTm(). - SYS: !!!!:FIX: XMLNode fixed from spare string size reserving in encoding of the serialization which caused to its performance significant degradation especially on big trees. It must significant rise overall performance in network interaction by XML. !!:FIX: Unified and fixed in serialization to XHTML for: preventing self-finished tags for "script", "div; preventing of symbols "'" and '"' encoding into text (also for generic XML); UTF8 symbol 0xA0 encoding to " ". FIX: Encoding UTF code 0xA0 to " " replaced to " " but " " caused errors on pure XML (not XHTML), observed on UI.WebCfgD. !!:FIX:TRegExp fix in function match(), for hang and crash prevent. FIX: Fix from early direct using of the system arguments: --messlev, --modPath ongoing the moving to cmdOpt(). FIX: {mLang2CodeBase,mLang2Code} moved under the data lock. Strings' encoding disabled for language "C" and the encoding "ASCII". FIX:Security: Fixed for crash on try login at not initiated empty password with its hashing support. In hashed passwords their allowed to store in plain, mostly for the storages which are primarily in edition. Functions crypt_r() and crypt() processing was added. FIX:*: Some build warnigs are fixed. FIX: Some original messages and help messages were fixed and source codes cleaned. !!!: The core library version set to 2:6:0. Modules version of the subsystem "Transports" rose to 10. !!:TConfig: Prevented from recursive entry to cfgChange() by a flag mInCfgCh. !!:XMLNodeObj,XMLNode: Full children clear set from the end for much speed up of the operation. *: Unwrapping all the shortcuts "(s)" and "(sec)" to ", seconds". State lablel "Enable" renamed to "Enabled". Word "system" mostly replaced by the word "program". TFunction: Number of manual calculations of the internal procedures set to 1, by default. Adaption to OpenWrt(UCLIBC): including to src/tmess.h; checking for __UCLIBC__ into TUser::auth(); iconv buffer set to "const char *". "langinfo.h" and "syscall.h" were set for conditional one. - DB: !!:Tables' content display set to configurable limited, by default it is 100 rows. Height of the field of the SQL requests decreased to 2 rows. Spare configuration area of the table object "/prm/cfg" removed. !!:{SQLite,MySQL,PostgreSQL,FireBird}: Preloading of fieldSeek() set limited on 100 records, for long unterminated hangs prevent. !:SQLite: Journals removing before open any DB was added. Requests "BEGIN;" and "COMMIT;" moved under the critical section "connRes". - DAQ: !!:FIX:{DCON,ModBus,Siemens}: Mutex objects "enRes" and "reqRes" set to recursive ones by Oleksiy Bondarchuk. !!:FIX:SoundCard: Significant revised and fixed for work with the real hardware and virtual ones like PulseAudio and tested on sample rates up to 192000. FIX:LogicLev: Fixed for uninitiated access to "err(f_err)" attribute into the debug mode. FIX:ModBus: The extended type "String" was fixed to ModBus register's natural order in "BigEndian", seen on Sycon Instruments STM-3. FIX: Syntax highlighting was fixed for four digits-registers for extended the type "_d". FIX:DAQGate: Fix for attributes in EVAL for the stopped and disabled modes. {LogicLev,ModBus}: Values size of the stored attributes of the logical parameters expanded from 200 to 1000000. JavaLikeCalc: "Compile error ..." information expanded by the function ID. BlockCalc: Attributes description format some rewrote. - Archives: !:*: Values and messages archivators appended by the maximum value of measuring of the processing time. !!:FIX:FSArch: Some messages expanded for more information. FIX: Archive files multiple pack-unpack prevented. Name of objects of archive files moved under resource by using MtxString. Added checking and clearing for zero archive files. Buffers of archivation of messages and of info-files of values set safer, for possible random data reading. Checking for parameters of value archives added to prevent crashes at wrong ones of deep broken archives. Translation to German some fixed by Alexey Bondarchuk. !:FIX:Archive.DBArch: Appended by wrong archives pass of the values. Tabs "Messages archive" and "Value archives" of the control page were renamed to "Messages" and "Values" respectively. - Transports: !!!!:{SSL,Sockets}.out: Transport's functional lock of resources was merged with reqRes(). !!: Input transports appended by measurement of the current and maximum time of requesting to protocol, in the "Debug (0)" mode. Output transports were appended by the responsible time measurement in the "Debug (0)" mode. Manual requests result of the output transports in binary mode switched to the new variant "". - Protocols: !:HTTP: Expanded by a list of users allowed for auth. mNoFull renamed to mNotFull. ModBus: Resource object nodeRes() (nRes) replaced by the system one dataRes(). SelfSystem: Some renamed. Serial.out: Input buffer clear set to double one and moved closer before same writing. - UI: !:{QTCfg,Vision}: Main window and main dialogs (developing for Vision) size and splitter's properties storing and restoring were added. {VCAEngine,Vision}: Deleted widgets from inherited containers resoring was added at alike widget creation try, instead incomprehensible messages. {QTCfg,WebCfgD}: Scalable items set optimal for vertical fitting, but straight increasing per 5 pixels too slow on some graphical environments like virtual machines and VNC. !!:FIX:QTCfg: Fix vertical scalable widgets "Tables" and "Lists" by their placing at the end of the widgets stack. !:FIX: Prevented from high load at the respond waiting progress dialog. FIX: Function ConfApp::pageDisplay() double call sometime was prevented. !: Pages refresh at vertical size changing was added. Stop for cyclic refreshing at wait dialog termination was added before same termination. Shorted long helps for ToolTips were appended by "Shift+F1". Binary data representation changed to view "B[{ByteStream}]". !!:VCAEngine: Different big (from the main task of the session) perioded widgets processing adapted to execution into different phases then to make the main task loading plainer and lesser at all. !!: Added control for user action by its last action time. FIX: Improper pages closing was fixed for multiple container pages. Limit of the generic attributes "geomXsc" and "geomYsc" was expanded from [0.1:100] to [0.01:100]. !!!!:UI.QTStarter: Expanded for close (windows) and starting into the system tray. !!!!: Significantly revised for the interface fully creation into the Qt events loop of exec() and WinControl functions moved to the StApp descendant of QApplication. !!: Self menu of QTStarter with the Qt modules list was unified as the static storage of the actions for extending menus and toolbars of windows of the Qt modules and the system tray icon, placed also into the property "menuStarterAddr" of the application main object. Set icon of the QTStarter dialog to one of the actual configuration. !!!!:FIX:Vision: The main window size was set to fit the master page size after return from maximizing or the full-screen and opening in the original size. !!FIX: Runtime menu creation moved to whole mode that is full creation at needs and full clearing at not needs, for prevent the menu show at its inactive mode into some environments like Maemo and Unity. FIX: Qt > 5.3 fix for wrong QAbstractTableModel::sibling() implementation by it reverting to QAbstractItemModel implementation. FIX: View "CheckBox" of the primitive "FormEl" processing fixed for signals preventing at set value from the model. FIX: ID of copying and moving widgets was set to encode for TSYS::oscdID to prevent errors here for wrong symbols. FIX: Included widgets resizing and moving in the developing mode by keyboard were fixed for mouse cursor position changing even to the widget's changes. !!: Added control for the runtime user by a visualizer specific attribute "userSetVis" of the main page and by expanding of the user's status widget and the selection dialog. Working without printers by QT_NO_PRINTER was added. State of opened windows appended by their users. Spare Mutex Objects removed from the object "UserStBar". Items visibility were restored for editing widget and for: "VisItClear", "VisItChDown", "VisItProp". FIX:WebVision: Calendar dialog closing fixed and set at the clear timeout also and set it to 10 seconds. Text of buttons into the custom mode was fixed for next line symbol "\n" and words breaking at overflow by CSS property "word-break". - Special: !!:FLibSYS: VArch::set() expanded for single value writing to the archivator of the archive. SystemTests: The name and description some expanded. 2017-07-03 Roman 0.8.18 - SYS,DAQ.OPC_UA.libOPC_UA: ieee754.h included to adapt for float point in IEEE754. - SYS.build: AX_PTHREAD macro was disabled and "-lpthread" was set directly but some old Linux distributives like Mandriva broke here. 2017-07-02 Roman 0.8.18 - API: !!!!:Changes: SYS: XMLNode: Functions save() and saveNode() set to constant ones. XMLNodeObj: User API function text() was expanded by argument "full" for all child's texts combine. ModSchedule: Function ScanDir() and CheckFile() were renamed to dirScan() and fileCheck() respectively. Transports.out: User API function messIO() was expanded for return string type everywhere. Special.FLibSYS: The user API function dbReqSQL() was moved to the features of the function SYS.BD["TypeDB"]["DB"].SQLReq(). Appends: SYS: TMess::getUTF8() function was added and used for UTF-8 symbols detect into XMLNode::encode(). TCntrNode: Expanded by a user API function "messSys". Archive.Value: User API functions were appended by setVal(). - SYS: !!!!:FIX: More original messages were fixed. !!!:FIX:ModSchedule: Modules closing at exit was set to all the modules closing firstly and next all the module's libraries unlinking. !!: Modules scanning procedure was expanded by the module's name template into the end of the path. Modules separator of option "ModDir" of OpenSCADA was changed to ';'. !!!!:build: Significant changes into the build system: FIX:configure.ac,acinclude.m4: The source texts were mostly cleaned for the formation style and messages. The macro AX_PTHREAD was appended and used. The environment variable HAVE_GD_CORE was renamed to HAVE_GD_FORCE. Libraries were moved from their direct pointing into src/Makefile.am to checking, for: -lpthread, -lm, -ldl, -lcrypt, -lz, -lpcre debian/control: Build with MariaDB as a variant of MySQL was added. debian/rules: dh_compress was prevented from files of documentation in PDF and ODT compression. acinclude.m4: SSL: Symbol for checking SSL library changed to "SSL_free" but SSL_library_init missed on OpenSSL 1.1. OpenSSL checking macro was expanded by the optional test "AX_LIB_OpenSSL_opt" and the tests were appended by the libcrypto checking. A new configure option --with-qt5 was added for Qt5 forcely checking and using. Checking for LibGD was set combined with and next without PKG_CHECK_MODULES(pkg-config) and removed from the module UI.WebCfgD. configure.ac: A new configuration option --disable-CoreLibVersion was added to disable version of the core library. Checking for "libintl" was changed for function "libintl_bindtextdomain" and checking for libiconv was moved before. Checking for "inux/serial.h" was added for the module Transports.Serial. Special.FLibSYS was appended by the checking macro "AX_LIB_OpenSSL_opt" using. Checking for spare header's files was removed. AC_CHECK_LIB was replaced by AC_SEARCH_LIBS mostly and the library "librt" checking was added. AM_INIT_AUTOMAKE call was set shorter. !!!:XMLNode: The serializer was expanded to true check for UTF-8 symbols and " " processing in function encode() and the parser, for entity " ". !!!:Protocol.HTTP,UI.{WebUser,WebVision}: ACL support was added to control access and visibility of items of indexes of Web resources. Protocol.{ModBus,UserProtocol},UI.WebUser: Expanded for tracing and notification for program's changing. DAQ.ICP_DAS,UI.{QTStarter,QTCfg,Vision,WebCfgD,WebVision}:Makefile.am: *_LIBADD was replaced to *_LDFLAGS. An command-line option "lang" was added. Values' (attributes of parameters of DAQ) info were appended by state "Read only". Checking for HAVE_CONFIG_H was added for "config.h". Some spare headers were removed from the source code. Needed parts of ieee754.h were moved to the file directly. Security: Support of the hashed passwords was expanded to use the locked function crypt() on crypt_r() miss. libcrypt checking was expanded for crypt.h. Mess: Messages encoding was disabled for a charset "US-ASCII". - FIX:DB:{.,SQLite,MySQL}: Some control items of OpenSCADA control interface were fixed for their permition. - DAQ: FIX:ModBus: Managing of duplicate attributes of the standard parameter was fixed. Set for using ID at empty Name part of DAQ. OPC_UA.libOPC_UA: Needed parts of ieee754.h were moved to the file directly. FIX:System: Some warnings from Valgrind were fixed. FIX:DAQGate: Requests were fixed after moving to different station. Expanded for allow write to configure's attributes "NAME" and "DESCR". Size of the configuration field STATIONS was decreased to two rows. Siemens.build: "INCLUDES" was replaced by "daq_Siemens_la_CFLAGS" and "daq_Siemens_la_CXXFLAGS". - Archive: !!:FIX: Fixed for checking for a proper archivator by its periodicity, allow for correct selection archivators in periodicity more then one minute in graphics building. Value: Direct writing to archives was expanded for all buffer's which aren't the buffer of archive. !!!:FIX:FSArch: Function of archivators checking is fixed for correct processing of the capacity limit of the values archiving by the archives sorting to remove its files at maximum quantity. !!:FIX: Fixed for too long messages back reading and wrong messages reading was prevented at all. !!!: Expanded for INFO files store into a standalone DB file of SQLite into the archivator's folder. - Transport: FIX:Serial: Checking for "linux/serial.h" was added and for "linux/i2c-dev.h" was fixed. !!!!:FIX:SSL: Fixed into client's part for correct free which caused for crashes and blockings, for SSL_free() missing and variables "ctx", "ssl", "conn" clean at second start, into the output part. Wide tested on browsers Chrome, Firefox; for file handlers free and into Valgrind. The method "SSLv2" was finally removed but it is not secured and fully removed from OpenSSL 1.1. SSLv3_server_method() and SSLv3_client_method() functions were set to disabled by OPENSSL_NO_SSL3 definition. - FIX:Protocol:OPC_UA{*.libOPC_UA}: The resource "mtxData" added to object Server and used for the security channels container management. - UI: !!:{VCAEngine,Vision,WebVision}: An attribute "mult" was added to view "List" of the primitive "FormEl" to able multiple lines selection. !!!!:QTStarter: Fully merged from the Work branch. A first module starting at empty list of started modules was disabled. !!!:FIX:QTCfg: sizeHint() and minimumSizeHint() processing was fixed for "Text" and "List" items. !!!: Scalable vertically items were finished to implement their true fitting for: texts, tables and lists. Fields "ID" and "NAME" of the node control dialog were set to the unlimited size for next these changing from inforamtion of the control interface. VCAEngine: Links checking for activity was added to the dynamic linking mechanism. FIX:Vision: Images of primitive "Media" clean at an empty string set was added. FIX: Separator "\n" was set for encoding by TSYS::base64 to storages. FIX: Fixed for opened to edition widgets size on big screens, the fitting was set conditional for an active and maximized window miss but there has a problem in Qt. FIX:FormEl.Table: Fixed for properties of columns. Expanded for field "width" equal to 0 processing to hide the column. X scaling used into result column width. !!!:FIX:WebCfgD: !!:FIX: The "Table" element processing for big content was some improved and fixed for key items edition. FIX: Checking for "gd.h" was fixed. FIX: List items processing was fixed for ones without ID. FIX: Elements merging into single line was fixed by CSS rule "white-space: nowrap;" but the constant was set to "white-space: normal;". !!!: Fitted to allowed space for scalable by vertical elements: texts, tables, lists. !!!: GD library was replaced by the CSS filters and set optional by --enable-LibGD. !!: The navigation tree and dialogs forming were some improved, by drop shadow and a transparent background for disable access to the main area. !: Item copy was expanded by it copy to its root through self. Acknowledgement buttons of text items moved to left, for big screens. Border color of the input elements was changed to "gray". The structural class "SSess" was moved to strucure type. Date fields were moved to a type "datetime-local" of the tag "input". Elements indent was set to "padding-left: 10px; text-indent: -10px;". Length of the number elements was set to the fixed one by 10 symbols. List items were expanded for commands to empty list. WebVision: !!!:FIX: Width of the popupmenu was fixed for context menus. !!!:FIX: Behavior of the primitive "Media" for not "Fit" mode was fixed to prevent the scale problems in way of full removing the tag . Vertical alignment was added to images of the primitive. !!:FIX: Dialogs, small built-in windows, forming was some fixed and improved, font of title was set to 12pt. !!:FIX: System context menu oppressed for active widgets. FIX: Scale dimension was increased to 3 digits after dot for correct scaling to big screen. FIX: Borders and transparent backgrounds processing was fixed. Background of the primitives processing was moved to common and after the ones processing and the background transparency-opaque support was added by a separated block (div) creation with the opaque level. FIX: Primitive "Text": spaces processing was set to "white-space: pre-wrap", the property "wordWrap" support was added. FIX: The view "Button" of the primitive "FormEl": was fixed for words wrap on Chrome browser, switched to use filters for display inactive images. !!!!: The views "Spin bar", "Scroll bar", "Table", "Tree" were implemented. The view "Scroll bar" is equal to "Spin bar" now. !!!: View "Line" of the primitive "FormEl" was expanded by the calendar dialog for date variants. !!: The visualizer specific attributes support was added through its activation. !!: Main page scaling to fit to the window of the browser allowed space was added, only to grow and with the aspect ratio control. !!: The XHTML part of page was moved to an separated file like the JavaScript one. All generic CSS rules were moved to the XHTML file. Views of "Combo box" and "List" of the primitive "FormEl" were made simplified. Internal functions nodeText() and setNodeText() were replaced to "textContent". Processing event of the wide combobox (list) was changed from "onchange" to "onclick" to the processing guaranty. Moving to using pgCreator() was finished. pgCreator() was expanded for simple requests processing in local. The structural class "SSess" was moved to strucure type. Generic improvement. - Special.FLibSYS: Description of the function dbReqSQL() was expanded. 2017-02-13 Roman 0.8.17 - Transport.Serial: Checking to present the header file linux/i2c-dev.h added to build on Linux distributives like SuSE. 2017-02-12 Roman 0.8.17 - 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: !!:FIX: LibZ functions were rewrote for some unification and the used memory optimization. FIX: The message "Some tags on path '%s' are missed!" was fixed for the argument and rewrote to "Entry %d of the path '%s' is missed!" FIX: TValue::chldAdd() fixed for the Archive subsystem mark as setToUpdate() only for successful appending. FIX:TRegExp: Fix in function split(), for hang and crash prevent. FIX: data/oscada_gentoo.init is some fixed by IrmIngeneer. FIX:TConfig: Fix for the object copy by the copy constructor appending. EVAL forms conversion is added to TCfg::set{S,R,I,B}(). FIX:TElem: Fix for the object copy by the copy constructor appending and its reserved for full implementing further. FIX:XML: XMLNode's flag LD_NoTxtSpcRemEnBeg fixed for spaces in begin. Crashes on empty string encoding try to fix. !!!!: 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. !!: Adapted and some fixed to build by GCC v6 with C++11 by default. !: Minimal messages level for all configurations set to "Info(1)". Some of the system messages and module ones moved to the debug category. The function TVarObj::AHDDisConnect() rewrote to prevent a messages into the lock section. data/icons: Images Protocol.HTTP.png and Protocol.SelfSystem.png, Protocol.UserProtocol.png updated and UI.WebUser.png added. ResString,TVarObj,Function,UI.VCAEngine: pthread_mutex_t replaced by ResMtx. sysSleep() moved to clock_nanosleep(), CLOCK_MONOTONIC and clock_gettime() for short times lesser to 300us. DAQ.{Templates,JavaLikeCalc},Protocol.ModBus,UI.VCAEngine: Items deletion procedure termination at DB error added. TSecurity::access() function expanded for allow groups list as a separated by ',' one. Base64 encoding/decoding method some expanded for line separator point as an argument. For user API TVal::set() there prevented writing to no writable values of the configurations. - 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. Message about rows missing at get some appended. !!:PostgreSQL: DB object expanded by a statistic to control the activity and lags. - DAQ: The value archive's part set firstly readed for redundancy processing. !!!:FIX:*: Wrong word "Parameteres" fixed. !!!: Tasks' execution status was expanded by the maximum consumption value. Name of parameter of alarm messages expanded by the module name. FIX:{BlockCalc,LogicLev}: Input links processing moved out of the attributes modifications detection into calc(). FIX:{BlockCalc,DCON,LogicLev,Siemens}: The deprecated property "PERIOD" processing fix to allow it's replace next by the propery "SCHEDULE" forcing to rewrite and "PERIOD" to clean. {LogicLev,ModBus}: User API function attrAdd() expanded to apply flags "text" and "ro" for present attributes. !!: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. !!!:FIX:LogicLev: User attributes removing prevented at the parameter's object enable, for passive ones. !!!: Moved for set the attribute "f_frq" to the real frequency, taken from the task description structure. Expanded to allow writing from external to the RO attributes "err" and all other for the "f_err" EVAL. The system IO "f_err" allowed for redundancy. IO of parameters loading was moved to using the seek request. !!!!:FIX:OPC_UA.{*.libOPC_UA}: Hello/Acknowledge properties set configurable and client's ones also storing. !!!!:FIX:libOPC_UA: 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. FIX: Some locks lost fix. !!!!: Chunks support was added to server's part. Tested on chunks into input requests for insecure and secure connections. A copy constructor was added for object NodeId and the strange problem here closed. New OPCAlloc object is added for mutex handle and its automatic free for exception. Maximim notifications per publish limit processing some improved. Expanded to early publish requests processing after requests of subscription and monitored items creation, for the init publish requests. !!:FIX:BlockCalc: For IO presenting check there was used an uninterrupted ioId() of the function object. IO of blocks loading was moved to using the seek request. ICP_DAS: SDK was updated to the last version of "ICP DAS". !!:FIX:JavaLikeCalc: Freeing of the function's test execution context is added on this function stop, for some crashes on exit prevent. !:FIX: Return of the included functions fix for the string constant "" override. !!!!: 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. FIX: Internal function's space splited for temporary registers. FIX: The syntax highlight some fixed for strings and backslash '\' in variant "\\" and expanded to the command "~". External functions link and call optimized at all. !!: System: Expanded by "FS" data source. Automatic creation of sources expanded to modes of the sources "Fast" and "Slow". FIX:DAQ.ModBus: Fixed and adapted to user attributes processing pass. - Archive: !!:FIX: Spare writings direct to the archivators prevented for TVArchive::setVals(). FIX: getMess() fix for double call modules' function get(), by fmin() using. FIX: getMess() fix for double call modules' function get(), by fmin() using. FIX: getVal() fix for request to the current value but the buffer end() some lesser to it. Some fields of the messages request dialogs are merged to single line. messPut() expanded for alarms set and processing in first order. !!:FIX:{.,FSArch}: Last read buffer information is added and the property using fix. FIX: Exceptions into archivatorAttach() at the archivator's object stopping are prevented to allow the archive early start. FIX:TValBuf: Fix for the object copy by the copy constructor appending and some fields lack. !!!!:FIX:DBArch: Messages archivation part fixed for "needMeta" and to deny an access to the archivator before the successful meta get. FIX: Set values processing mostly fixed to return the correct last time. !!!!: Reading of the value archives made 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. Values archivation period limited to the resolution in seconds. Values archivation adapted to redundancy. Checking of the module meta table is added for creation the lack value archives, like into Archive.FSArch. Value archives limit is rose to days. Messages get switched to use the preloading scanning mode. FIX:FSArch: Adapted to values accumulation API. Values archivator fixed for the function stop() prototype. The modules adapted for early archivators init and archive's meta set from the physical archives. - 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. "No stop on proceed" option is added to output transports. Char limit value expanded to 10000 ms, for output. The timeout "symbol" was expanded by "the next request's multiplicator to the {symbol} time, 4 by default". !!:Sockets: 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. !!: 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. !: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. !!!!:FIX:HTTP: Navigation by FS for the templalate file was fixed. !!!!: 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. !: The main page's template splited from the generic template for allow absolutely custom main pages. !: Expanded for the main selection dialog with images and context help for allowing WWW-modules. Current folder force added to the template's resources checking. External template using expanded for main page without the Web-modules index and to allow for redirect to other page there, for Login/Logout using the internal templete continued in that case. - UI: FIX:{Vision,WebVision}: Current values tracing of primitive "Diagram" for big periodics, in days, is fixed. {WebCfg,WebVision}: Module's icon obtain machanism is changed. {VCAEngine,Vision}: To the "connect" service there is added the checking of user for root by attribute "userIsRoot" and using it for menu visible. !!!!:{WebUser,WebVision,WebCfgD}: Expanded to use 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. FIX: Adapted to Qt5 specific method QTranslator::translate(). !: Expanded by a command line argument "--noX11" for allow the Qt disabling. !!:FIX:QTCfg: Crashes into ConfApp::selectItem() prevented after "selectPage()" call by the possibility of the items selection changing. !!:FIX: Dangerous missed page refreshing prevented into applying changes on widgets of the replacing page, "Apply dialog for changes missing prevent". !!:FIX: Moved from QMutex and QWaitCondition to ResMtx and CondVar, mostly to prevent here hangs on the system time changing. The window title forming some changed. Allow page update after warnings at items loading. Checking for integer input field's range is added. !!!:FIX:VCAEngine: FuncM resources lock set for a recursive to prevent "dead" locks. !!:FIX: Session calculation time expanded by its maximum value. !!:FIX: Attribute addition expanded and used at manual creation by the attribute "allInher" for its creation inheritance. FIX: Something prefixes ":" replecing to ": " fixed yet. FIX: Widgets list into the widget's parent field expanded and fixed for list all items of project tree to any depth. FIX: Static functions' name and description of the primitives are fixed. FIX: Virtual function PrWidget::setEnable() fixed for the second argument and this one of widget and its succession expanded by the argument "force" like to pages. FIX: Session's pages force enabling, at a request, prevented after its manual disable. FIX: User attribute ID prevented to set for empty. FIX: Visualiser specific attributes forced to modify at its activation, only for present attributes. FIX: User attribute's value translation on load of the user attributes fixed. !!: Session local dataMtx() is replaced by generic dataRes() of the node. !: Adapted to TUIS::mimeGet() using. New created attribute's ID ("newAttr") and NAME set for indexing. To user's attributes loading used the preloaded seek. Connections management added for its connection ID, mostly to detect remoted VCAServer changes and to re-iniate need then. !!:FIX:Vision: Setting and updating of configuration of the status line fixed only for the master-page and its items immediately removing. FIX: Cursor wrong setting sometime for current time position fix for primitive "Diagram". !!: Visualizer specific attributes are alowed for the primitives and an attribute "sclWin" added and used for primitive "Diagram" for trends view in scale by window drawn by mouse. !!: For primitive "Diagram" of the mode "Trend" the sliding by mouse is added in the time axis. !!: Session restoring moved to the prior pages pre-removing but that is some faster, safer and cleaner then updating. !!: "Developers" help field removed by merging it to the field "Author". !: The view "List" of primitive "FormEl" expanded by appending the pointed but missed values to the list. !: Widget's tooltip and statustip set to show at not full transparent widget's parts. Unloaded mimes' extension sets to stored with the resource before taken from the mime type. Expanded for authentication message error detailing. Source code of primitive ElFigure some addition cleaned. Using of the connection ID is added. Force to widgets update and restoring opened pages at a reconnection is added. Lock for the main window changing in run mode at the session update-reconnect. !!!!:FIX:WebVision: SVG images show fixed by correct mime processing into UI.VCAEngine and TUIS::mimeGet() using. FIX: View "Button" of primitive "FormEl": fixed for next line processing, fixed for true text and image represent. FIX: 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)". FIX: The prototype "Media" processing some fix for "fit" toggle and container's scale changing. !!!!: Adapted to asynchronous calls for all regular updatings by servGet() and makeEl() adapting to it. !!: Font's behaviour was expanded to support for text decorations "underline" and "line-through". Icons to project's and session's items are added. Generic views of primitive FormEl set for padding to "0". Some changed in ElFigure implementing code for crashes in Post. !:FIX:WebUser: Source code cleaned and the translation corrected. !: Semantics of the page's function expanded by two objects' arguments "This object" and "Protocol's object". !!!!:WebCfgD: A new design created. - Special: !!:FIX:FLibSYS: FFT buffers "free" using fix, instead "delete". Translation was fixed something. Function strParse() expanded for multisymbols separation. SystemTests: A test of the preloading scanning mode added to the DB tests pool. FLibMath: The source code cleaned. 2016-07-14 Roman 0.8.16 - !!:FIX:Archive: Old LTS problem with alarms is fixed, for the negative level read from the messages buffer and allow write to archives. - !!!!:FIX:DAQ.JavaLikeCalc: Second argument's type changing at compile is fixed but it is dynamic now mostly, detected on problems with some string operations. - FIX:UI.Vision: Pages including into the pages container is fixed for adjust at it's scale change. 2016-06-28 Roman 0.8.16 - API: !!!!:Changes: SYS,Transport,DAQ.DAQGate,UI.{QTCfg,Vision,WebCfgD}: External host upraise is implemented by the function extHostList() extension, the requests reforwarding by function cntrIfCmd() and the input part of the self-system protocol. pthread_mutex_t, MtxAlloc and MtxString moved to the mutex wrapper object ResMtx. DAQ: API functions tplE(), tplIOE(), errE() renamed to elTmpl(), elTmplIO(), elErr(). Archive: m_start, run_st, m_db were renamed to mStart, runSt, mDB. Appends: SYS: Resources locking in RW object "Res" expanded by the functions (synonyms) lock(), tryLock() and unlock(). Additional managing time macro FTM2 is added. TFunction: Virtual function prog() and setProg() is added for allow it's control through an abstract object. User API function SYS.sleep() expanded to accept first argument of time in seconds as float and allow to set here up to nanoseconds. DB: Resource's of the DB allocation TBD::resTbls is added. DAQ.BlockCalc: User API functions cntr(), cfg(), cfgSet() for blocks are added. Archive: messPut(), messGet() and same user API function expanded by the argument "arch" to allow direct to the pointed archivators requesting. User API function messGet() expanded by argument "upTo", for the timeout direct control allow. To messages get functions added a time result of the finished processing. Mostly for allow fast continue from the point after long terminated by the timeout requests. Values archivation a global option is added for time of taken values force to current and override it's source from. To values archive object an option is added for pass values fill to last value. Transport: Starting-connection time is added to the output transports. UI.VCAEngine: User API functions mess{Debug,Info,Note,Warning,Err,Crit,Alert,Emerg}() appended to the run-time widget and included the widget path as the category. Special.FLibSYS: The time functions are appended by tmSleep() for faster access to the short sleeping provides. - SYS: FIX:User's space flags to generic nodes (TCntrNode) processing fixed, mostly for "RM_Full" flag and DAQ paramter's archives proper removing. !!!!: CoreLib version rise to 2.4. DB,DAQ,Archive,Transport: Module's subsystems' version set to 8. !!!!:TCntrNode: Free of locked nodes and attach to disabled ones are prevented by proper resource locking to mUse. !!!!: For some productivity rise the exceptions catch moved from the object copy to it's reference. !!:{DAQ,Transport}.*: Tasks priorities range expanded up to 199 where 100-199 used for SCHED_FIFO tasks planing policy. !!:All key warnings next resolved. Include some controversial ones: DAQ.OPC_UA.libOPC_UA: Encoding mask processing in mix of operations '&' and '|'. Function realRound() some set simply. System configuration fields "workdir", "moddir", "icodir" set to readonly from the configuration interface, mostly for wrong changes prevent and the changes allow only by the configuration file edit. Security: Adapted to prevent passwords storing in open view as hash instead, for: OpenSCADA host (Transports), Protocol.SelfSystem, UI.Vision. crypt_r() using enabled only for "__USE_GNU" and the open passwords store instead. TSYS::strEncode() in variant SQL expanded by the doubling method of the pointed symbols. data/debian: the service's script openscada.init moved to separated package openscada-server. changelog: Author set to OpenSCADA , mostly for allow the sign after build by that key. - DB: !!!!: All DB modules rewrote to open table without exceptions into the table object constructor. !!:FIX:MySQL,SQLite,PostgreSQL: Prevented the "BEGIN;" and "COMMIT;" request's sequence breakage on high concurrency access activity. "connRes" moved from pthread_mutex direct to ResMtx wrapper. {PostgreSQL,SQLite}: TSYS::strEncode() in doubling method is used. FIX:DB.PostgreSQL: Fixed for symbols "'" '"' encoding by it replace to the doubling method. FIX: Fix cycling after unsuccessful a table's structure correction. MySQL: Executions into BD::postDisable() are prevented. - DAQ: !!: User API function funcCall() significant expanded to fix the result function for reusing and then significant performance rise. FIX:Value: Write access to DAQ attributes closed for all into the service request "set". FIX:*,DAQ.LogicLev: Special and translated IO from config are prevented from the redundancy. !!!!:*,LogicLev,ModBus: DAQ redundancy of the dynamic attributes is added. !:ModBus,Siemens,DCON: Pass of real requests at the first and last iterations, only the procedures execution. !!!!:FIX:OPC_UA: Module for client renamed to "Client OPC-UA" and for server to "Server OPC-UA". Some spare error messages removed. !!!!:Protocol: Works into the poll mode of input transport are allowed and enabled by default. The Publish service now allowed on the LTS! reqData() fixed for "NodeClass" processing of the "Browse" request, mostly for forward request to the data model. !!!!:FIX:libOPC_UA: Packages sequence number managing for server part is fixed by separating from the value of input packages. FIX: Packages sequence number managing for the client part also unified and fixed to prevent the value repeats. !!: Early Acknowledgements processing in request "Publish" is added. TimeStamps into the "Write" client request's are disabled but some servers tell 0x80730000 (OpcUa_BadWriteNotSupported). New client/server services implemented: RegisterNodesRequest, RegisterNodesResponse, UnregisterNodesRequest, UnregisterNodesResponse. Only formal and no a real doings! Initial filters support is added into requests CreateMonitoredItemsRequest and ModifyMonitoredItemsRequest only for OpcUa_EventFilter at AId_EventNotifier parse. Services CreateMonitoredItems and ModifyMonitoredItems processing merged to a singe one. Variable's statuses added, mostly for the "Publish" service. Initial "Publish" responses are added: first after the CreateSubscrition service and second after the CreateMonitoredItems service. Input Variants function iVariant() is added as a separated part of function iDataValue(). Successful adapting to work with UAExpert 1.4. !!!!:JavaLikeCalc: Support of included functions definition and it's call is added. !!: To function object is added "To start" parameter for allow disabled by default ones. Operation "||" and "&&" formal set to equal priority. Checking for IO moved before constants for it's override. Constant "EVAL" as a synonym to EVAL_REAL is added. FIX:Siemens: A crash problem at high and frequent interaction is fixed, fragments changing (by assign) is moved to replace everywhere. FIX:LibnoDave: gethostbyname() replaced to it's reentrant variant. DCON: Some cleaned. enRes and reqRes resources lockators moved from Res to ResMtx. ModBus: "Value" field of the templates set to use as a default link, on first enable. !!:BlockCalc: Configuration fields of block unified and moved to TConfig::cntrCmdMake(). Special attribute "this" of the object access set to processing into blocks. =Tmpl=: Some cleaned and expanded. - Archive: FIX: Time limit for get() messages fix. FIX: Group messages archives request timeout, for common, fix into get(). !!!!: messPut() expanded to write messages independent to the alarms table. Resources allocation space decreased exclusively to local buffers access and prevent some racecondition at the archivators access. DBArch,FSArch: Get messages request for equal begin and end time is allowed. !!!:FIX:FSArch: Check for duplicate as equal time, category, level (by the option "prevDblTmCatLev") and it prevent is added. !: Expanded for early limits check and it's check at unpack errors and then prevent storages overfull at close limits and small storages. Check for duplicated at all fixed. Time into cache changed from time_t to int64_t (in microseconds). Used FTM() for left the messages time. Get from XML set some optimal. Get from plain allowed for the messages time equal to end. !!!:FIX:DBArch: Get messages algorithm is rewrote to request by minutes. !!:Table structure's for value and messages set adaptive and moved to the objects TMArchivator and ModVArchEl. New option of the messages archiver are added: "Store time as pure integer". "Archive size (days)" for both values and messages adapted for set to zero (<0.1) and disable the limit at all. The used table closing after any put request is disabled. - Transport: Modify property is added to the external host's object for reconnect on it modification. !!:FIX:SSL,Sockets: gethostbyname() and getservbyname() replaced to it's reentrant variants. !!:FIX:Serial,Sockets: For result's reading, into output transport, added waiting for data at zero or/and EAGAIN error. FIX: Errors on writing in the output part is fixed. !!: Possible wrong readings after the select() wrong termination, with marking as a data present (some caused), is unified and better adjusted for different modes of the requesting and the not requesting mode of output transport. Sockets: Input transport's error messages some improved and set more informative. - Protocol: !!!!:SelfSystem: Force authentication update by attribute "rqAuthForce" is added. !!!: Reforwarding of host's requests by attribute "reforwardHost" into the input part is added. Authentication error processing for direct requests is added. Authentication errors moved from the connection kind to the request, into the tag attribute "rez" and text. Attribute "remoteSrcAddr" of the root node set/reserve to the remoted host's address. - UI: VCAEngine,Vision: Primitive's "Diagram" attribute "trcPer" type changed from "Integer" to "Real". UI.Vision also adapted for update the "Diagram" down to 0.01 ms and it limited to one second in the development mode. Logical groups separator of Widget's attributes is changed from ":" to ": " everywhere, mostly for allow the user attribute value's items separation and description it with the symbol ":". To view "Table" of the primitive FormEl into root tag "tbl" added attribute "sortEn" to direct sorting by columns and header's item option "sort" for point to initiate sorting column. FIX:Vision,WebVision: Mode "XY" of the primitive "Diagram" fixed for build by sorting by 'X' disable, only the hierarchical order. For primitive "Diagram" to data block "data:
" option "Approximation (aprox)" is added. FIX:UI.QTCfg: Read only of selected items are fixed in alignment with other items in single row. Changed user apply is fixed. FIX: Into TextEdit widget added a signals blocking at setPlainText() for prevent the cursor events, status bar update and crash in some cases here. FIX: External host's status processing mostly improved and fixed. FIX: Timeouts of external host are set configurable by the option "TmConChk". FIX: The options StartUser and StartPath are moved under a resource allocation by the type MtxString. FIX:VCAEngine: The function's resources locking is added for SesPage::setEnable(). FIX: Mostly information messages from the information level moved to the debug one. FIX: setNoTransl() at the attributes loading disabled by some problematic and no a sense. !: Force inheritance of links types is added, independent from the attribute local modification. Mostly for prevent the link's type changing lost, as significant one, into the modified attributes. !: To project objects were added a property "EnableByNeed" to control the projects ready after start and prevent long connection by the deferred enabling. Try to enable for disabled pages, at an alarm set action, is prevented by some strange crash here observed, only into LTS. Control request "activate" expanded by "aVls" and "aNms" determine. The runtime note messages are added: "User is changed to ...", "User is connected ...", "User is disconnected ...". Manual creation mark for pages is added. Mostly for modification of the children clean up and it's inheritance storing prevent by it is spare and sometime problematic on the parent update, like messages about impossible to enable a widget. To messages reading by the repeating tags of primitive "Document" added attribute "docAMessArchs" to allow read only pointed archivators. !!!!:FIX:Vision: Too important fixes made in way of adapting to stable work with remote VCA servers: The module's attributes VCAStation, UserStart, UserPass and UserStBar::{user,pass,VCAStation} were moved under resources locking by the MtxString. To both runtime and development parts were added an initial connection with the restore connection timeout, for allow to load the VCA-server resources. In way of authentication as a default user the name takes from the attribute "user" of the session. Processing of the information dialog about a connection lost was moved to a single request (and thread) from updatePage(), for multithread access prevent and crashes (mostly from the notification tasks). !!!!:FIX: View "Table" of the primitive "FormEl" significant expanded by: global table's attributes: "hHdrVis", "vHdrVis"; row attributes "colorText", "font"; column attributes "color", "colorText", "font". FIX:Included to container's pages align processing rewrote to trace on the widget's geometry update and to the misaligned scroll-bars appearing sometime prevent. FIX: The palette restoring to visibleCheck function is added for prevent FormEl's artifacts at last. FIX: Mouse events at all enabled for "FormEl" primitive and some artifications like ticks lost into Slider but mostly into Table detected and fixed. FIX: Context menu problem for views List, Tree and Table of the primitive FormEl is fixed, for allow the right mouse button's event come to the system functions. !!!!: Requests to an external host moved to using cntrIfCmd(). !!!: Remote authentication moved to allow use the host authentication by default and the same connection for check it. !: Timeout of tries of restoring connection to a remote station set to progressive up to the pointed one and the error message display after the timeout value in 3 seconds. For the attribute inspector labels of the attributes the ToolTip is added to long names (>20). The view "Table" of the primitive FormEl mostly adapted to sorting by the columns. conErr pointer lost for not zero set at the master page free/replace is fixed. That sometime causes to crashes! Global modification mark processing moved to different function modifyGlbStUpdate() and some changed. UI.WebCfg: Source code significant cleaned. - Special.SystemTests: The DB tests are expanded by a seek test. 2016-01-19 Roman 0.8.15 - FIX:Protocol.UserProtocol: The regression fix by functions TProtIn::{waitReqTm,setSrcTr}() miss. 2016-01-12 Roman 0.8.15 - API: !!!!:Changes: SYS.TModule: The info attributes like m{Name} renamed to mMod{Name}. Function modInfoMainSet() added and used into all modules for main info attributes of module set. TProtocolIn, Protocol.UserProtocol, Transport.*, DAQ.{ModBus,OPC_UA}: The input transport store by locked header instead the path for faster access, API functions changed: open(), srcTr(), setSrcTr(). Appends: SYS: Object ResMtx is added for gather all platform specific mutex implementation. Function TSYS::taskUtilizTm() added for get utilize time by the pointed tasks. TElem: Item's resource mResEl moved from Res to pthread_mutex_t, and it allowed for public access. Hardware platform endian specific conversion function's implementation placed, for: i16_LE(), i32_LE(), i64_LE(), i16_BE(), i32_BE(), i64_BE(), floatBE(), floatBErev(), doubleBE(), doubleBErev(). DAQ.{LogicLev,ModBus}: Appended by user API functions to the parameter object attrAdd() and attrDel() for attributes free management. Transports: User API function {TrOut}.start() added for fast control for the output transport state. Protocol.{*,UserProtocol},Transport.{Sockets,SSL}: Function Protocol::waitReqTm() added for poll mode control of input protocols. - SYS: !!!!:FIX:TVarObj: Object's twice free possibility prevented. TVarObj::propGet() EVAL result fix. FIX: Wrong translation fix to Russian for the message "%s for type '%s' doesn't support module version: %d!" !!!!:Core library version rose to 2:3:0. DB, DAQ, Archive, Protocol, Special, Transports, UI subsystem type modules version rose to 7. TFunction: run_st renamed ro runSt. Archive.FSArch,DB.DBF,DAQ.{Comedi,SMH2Gi}: readdir_r() using rewrote to "dirent" structure direct malloc and prevent problems on other OS, like QNX. - DAQ: !!!!:FIX:OPC_UA: FIX:libOPC_UA: All wrong empty strings (-1) replaced by empty array (0). FIX: System attributes' value reading (AId_Value) fix for substitute first values to next, into single read package. FIX: Empty Read service list cicling fix. FIX: Auth processing for client fixed to storing current endpoint description for next actual "policyId" obtain and using to the auth service. FIX: Wrong NodeId::Opaque type set fix. FIX: Fix something "EndPoint" lack. FIX: Conditional session's clear for selected endpoint is added, mostly for prevent this lost at no "None" policies. Expanded to new error codes. To server part new default name spaces added: 2-"http://opcfoundation.org/UA/DI/, 3-"http://PLCopen.org/OpcUa/IEC61131-3/". Using the client certificate into a renewal secure channel request set only for no "None" policies. Full session clear at errors into a renewal secure channel request is added. Some lack information resolved like to "transportProfileUri" and "securityLevel". libOPC_UA independent version control is added. Specific value types OpcUa_IntAuto and OpcUa_UIntAuto added for adaptive integer type selection, mostly for provide integer into not fixed int32 (int64). Error OpcUa_BadNoSubscription added to PublishRequest. Server folder "ServerCapabilities" added and some items here. Virtual function connect() into client is added for the connection control, used into service "CloseSecureChannel" for close connection. "Nonce" of the Server part disabled into CreateSessionResponse and ActivateSessionRespons for policy "None". FIX:Client: Status codes display fix for the controller's attributes. Product URI changed to "urn:OpenSCADA:DAQ.OPC_UA". Appending information by: applicationUri(), productUri(), applicationName(). For empty "browseName" browsed nodes using "displayName" set. Test client's source code some cleaned and expanded. Server: OpenSCADA DAQ name space set to index 4. FIX:JavaLikeCalc: For library "run_st" renamed to "runSt" and init to false. FIX:ModBus: Some original messages fix. Some resources lock appended. !!!!:Siemens: Self implementing for ISO-TCP is added and tested, mostly by Proviron Holding NV request. Restoring timeout is added. Significant refactoring for the resources lock, error messages and other. - Transport: !!:FIX:{Sockets,Serial,SSL}: Resource of output transport lock into messIO() fixed, by no real a lock hold. !!: Poll mode of input protocol support is implemented. !!: No request mode support is added and all modules adapted to it, in way of