Bosch IoT Gateway SDK version 9 combines the former ProSyst products mBS SDK and mBS Smart Home SDK into a single re-branded product, now part of Bosch IoT Suite.
Released: March 23 2018
End of life: March 31 2021
New modules
Scripting 1.0.2
SHIP 2.2.0
SPINE 2.3.0
Home Connect 1.1.0
Modbus 1.0.0
mDNS 1.0.1
WebSockets 1.1.1
Updated modules
Automation 4.0.2
Bluetooth LE 1.2.0
Cameras 4.3.0
ConfigTree 2.3.2000
DA 3.2.1
Database 3.0.4000
DECT 2.3.0
FIM 2.2.1
Framework 8.2.1
JSON-RPC 1.2.1
KNX 5.1.0
mBProfiler 6.4.3000
Core 1.2.1
Externals 1.1.1
OSGi 1.2.1
Util 1.1.1
Web 1.1.1000
mBSA 3.4.1000
mToolkit 3.7.1000
Network Manager 2.0.2000
OMA 1.4.2000
Peripherals 2.0.2000
Policy Admin 1.2.1
REST 2.0.1
RMT 1.3.0
Serial and Parallel 3.1.1
Software Admin 1.2.3000
TEE 2.0.2000
Units 1.2.0
Z-Wave 5.0.0
Zigbee 4.4.0
Dropped modules
mBS Mobile
Wireless Messaging
Notification Manager
eMail
X10
wMBUS
EnOcean
Automation 4.0.2
New features
The Home Automation Manager module is renamed to Automation. The module defines new Java APIs based on the Automation API from the Eclipse SmartHome project, implemented in a new set of bundles. It has been integrated with Eclipse Smart Home 0.9.0.
The new com.prosyst.mbs.automation.api contains all the org.eclipse.smarthome.* packages that the module depends on; no additional Eclipse SmartHome bundles are needed.
The Automation module contains the org.eclipse.smarthome.automation.rest bundle: it provides a REST API and service for managing the new Automation resources. The com.prosyst.mbs.automation.rest.api bundle contains the same REST interfaces, but with com.prosyst.* packages. These interfaces are not implemented anywhere, and are only used to build a Swagger UI documentation for the Automation REST API.
Persistent storage and backup/restore is supported for all Automation resources: rules, module types and templates.
Automation resources can be provided with JSON files: on the file system, or packed in bundles.
The automation resources can be created through the provided Automation Web Console Plugin.
The new module has generic implementation of Functional Item Permissions support. Specific Automation Permissions and Policy Admin integration will be implemented with future releases.
Automation Engine provides new system module types:
Functional item types:
Item Property Changed trigger
Item Property condition
Item Set Property action
Item Operation Executed trigger
Item Invoke Operation action
Script module types:
Script condition
Script action
Time module types:
Sun Position trigger
Sun Position condition
Repeating Time trigger
Repeating Time condition
Comparator condition
Event trigger
A new set of console commands for the Automation module is implemented in the "atm" group.
Changes and bug fixes
The Automation 4.0.0 and 4.0.2 differ in provided system module types as follows:
Changed UIDs, names, labels, descriptions. For example:
Astro -> Sun Position
Time of Day -> Repeating Time
Periodical -> Repeating Time
Days of Week -> Repeating Time
Calendar -> Repeating Time
Removed:
Counter condition
Event action
Delay action
Logger action
Changed behavior:
Comparator is separated from Rising and Falling Edge. Rising and Falling Edge are intended to be realized as composite from two Comparator modules.
The Automation 4.0.0 and 4.0.2 differ in API as follows:
package com.prosyst.mbs.services.automation is refactored to com.prosyst.mbs.services.automation.items.
removed ScriptProvider, ScriptRegistry, StatusInfo and URLIdentifiable classes.
changed constructor parameters.
add, update and remove methods return void.
getByTags parameters are swapped.
getByTag(String) is removed and getByTags(String...) has to be used instead.
isEnabled(String) is removed and getStatusInfo(String) has to be used instead.
runNow(String) is renamed to run(String).
getUIDs and removeByTags methods are removed.
packages com.prosyst.mbs.services.automation.type is refactored to com.prosyst.mbs.services.automation.handler corresponding to the changed module types.
package com.prosyst.mbs.services.automation.util is not public anymore.
HAM
The old Home Automation Manager(HAM) APIs and implementation are deprecated and kept for backward compatibility, but the bundle names have been refactored to match the com.prosyst.mbs.automation.ham.* pattern.
The new module is including both - the deprecated HAM rule engine and the new Automation rule engine. They work independently on the same framework. They have an independent set of bundles, demos, test cases and kitman scripts. The old rule and the new one are incompatible. The user decides which one to use and how to migrate it to the new automation module.
Changed HAM demos to use OSGi/Minimum-1.2 instead of Java 5.
Changed place where timer event is fired at BaseTimerManager.
Updated scene provider to log only the value of the last path element instead of hash id.
Fixed localization in ham.webconsole.
Fixed errors upon installing and uninstalling of HAM Status Demo.
Fixed descriptions of the commands in Ham Console demo.
Event Command properties are now being able to support any kind of property value that could be put.
Removing the Timer of deleted Postpone Condition was missing. Now the Timer is removed accurately and will not start after the Condition deletion.
Correct establishment of a link between StatusCondition and Event Command is implemented.
Old AstroTimer is fixed to work correctly with daylight savings time.
Logic, Postpone and Delay timer condition providers are fixed to work accurately.
The ApplicationContext service is now removed when the Application Manager disappears.
Updating the HAM application is now successful.
Correct message is displayed in Console after deactivation of the old rule .
Timer timezone is calculated correctly.
Status condition provider is fixed to work accurately.
OSS issues fixed.
Bluetooth LE 1.2.0
New features
Driver API
Advertisement scanning can be activated for all devices and for unlimited time
New STATE_ADV_SCAN state in BluetoothLEController
BluetoothLEController.startLeAdvertisingScan can accept null for the addresses parameter, indicating scan for all devices
BluetoothLEController.startLeAdvertisingScan can accept 0 for the timeout parameter, indicating unlimited time.
Support for non-connectable BLE devices
New device address type constants defined in BluetoothLEController - ADV_IND, ADV_DIRECT_IND, ADV_SCAN_IND, ADV_NONCONN_IND, ADV_SCAN_RSP
New event property in BluetoothLEDevice - PROPERTY_DEVICE_ADDRESS_TYPE. The property is added in the BluetoothLEController.TOPIC_DEVICE_ADVERTISING_INFO and BluetoothLEController.TOPIC_DEVICE_DISCOVERED events and specifies the device's address type.
BluetoothLEDevice.connectGatt() extended to allow different security levels:
New method connectGatt(int secLevel) added, security level constants defined in BluetoothLEDevice
The old connectGatt() method uses low GATT connection security
Driver
New system property "bluetoothle.scan.min.rssi" for filtering adding devices, based on minimum RSSI threshold. Range is -127 .. 20 dBm, the default value is -127, which effectively means no threshold
New system property "bluetoothle.scan.passive" - if set to true, forces passive scanning (host does not require devices to actively send additional SCAN_RESP packets) when BluetoothLEController.startAdvScan is invoked. Reduces power for both host and device, but some EIR data may not be advertised unless active scanning is used. Default is false.
New system property "bluetoothle.scan.filterDuplicates" - if set to true, forces filtering of duplicate scan entries when BluetoothLEController.startAdvScan is invoked. Default is false.
Support for non-connectable BLE devices
Advertisement scanning can be activated for all devices and for unlimited time
Handling of invalid device names: invalid symbols are replaced with '?'
New supported BlueZ version: 5.48
Commands
"advscan" command changes
advscan toggles the scan
advscan with no address parameter starts the scan for all devices
-t can be used to specify the scan timeout. If the timeout is 0 or missing, the scan has no timeout
New optional parameter of the "connect" command - security level; can be "low", "medium", or "high". Default is "low".
Changes and bug fixes
New system property "bluetothle.scan.blacklist" - can be used to specify a comma separated list of BT Addresses, which are excluded from initialization. Replaces "bluetoothle.lescan.blacklist"
New supported BlueZ version: 5.48
Cameras 4.3.0
New features
Cameras functionalities accessible through new DA API.
New bundle com.prosyst.mbs.cameras.da.items.api provides the new DA item interfaces.
New bundle com.prosyst.mbs.cameras.da.items.provider provides the DA item implementations.
Applied Device Access semantics and naming conventions - DA bundles renamed:
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
com.prosyst.mbs.cameras.hdm.adapter
com.prosyst.mbs.cameras.da.hdm.adapter
com.prosyst.mbs.cameras.hdm.api
com.prosyst.mbs.cameras.da.hdm.api
All DeviceClassObject interfaces in the com.prosyst.mbs.services.cameras.hdm.deviceclasses are now depracated, the DA Items should be used instead.
Camera user and password removed from the camera's device properties. Can be configured through dedicated Configuration DA FunctionalItem and HDM DeviceClassObject.
PIR and motion settings of DLink cameras are automatically enabled when camera is added.
(star) Dlink driver - Removed camera motion detection configuration, motion detection will auto start when camera is added
Cameras functionalities accessible through Functional Items.
User and password removed from device properties. Can be configured through dedicated Configuration FunctionalItem and HDM DeviceClassObject.
Added BackupProvider for backup and restore of the cameras DB
Changes and bug fixes
Improved logging.
PIR and motion settings of DLink cameras are automatically enabled when camera is added.
Dlink driver - Removed camera motion detection configuration, motion detection will auto start when camera is added
ConfigTree 2.3.2000
Changes and bug fixes
Deprecated ConfigTree.
Deprecated ConfigTree.
Added com.prosyst.mbs.configtree.cm bundle to ConfigTree kitman script.
Removed org.json bundle from ConfigTree kitman script.
Fixed NPE in backup save.
Fixed ConcurrentModificationException in backup restore.
Fixed IllegalStateException in ConfigTree servlet response.
Fixed error while uninstalling ConfigTree kitman script.
Device Access 3.2.0
For detailed migration information refer to the DA Migration Guides
New features
Major Features
Added Functional Item Management support.
Added Device Access API.
Added Device Items API.
Added REST support.
Added Device configuring.
Added Device Item mapping.
Deprecated HDM API.
Changed all bundles jar names and symbolic names.
Changes in bundle jar file names:
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
com.prosyst.mbs.hdm.api.jar
com.prosyst.mbs.da.hdm.api.jar
com.prosyst.mbs.hdm.commands.jar
com.prosyst.mbs.da.hdm.commands.jar
com.prosyst.mbs.hdm.configtree.jar
com.prosyst.mbs.da.hdm.configtree.jar
com.prosyst.mbs.hdm.core.jar
com.prosyst.mbs.da.core.jar
com.prosyst.mbs.hdm.dc.api.jar
com.prosyst.mbs.da.hdm.dc.api.jar
com.prosyst.mbs.hdm.ham.api.jar
com.prosyst.mbs.da.hdm.ham.api.jar
com.prosyst.mbs.hdm.ham.core.jar
com.prosyst.mbs.da.hdm.ham.core.jar
com.prosyst.mbs.hdm.ham.webconsole.jar
com.prosyst.mbs.da.hdm.ham.webconsole.jar
com.prosyst.mbs.hdm.inventory.jar
com.prosyst.mbs.da.hdm.inventory.jar
com.prosyst.mbs.hdm.jsonrpc.jar
com.prosyst.mbs.da.hdm.jsonrpc.jar
com.prosyst.mbs.hdm.simulator.jar
com.prosyst.mbs.da.hdm.simulator.jar
com.prosyst.mbs.hdm.webconsole.jar
com.prosyst.mbs.da.hdm.webconsole.jar
New bundles in Gateway SDK 9.0:
com.prosyst.mbs.da.api.jar
com.prosyst.mbs.da.config.jar
com.prosyst.mbs.da.item.api.jar
com.prosyst.mbs.da.rest.api.jar
com.prosyst.mbs.da.rest.core.jar
com.prosyst.mbs.da.xml.mapping.config.jar
com.prosyst.mbs.da.xml.mapping.provider.jar
Removed bundles in Gateway SDK 9.0:
com.prosyst.mbs.hdm.core.dalvik.jar
Changes in bundle symbolic names:
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
com.prosyst.mbs.hdm.core
com.prosyst.mbs.da.core
com.prosyst.mbs.hdm.dc.api
com.prosyst.mbs.da.hdm.dc.api
com.prosyst.mbs.hdm.ham.api
com.prosyst.mbs.da.hdm.ham.api
com.prosyst.mbs.hdm.ham.core
com.prosyst.mbs.da.hdm.ham.core
com.prosyst.mbs.hdm.ham.webconsole
com.prosyst.mbs.da.hdm.ham.webconsole
com.prosyst.mbs.hdm.inventory
com.prosyst.mbs.da.hdm.inventory
com.prosyst.mbs.hdm.jsonrpc
com.prosyst.mbs.da.hdm.jsonrpc
com.prosyst.mbs.hdm.simulator
com.prosyst.mbs.da.hdm.simulator
com.prosyst.mbs.hdm.webconsole
com.prosyst.mbs.da.hdm.webconsole
Changed all kitman scripts.
Removed Dalvik support.
Removed Generator Tool.
Changed OSGi configuration PIDs:
x
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
mbs.hdm.api.async
mbs.da.hdm.api.async
mbs.hdm.api.log
mbs.da.hdm.api.log
mbs.hdm.api.async.blacklist.devices
mbs.da.hdm.api.async.blacklist.devices
mbs.hdm.configtree.log
mbs.da.hdm.configtree.log
mbs.hdm.core.device.events
mbs.da.core.hdm.device.events
mbs.hdm.core.log
mbs.da.core.log
mbs.hdm.core.zone.events
mbs.da.core.hdm.zone.events
mbs.hdm.simulator.log
mbs.da.hdm.simulator.log
API
Added system property da.device.item.strict.
Added system property da.device.item.strict.all.metadata.
Added system property da.hdm.adapter.additional.metadata.
The DA is initialized when the FunctionalItemHelper service is registered.
Added OSGi configuration mbs.da.core.apis to enable DA API implementation or HDM API implementation.
DA logs error for invalid adapter name.
DA HDM pluggable commands
Desceptions of commands and also their parameters are improved.
Displayed information of device class objects is improvied.
Added shortcut szdp to command setZoneDCOProperty.
Added parameter -A to command asyncRemoveRequests.
DA HDM HAM
Deprecated DA HDM HAM API - all conditions and commands.
DA HDM JSON-RPC Remote Handler
Deprecated DA HDM JSON-RPC API
The Remote Handlers will not be available when the HDM API implementation is not provided.
Added new field in the common remote object DeviceClassObject:
HomeDeviceUID
Demos
Added new demos:
DA Item demo
DA Adapter demo
DA View demo
DA Config demo
DA Mapping demo
DA Mapping Config demo
The DA HDM App demo shows information for home device type – HomeDevice.getType().
Improved readme.txt description of all DA HDM demos.
Changes and bug fixes
Major changes
Changed all bundles jar names and symbolic names.
Changed all kitman scripts.
Removed Dalvik support.
Removed Generator Tool.
API
Fixed java doc of method HomeDeviceAdminSpi.invalidateHomeDevice that children devices are not invalidated when the parent device is invalidated.
Fixed text representation of property state with value 144 of device class com.prosyst.mbs.services.hdm.deviceclasses.whitegoods.WhiteGoodAppliance.
Fixed metadata key max in several default metadata XML files.
DA core
OSGi configuration mbs.hdm.core.log is changed to mbs.da.core.log.
Internal structure of DA Core bundle is changed to support several HDM API and SPI packages.
The DA DB structure is changed. The DA converts old DB structure to new DB structure.
Fixed duplicated catch of Throwable in the generated device class methods.
Skipped component.id for hook tracking.
DA HDM pluggable commands
Fixed command removeDevice to support defined parameter -oa.
DA HDM Config Tree
The Configurable DeviceTemplates is not registered as OSGi service when the HDM API implementation is not provided.
The Configurable Devices is not registered as OSGi service when the HDM API implementation is not provided.
DA HDM HAM
The HDM HAM conditions and commands will not be registered as OSGi services when the HDM API implementation is not provided.
DA HDM simulator
Fixed and improved the log messages.
DA HDM Web plugin and inventory
Fixed bug when expanding zones on many levels.
Database 3.0.4000
Changes and bug fixes
Cleaned up the empty localization files.
DECT 2.3.0
New features
Added support for Device Items.
Added support of Simple Light unit type.
Added support of sending message data in Pluggable Send command.
Added reason code into the DectException.
Added firmware and hardware version as device properties.
Add displaying of Simple On-Off Switch unit type.
Changes and bug fixes
Deprecated protocol-specific device class interfaces.
Applied Device Access semantics and naming conventions for DECT module.
Do not make retries in configuring Reporting DC for device with EMC 0.
Changed all kitman scripts.
Changes in bundle jar file names
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
com.prosyst.mbs.dect.hdm.adapter.jar
com.prosyst.mbs.dect.da.hdm.adapter.jar
com.prosyst.mbs.dect.hdm.api.jar
com.prosyst.mbs.dect.da.hdm.api.jar
Changes in bundle symbolic names
mBS SH SDK 8.2
Bosch IoT Gateway Software SDK 9.0
com.prosyst.mbs.dect.hdm.adapter
com.prosyst.mbs.dect.da.hdm.adapter
com.prosyst.mbs.dect.hdm.api
com.prosyst.mbs.dect.da.hdm.api
New bundles in Gateway SDK 9.0
com.prosyst.mbs.dect.da.items.api.jar
Deprecated DECT HDM API
Support of unsolicited CMBS_EV_DSR_HAN_DEVICE_FORCEFUL_DELETE_RES
Added CMBS_IE_HAN_SEND_FAIL_REASON field in jsonrpc cmbs_dsr_han_msg_Send_Rsp if available
Fixed java.util.ConcurrentModificationException in HanSendCommand
Fixed bug where if Core Unit is missing in device table the WakeUp DC is added
Fixed NPE when BinarySwitch configures reporting if Reporting DC is not available
Fixed recursion when the native process is disabled
Fix copy-right headers
Fixed bad character into the driver.cmbs manifest
FIM 2.2.1
New features
FunctioanlItemPermission types defined for checking the GET and REGISTER FunctionalItem permissions. Find and register FW hooks added to prevent the access and registration of functional items in security mode.
com.prosyst.mbs.services.fim.spi.FunctionalItemValidationUtil added. Provides utility methods for FunctionalItem UID, object classes, name, tags and attributes validation.
com.prosyst.mbs.services.fim.util.diff package added with utilities for deep compare of FIM supported types. Could be used in finding the differences between the old and new property value of FIM property changed events.
com.prosyst.mbs.services.fim.util.TypeConverter utility added. Contains helper methods for conversion of FunctionalItem properties and operation parameters.
com.prosyst.mbs.services.fim.util.FunctionalItemEvent defined as an utility that wraps a Functional Item Management event with topics under com/prosyst/mbs/services/fim/FunctionalItemEvent/.
com.prosyst.mbs.services.fim.data.FunctionalItemObject data type defined to wrap a value of any FIM supported data type and also its JSON format string representation with additional metadata information as type and classes.
com.prosyst.mbs.services.fim.util.groups.GroupUtil added to provide additional utility methods for working with groups.
New GroupDescriptor constructor added to simplify specifying the group creation properties values.
Benchmarks support added.
Benchmarks support added for the remote service.
Metadata command added - prints a bean metadata and item or bean creation metadata.
Npm package for local development added. Part of the ../runtime/osgi/lib/web/fim/npm/fim.tar.gz.
TypeScript definition file is added.
A new WebSockets implementation used - in the general case only 1 WebSocket will be open.
Functional item factory custom UI is added
Web API bundle added to support defining web admin custom components.
Functional Items Management REST API defined.
Group Management REST API defined.
Functional Items and Groups Management REST web service demo client: In the OSGi runtime, REST documentation generated by Swagger is made available at http://localhost/restdoc and provides an option for invoking the remote methods via a convenient web interface.
Custom bean editor added for java.lang.Number.
Changes and bug fixes
FunctionalItem attributes of bean, enum and item data types are not allowed any more. The allowed primary types are listed in FunctionalItem.getAttributes() method java doc.
com.prosyst.mbs.services.fim.data package added to group all FIM API defined beans. AsyncStatus and FunctionalItemError moved to data subpackage.
com.prosyst.mbs.services.fim.util.FunctionalItemInvoker utility added. It contains property getters, setters and execute operation utility methods that were present in the FunctionalItemHelper. They will trow InvocationTargetException
FunctionalItemException deprecated.
GroupAdmin NullPointerException fixed on createGroup(GroupDescriptor groupDescriptor). IllegalArgumentException is the the correct exception thrown on such invocation.
GroupAdmin method filterItemsByType fixed to require filterItems operation execution.
FIM pluggable commands require JSON string format and convert input strings using com.prosyst.mbs.services.fim.util.TypeConverter.fromJSONString. The output format is also changed to JSON string.
Non-readable properties values are skipped in the JSON objects that are returned on getFunctionalItemsByFilter, getFunctionalItems and getFunctionalItem invocation. They were present with null value in previous FIM versions.
The DataServiceAdapter interface is redefined (a breaking change).
Thee IFunctionalItem.generationErrors is removed (a breaking change).
Missing Ajax adapter interface is added.
Special handling when serialing/deserializng special values(+/-Infinity, NaN) is added.
IE compatability issues fixed.
The missing representation for pure eventable properties is fixed.
AbstractFunctionalItemFactory unregisters itself and then the existing items that are not explicitly removed by the user. It recommends the factory to be registered after the persisted items are restored, if items persistence is supported by the instance. It notifies the user that the state is restored and the factory is initialized already.
GroupAdmin restores the persisted groups as a part of its initialization. After that the GroupAdmin is registered.
Metadata parsing fixed for all custom numbers, i.e. types different from the primitive numeric types, their Java object representation, BigInteger and BigDecimal. The custom numbers are considered as BEAN types instead of NUMERIC.
FunctionalItem interface metadata returned for interfaces that not extent FunctionalItem on first level but it is in their hierarchy.
DB load/store of collection array types, i.e. List<String>[] fixed.
Error while parsing metadata with JDK less than 7 fixed - caused by ClassNotFoundException.
Printing of stacktraces on commands invocation changed to depend on mbs.parser.debug property value.
Framework 8.2.1
New features
OSGi R6 Core Specification support
Added JBED8 support. Includes support in server scripts and framework profile files.
Signatures for signed bundles must not be stored in com.prosyst.util.jar.Manifest object
Resource Manager implementation for Skelmir is provided
New method in FrameworkAccess for bundle installation is added: public Bundle installBundle(InputStream bundleStream, int bundleInstallLevel)
Provided stack trace information when there are hanged listeners/bundles
Set the initial bundle start level after installing all bundles from the boot.ini
com.prosyst.util.hash.LRUCache improvements
Improve service retrieval using unique service registration property. See com.prosyst.mbs.framework.ServiceQueryOptimizerPlugin
Extended the standard OSGi ServiceEvent#UNREGISTERING with a new event type com.prosyst.mbs.framework.ExtServiceEvent#UNREGISTERED. See classes com.prosyst.mbs.framework.ExtService*
CertificateManager should be configurable to disable the expired certificates check. It is supported through system property mbs.certificates.skipValidationCheck
Framework should allow certain bundles to be skipped from certification checks. It is supported via com.prosyst.mbs.framework.certmanager.ValidationPlugin
New method in FrameworkAccess is added to save all state files: public void saveFrameworkState();
Major improvements in the tracking of BackupProvider services during backup/restore
A number of fixes and improvements in the javadoc of com.prosyst.util.io.PDataStream
Unified behavior of the methods in com.prosyst.util.io.PDataStream
Unified behavior of the methods in com.prosyst.util.io.PDataStream
Applied unified model of FrameworkEvent.ERROR generation in the Framework
Improvements in the framework backup events readability
Execution of framework async operations is done in a separate thread other than the Framework EventDispatcher thread.
Execution of framework asynch operations is done in a separate thread other than the Framework EventDispatcher thread.
Improvement in the PackagesManager, while handling PackageAdmin#refreshPackages
Introduced support for auto*.prs files. These files are loaded additionally to the bin/vms/common.prs and bin/vms/jvm/default.prs files.
Improved error message, when a storage lock file cannot be deleted during "server clean" start
Clarification in javadoc about the purpose of the BundleContext argument in SecurityDelegate#wrap methods
com.prosyst.util.io.ExternalizableDictionary should support enums
com.prosyst.util.propertiesfile.ResourceBundle#getLocales() should reorder the locales if necessary
com.prosyst.util.propertiesfile.ResourceBundle#getLocales() should reorder the locales if necessary
Framework provides service tracker utility, which supports indexing on a concrete service registration property. See com.prosyst.mbs.framework.ExtServiceTrackerCustomizer.
Hooks should take into account, whether the registered service object is a ServiceFactory
New method in FrameworkAccess to list bundles with a given symbolic name
Added a new method in com.prosyst.util.security.SecurityDelegate#isAssignableFrom() to handle the logic for proxy objects, which extend classes
com.prosyst.util.hash.ExternilizableDictionary should support any Collection object
com.prosyst.util.security.SecurityUtil extended with a new constructor with AccessControlContext
Added protection in Backup Admin against slow or hanging BackupListener during auto restore
Allow setting VM_HOME from auto* script in server_common
Extended the com.prosyst.util.io.ExternalizableUtil with support for enums
Added watchdog support in Backup Admin to detect slow/hang BackupProvider during auto restore. This watchdog support is enabled, when system property mbs.backupadmin.autorestore.timeout is set to a positive value.
Improved debug message in LDAP filter if operator is undefined.
Framework state files MUST be protected with checksums
Resolved memory leaks in Framework Core.
Added support for buffering of FrameworkMeasurement logs
Improved framework security debug
Non-certificate files in certificate storage folder are ignored
Extend the com.prosyst.util.io.ExternalizableUtil with support for enums
Extended storage native support in jdk12 mode for native libraries outside of the persistent storage
server script extended with jdk1.9 option to support properly Java 9
Framework should allow easy setup of custom log directory without direct modification of the standard server scripts
Improve LDAPSearch debug info, when Object from filter cannot be constructed
Improve class-loading error handling for zombie classloaders
Backup Unclear logs from BackupAdmin about exporting configurations
Changes and bug fixes
Improved debug log message, when bundle manifest is wrong
The server script argument nofwlog disables completely framework logging. No logging neither in console, nor in files.
Fix for: The framework eager update doesn't fire PACKAGES_REFRESHED
Fix for: BundleContext.registerService sometimes creates ServiceEvent with null service reference
Fix for: org.osgi.framework.os.name is not taken into account at framework startup
Improved debug messages with security
Fix for: Infinite loop in AsyncLogger
Fix for: File operations with functional groups should be done in system bundle context. No file related security checks should be done on the callers.
Fix for: When a bundle with native libraries is updated directly in the bundles folder, its native libraries are not re extracted from the bundle jar.
Fix for: The service property names of lazy service are printed in lower case
Fix for: Framework throws NullPointerException on restarting with enabled java security, if its storage was generated with disabled java security
Fix for: Fault Manager should be initialized before the Security module
Fix for: It is possible to get service, while the service is being unregistered
Set the initial bundle start level after installing all bundles from the boot.ini
Fix for: SecurityUtil default constructor javadoc is not correct
Fix for: BundleWiring#getRequiredWires does not work properly in some cases with host and fragment bundles
Fix for: ClassCastException in StartupWatchdog.BundleStarter, when someone tries to start the system bundle via the FrameworkAccess start methods
Fix for: When starting the Framework with boot.ini reload enabled, create a new marker file after boot.ini has been reread
Fix for: Framework cannot start without storage, if mbs.storage.updateOnBundlesChange is true
Fix for: Auto backup restore does not work properly, when there are no aliases specified
Fix for: NPE in ExportedCapabilityInfo, when pkginfo command is used in certain cases.
Introduced support for auto*.prs files. These files are loaded additionally to the bin/vms/common.prs and bin/vms/jvm/default.prs files.
Fix for: Subjars are not removed from storage after updating the bundle. This exception occurred on a setup with very specific bundle naming and with mbs.storage.updateOnBundlesChange=true.
Fix for: java.security.AccessControlException when saving framework state files
Fix for: Fragment bundle could not be resolved, when updated in security mode. It was observed on a specific set of host and fragments bundles
Fix for: LDAP filter does not process correctly classes without constructor, but with static valueOf(String) method
Fix for: -Dmbs.disableContextClassLoader=true was set in Skelmir start script to workaround issues with older Skelmir releases
Fix for: Incorrect streamHandler field used for Skelmir
Fix for: The backup file is deleted before storage state files are persistently stored
Fix for: PackagesManager#resolveImport should call System.getProperty("mbs.resolver.full") in privileged block
Fix for: NullPointerException on org.osgi.framework.wiring.BundleWiring#getClassLoader for the system bundle
Fix for: NullPointerException in EventsManager#manageServiceEventHooks
Fix for: NullPointerException in BackupAdmin, when used with auto backup
Fixed a bug in com.prosyst.mbs.util.hash.HashObjIntNS constructor with load factor
Fix for: ConcurrentModificationException is thrown when incorrectly encoded permission info is included in permissions.perm
Fix for: Issues with com.prosyst.mbs.io.PDataStream#writeUTF/readUTF
Fix for: SignedBundleReader does not properly split the different certificate chains, if the bundle is signed with more than one valid certificate chain
jdk server scripts should start with v16 (for Java6) by default instead of v15 (for Java5)
jdk server scripts should start with v16 (for Java6) by default instead of v15 (for Java5)
Fix for: Updating jar archives directly in bundles folder leads to resolving issues
Fix for: ArrayIndexOutOfBoundsException in BundleWiring
Fix for: ProSyst Security Manager does not work properly for children framework, which created through org.osgi.framework.launch.FrameworkFactory
Fix for: NullPointerException in PackagesManager#findExportInfoId, while storing resolve info files during framework shutdown. Observed with fragment and host bundles.
Fix for: osgi.ee capability described in the org.osgi.framework.system.capabilities.extra is not taken into account, when checking bundle required execution environment
Fix for: ServiceReferenceImpl#ungetFactory0() should be called in an AccessController.doPriviliged block
Fix for: com.prosyst.util.hash.LRUCache must not read system properties in its constructor
Fix for: NullPointerException when two fragments are added to one host bundle. One of the fragments had optional imports.
Fix for: Bundle#findEntries(path, "*.xml", true) does not provide valid url, when the entry name contains the character #
Fix for: ArrayIndexOutOfBoundsException in PackagesManager#readImport. Observed with host and fragment bundles with Dynamic-ImportPackage.
Fix for: osgi.contract capability is not found but it is provided. Noticed with bundles from Externals
Improved debug message for ServiceEvent.null
Fix for: BackupAdminImpl uses object streams to store & read custom exceptions. Added appropriate support for handling custom exceptions
Fix for: Memory leak in local permissions, when it contained permission, whose class is exported from a bundle, which is uninstalled
Fix for: com.prosyst.util.log.FileLogger problem with maxFileSize
Fix for: Wrong permissions info dump in PPermissions.toString() method
Fix for: Resolving fails, when two bundles export and import the same package with one and the same version
Fix for: osgi.contract capability is not found, but it is provided
Fix for: Debug message for ServiceEvent.null
Fix for: BackupAdminImpl uses object streams to store & read custom exceptions
Fix for: Memory leak from local permissions collection
BackupAdmin.restore(InputStream,...) should not close the InputStream argument
Fix for: Framework profile file for java9 should contain jdk in bootdelegation
Fix for: Cannot start the server jar when using the Xbootclasspath/p option on jdk 9
Fix for: com.prosyst.mbs.framework.api should contain only public api
Fix for: Wrong copyright for some demo sources
Fix for: Incorrect Bundle-Description in mf 0
Fix for: PermissionCollection-s should not be initialized in marked threads
Fix for: HookProcessor with nested synchronization blocks and "deadlock"
Fix for: Bundle wiring requirements/capabilities/wires order does not follow strictly the osgi spec defined order
Fix for: Recursive dumps and StackOverflowError with FW "Debug for Handlers"
Fix for: Some Framework demos do not have readme.txt and install.txt files and/or these files needs to be updated
Updated images in the android demo
Backwards compatibility for long strings in PDataStream
Removed support for the following jmvs: Oracle Java SE 4, JBED, phoneME Advanced, Microdoc J9 2.4, GCJ, Kaffe, Cacao, JamVM
Fix for: CertificateManager throws NPE on Java compact profile vm
Fix for: NPE in ArchiveParser.getBytes
Fix for: set _ARGS=nolazy does not disabe the lazy mode
Fix for: ceej\server.bat doesn't work on Windows at all
Fixed Perc script
Fix for: NullPointerException in ServicesManager.add0
Home Connect 1.1.0
Initial public release of the package providing implementation of the Home Connect protocol.
New features
Home Connect Protocol Driver
Support for OAuth2 standard for authorization against the HomeConnect server.
Different authorization modes are supported - applications can provide username and passwords to Home Connect driver or handle authorization on their own outside and provide only the OAuth2 refresh token. Home Connect driver stores persistently the refresh token.
Configurable Home Connect API key and scope for authorization.
Client for Home Connect REST API, implementation is based on Jersey client. This allows listing, monitoring and control of the available home appliances.
Support for different HomeConnect backend servers.
Production server with real appliances from the market: https://api.home-connect.com
Development server with simulated appliances: https://developer.home-connect.com
Support for Server-Sent-Events from the HomeConnect server using Jersey SSE support (jersey-media-sse).
Production server works with one single SSE channel for all the appliances.
Development server works with multiple SSE channels, one per home appliances.
Use the JVM default X509TrustManager and HostnameVerifier implementation when making HTTPS requests.
JVM default X509TrustManager and HostnameVerifier implementation can be overridden by custom X509TrustManager and HostnameVerifier implementations registered as OSGi services with registration property service.pid=homeconnect.
Added support for Client Secret if provided in the login credentials.
Home Connect HDM Adapter
Core implementation of Home Connect HDM adapter without any DCO/DA implementations.
Provides a mechanism to register DCO/DA providers.
Registers a virtual HomeDevice of type Controller that is mapped to the Home Connect Driver and it is responsible to handle authorization against the HomeConnect backend server as well as adding/removing HomeDevice instances for available HomeConnect appliances.
Added common Home Connect appliance cache managed by the Home Connect adapter and shared with all the Home Connect provider bundles.
Home Connect DCO provider
HCAuthorization DCO for login to Home Connect backed server, bound to virtual Home Connect Controller HomeDevice.
HCDiscovery DCO for searching and registering home appliances as HomeDevices, bound to virtual Home Connect Controller HomeDevice.
By default, no home appliance is registered automatically as HomeDevice. This is done by an explicit user request through the HCDiscovery DCO of the virtual Home Connect Controller HomeDevice.
Implementation of Home Connect WhiteGoods API. Each Home Connect appliance that should be registered as HomeDevice is attached with one specific WhiteGoods DCO that aggregates all of its functionalities.
Deprecated protocol-specific device class interfaces.
Deprecated DCO provider implementations.
Home Connect DA provider
Added support for Device Items.
Implementation of DA WhiteGoods API.
JSON-RPC 1.2.1
New features
Integration of the new com.prosyst.util.json API.
Rebranding and application of Bosch SI copyright headers in JSON-RPC.
Serialization utilities changed:
com.prosyst.mbs.services.remote.json.Marshaller, com.prosyst.mbs.services.remote.json.MarshallingContext and com.prosyst.mbs.services.remote.json.util.Introspector are deprecated; new API is introduced with the com.prosyst.util.json package from the com.prosyst.mbs.util.api bundle;
all modules (core, push & pull events) are changed to use the new com.prosyst.util.json package for JSON serialization/deserialization.
Long Poll/Pull Events (the "RE" JSON-RPC service from com.prosyst.mbs.webservices.jsonrpc.handler.event) is changed to use the new com.prosyst.mbs.services.eventadmin.remote and com.prosyst.mbs.services.policy.eventadmin.remote APIs. As a result, the service can now be configured through an OSGi configuration with pid com.prosyst.mbs.impl.services.remote.event.JSONPullConfiguration
WebSocket/Push Events (com.prosyst.mbs.webservices.jsonrpc.event.websocket) are now implemented using the new WebSocket module and the events application and protocol defined there in the com.prosyst.mbs.services.wa.events package + the new com.prosyst.mbs.services.eventadmin.remote and com.prosyst.mbs.services.policy.eventadmin.remote APIs; as a result:
a new protocol for creating multiple subscriptions in a single WebSocket is available; the previous subscription methods are kept for backward compatability
a new OSGi configuration with pid com.prosyst.mbs.impl.services.remote.event.push.RemoteEventPushConfiguration can be used to configure the WebSocket events implementation
access to WebSocket events can be granted/denied based on the permissions of the remote user as they are defined in the PolicyAdmin service
Changes and bug fixes
Fix for: JSON parser can lead to out of memory
Fix for: UTF-8 is not used as default encoding in Json/rpc remote interface for content-type like "application/json".
Fixed kitman script to not install twice the Policy Admin bundles.
Fixes for multiple project execution.
Fixes for long time testing with all Gateway modules.
Fix for: Errors while installing kit Web Services JSON-RPC Bookstore Demo in security mode.
The RemoteServiceInvoker implementation from com.prosyst.mbs.webservices.jsonrpc.invoker.policy was fixed to pass the AccessControlContext of the remote caller when calling the remote methods through AccessController.doPrivileged so that any subsequent permission checks in the code of the remote service will check this AccessControlContext (and the permissions of the remote caller) too.
The Provided-Services manifest header of the com.prosyst.mbs.webservices.jsonrpc.handler.event bundle was fixed to explicitly list all exported remote methods.
KNX 5.1.0
New features
Added support for Device Items (KNX Device Access Items API Bundle, KNX Device Access Items Provider Bundle).
Added special DatapointConfig Device Item, it allows getting and setting group addresses of datapoints used by the other device items of the KNX Device.
Added support for new datapoint type, 235.001 DPT_Tariff_ActiveEnergy. (KNX Driver Core API Bundle, class com.prosyst.mbs.services.knx.dpt.DPTTariffActiveEnergy).
Added DPTGeneric class to handle datapoint types without dedicated class (KNX Driver Core API Bundle, class com.prosyst.mbs.services.knx.dpt.DPTGeneric).
Extended list of known Datapoint types (KNX Driver Core API Bundle, class com.prosyst.mbs.services.knx.dpt.DatapointType).
Extended list of known KNX manufacturers (KNX Driver Core API Bundle, class com.prosyst.mbs.services.knx.KnxManufacturer).
Changes and bug fixes
Deprecated protocol-specific device class interfaces (KNX Device Access HDM DC API Bundle).
Fixed synchronization problems within KNX Device Access HDM adapter.
Fixed problems when restoring backup within KNX Device Access HDM adapter.
mBProfiler 6.4.3000
New features
Added support for Java 9
Known issues and limitations
On Mac OS X 10.11 (OS X El Capitan) and greater System Integrity Protection disables native agent loading from JVM. System Integrity Protection has to be disabled or -agentpath JVM option has to be used manually.
If com.prosyst.mbs.mbprofiler.bcm.jar is not found, JVM crashes. See: http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=732502b15ec6ddfffffffffc20c697edb6981?bug_id=7093659
The support for Skelmir and PERC JVM is not stable due to problems in the VM's JVMPI implementation. The JVM may crash sometimes.
Sun JDK version 1.3 to 1.9 - No sleeping state of threads in threads pane, no stack traces in monitor dumps
Skelmir CEE-J - WAIT looks like SLEEP, actual SLEEP is not sent, no threads status in monitor dump, no class loader information
PERC - No sleeping state of threads in threads pane, no class loader information, monitor dump does not work, toString does not work
Core 1.2.1
New features
DBImpl should use a ServiceTracker to track the ThreadPoolManager.
Key Manager ported from Incubator to Core 1.2.1.
Added persistent support for benchmarks, which are enabled.
Added BenchmarkUtil#begin method with a properties parameter.
Improvements in DB API javadoc.
Added dedicated API to sync DB file descriptors.
AnnotatedCommands API added to make easier writing of console commands.
db commands - the text value is printed also for cases, when the value is in HEX.
Improvements in the way uptime information in info.d is printed.
Added back support for system properties mbs.parser.startup, mbs.parser.startup.onfwstart and mbs.parser.startup.newthread. It was available until mBS 7.5.1 and then dropped from mBS 8.0 up to 8.2.x.
Added Platform State pluggable commands.
Improved Backup Admin list command.
Start/stop output redirection to a file with a pluggable command.
Added back the support for enabling file system sync via mbs.db.synch=true system property.
Added new API com.prosyst.mbs.services.db.DBPermission for more fine-grained access to DB instances.
Changes and bug fixes
Fix for: Incorrect version for com.prosyst.util.encode exported package.
Fix for: DBManager.deleteCustomDB(String) logs warning, when returns false. Debug message is printed now.
Fix for long string support.
Fix for: Can not recover huge database.
Changed command info.d behavior. Its description is changed accordingly.
Fix for: The com.prosyst.mbs.core.commands bundle has no permissions to get the Commands service implementations, when framework run in security mode.
Fix for: No difference between unsuccessful Bundle[] search and "<nil>" value, for Bundle[] options in AnnotatedCommands.
Removed temporal "(pre-9.0 compatibility)" suffix string from the group names, when the commands are not AnnotatedCommands subclasses.
Fix for: Printing of stacktraces should depend on mbs.parser.debug property value.
Fix for: Missing message Success when execute reset command.
Fix for: Command bundles.restart not working.
Fix for: Missing message for stops the memory info thread.
Fir for: Missing message for disable bundle resolution.
Fix for: Help message always starts with one empty line.
Fix for: Exception stacktrace printed when trying to install non-existing bundle.
Fix for: Missing message when execute bundle.update with incorrect bundle.
Fix for: Missing message when execute system.listen -d.
Fix for: Missing message for every command in bundles group.
Fix for: Key Manager commands typo errors.
Fix for: reset command should return different message from "Success." when conditional permissions list is empty.
Fix for: Incorrect message when try to remove permissions with nonexistent location through pa command group.
Fix for: Missing message for commands in 'services' group.
Fix for: Incorrect help information of fw.disable console command.
Fix for: Strange behavior of update console command without -l parameter.
Fix for: Update Manager Service update command gives error.
Rebranding and application of Bosch SI copyright headers in Core.
Fix for: Benchmark module does not delete from DB the data for benchmarks, which are reset
Fix for: core.api bundle did not import all packages, which are exported by the core.api bundle.
Fix for: core.api bundle did not use its own BundleContext to track required services in com.prosyst.util.ref.Log
db, bundles, process and benchmark commands – fixed typo errors in their descriptions.
Fix for: info.details -f prints nothing. Now it prints framework information.
Fix for: NullPointerException in "info.details -t".
Fix for: Bundle pattern matching does not work for Bundle Symbolic Name.
Fix for: Missing descriptions for commands in tm group.
NullPointerException in benchmark web plugin is fixed.
Fix for: benchmark weaving hook does not process properly java 1.6 compiled classes.
Fix for: NPE during DB defragmentation.
Fix for: Can not store Strings with size > 65535 bytes in the DB.
Externals 1.1.1
New features
Added OSGi DS Annotation
Added gson library for java8 compact profiles
Updated OSGi Core bundle to R6 version
Added java8 compact profiles compatible versions of javax.xml.bind and javax.activation
jersey-min added
UPC UPCHelper from com.prosyst.mbs.external.mobileconditions logs either in framework log, if run on Bosch Gateway, or on console otherwise
Updated Apache Commons FileUpload to version 1.3.3
Updated JmDNS library to version 3.5.3
Rebranding and application of Bosch SI copyrigh headers in Externals
Changes and bug fixes
Fixed Bundle-RequiredExecutionEnvironment manifest header for bundle org.eclipse.jetty.websocket.client;
Removed Quartz bundle.
Added license and notice files to guava bundle.
Removed Rome bundle.
Removed jdom bundle.
Fix for: Bundles, which provide contracts should use the contract's uses clause of the Provide-Capability to list the packages, contained in the contract.
Fix for: Security vulnerability in jackson-databind.
Provided a compact version of jersey-min bundle.
Fix for: jersey-min.compact and jersey-min are missing NOTICE and license files when built.
Fix for: javax.ws.rs-2.0.jar does not have an uses clause in its Provide-Capability header.
OSGi 1.2.1
New features
Defined com.prosyst.mbs.osgi.EventPermission, which allows more fine grained control on the event properties other than the event topic. The OSGi defined TopicPermission allows fine grained control over topic only.
Added RemoteEvents API.
Improved com.prosyst.mbs.services.event.SecurityEvent API in regards to constructors with multiple permissions.
Isolation support added in subsystem pluggable commands.
Added sub.update console command.
Log bundles naming scheme applied – introduced split log.slf4j, log.core, log.jul and a log.bundle, which assembles all.
Forward log records from JUL (java.util.logging) to OSGi Log Service.
Added support for metadata version in the name of the xml files in the external configs folder
Bundle startup optimizations
OSGi R6 Support
Support for non-persistent configurations in Config Admin is added. See com.prosyst.mbs.services.cm.ExtConfigurationAdmin
Bundle startup optimizations
Initial config loader properties file format is extended with data types and arrays.
Support definition of a number of Configuration objects described in multiple metadata xml files for a particular factory pid in different bundles
Added support in Configuration.update(props) to check, whether the props is different than the current one. Enabled through mbs.config.update.checkForDifference system property.
Initial Configuration Loader properties file supports data types and arrays.
More verbose debug logs from event admin for a hanged EventHandler.
Add to Util – new mbs.useradmin.default.charEncoding system property with default value UTF8.
Demo for Monitor Admin is added.
Http should support an upgrade mechanism to other protocols like WebSockets.
Supported an expiration "e" flag (http parameter) for the session cookie in seconds in the HTTP Login Servlet when the requested URI is "/system/http/login" and requested method is POST. for this feature to fully work, the mbs.http.session.useSessionCookies system property must be set to false (the default value is true); otherwise, the session will be invalidated locally, but max-age will not be added to the session cookie.Changes and bug fixes
OSGi R6 Support
Added support in SCR to skip activation of some predefined components. Introduced is the mbs.scr.skipComponentActivationFor system property with format <bsn1>[;<ver1>],<bsn2>[;ver2],...,<bsnn>[;vern].
Provide SCR error log, when the constructor of an instantiated component throws an Exception.
Black list DS components that can not be activated after multiple times because of an exception.
Support scanning of the subsystems folder for updated subsystem archives and triggering automatic subsystem update.
Composite subsystem manifest is extended with support to describe export/import bundles and packages with a pattern.
EventProperties API is parameterized, where possible.
config commands – added removeProperty command for deletion of config property. Also added -k option to update command to support deletion of config property with the specified key in the option.
New command config.create to avoid creation of multiple configurations with equal properties.
Add scan at metatype start for uninstalled bundles, which are not yet removed from the metatype persistent storage.
mtp.ls command should provide more information
Improved logging information
http.extender should be configurable which parts of its functionality to be activated
Changes and bug fxes
Fix for: com.prosyst.mbs.osgi.testcases.permsman is included in the main assembly.
javax.microedition.io moved from com.prosyst.mbs.osgi.api to com.prosyst.mbs.core.api
Fix for: Deadlock between event admin and log bundles.
Fix for: If com.prosyst.mbs.services.metatype.annotations.Configurable is called with incorrect configuration then it returns null instead of throwing an exception.
Fix for: com.prosyst.mbs.services.metatype.annotations.Configurable ignores upper or lower bounds.
Fix for: Configurable#createConfigurable methods are backwards incompatible.
Fixes in com.prosyst.mbs.services.eventadmin.remote.AbstractSubscriptionHandler in regards to usage with enabled security
Fix for: Misleading name of the api bundle
log.ls command does not print the errors and warnings
Fix for: Unable to set OSGi configuration via console commands.
Fix for: ua.d for groups should provide more information
Fix for: dmt.session -a and dmt.session -c are obsolete. So they are removed.
Fix for: NPE when execute ua.details command
Fix for: DMT create and update commands print output in System.out instead of provided stream
Fix for: Printing of stacktraces should depend on mbs.parser.debug property value
http.update command removed
Fix for: Created user with -u parameter does not appear when list roles
Fix for: NPE when execute scr.disable for unexisting component
Fix for: Metatype details console command prints an additional space symbol
Fix for: NPE when execute scr.details without parameters
Fix for: SCR configuration update for factory components does not update SCR component properties
Fix for: ConcurrentModificationException in SCRManager.processConfigurationEvent
Fix for: on bundle uninstall the metatype loader does not delete the configurations, which are created from the metadata files of the bundle.
Finalized support for multiple config objects for one metadata in different bundle xml files.
Fix for: Metatype xml in fragment bundles are not processed
Handling incorrect OSGi version described in the bundle's metadata manifest header
Fix for: Metatype xml in fragment bundle is not taken into account
Fix for: OSGi XML configuration in fragment
Fix for: Timer thread is possible to remove real metadata
Fix for: Errors while installing kit Metatype Annotations Demo
Fix for: Attribute order is not retained in ObjectClassDefinition
Fix for: Incomplete support for mbs.metatype.use80Serialization
Fix for: NPE in metatype processing
Configure HTTP session attribute "org.osgi.service.http.authentication.remote.user" with value "user.anyone" in case of anonymous connect
Fix for: 30 seconds timeout before response in some cases
Fix for: Errors on importing the com.prosyst.mbs.osgi.http.whiteboard-demo project
Fix for: Don't create 2 HttpServletRequestImpl instances for one request
Fix for: javax.servlet.http.HttpSessionBindingListener - Bound and Unbound events are fired for every http request instead of just the beginning and end of the session
Fix for: HTTP requires java 1.5
Fix for: Generic HTTP Directory Traversal attack
Fix for: Infinite loop in Response.makeAnswer(...)
Fix for: Servlet forwarding does not retain all the response headers and status code
Fix for: HTTP sends wrong error page
Fix for: prvagent uses 10 sec. for SO_TIMEOUT. Instead 0 is used now.
Fix for: Initial Config Loader properties file does not support empty string values and values containing '='
Fix for: Event type doesn't match (CM_LOCATION_CHANGED).: expected <3> but was <1> during nightly testing
Fix for: Do not keep the 2 threads in ConfigAdmin when they are not needed
Fix for: Errors while uninstalling kit Config Managed Service Demo
Fix for: config.ls output is not readable
Fix for: NPE when update existing configuration with -k parameter without <String[]>
Factory configuration bound to wrong bundle, when configobject is provided through a different bundle than the one, providing the metadata
Fix for: System.out logs left in connector
demo.log.service error log enhancement
Fix for: Messages duplication with log level trace
Fix for: Missing bundle log entries
removed support for event property mbs.eventadmin.synclistener.timeout. Only event property mbs.eventadmin.listener.timeout is supported.
Fix for: ClassCastException in EventAdminImpl
Fix for: Log message for hanged listener does not contain the event topic, for which the error occurred
Fix for: Wire Admin Test case fails at testWireReDispatcher on IBS14
Fix for: Missing WireAdminEvents on changes in WireAdmin
Fix for: Missing UserAdminEvents on changes in UserAdmin
Fix for: Errors on exporting project com.prosyst.mbs.osgi.monitorable-demo
Fix for: The OSGi R5 Compendium Bundles kitman script should not refer to the com.prosyst.mbs.osgi.connector.bundle bundle
Fix for: The Apache Aries Blueprint Implementation kitman script should be corrected
Rebranding and application of Bosch SI copyright headers in OSGi
Clean up the empty localization files
Metadata Annotations – Added support for special characters in AD.
Fix pluggable command descriptions for "ds" commands group
Fix for: DeviceManager commands fail to initialize unless installed after FrameworkEvent.STARTED event
All console commands rewritten to follow the new convention
Fix for: Typo in ua.create command
Fix for: Some metatype info is lost after saving/removing logging configuration.
Fix for: Missing ConfigurationPermission in log bundle.
slf4j 1.7.22 used instead of slf4j 1.6.1
Log bundles naming scheme applied - introduced split log.slf4j, log.core, log.jul and a log.bundle, which assembles all of the previous bundles
Fix for: Update of the osgi.log bundle leads to restart of the osgi.api bundle.
Fix for: prvagent configuration is updated three times during startup.
Fix for: The whole OS environment is put into the manifest of com.prosyst.mbs.osgi.prvagent.
Fix for: Benchmarking in metatype does not work
MetaTypeInformation.getPids() should ignore the broken XMLs
Fix for: MetaDataManagerImpl can't handle services registered with String[] as a value of Constants.SERVICE_PID property
Fix for: NullPointerException in MetaDataManagerImpl.timer. It happened very rarely.
Fix for: MetaDataManagerImpl will never start after metatype bundle restart.
Fix for: Irrelevant metatype info message.
Metatype annotation generated XML is readable.
Fix for: By default, metatype creates invalid configurations from the OSGi XML files
Fix for: Metatype parser fails to parse special symbols into attribute value.
Added mbs.metatype.mtp.emptyArray system property to control whether null or empty array is returned in org.osgi.service.metatype.MetaTypeInformationget methods.
Fix for: when db bundle is stopped and the framework is restarted NullPointerException is thrown in metatype.
Fix for: ConfigurationAdmin is not passing configuration to multiple registered ManagedServices, when mbs is started in default mode.
Added support in Configuration#update(props) to check, whether the props are different than the current ones.
AbstractSubscriptionHandler#getEvents(timeout) is not unblocked when the subscription is deleted.
Fix for: due to some optimization attempts, event handlers registered by "system" bundles (bundles installed from the boot.ini for example, but not only) can receive any event topic, no matter what the current policy is set to.
Fix for: in one instance, the old SecurityEvent#getPermission method is used instead of the new SecurityEvent#getPermissions method
Fix for: Event Admin should ignore EventHandler with wrong filter in service registration property. The old behaviour is kept, if mbs.events.handler.ignoreFilterError system property is true.
Cleanup the HttpUpgrade references.
Remove the required property "websocket.dev.on" for the new WebSockets implementation and make it enabled by default.
Fix for: PUT/DELETE when using CORS are not working.
Fix for: Wrong expiry time is used when an mbs.http.login.auto cookie is created
Fix for: The whole OS environment is put into the manifest of com.prosyst.mbs.osgi.http.core
TODO: Fix for: Cookie and Remember me problem.
TODO: http - session id – creation method
Fix for: Left over configurations from SCR test case after test case execution
Fix for: Slow service registration
Fix for: SCR is trying to process XMLs which are not components.
Fix for: ComponentReference.unbind(): component instance not bound!
Fix for: DmtListenerNotifier must use absolute URIs for the permission checks.
Fix for: DmtAclManagerProxy is not synchronized.
Fix for: DmtAclManagerProxy DB must clean up the parent node if the node is empty.
Fix for: DmtSession.isNodeUri can request info from the plug-in outside the plug-in subtree.
Fix for: Clean up Sprint client specific code from the deployment admin.
Fix for: Updating subsystem from the same location does not work properly, if one and the same bundle location is included in both versions.
Split the subsystem boot file processing logic from the Subsystem container bundle in subsystem.boot bundle.
Fix for: NullPointerException when starting osgi.sybsystem bundle when there is subsystem with missing Subsystem-Type header.
Fix for: If the subsystem manifest is not correct, the problem is not visible in the error message
Fix for: Application subsystem cannot access all services from the parent
Fix for: Application subsystems can export packages
Fix for: Failed subsystem update didn't restore the previous state
Fix for: Invalid error message when the resolver service is missing
Subsystem bundles naming scheme unified with the naming scheme of config/metatype/http bundles i.e. split bundles with separate functionality (subsystem.core, subsystem.boot, subsystem.signing)
and one subsystem.bundle which assembles the functionality of all split bundles.
Fix for: Subsystem implementation doesn't support bundles without symbolic names
Fix for: Synchronization issues in Connector Service
connector.bundle registers ConnectionFactory-s with negative service ranking. It allows other bundles to provide alternative ConnectorFactory implementation with defaultservice factory, which will take precedence over the ones from the connector bundle. Note, that ConnectorFactory from split connector bundles (i.e. connector.udp, connector.socket, ...)are registered with default service ranking.
Coordinator bundle refactoring
Util 1.1.1
New features
Added new JSON serialization API that provides more capabilities of mapping bean and map objects, compared to the original org.json package. This API was previously part of the JSON-RPC module under a different package name.
MappingUtil#serialize(Object) supports enum
New bundle, that allows the user to invoke Lua scripts from the framework commands.
New bundle, which allows bundles to monitor and handle efficiently the changes in the OS time.
The validation is done until all bundles and services are checked. So the list with collected errors is complete now.
Validator bundle MUST provide the option to ignore registered services on validation.
ls command supports filtering with partial names without -f option. The -f option is still supported for backward compatibility.
Improvements in SystemTime API
The System Time service sends an event through Event Admin if it detects an OS time change
Optimizations in kitman operations' process time
Added .html to the console commands export tool
Changes and bug fixes
Fix for: AccessControlException thrown on MappingUtil#serialize(Object) invocation
Fix for: MappingUtil#serialize(Object) doesn't work for big numbers
Introspector#getInstance() changed to Introspector#getDefaultInstance()
Fix for: lua load command fails with exception if no script arguments are passed
Fixed some problems in the Telnet bundle configurations. One of the results is that the bindingaddress configuration works correctly.
Fixed exception in the docs.save command, when the command help is not correctly formatted.
Fixed typo errors in the descriptions of most commands.
updated fs command group documentation
Fix for: Potential bad behaviour of fs.cwd command
Fix for: During validation, if a registered service has multiple values in its objclass, only one is used. Namely, the first one that matches the value of the 'class' attribute of the '<service>' element in the fwstate.xml.
Fix for: fw validator does not match bundle versions X.Y, where micro version is omitted
The validation is done until all bundles and services are checked. So the list with collected errors is complete now.
Fix for: Uninstalling kitman script Util causes an error
Improved processing of different path separators in kitman script file names
Fix for: The "Log Files" inventory does not save log files
Removed bundles with prefix name com.prosyst.mbs.util.nruntime
Fix for: com.prosyst.util.json.TypeUtil.isJavaBean must not be used when serializing objects to json
Fix for: DMT Web Console plug-in doesn't show the tree
Fix for: Errors while installing kit Automation Provider File in security mode
Fix for: Relative mbs.bundles.base paths outside osgi dir do not work in kitman on Windows
Fix for: The kitman uninstall operation can lead to system instabilities
Fix for: Kitman scripts are uninstalled in wrong order.
Fix for: UTF-8 .properties files are not processed correctly
Fix for: Errors while installing kit Util Bundles in security mode
Fix for: Restarting com.prosyst.mbs.osgi.useradmin causes re-creation of admin/admin
Rebranding and application of Bosch SI copyright headers in Util
Web 1.1.1000
Changes and bug fixes
Replaced the license loading.gif in Resource Manager Plugin with version, that is computer generated.
Added missing licenses for external code used by the Shell Plugin
Fixed incorrect bundle descriptions. Now they do not contain extra empty spaces.
Fixed the Benchmark plugin by making the benchmarks table sortable.
Fix for: After login the contents of jquery-ui.css is shown instead of the bundles list
Fix for: Uninstalling kitman script EnOcean Simulator causes an error
Fix for: Download log files does allow to download ANY file outside of the log directory.
Rebranding and application of Bosch SI copyright headers in Web Console
mBSA 3.4.1000
Known issues and limitations
Compiled binaries may not run on Windows 8/ Windows 10
Microsoft Visual C++ 2010 Redistributable Package (x86/x64) should be installed manually.
System Integrity Protection on Mac OS X disables mBSA plugins loading from JVM
System Integrity Protection has to be disabled in order to use mBSA on macOS/OS X since version 10.11 (OS X El Capitan).
Beaglebone
If you see an error "No such file or directory" when executing binaries (e.g. mbsae.core) probably the box has different ld-linux.so location. mBS binaries are linked against /lib/ld-linux-armhf.so.3. Consider using ln -s /lib/ld-linux.so.3 /lib/ld-linux-armhf.so.3
NRunner plugin
Deprecated and not built by default.
It supports only 32-bit JVMs, due to limitation in Java communication protocol and could cause a deadlock due to pipe synchronization concept.
NOTE: mBS will not have nruntime native support, it will use System.exec() for spawning.
mDNS 1.0.1
Initial public release of the package providing implementation of mDNS standard.
New features
Bosch Software Innovations mDNS API
Provides a common abstraction over the different platform and stack-specific implementations. Here are the main features:
Allows discovery and listing of mDNS nodes according mDNS Type and mDNS Service.
Provides event-based notifications via OSGi Event Admin when new type and/or service is added, resolved or removed from the mDNS network.
Provide means for exporting mDNS services with certain type and concrete mDNS TXT Record.
Bosch Software Innovations mDNS API implementation based on JmDNS
Implement Bosch Software Innovations mDNS API on top of JmDNS library.
mDNS pluggable commands
Provides the following functionality using Bosch Software Innovations mDNS API:
List of cached service instances
Detailed information for service instance according its service name and service type
Forces scan of the network for certain mDNS services with certain service type.
Forces resolving of service instance with certain service name and service type.
Subscription for fully qualified service types, e.g. _http._tcp.local. The events must be printed in the console. In addition the unsubscribe must be implemented too.
Modbus 1.0.0
Initial public release of the package providing implementation of Modbus protocol.
New features
Modbus Device Manager
Handles the higher level of abstraction and combines Modbus low level device implementation with a set of data-points to give semantics and human readable interpretation of the devices and the data coming from them. Provides devices persistency and bridge between the Modbus module and the rest of the system.
Modbus primitives implementation
Implements all of the Modbus functions including the ones that are serial line specific. Takes care to build the pure Modbus request PDU(Protocol Data Unit) from the user input and converts back the raw Modbus response PDU.
Modbus TCP/IP
The TCP/IP transport implementation. Takes the Modbus request and wraps it in Modbus TCP/IP specific Modbus ADU(Application Data Unit). Sends the Modbus message and returns the result Modbus PDU where applicable.
Modbus Serial
Takes the Modbus request and wraps it in Modbus Serial specific Modbus ADU. Sends the Modbus message and returns the result Modbus PDU where applicable.
Modbus simulator
Basic slave device implementation with additional control and useful functionality that can be used during testing and module verification. Provides flexible configuration and automation ability.
mToolkit 3.7.1000
Changes and bug fixes
Fixed test method source discovery problem in JUnit view.
Fixed NPE in DebugUIPlugin.launchInBackground().
Fixed "The connecton has been closed!" problem after "Test on".
Fixed Deadlock in PMP server thread (PMPOutputStream).
Fixed problem with messing scripts in generated images when there are multiple board extensions in the SDK.
Fixed problem with Image Run button.
Fixed problem when building images and "Base-Directory:= .".
Fixed incorrect menu group for OSGi in the "New wizard".
Fixed problem with adding certificates generated with Java 9.
Changed the way of headless mode detection.
Optimized code for Java 6.
Known issues and limitations
On Eclipse 4.4 there is known problem which causes NPE during plugin export in some cases. This problem is fixed in Eclipse 4.4 SR1.
Execution of TEE project files is NOT supported from Eclipse.
Sometimes target platforms get messed when changing runtime location and switching to Target Platform page in preferences due to bug in Eclipse.
There is a known problem with Eclipse Oxygen (4.7) and Eclipse Photon (4.8M5) when Java 9 is used. It causes exporting of OSGi bundles to fail. Note: Java 9 is not supported in Eclipse Neon (4.6).
Eclipse JDT advanced source lookup support functionality doesn't work with Skelmir and some versions of Perc. It can be disabled from preferences Debug -> Advanced source lookup support (JRE 1.5 or higher).
Network Manager 2.0.2000
Changes and bug fixes
Fixed description for "network"pluggable command.
OMA 1.4.2000
Changes and bug fixes
Removed some ProSyst data model extensions.
./DevInfo/Ext nodes are populated recursively in Client Init alert.
Event topic can be string or string array.
Peripherals 2.0.2000
New features
Added support mDNS discovery.
Added observer for auto discovery of mDNS devices.
Added observer for auto discovery of OnVIF cameras.
Added option to hide Not Associated peripherals from the peripherals list.
Added descriptors for Bitron AV2010-10, Bluetooth CC2540, Raspberry 3 Bluetooth.
Added metadata for configurations storing of disabled and manual peripherals.
Created logic for resetting/deleting configurations on unclean restart.
Changes and bug fixes
Modify the peripherals module so that cameras with prefix DCS_942L are detected automatically.
Removed observer.usb.mac.
Fixed MAC address detection.
Fixed wget command used to populate arp table saved html files in current directory.
Fixed race condition with peripheral.installer.noagent and delayed driver start.
Fixed Telegesis stick goes offline with error if peripheral is installed before Zigbee.
Fixed several missing local permission/doPriviliged.
Fixed NPE when stopping peripheral.descriptors.
Fixed deadlock in addDescriptor.
Fixed errors while uninstalling Peripheral Associate Demo.
Fixed descriptions for "per", "upnpobs", "drvsch" pluggable commands.
Policy Admin 1.2.1
New features
New package com.prosyst.mbs.services.policy.eventadmin.remote added in com.prosyst.mbs.policyadmin.api; The abstract PolicySubscriptionManager class is used in the REST and JSON-RPC modules to implement subscription managers that can use the PolicyAdmin service to check the permissions of the remote user
com.prosyst.mbs.policyadmin.identity.useradmin: added support for auto-syncing UserAdmin and PolicyAdmin; new system property mbs.policy.users.synch, default value is false (no auto sync)
New testcase added in com.prosyst.mbs.policyadmin.core-tc - for testing the loading (and persistence) of policy files from bundles
Changes and bug fixes
Optimization: policyadmin.core now uses a custom DB (and imports the com.prosyst.mbs.services.db package) with name "permissionloader" to store the policy
Cleanup localization files for the following components: demos/identity.plain, modules/api, modules/commands, modules/identity.mprmapp, modules/identity.subsystem, modules/identity.useradmin
Fix for: Cannot open web console plugins, that use the fim library
Extend the default policy by configuring "java.security.AllPermission" for identity "user.anyone"
Fix for: Null pointer exception when starting bundle com.prosyst.mbs.policyadmin.core
REST 2.0.1
New features
Integrated swagger-jaxrs-doclet-1.1.0 for generating swagger 1.2 complaint JSON resource listings from the source code of JAX-RS resources and entities.
Added restdocx maven profile to enable generation of REST API documentation, the profile invokes the integrated swagger doclet and packs the REST documentation artifacts as bundle resources, bundles that contain REST documentation artifacts are marked with X-ProSyst-Restdoc-Included manifest header.
Integrated swagger-ui-2.1.1 for visualizing and browsing the available REST APIs documentation and manually sending requests towards the underlying REST web services.
Added navigation panel in swagger UI which hierarchically organizes links to the available REST APIs documentation, the hierarchy of the links is based on the root REST API paths specified in the resource listings.
Added options for configuring username and password for basic authentication in swagger UI:
added separate text fields for user and password
replaced Explore button with a button to generate and add Authorization HTTP header using basic authentication
Added mechanism for dynamic discovery and loading of REST API documentation via OSGi services. The mechanism is based on the white board pattern, bundles that wish to dynamically generate and provide REST API documentation may do so by registering a DocGeneratorService which provides REST API documentation artifacts in form of JSON objects based on the swagger 1.2 specification. Added DocGeneratorBuilder utility which eases generation of JSON objects that conform to the swagger 1.2 specification.
Added bundle com.prosyst.mbs.webservices.rest.client.wink which provides REST client add-on based on Wink 1.4 Client API.
Added bundle com.prosyst.mbs.webservices.rest.client.jetty which provides web socket client add-on based on Jetty 9.3 Web Socket Client API.
Added utilities for appending appropriate Content-Range and Accept-Ranges headers in responses.
Jersey 2.x integrated to support JAX-RS 2.0 complained RESTful web services
GSON Provider is integrated
Integrated JAX-RS containers, providers and REST web services are compatible with the JavaSE Embedded 8 compact profiles
Changes and bug fixes
Fixed Bundle-Description manifest headers for all bundles in the Web Services REST module.
Modified swagger UI header and improved REST API calls list view:
integrated the logo in the header, as in Web Console
removed the path field from the header
fixed the alignment of the REST API calls descriptions in the list view
Fixed ProvidersAccessor utility to check the supported types (if available in the provider's class generic type information) and mime types manifested by the tracked providers prior to invoking MessageBodyWriter#isWritable and MessageBodyReader#isReadable methods.
Fixed parsing of Range HTTP header.
Fixed parsing of representation constraints defined via X-Representation-** HTTP headers.
Added caching support in the swagger UI servlet in order to improve the responsiveness of the web interface and reduce the load on the gateway
Applied the recommended pattern for handling resource caching and pagination in Book Store Demo REST web service.
Applied the recommended pattern for handling resource updates in Book Store Demo REST web service.
Increased the number of books that visualized in the Book Store Demo web GUI.
Updated remote events demo to use knockout-3.3.0 and jquery-1.11.2.
RESTful web service API bundle requires JavaSE-1.5 or JavaSE/compact1 execution environment if not retro-translated.
Apache Wink JAX-RS container bundle requires JavaSE-1.5 execution environment if not retro-translated.
Jackson JAX-RS provider bundle requires JavaSE-1.6 execution environment if not retro-translated.
Jetty web socket client bundle requires JavaSE-1.7 execution environment if not retro-translated.
Support for remote events via long polling based on the new Remote Events abstraction from OSGi API.
Support for remote events via web sockets based on the new Events WebSocket Application.
Apache Wink JAX-RS REST container dropped.
Generated REST API documentation improved.
RMT 1.3.0
New features
Added support for TR-069 Upload method.
Added trace events for STUN messages.
Added 'DeviceInfo.ProvisioningCode' parameter.
Added backup provider for DM Session PersistenceManager.
Added a demo for TR-069 specific plug-in.
Changes and bug fixes
Removed some ProSyst data model extensions.
Added info about the current session to pluggable commands.
Order of parameters in forced inform message is now preserved as configured.
Fixed NumberOfEnries event handling because of improper name escaping.
Fixed four TR-069 session events are sent when ACS connection fail.
Fixed IllegalArgumentException: Unknown structure 'TransferCompleteResponse' for namespace with URI 'urn:dslforum-org:cwmp-1-2'.
Fixed NPE in DUProviderBundleImpl.event.
Fixed errors while uninstalling RMT kitman script.
Scripting 1.0.2
Initial public release of the package providing implementation of the Scripting module.
New features
Support for usage of JSR-223 compatible Script Engines in OSGi environment.
Unified access to Scripting Engines deployed as OSGi bundles or libraries in Java class-path.
Easy access from scripts to OSGi registry and Functional Item Management.
Added information on permissions required by com.prosyst.mbs.services.scripting.bindings interfaces methods.
When evaluating scripts, owning bundle AccessControlContext is now used. Previously the AccessControlContext of the thread that instantiated the OSGiScriptEngine was used.
Fixed the standard and error output writers for scripts evaluated with scripting.eval command - the pluggable command output is now used for both.
Clarified in com.prosyst.mbs.services.scripting.OSGiScriptEngineManager what are the restrictions on bundles that can be used for creating OSGiScriptEngine instances.
Added in com.prosyst.mbs.services.scripting.FIMAccess methods for getting/setting property and invoking operations on Functional Items. Added fields for accessing com.prosyst.mbs.services.fim.util.FunctionalItemHelper and com.prosyst.mbs.services.fim.util.FunctionalItemInvoker.
Demos and demo scripts are now distributed under Apache license.
Serial and Parallel 3.1.1
New features
Added millisecond timestamps to "gnu.io.raw" logs.
Optimized framework stop (System.gc not called when System bundle is STOPPING).
Implemented customizable timeout for hardcoded sleep after dataAvailable() event.
Added error logs in RXTXCommDriver static initializer to help troubleshoot problems with JNI loading.
Changes and bug fixes
Reduced default sleep after reporting dataAvailable() event from 20ms to 5ms. (reduces read latency).
Fixed possible problem in check_cgi_count(), causing excessive cpu load when reporting multiple serial errors to Java.
Java callback is called only after check if it was actually subscribed for error events.
Fixed an error in "gnu.io.raw" logs, not dumping whole array if offset > length.
Fixed NPE in CommPortIdentifier.open(), when comm fragment is missing. Real exception is returned instead.
SHIP 2.2.0
Initial public release of the package providing implementation of SHIP protocol
New features
SHIP Key Management
Integration with Key Manager from mBS Core module.
Upon initial start, SHIP private key and certificate are automatically generated, if these are not available from the Key Manager service.
Key Manager has the responsibility to implement backup/restore procedures for SHIP keys, SHIP key store bundle just uses the KeyAdmin API.
SHIP TLS Server Socket Factory
Provides javax.net.SSLSocketFactory implementing SHIP-specific requirements and registers it as an OSGi service to be used by the WebSockets module.
Provides a configuration for staring a standalone SHIP WebSockets server by the WebSockets module.
SHIP Server
Implemented as a WebSocket application on top of WebSockets module.
After the SHIP connection is established, it uses the same SHIP Connection API as for client connections.
SHIP Client
Implemented as a WebSocket client from scratch.
Registers SHIPClientConnectionFactory service, used by the SHIP protocol driver core bundle.
After the SHIP connection is established, it uses the same SHIP Connection API as for server connections.
SHIP Discovery
Implemented using mDNS Admin service.
Translates mDNS added/updated/removed events for SHIP services to internal SHIP discovery events used by the SHIP protocol driver core bundle.
SHIP Exporter
Implemented using mDNS Admin service.
Allows mDNS registration of the OSGi framework SHIP node with its TXT record and properties.
SHIP Protocol Driver
Integrates all the above low-level functionalities and represents the OSGi framework as a SHIP node.
Allows listing, pairing and unpairing to other (external) SHIP nodes.
Applications that want to use SHIP protocol driver should go through this services, not bother with the other low-level SHIP services.
SHIP console commands
Console commands for the SHIP protocol driver.
SHIP HDM Adapter
Implementation of SHIP HDM adapter that represents SHIP nodes as HomeDevices.
Only HDM DCO implementations, no DA device items. However, protocol-specific device class interfaces are deprecated, to be replaced by device item interfaces for future releases.
Each known SHIP node is mapped to a HomeDevice instance. Data from the mDNS TXT record of the SHIP node is provided as HomeDevice properties.
SHIP HomeDevice instance can have one of the following statuses:
HomeDevice.STATUS_NOT_CONFIGURED - means that the device is discovered by the SHIP discovery mechanism, but it is not paired/registered to the OSGi framework's SHIP node.
HomeDevice.ONLINE - means that the device is paired and it is known to be available in the network. Online does not necessary mean that there is an established connection between to the device. There MAY be such a connection or the device is just discovered by the SHIP discovery (mDNS) and a connection can be established when really needed. The normal case will be that the connection is kept open.
HomeDevice.NOT_INITIALIZED (optional, activated by a system property, disabled by default) - means the device is paired, its mDNS record is available but there is no SHIP connection to it at the moment.
HomeDevice.OFFLINE - means that the device is paired but there isn't an established connection at the moment and the device is not discoverable by SHIP discovery (mDNS). This can happen if an ONLINE device is powered off.
Each external SHIP node has a PairingControl device class object that is used to pair/unpair the SHIP node.
SHIP protocol driver (the local SHIP node, OSGi framework as SHIP node) may also be represented as HDM HomeDevice instance. This is a configurable option, by default it is not enabled.
If enabled, the HDM HomeDevice representation of the SHIP protocol driver has a NetworkControllerExt device class object. Setting it to pairing mode means switching SHIP protocol driver to auto-accept mode; execution of the NetworkControllerExt'sreset operation is equivalent to resetting the SHIP protocol driver.
Software Admin 1.2.3000
Changes and bug fixes
Cleanup from empty localization files
Fixed bugs in test cases, found during nightly testing
SPINE 2.3.0
Initial public release of the package providing implementation of SPINE protocol
New features
SPINE Datatypes
Support for all datatypes defined in EEBus SPINE specification, v1.1.0beta1. This is not an official release, there may be changes when version is officially released!
As soon as the EEBus SPINE specification is backward compatible, we may say that we do support also the official EEBus SPINE Specification 1.0.0.
SPINE Protocol Driver
Implemented over SHIP module as transport protocol.
Implemented serialization and deserialization of the SPINE datatypes to JSON payload for the underlying SHIP transport, using the external Jackson library (v2.8.9, available as part of Externals module).
Allows listing, sending to and receiving datagrams from the SPINE devices. These include external (physical) SPINE devices as well as virtual SPINE devices (see SPINE Device Exporter).
Each SPINE device is presented with its tree structure - device-entity-feature-functions.
Handles correctly dynamic changes in the Device-Entities-Features structure of the remote devices. When such NOTIFY datagrams are received by the protocol driver, it posts the corresponding OSGi events for updated devices and SPINE HDM Adapter triggers reinitialization of the updated devices.
SPINE Device Exporter
Implemented EEBus SPINE device exporter that allows easy extension of the local SPINE device (OSGi framework as SPINE device) with new entities, features and functions as well as virtual SPINE devices registered as OSGi services.
Support for Destination List function on the local SPINE device. All virtual SPINE devices are visible to the external devices in the SPINE network through this functionality.
Support for bindings and subscriptions to the features on the local SPINE device as well as the virtual SPINE devices, bindings and subscriptions are persisted upon OSGi framework restarts.
Implemented DeviceClassification and DeviceDiagnosis features on the local SPINE device as separate bundles, these implementations are based on the defined EEBus SPINE device exporter.
SPINE Device Exporter is fully dynamic as it uses the OSGi service registry. Any runtime changes are propogated to the subscribed parties by sending the correct NOTIFY datagrams for the modification.
SPINE console commands
Console commands for the SPINE protocol driver.
SPINE HDM Adapter and DCO Providers
Core implementation of SPINE HDM adapter, without any DCO/DA implementations.
Provides a mechanism to register DCO/DA providers.
Only HDM DCO implementations at the moment, no DA device items. However, protocol-specific device class interfaces are deprecated, to be replaced by device item interfaces for future releases.
Defined protocol-specific HDM Device Class API for a subset of the EEBus SPINE standard class features and functions. These are mainly the feature and functions involved in the EEBus E-Mobility uses cases - DeviceDiagnosis, DeviceConfiguration, DeviceIdentification, Measurements, LoadControlLimits, ElectricalConnections, TimeSeries, IncentiveTable, Bill.
Defined protocol-specific HDM Device Class API for the EEBus SPINE SmartEnergyManagementPs feature and functions. These are defined as an extension to the standard HDM WhiteGoods Device Class API.
Implemented the protocol-specific HDM Device Class API for the EEBus SPINE standard class features and functions as a separate DCO provider bundle for the HDM SPINE Adapter.
Implemented the protocol-specific HDM Device Class API for the the EEBus SPINE SmartEnergyManagementPs feature and functions as a separate DCO provider bundle for the HDM SPINE Adapter.
SPINE Demos
Added two demos as a developer guide for the EEBus SPINE device exporter.
The virtual device demo is a simple one, that provides just two features - a demo DeviceClassification feature with static manufacturer data and a demo DeviceDiagnosis feature that can send notifications to subscribed parties when it is needed.
The charging station demo is a complex one. It models a virtual charging station with the features and functions recommended by EEBus for e-mobility use cases. The demo includes console commands to simulate attaching/detaching of electrical vehicles to the charging station.
TEE 2.0.2000
New features
Added support for specifying thread stack size.
Added option to skip TEE test execution based on the framework execution environment.
Changes and bug fixes
Changed the behavior to apply ConfigurationAdmin configurations before bundle start.
Fixed RuntimeException in tearDown which overrides exception thrown from test method for Assertion TFW.
Fixed class loading issue.
Fixed TC signature for the JUnit View.
Units 1.2.0
New features
Added Seismic Scale, Colors and Non-SI systems.
Add custom UI support for units of measurement beans.
Added add and subtract methods for easier modification of Quantity values.
Changes and bug fixes
Added null creation properties checks in Units and Quantity type factories.
Fixed NPE in UnitUtil.createQuantity(Number, Unit<Q>).
WebSockets 1.1.1
Initial public release of the package providing implementation of the WebSockets standard.
New features
Added a full featured WebSockets Server which follows the WebSockets RFC
Added a public API for WebSocket applications in the WebSockets Server which will be used by the future WebSockets Server applications in order to implement their own requirements.
Added a standalone simulation of an HTTP server in the WebSockets Server for handling WebSockets client requests for which the HTTP Server is not a suitable option, implemented using the synchronous java.io API.
Added additional information for the client to the WebSocketApplication by adding the SSLSocket to the HTTPS headers.
Added a set of console commands:
a console commands for information about currently active WebSocket standalone http servers
a console commands for information about currently registered WebSocket applications
a console commands for information about currently active WebSocket client connections
a console commands for information about recently closed WebSocket client connections
Added a WebSockets Chat Demo which includes:
a Chat WebSocket application
a Web based client UI
a standalone Swing client
Added an option to restart a Secure Standalone HTTP Server if the SSLServerSocketFactory service, which it uses, gets unregistered. When a service is modified or removed then the Standalone Server Configuration is be checked to see what action must performed and if the Restart Secure Standalone Server is set to true then the server will be stopped and will attempt to restart. If an SSLServerSocketFactory service with the same filter then the server will restart. If not, the server will be unavailable
Additionally an option has been added to stop connected websockets to the Secure Standalone HTTP Server so that if the "Restart Secure Standalone Server" property is set to true and the "Stop connected websockets only for Secure Server" is set to true then all opened websocket connections will be closed
Added a WebSocketApplication Scope configuration with which the only way to connect to the WebSocketApplication is through a Standalone HTTP server with the same scope
Added an Events WebSockets Application to replace the old webSocket support, which wass used by the REST and JSON-RPC modules for handling remote events via webSockets
Added support for the legacy webSocket remote events which were used by the REST and JSON-RPC modules
Added a new remote events subProtocol which now supports multiple subscriptions and subscription cancelling through text messaging
Made the mBS WebSockets Server the default webSocket protocol upgrade to the mBS HTTP Server and removed the old webSocket support
Kitman Scripts updated to reflect the new DA semantics and demos.
Changes in OSGi Configurations
New OSGi Configurations
Configuration
PID
ZWave Custom DC Compatibility Managed Log Configuration
mbs.zwave.dc.compat.custom.managed.log
ZWave Custom DI Managed Log Configuration
mbs.zwave.di.custom.managed.log
ZWave DC Compatibility Managed Log Configuration
mbs.zwave.dc.compat.managed.log
ZWave DI Managed Log Configuration
mbs.zwave.di.managed.log
Z-Wave Protocol related changes
Remove the support for Series 300 controllers
Dropped disabling of the Z-Wave security - both the system property mbs.zwave.security.disable and the SecureInclusionListener service are no longer supported.
DA Support
New com.prosyst.mbs.zwave.da.items.api bundle - contains the new Z-Wave specific DA interfaces
New DA provider bundles - com.prosyst.mbs.zwave.da.items.provider, com.prosyst.mbs.zwave.da.items.provider.custom, com.prosyst.mbs.zwave.da.items.provider.system
DA Adapter
A device instance will not be initialized if the full device information needed is not available. The device instance will be registered only with a Basic DC/item.
New bundle com.prosyst.mbs.zwave.da.hdm.adapter.api. New adapter API defined
Added support for HDM device REMOVING state
Implemented Detector item and custom device configuration for the Aeotec Doorbell Gen 5 device.
Implemented KeyInput item and custom device configuration for the WallMote Quad device.
Implemented Switch item and custom support for the IR AC Z-Wave extender.
Implemented custom KeyInput support over the Scene Activation CC for the FIBARO Swipe
Added custom device configuration for Aeotec Home energy Meter Gen5 ZW095-C
DA HDM support
New bundle com.prosyst.mbs.zwave.da.items.provider.system - contains the system DCO implementations: Z-Wave Controller, Z-Wave Basic Command Class wrapper, and Z-Wave custom wake-up handling (that used to be part of the HDM adapter bundle).
Added support in ZWaveMeter DCO for reading water and gas scales.
Added support for Meter DC to expose the Meter CC functionalities from version 3
Added support for BinarySwitch.toggle()
New Z-Wave specific ZWaveNetworkController DC added.
Utils
Added a new com.prosyst.mbs.zwave.util bundle to hold all Z-Wave internally used utility methods and classes.
Commands
New "commandclasses" pluggable command
Demos
New demo - com.prosyst.mbs.zwave.da.items.provider-demo - Demonstrates how to use the new HDM Adapter API to build custom DA providers
New demo - com.prosyst.mbs.zwave.device.management.events-demo - Tracks the inclusion and removal progress events when a device is being included to or excluded from the Z-Wave network.
New demo - com.prosyst.mbs.zwave.messages.queuing-demo - Demonstrates the communication with sleeping devices.
Changes and bug fixes
Dropped disabling of the Z-Wave security - both the system property mbs.zwave.security.disable and the SecureInclusionListener service are no longer supported.
Added support for the standard NetworkControllerExt mode constants.
Replace the Z-Wave specific FirmwareUpdate DC with the standard one.
All Z-Wave-specific DCs are deprecated.
Dropped disabling of the Z-Wave security - both the system property mbs.zwave.security.disable and the SecureInclusionListener service are no longer supported.
Improved identification of device to include triad <ZWLibType, ZWProtVer, AppVer> during configuration.
Z-Wave event property mbs.eventadmin.synclistener.timeout replaced with mbs.eventadmin.listener.timeout.
Added a Z-Wave Adapter configuration property to enable removing of a device from HDM after a Device Reset Locally Notification has been received - remove.after.reset.device.locally. If set to true - the device will be removed from HDM. Else - it will be kept as an offline HomeDevice instance with an error Device Reset Locally.
Remove the support for Series 300 controllers
Fixed unnecessary sending Wake Up No More Information during OTA update
Fixed The GW ignores 'Version Command Class Report' that come out of order
Firmware listener registered in init. Removed DC dispose second time after unregister the listener
Fixed Network Maintenance procedure
Make ZWaveDeviceConfigurator respect min and max values for WakeUp CC
Learn mode modified according to Sigma recommended scheme.
ZWaveMessage.TXOption.TX_OPTION_EXPLORE always set when sending/posting a message.
Use Multi Channel Association instead of Association for the lifeline when present.
Revised DeviceResetLocally policy according to latest specs.
Fixed missing VersionInfo cache when VersionCC is exposed via a device channel different than 0.
The Multi Channel Association management made compliant with the specification - check for the CC in the root channel first and if the CC is not exposed there - check the specific channel.
Fixed getting controller info while in adding or removing mode
Fixed secure inclusion status set on the device if secure inclusion has not been initiated.
Fixed infinite loop if a device sends Security Nonce Get without sending an encrypted message.
Fixed AlarmInfo String representation.
Fixed sending ZWavePlus Info message in CRC16 type returns answer in normal type
Disabled learn mode if there are devices in the network and we are the primary controller or we have the SIS/SUC role.
Fixed support for multiple controllers.
com.prosyst.mbs.zwave.demos.simple-demo renamed to com.prosyst.mbs.zwave.driver.usage-demo - Demonstrates the usage of the Z-Wave driver API for communicating with devices.
Scripts updated to reflect the new DA semantics
Zigbee 4.4.0
New features
Added support for Device Items.
Improved support for Basic, Identify and OTA Upgrade server clusters.
Changes to the API provided by the com.prosyst.mbs.services.zigbee.zcl.llprofile package:
Removed interface BasicExtension
Removed interface ColorControlExtension
Removed interface IdentifyExtension
Removed interface OnOffExtension
Removed interface ScenesExtension
Changes to the API provided by the com.prosyst.mbs.services.zigbee.simulator package:
Changed method ClusterConfiguration.addAttribute(String,int,Object,ReportingSettingsConfiguration) to ClusterConfiguration.addAttribute(String,int,Object,boolean,ReportingSettingsConfiguration).