Це оновлення релізу 0.9 LTS виправляє біля 60 помилок та додає ДУЖЕ БАГАТО удосконалень із декількома значними-концептуальними, з якими цілком можна ознайомитися у протоколі змін оновлення.
Важливі дії користувача за оновленням
- DAQ.System: ІД автоматично генерованих параметрів DA змінено у: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}".
- => вручну переприв'язти усі автоматично створені джерела, що змінилися, якщо використано Автоматичний режим створення
- FIX:UI.VCAEngine: Виключено підключення атрибуту "focus" будь якого вкладеного віджету до ВВ обчислення і доповнено обробкою виключень доступу до таких ВВ для відсутніх вкладених віджетів.
- => вручну замінити усі статичні використання атрибуту "focus", на кшталт if(alarms_focus) alUnSel = 10; у LibsDB.vcaBase.wlb_Main.alarmsSt, на код if(this.alarms.attr("focus")) alUnSel = 10;
Linux Дистрибутив Автоматизації проєкту OpenSCADA
- додання Debian 12 у якості бази дистрибутиву;
- переведення складання бази Debian 11,10,9 у оточення Debian 12;
- оновлення TDE до 14.1.1 і потім 14.1.2 із стабілізацію до рівня 14.0.13;
- опціональне запобігання системного лотку щодо відображення піктограм програм із відмінним WMID але однаковою назвою на кшталт BlueMan;
- запобігання значному наповненню "~/.xsession-errors" зневаджувальними повідомленнями на кшталт "[FIXME] UNCLASSIFIED DEVICE name: ...";
- відімкнення використання Карт Безпеки для автентифікації у діалозі блокування kdesktop, оскільки ним стало неможливо користуватися;
- HWLib: використання Проєктної Напруги у розрахунку АмперГодин із ВатГодин замість Поточної Напруги, для відповідності із інформацією про ємність, яку вказано на батареї; попереджено замерзанню у Менеджері Пристроїв;
- KRDC, KRFB: відновлення нормального функціювання із 14.0.13;
- KXKB-KLayouts: Виправлення регресій у втраті-очищені системних розкладок клавіатури;
- TDESVN: запобігання падінням при доступі до БД із KPart;
- Krusader: виправлення розпакування *.tar.xz і *.txz, чим завершення реалізації підтримки XZ;
- KMix: адаптація до динаміки мікшерів;
- KMilo: відновлення керування яскравістю після його зламу;
- QuickLauncher: наразі просто ігнорує порожні елементи, тож їх буде видалено після оновлення конфігурації;
- TDM: вимкнення автентифікації за Карткою Безпеки для запобігання зависанням при виході;
- KOrganizer: вдосконалення діалогу долучень щодо вказання лише файлу із найменуванням цього долучення з назви файлу та із включенням по замовченню; вдосконалення діалогу редагування категорій щодо сповіщення підлеглого діалогу обрання про зміну категорій;
- TDEPowerSave: запобігання скиданню відображених значень віджетів значень батарей, оскільки вони починають відображати порожню дошку і -1; закоментовано SLOT slotHelpContents() через його відсутність; запобігання появі помилкового діалогу неактивності для присипляння одразу після прокидання, який особливо часто з'являється при використанні ноутбуку від батареї;
- KPackage: оптимізація споживання пам'яті шляхом читання результату "apt-cache dumpavail" через тимчасовий файл а не через пам'ять, відтак споживання пам'яті на Debian 12 зменшено із ~900MB до ~450MB;
- TDEPrint: виправлення перекладу назв груп властивостей друку;
- переклад Українською для: knmap, knutclient, konversation, tdenetworkmanager.
Основні WWW-ресурси, документація проєкту та підпроєктів
- посібник "Швидкий старт" цілковито відревізовано та актуалізовано щодо останніх змін у LTS;
- доповнення сторінки бібліотеки Промислових пристроїв описом нових шаблонів;
- доповнення сторінки бібліотеки Основна описом нових шаблонів;
- доповнення сторінки бібліотеки основних елементів інтерфейсу користувача описом нових віджетів;
- цілковита ревізія і актуалізація щодо останніх змін у LTS для сторінок модулів: DAQ.System, Transport.SSL;
- початок нового підпроєкту NETGEAR R6220 зі складання і адаптації OpenSCADA до MIPS.
Нові та значно оновлені частини
- Ядро OpenSCADA: 3:13:0 => 3:14:0
- (Уніфікація складання із адаптацією ..., Перегляд і уніфікація підсистеми Транспортів ..., Контроль великого споживанням пам'яті), Переклад Повідомлень — виправлення концептуальних змін попереднього оновлення)
- Підсистеми "Транспорти" OpenSCADA: 19 => 20
- Підсистеми "Збір Даних" OpenSCADA: 14 => 15
- DAQ.System: 2.4 => 3.3
- DAQ.LogicLev: 2.7 => 2.9
- DAQ.DAQGate: 2.11 => 2.13
- DAQ.ModBus: 3.6 => 3.8
- DAQ.OPC_UA: 2.6 => 2.8
- DAQ.JavaLikeCalc: 5.5 => 5.6
- DAQ.Siemens: 4.4 => 4.5
- DAQ.AMRDevs: 0.7 => 0.8
- Transport.SSL: 3.4 => 4.5
- Transport.Sockets: 4.5 => 4.8
- Transport.Serial: 2.6 => 2.7
- Protocol.SelfSystem: 1.10 => 2.0
- UI.QTCfg: 5.12 => 6.0
- UI.QTStarter: 5.14 => 6.0
- UI.VCAEngine: 7.11 => 7.13
- UI.Vision: 8.6 => 9.2
- UI.WebCfgD: 2.4 => 2.5
- UI.WebVision: 6.8 => 6.10
- LibsDB.OscadaLibs.DevLib: 2.6 => 3.0
- LibsDB.OscadaLibs.Main: 2.0 => 2.2
- LibsDB.vcaBase.Main: 2.0 => 2.1
- (Доповнення декількома віджетами із документуванням)
- storeHouse: 1.3 => 1.4
- grpGraph, grpGraph10: 1.5 => 1.6
- ElViewGraph: 1.4 => 1.5
КОНЦЕПТУАЛЬНЕ > Уніфікація складання із адаптацією до Debian 12, Qt6, QtWebEngine, QtMultimediaEngine, OpenSSL3, MIPS
- FIX: Завершено правильне складання із бібліотекою ядра лише статично:
- configure.ac: конфігураційний параметр --enable-CoreLibStatic розширено визначенням AM_CONDITIONAL(CoreLibStatic) і змінною оточення LIB_MOD;
- moduls/*/*/Makefile.am: доповнено параметром --tag=disable-shared і розширено використанням змінної оточення LIB_MOD;
- src_call/Makefile.am: розширено специфічною обробкою AM_CONDITIONAL(CoreLibStatic) для статичного зв'язування бібліотеки ядра із усіма включеними модулями.
- configure.ac,acinclude.m4: Очищено від застарілих макросів у AutoConf 2.70:
- AC_HELP_STRING перейменовано у AS_HELP_STRING;
- AM_CONFIG_HEADER перейменовано у AC_CONFIG_HEADER;
- AC_LIBTOOL_DLOPEN замінено на LT_INIT([dlopen]);
- AX_PTHREAD замінено на AC_SEARCH_LIBS(pthread, [pthread_create])
- закоментовано AC_PROG_LIBTOOL, AM_PROG_LIBTOOL, AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL, AC_ISC_POSIX.
- acinclude.m4,DAQ.OPC_UA.libOPC_UA,Transport.SSL,Special.FLibSYS: Очищено від застарілих функцій у OpenSSL 1.1 (API 3.0):
- acinclude.m4: функції тестування макросу AX_LIB_OpenSSL() і AX_LIB_OpenSSL_opt() на libcrypto замінено із MD5_Init() у BIO_new(); функції тестування макросу AX_LIB_OpenSSL() на libssl замінено із SSL_free() у SSL_new();
- OPC_UA.libOPC_UA: UA::symmetricEncrypt() і UA::symmetricDecrypt() поєднано у UA::symmetricCrypt() і переключено на використання EVP_CipherInit() і EVP_CipherUpdate() замість AES_cbc_encrypt() для нових версій;
- використання RSA_public_encrypt() переведено на EVP_PKEY_encrypt() і RSA_private_decrypt() переведено на EVP_PKEY_decrypt() для нових версій.
- Transport.SSL,Special.FLibSYS: використання MD5() переведено на EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex() для нових версій.
- configure.ac: При додані Qt6 його доповнено щодо Qt6Sensors, Qt6WebEngineWidgets, Qt6MultimediaWidgets.
- Доповнено перевіркою Qt5WebEngineWidgets і Qt5MultimediaWidgets для підтримки у UI.Vision.
- Доповнено перевіркою декларацій-функцій clock_nanosleep, pthread_rwlock_timedwrlock, newlocale для дуже простих оточень MIPS із UCLibC.
- Параметри --disable-WebKit і --disable-Phonon перейменовано у --disable-QtWebEngine і --disable-QtMultimediaEngine відповідно.
- Загальні зміни QtWebKit_{CFLAGS,LIBS} і phonon_{CFLAGS,LIBS} перейменовано у QtWebEngine_{CFLAGS,LIBS} і QtMultimediaEngine_{CFLAGS,LIBS} відповідно.
- Покращено більшість відповідних повідомлень.
- Доповнено перевіркою заголовку pthread.h.
- acinclude.m4: AutoConf макрос AX_LIB_Qt розширено підтримкою Qt6 та вдосконалено виявлення MOC і RCC для Qt5.
- Покращено деякі повідомлення.
- data/{debian,debian_mod}/compat: Рівень збільшено до 7 для складання на сучасний дистрибутивах Debian по замовченню.
- data/{debian,debian_mod}/control: Доповнено варіантами залежностей qt6-base-dev, qt6-webengine-dev, qt6-multimedia-dev і qtwebengine5-dev, qtmultimedia5-dev. Доповнено варіантом залежності libsensors-dev до libsensors4-dev.
- ResRW::{resRequestW,resRequestR}(): Доповнено використанням версії за часом із визначенням HAVE_DECL_PTHREAD_RWLOCK_TIMEDWRLOCK.
- TSYS::atime2str(),SYS.strftime(): Доповнено використанням локалізованої дати із визначенням HAVE_DECL_NEWLOCALE.
- TSYS::{sysSleep,taskSleep}(): Доповнено використанням сну за годинником при визначені HAVE_DECL_CLOCK_NANOSLEEP.
- Інтерфейс Контролю основної сторінки доповнено прихованням вкладки "Переклади" і полів мови за відсутності багатонаціональності взагалі.
- TMess,TModule: Перевірку HAVE_LIBINTL_H замінено на "#if HAVE_LIBINTL_H", тобто перевіркою на 1.
- Transports.SSL: Адаптовано до нових функцій OpenSSL 1.1 (API 3.0) з поводженням із застарілими.
- UI.{QTStarter,QTCfg,Vision}: Адаптація до складання із Qt6, включно із адаптацією до Qt6WebEngine і Qt6Multimedia:
- QLayout::{setMargin,margin}() замінено на QLayout::{setContentsMargins,getContentsMargins}();
- QVariant(char*) замінено на QVariant(QString);
- конструктор QMouseEvent замінено відповідною із глобальною позицією;
- QRegExp замінено на TRegExp варіантом OpenSCADA для функцій заміни і тестування або прямої перевірки;
- QComboBox сигнал activated(const QString&), currentIndexChanged(const QString&) замінено на activated(int), currentIndexChanged(int) відповідно;
- QSignalMapper сигнал mapped(QWidget*) замінено на mappedObject(QObject*);
- QPalette::Background замінено на QPalette::Window та Qt::MidButton на Qt::MiddleButton;
- QFileDialog::setReadOnly() замінено на setOption();
- QApplication::desktop() замінено на QScreen;
- QAction::parentWidget() замінено на parent();
- QVariant::type() перейменовано у typeId(), QMouseEvent::{pos,globalPos}() перейменовано у {position,globalPosition}(), QDateTime::{setTime_t,fromTime_t,toTime_t}() перейменовано у {setSecsSinceEpoch,fromSecsSinceEpoch,toSecsSinceEpoch}();
- доповнено перейменуванням функцій для різних версій Qt за допомогою макро-визначень у різних файлах щодо: typeId() у type(), position() у pos(), globalPosition() у globalPos(), setSecsSinceEpoch() у setTime_t(), fromSecsSinceEpoch() у fromTime_t(), toSecsSinceEpoch() у toTime_t(), mappedObject() у mapped(), setSource() у setMedia(), setVolume() у audioOutput()->setVolume(), setMedia() у setSource(), state() у playbackState();
- доповнено підтримкою QRegularExpression замість QRegExp у Qt6;
- QMouseEvent властивість mouseBtHold розділено на дві QPointF: mouseBtHoldPos, mouseBtHoldPosG;
- розділювач комбінацій клавіш "+" замінено "|", тобто "Qt::SHIFT|Qt::Key_F1";
- подія QEvent::KeyRelease у застосуванні LineEdit замінено на QEvent::KeyPress;
- QTStarter: загальну бібліотеку lib_qtgen доповнено функцією winFit() загального підлаштування специфічних вікон мобільних систем; доповнено атрибутом Qt::AA_ShareOpenGLContexts перед об'єктом додатку Qt для функціювання QtWebEngine на Qt6;
- Vision: адаптація до Qt WebEngineWidgets замість WebKit та до Qt MultimediaWidgets замість Phonon, і примітив Документ розділено задля примусового використання QTextBrowser у режимі розробки. Відновлено появу нових елементів дій віджетів бібліотек шляхом розташування нових дій у Меню перед Панеллю Інструментів.
КОНЦЕПТУАЛЬНЕ > Перегляд і уніфікація підсистеми Транспортів у керуванні додатковими параметрами та розширення використання параметрів часу підключення щодо реєстрації конфігураційних параметрів зовнішніх джерел
- конфігураційне поле "A_PRMS" контейнеру додаткових параметрів переміщено із модулів до бібліотеки ядра;
- доповнено функціями TTransportS::{prm,cntrCmdPrm}(), {TTransportIn,TTransportOut}::prm() із загальною реалізацією додаткових параметрів;
- conPrm() розширено підтримкою конфігураційних параметрів зовнішніх джерел на кшталт протоколів і його розповсюджено на вхідну частину, так само для Користувацького API;
- conPrm() доповнено аргументом типового значення, яке використано у всіх транспортних модулях;
- clearConPrm() розширено очищенням одного параметру і лише із зовнішніх джерел;
- setConPrm() видалено після реалізації такої властивості у conPrm() та деякі модулі оновлено щодо цього: DAQ.AMRDevs, Protocol.SelfSystem;
- Protocol.SelfSystem є першим, який використовує наразі конфігураційні параметри у транспорті;
- вихідні транспорти доповнено посиланням на вхідний, який створив вихідний, і його використано для тримання тут конфігураційних параметрів зовнішніх джерел;
- всю конфігурацію асоційованих вихідних транспортів встановлено прихованою;
- контроль додаткових параметрів пересунуто до власної вкладки "Додаткове (aprm)" із функцією скидання їх значень;
- позначення зміни вхідних і вихідних транспортів встановлено лише за реальної зміни конфігураційних полів.
КОНЦЕПТУАЛЬНЕ > Контроль великого споживання пам'яті
- Система: TCntrNode::cntrCmd() у обробці первинних команд Інтерфейс Керування доповнено їх глобальним журналюванням задля контролю дій, що призвели до великого споживання пам'яті.
- FIX:Збір Даних: JavaLikeCalc: Операцію поєднання рядків доповнено перевіркою обмеження у limUserFile_SZ(10M).
- System: Доповнено DA(Збором Даних) Процес у якості інтерфейсу до Linux процесів у контролі використання ними пам'яті.
- FIX:Архіви-Історія: Запити TVArchEl::getVals() і "TValue:get:/serv/attr" доповнено обмеженням запитаної глибини у limUserIts_N (1e6) елементів для запобігання великому споживанню пам'яті.
- FIX: Запит Інтерфейсу Керування "TValue:get:/serv/attr" виправлено у обмежені обчислення функції getVals().
- FIX:.,FSArch: Архівування значень доповнено обмеженням операцій запису у limUserIts_N (1e6) елементів для відстеження споживання усієї пам'яті у певних випадках.
КОНЦЕПТУАЛЬНЕ > Переклад Повідомлень (виправлення концептуальних змін попередніх оновлень)
- FIX:SYS,DB: TMess::translGet() виправлено у виявлені передзбережених системних повідомлень при встановлені порожніх повідомлень і функцію TMess::translGetU() виправлено у очищені сервісних нульових символів у нединамічних режимах перекладу.
- Бази Даних: TTable::fieldSQLSet() адаптовано до очищення базового повідомлення і всіх перекладів при обнулені перекладу, для очищення редагованого повідомлення у динамічному режимі перекладу і не від базової мови.
- SYS,DB.{SQLite,MySQL,PostgreSQL,FireBird},Protocol.HTTP: Переважно адаптовано переклад повідомлень до кодів мов більше за 2 (два) символи.
- Protocol.HTTP,UI.{WebUser,WebVision}: Завершено адаптацію до динамічного перекладу ім'я станції із уніфікацією функції Користувацького API pgCreator() щодо використання мови із objFuncCall().
- Protocol.HTTP: Шлях із TSYS::ico() використано для отримання перекладених піктограм.
- SYS,UI.{Vision,WebVision}: Функцію TSYS::atime2str() доповнено перекладом дати і вона використана у побудові шкали часу примітиву СВУ Діаграма.
- FIX:Бази Даних: Дозволено правильний запис змін користувача у Динамічному Режимі Перекладу на Небазовій Мові, шляхом ранньої перевірки щодо динамічних даних.
- FIX:Збір Даних: Завершено адаптацію DAQ-Шаблонів до перекладу значень строкового типу при їх редагуванні і використанні у вкладці Конфігурації Шаблону та виправлено-адаптовано до динамічного перекладу у використання назв ВВ.
- FIX:DAQGate: Виправлено надсилання значень перекладуваних полів не у внутрішній структурі перекладу.
- Транспортні Протоколи: HTTP: Адаптовано до динамічного перекладу назви станції і опрацювання кодованих назв файлів зображень.
- UserProtocol: Виправлено-адаптовано до динамічного перекладу назв ВВ.
- FIX:UI.VCAEngine: Шаблони виправлено-адаптовано до динамічного перекладу у використанні конфігураційного шаблону атрибутів.
- FIX:UI.WebUser: Виправлено переклад назви сторінки у індексі.
- FIX:UI.WebVision: Виправлено динамічний переклад ім'я користувача на сторінці індексу.
OpenSCADA бібліотеки та проєкти
- data/{oscada_plc.xml,oscada_server.xml,oscada_start.xml,ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}}: Очищено опис вхідних транспортів та транспорти доповнено групами портів: 10002,10003,10004 для WEB і 10005,10006,10007 для CNTR.
- LibsDB.{OscadaLibs.flb_Controller.test,vcaBase.prj_archBrowser.IDW},ModelsDB.AGLKS.St.{OPC_UA.test,Archive.{MemInfo_use,CPULoad_load}},ModelsDB.Boiler.St.Archive.{MemInfo_use,CPULoad_load}: Адаптовано до перейменування DAQ.System.AutoDA.CPULoad і DAQ.System.AutoDA.MemInfo у DAQ.System.AutoDA.CPU і DAQ.System.AutoDA.MEM.
- FIX:ModelsDB.AGLKS.St: Вхідні SSL транспорти встановлено групами портів 10042,10043,10044 для WEB і 10045,10046,10047 для CNTR.
- FIX:WebUser.test: відновлено текст у значення до уніфікації перекладу.
- DAQGate.test: Оновлено кеш параметрів.
- LogLevPrm.gen: Усі об'єкти параметрів встановлено у 1 для "alDelay", для запобігання повідомленням порушень при виході.
- Sockets.{testRelease,testRelease1,testRelease2}: вимкнено по замовченню.
- LibsDB.OscadaLibs:
- tmplib_DevLib: Бібліотеку доповнено шаблонами із документуванням:
- від ВПФ: Incubator, VSE002, "FF LE-03MB CT (FF_LE)", "Ergomera 625(ergomera625)";
- від Blue Star Group: "Goboy 1M (Goboy1M)", "AutoPILOT PRO Flow Computers (AutoPILOT)", "AutoPILOT OLD Flow Computers (AutoPILOT_old)", "Corrector BK (CorBK)", "Tancy Data (TDS)", "UltraMag", "Enron, Daniel (enronDaniel)", FlowGAS.
- tmplib_base: Доповнено новим шаблоном для WebUser — "HTTP Файловий Сервер (fileServerHTTP)", із реалізацією HTTP Файлового Серверу у OpenSCADA, наразі лише читання ресурсів із підтримкою частковості; і нові шаблони "Погода (weather)", "Дисковий SMART (DiskSMART)".
- digAlarm,manInUnif,anUnif,pidUnifImp,anUnifSt,pidUnif,codeState,SNMP,UPS: ВВ NAME встановлено у тип "Рядок (переклад)" і ВВ DESCR у тип "Текст (переклад)".
- tmplib_LowDevLib: Доповнено шаблоном "BT: ATORCH UC96".
- RDTech: Недублюючі команди встановлено до надсилання двічі задля стабільного застосування пристроєм, післякомандну затримку встановлено у 0.2 і переміщено на загал.
- tmplib_base.ntf: Розширено можливістю визначення повідомлень для виключення зі сповіщення.
- tmplib_DevLib: Бібліотеку доповнено шаблонами із документуванням:
- LibsDB.vcaBase:
- wlb_Main: Бібліотеку доповнено віджетом "Погода (weather)" із документуванням.
- storeHouse: Розширено створенням форми редагування елементу у головному кадрі після приховання основної таблиці та решти.
- FIX: Попереджено <EVAL> для <NULL> клітинок у звіті елементу.
- FIX: Гарантовано заповнення діалогів звітів генерацією подій відкриття із процедури.
- FIX: Виправлено раннє встановлення вертикальної позиції таблиці даних при зміні користувача.
- Текстові поля звіту одного елементу очищено від лівого відступу для текстів.
- Звіти доповнено опрацюванням посилань, як зовнішні виклики.
- Розширено опрацюванням ІД (індексу) таким чином, як решта стандартних полів "NAME", "DSCR" — для контролю видимістю поля.
- Додано скидання фільтрів при перезапуску сторінки або зміні користувача.
- Звіт із повної таблиці доповнено обмеженням тексту клітинок у 30 символів, тобто як у таблиці редагування.
- Звіт із елементу доповнено прихованням порожніх полів.
- Доповнено оновленням контексту обрання елементів форми при зміні значення цього елементу.
- grpGraph: Переписано процедуру для уніфікації роботи із різними елементами, тож для використання у всіх похідних кадрах на кшталт "grpGraph10".
- grpGraph10: Переключено на спадкування від grpGraph.
- FIX:alarmsSt: Виправлено доступ до змінної alarms_focus після видалення примусовості атрибуту "focus", що замінено на this.alarms.attr("focus").
- tmplSO: Дещо очищено щодо елементів сторінки РезультуючіГрафіки.
- ResultGraph: Атрибут "grpName" встановлено у тип "Рядок (переклад)".
- ElViewGraph: Доповнено читанням типових-статичних властивостей для очищення до них.
- storeHouse: Розширено створенням форми редагування елементу у головному кадрі після приховання основної таблиці та решти.
- wlb_doc:
- FIX:docRepInstVals: Відновлено переклад значень заголовку та одиниці виміру і назви параметру.
- FIX:docUsersSet: Доповнено також кодуванням полів значень, оскільки зараз тут можуть бути не лише цифри.
- wlb_Main: Бібліотеку доповнено віджетом "Погода (weather)" із документуванням.
- LibsDB.vcaTest: Завершено із перейменуванням CPULoad у CPU і MemInfo у MEM.
API
!!!!:Зміни:
- Система: ico() доповнено аргументом отримання шляху файлу.
- strLabEnum() доповнено аргументом "onlyDec" для нумерування однією цифрою.
- Видалено sysClk(), clkCalc(), shrtCnt(), HZ().
- TError: Видалено DB_TrRemoved.
- TMess: labStorRemGenStor() перейменовано у labStorRem(), labStor() очищено від аргументів.
- TElem: fldList() встановлено у постійну.
- TFld: TFld(): Тип аргументів vals, nSel змінено із "const char *" у "const string&". Видалено selValS(), selValI(), selValR(), selValB(), selNm(), selVl2Nm(), selNm2VlS(), selNm2VlI(), selNm2VlR(), selNm2VlB().
- TCfg,TVal: Видалено getSEL() і setSEL().
- TCntrNode: isModify() встановлено у постійну, save() доповнено аргументом максимального рівня помилки.
- Збір Даних: TController::id() встановлено у постійну.
- Транспорти:
- TTransportIn,TTransportOut: Перенесено до захищеної секції logLen(), setLogLen(), pushLogMess(). Видалено logItLim(), setLogItLim().
- TTransportOut: conPrm() і setConPrm() поєднано у conPrm(), також для них у КористувацькомуAPI. clearConPrm() розширено аргументом визначення ідентифікатору або групи очищувальних параметрів.
- TTransportIn::associateTrO(): розширено підтримкою різних стадій ATrStg_Create, ATrStg_Proc.
Доповнення:
- Система: Нове визначення DB_GEN "<gen>".
- Додано sysClk(), setSysClk() для отримання частоти ЦП із DAQ.System.
- Функцію sysTm() доповнено аргументами виявлення стрибків часу після засинання.
- TMess: Нова функція labStorFromCode() імен специфічних сховищ.
- TElem: Доповнено функцією contN() отримання лічильнику підключених контейнерів.
- Збір Даних: TVal: Доповнено функцією setTime() і новим прапорцем AttrFlg::NoSave для запобігання позначення модифікованим при зміні атрибуту.
- TController: Доповнено tbl() для таблиць типів параметрів.
- Інтерфейс Користувача: Користувацьке API доповнено SYS.UI.mimeGet() для отримання типу MIME із назви файлу.
- Транспорти: Нове визначення STR_A_PRM "prms", STR_A_PRM_CFGP "CFG:".
- TTransportS: Нові функції prm(), cntrCmdPrm() загального опрацювання параметрів транспортів.
- TTransportIn: Доповнено функцією prm(), conPrm(), clearConPrm(). Доповнено функцією КористувацькогоAPI conPrm() і setConPrm() (для сумісності) і відповідно до таких у TTransportOut.
Система
- Складання:
- configure.ac: Підняття версії бібліотеки ядра до 3:14:0 і версії програми до 0.9.7. Підняття версії модулів підсистеми "Збір Даних" до 15, "Транспорти" до 20.
- Доповнено складанням для Debian 12 і Ubuntu 24.04 LTS.
- FIX:DB,Transports,DAQ.BFN,UI.VCAEngine: Адаптовано до перевірки вдалого результату TBDS::dataDel() для запобігання зависань на сховищах лише для читання із виправленням функції TTable::fieldSQLDel() щодо коректної перевірки успішності функції.
- .,DAQ.{DAQGate,DCON,DiamondBoards,ICP_DAS,LogicLev,ModBus,OPC_UA,Siemens,SoundCard,System},Protocol.{ModBus,OPC_UA},UI.VCAEngine: Значно спрощено у підтримці типів обрання, встановивши опціональним і з підтримкою динамічного перекладу. Дозволено також визначення лише переліку значень.
- .,Archive.DBArch,DAQ.{BFN,JavaLikeCalc,ModBus,OPC_UA},Protocol.UserProtocol,UI.{VCAEngine,Vision,WebUser}: Загальне сховище перейменовано із "*.*" у "<gen>":
- із отриманням назв специфічних сховищ "Загальне Сховище" і "Конфігураційний Файл" всюди з нової функції TMess::labStorFromCode();
- доповнено визначенням DB_GEN "<gen>", яке завжди використовується замість "*.*";
- усі загальні поля на кшталт "БД Архіватору" перейменовано у "Сховище";
- TMess::labStorRemGenStor() перейменовано у TMess::labStorRem() і доповнено інформацією про всі сховища об'єкту.
- .,DAQ.{BlockCalc,Comedi,DiamondBoards,FT3,Fastwel,ICP_DAS,SNMP},Protocol.{ModBus,UserProtocol},UI.{VCAEngine,Vision,WebCfg,WebCfgD,WebUser}: std::string::substr() замінено на std::string::find() у місцях зі статичним отриманням даних для порівняння, що прозоріше, безпечніше і переважно швидше для коротких рядків.
- .,UI.{VCAEngine,Vision}: Покращено сповіщення попереджень при збережені.
- TCntrNode::cntrCmd() у обробці первинних команд Інтерфейс Керування доповнено їх глобальним журналюванням.
- FIX:TCfg::setS() у варіанті із RqFlg доповнено блокуванням критичної секції при доступі до контейнеру TVariant і доповнено сповіщенням, лише на стадії даних та без повернення.
Збір Даних
- .,*: Переведено у джерелах Збору Даних на фіксовані назви таблиць різних типів параметрів і адаптовано до уніфікованої концепції типів параметрів, тобто конфігураційні поля наразі приховуються коли вони стандартні і їх заплановано до цілковитого видалення у v1.0.
- FIX: TValFunc::get{S,I,R,B}() доповнено кодом приведення об'єкту TVarObj із перетворенням EVAL/null.
- System: Цілковито переглянуто і розширено щодо:
- розширення ЦП (CPU) DA інформацією ЦП і частотою із різних джерел, включаючи CPUFreq із контролем;
- додання нового DA Живлення (Power) у якості інтерфейсу до Потужність Linux і DA Процес (Process) у якості інтерфейсу до Linux процесів;
- Сенсори>DA доповнено підтримкою прямо доступних сенсорів "/sys/devices/virtual/thermal/*/temp" і /sys/devices/virtual/hwmon/*/temp*;
- уніфікація викликів DA інтерфейсу DA::init(), DA::deInit(), DA::makeActiveDA() із переведенням більшості DA модулів на виклик уніфікованого коду і реалізацію для них лише уніфікованої функції dList();
- інтерфейсний клас DA доповнено новими ознаками: isDynamic(), hasSubTypes();
- додання режиму загального оновлення даних із Сервісного Циклу і Завдання DA Контролеру, новою функцією updGen();
- ІД автоматично генерованих параметрів DA змінено у: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}";
- переключено у м'який режим автоматичного створення параметрів, тобто ви можете створити джерельні параметри автоматично, примусово зберегти необхідні, а потім перемкнути у ручний режим, чим запобігти продовженню сканування.
- FIX:DAQGate: Час запиту архіву збільшується на 1 (одну) мікросекунду для запобігання запиту зайвих значень і їх прямому перезапису у архівах.
- Покращено роботу із віддаленим хостом без синхронізації часу:
- значення можуть бути у майбутньому до години;
- мітку часу віддаленого хосту всюди використано за присутності архіву, навіть у тегу "<vl>";
- доповнено виявленням часу віддаленого хосту для його використання у якості мітки часу змінених значень.
- Покращено роботу із віддаленим хостом без синхронізації часу:
- FIX:LogicLev: Значним чином покращено режим Віддзеркалення Параметру щодо:
- динамічного створення і видалення атрибутів;
- вимкнення за помилкового увімкнення на відсутньому параметрі джерела із видаленням усіх атрибутів;
- обрання змінене на нередаговане;
- вимірювання часу опрацювання.
- OPC_UA: Доповнено підтримкою асинхронного запису на кшталт DAQ.ModBus.
- AMRDevs: Адаптовано у частині Kontar до нової концепції асоційованих вихідних транспортів до вхідних.
Архіви-Історія
- FIX: Архіватори повідомлень попереджено від скидання позиції буферу останнього прочитаного повідомлення оскільки ми отримаємо дубльовані повідомлення із кожним оновленням підсистеми, що є частим за оновлення підключень архівів значень, і особливо за відсутності блокування ресурсу.
- FIX: Запит Інтерфейсу Керування "TValue:get:/serv/attr" виправлено у поширені на еквівалентні архіватори.
Транспорти
- Sockets,SSL: Доповнено підтримкою групи портів у вхідних транспортах, тобто підключення до першого вільного. Вхідні транспорти доповнено конфігураційним полем властивостей ініціативного підключення і асоційованих вихідних транспортів.
- SSL:
- Розширено підтримкою ініціативних підключень:
- SSL код підключення TSocketOut::{start,stop}() перенесено до статичних функцій TSocketOut::{connectSSL,disconnectSSL}() для використання у вхідному транспорті;
- SSL код підключення TSocketIn::Task() перенесено до TSocketIn::{start,stop}();
- видалено підтримку визначення у режимі SSL щодо алгоритмів і версій через видалення цього у бібліотеці OpenSSL і воно переважно не використовувалося, тож використано лише TLS_{client,server}_method() для нових бібліотек (> 1.1) і SSLv23_{client,server}_method() для старих.
- FIX: TSocketOut::messIO() попереджено щодо зависань при нескінченому читанні BIO_read() після закриття сокету, шляхом перевірки errno на EAGAIN.
- SSL-контекст перенесено до загального об'єкту модуля окремо для вхідної (ctxIn) і вихідної (ctxOut) частин і додана інформація по шифрах для:
- загального об'єкту модуля за SSL_CTX_get_ciphers();
- статусу вхідного-серверного транспорту за SSL_get_shared_ciphers(), SSL_get_client_ciphers() і SSL_get1_supported_ciphers() або SSL_get_ciphers();
- статусу вихідного-клієнтського за SSL_get1_supported_ciphers() або SSL_get_ciphers().
- Вхідний і вихідний транспорти доповнено контролем MSS та вхідні транспорти доповнено контролем системного вхідного буферу, обидва взято із Transport.Sockets.
- Розширено підтримкою ініціативних підключень:
Транспортні Протоколи
- FIX:SelfSystem: Значним чином переглянуто і виправлено під час реалізації зовнішніх підключень, доповнено перевіркою розміру заголовку. Виправлено подвійне пакування запиту вихідних транспортів за других спроб перепідключення або повторної автентифікації.
Інтерфейс Користувача
- VCAEngine,Vision,WebVision: Доповнено підтримкою вбудування даних до атрибутів, позначених ресурсом, первинно для атрибуту джерела примітиву Медіа.
- FIX:Vision: Адаптовано до отримання іменованого переліку сховищ.
- FIX:VCAEngine: Виключено підключення атрибуту "focus" будь якого вкладеного віджету до ВВ обчислення і доповнено обробкою виключень доступу до таких ВВ для відсутніх вкладених віджетів. FIX: Attr::setS() вдосконалено опрацювання критичної секції.
- FIX:WebVision: Доповнено реалізацією користувацьких полів у рядку статусу.