Elve - version 0.25 beta


Active Member
Elve v0.25 is now available for download at http://codecoretechnologies.com with free time-limited licenses during the public beta period.

Previous Elve beta versions EXPIRE TODAY so be sure to upgrade soon to extend your beta license.

In review of the system before our v1.0 release candidate we decided it was necessary to make improvements in some areas which would result in breaking backwards compatibility with the device drivers and some device driver methods and properties. We try to avoid these kinds of changes even during the beta development cycle unless the changes provide a significant improvement. Thank you for your cooperation. Please review the breaking changes below highlighted in red.

Changed TCP/UDP Port Range
* Changed the port range from 12990-12997 to 33900-33907. Although the original ports are not claimed by Avast, we found that some Avast installations use some of these ports so to avoid a conflict we are forced to change the port #'s. This is a breaking change if you have manually configured your network (such as a firewall) for the prior ports. You will also need to adjust the current ports in your Elve Mobile application, and your Windows firewall settings.

New Device Support
* Added Rain8net driver (needs testing)

Device Enhancements
* Elk M1: Added custom value names, counter names, and counter support.
* All Lighting Drivers: Added ''Set Light Level For Duration'' and ''Turn On Light For Duration''.
* Aprilaire: Now supports displaying text messages on the thermostat, button press events (needs more testing), and differential temperature settings.
* Russound: Added tuner power command.
* Nuvo grand concerto: Added paging support.
* All Drivers: Added SetPropertyForDurationAsync method. Because this is an advanced feature it is only available via the scripting language and not as an action in the action list.
* HAI Driver: Added TurnOnOutputForDuration method.
* The file and database log drivers now support disabling logging at timed intervals.
* Breaking Change: We have extended the use of Time Span by changing many driver actions which used to use a seconds or milliseconds parameter. Any action list or script that used these actions/methods needs to be updated. The use of the Time Span parameter provides a better solution and the following driver actions were affected:
** Elk M1 TurnOnOutput action/method which accepted a duration has been renamed to TurnOnOutputForDuration for consistency.
** Changed the Timer's StartTimer method to use Seconds instead of milliseconds.
** Changed the Elk M1's SetKeypadText method which accepts a # of seconds to SetKeypadTextForDuration which now accepts a TimeSpan object.
** Removed the StartTimer method from the Timers driver which accepted a number of seconds. This is a breaking change. Any action list or script that used this action/method needs to be updated.
** The Time and Duration properties on all media player drivers have been changed from a numeric seconds value to a TimeSpan.
** The Nuvo Grand Concerto and Nuvo MPS4 driver's DisplaySourceTrackStatus method has been changed to accept the TimeSpan datatype instead of numeric seconds.

* Fixed: The IR library would inadvertently allow duplicate make/models and duplicate code/format/direction entries which would cause an error.
* Fixed: The Extron driver's tie commands were not working.
* Fixed: When learning USB-UIRT codes for receiving the infrared command format was incorrectly set to "Pronto".
* Fixed: Swapping device settings could cause Save button to stay disabled in Elve Management Studio.
* Fixed: The Elve Management Studio Properties grid was not updated automatically when an array property changed (although the array element grid was updated).
* Fixed: Editing an Inner Touch Screen's initial touch screen setting in Touch Screen build would not be remembered.
* Fixed: After updating the IR Library, IR Blaster and Receiver devices can now be restarted automatically so that the changes are recognized by the devices.

* Added Test button to the action list editor window.
* Added a new Advanced tab to Image Browser control.
* Added Driver Pack support.
* Added complier.config configuration file for use when compiling uncompiled drivers.
* Changed the location of where 3rd party drivers should be saved. This is a breaking change. If you use this feature please move the driver files.
* Added new Image data type to scripting language.
* Changed media library drivers GetMediaImage method and media player drivers CoverArt to return an Image instead of ByteArray.
* Added basic support for device property images in touch screen image controls. deviceimage://device/property/index
* Added background image opacity and size mode to the touch screen background.
* Added background image opacity and size mode to touch screen controls with support background images.
* Added Touch Screen Chooser button to the user account details window to select the user's default touch screen.

Driver API
* The SharedLibrary.dll reference has changed to CodecoreTechnologies.Elve.dll. This is a breaking change for driver developers.
* The SharedLibrary namespace has changed to CodecoreTechnologies.Elve.DriverFramework. This is a breaking change for driver developers.
* StartDriver() now returns a boolean indicating if the driver is ready for use. This is a breaking change for driver developers.
* Added IsReady property to manage the driver's Ready state (ready for use).
* Added Driver.GetLogger() method to SDK which returns an ILogger instance.
* Added GetDevicePropertyValue, SetDevicePropertyValue, ToggleBooleanDevicePropertyValue, OffsetNumericDevicePropertyValue, and RunScript which allow accessing other drivers.
* Added SetPropertyAfterDelayAsync and InvokeMethodAfterDelayAsync methods which allow setting a property or invoking a method in the current driver after a period of time (without blocking the thread). And it provides a key so that a previous call's timer can be reset.
* Replaced BaseCommunication.LoggerVerbosity to BaseCommunication.Logger which should be set to the current driver's this.GetLogger(). This is a breaking change for driver developers.
* Added a UdpCommunication class.
* Added a UsbHidCommunication class.
* Changed the TcpCommunication class to be socket based instead of TcpClient based which has shown a 25% performance boost in some drivers.
* Removed old obsolete communication classes and members.
* The StartConnectionMonitoring method on all the communication classes is now an asynchronous/non-blocking call. It previously blocked while making the 1st connection. All serial drivers have been updated for this change. If you need to catch a connection failure you can use Open() or you can use the ConnectionAttemptFailed event. This also means that the Connected property can not be checked immediately after StartConnectionMonitoring() is called. This is a breaking change for driver developers.

Thanks you everyone for your continued support and feedback.
Version 0.25.1 has been released and fixes a major memory leak and other issues in v0.25.

Fixed: The communication classes were causing the applications and services to continuously eat memory (memory leak).
Fixed: The log was logging the entire incoming communication buffer instead of just the received data.
Fixed: The iTunes driver methods such as Play() would throw a non-user friendly remoting exception if not connected to the Desktop Server application.
Fixed: The j9Scripting language would error when parsing a numeric value with a decimal separator when the OS regional settings were set to use a character other than a period as the decimal separator.
Fixed: The Squeezebox driver would error when parsing a numeric value with a decimal separator when the OS regional settings were set to use a character other than a period as the decimal separator.
Fixed: The ACT TI103 driver would sometimes send a corrupt message to the TI103 module. (when the message checksum was less then 17).

The Insteon driver now supports USB and Serial. (testers wanted)
Added information to the log when no 3rd party drivers are loaded.
Increased the maximum log size from 250KB to 1MB.
The installer now detects Apache web server if it is installed in the default path (to avoid port 80).
The installer now detects if port 80 is currently in use.
Elve Management Studio now remembers windows position and sizes between sessions.
Version 0.25.2 has been released with a variety of fixes and improvements.

* The driver interfaces were not being recognized when drivers were scanned.
* The ACT TI103 driver's Set Light Level by house code and unit code was sending the command to the wrong device.
* The ZWave driver's custom exceptions were not very readable.
* The ZWave driver would incorrectly report that it was ready for use as soon as the device properties were read.

* Added ParentTouchScreen and TopTouchScreen properties to all touch screen control objects.
* Added a new TopTouchScreen variable/keyword which can be used in the script to reference the top level main touch screen.

* Added Received X10 Command event to ACT TI103 driver.
* Added more logging when scanning for drivers.
* Added support for displaying event whenever filters in a specific order.
* Added preliminary support for context ID binding in touch screen controls.
* Minor performance improvements in communication layers.

Driver API:
* Replaced Driver.GetLogger() method with Driver.Logger property which provides better logging capabilities. This is a breaking change for driver developers.
* Marked Driver.Log(...) as Obsolete, please use the new Logger property.
Version 0.25.3 is now available for download and extends the beta period from the prior release.

The prior version's (0.25.2) beta license expires today so be sure to upgrade soon to avoid any down time.

Device Enhancements
o The ACT TI103 driver's SetLightLevel action now supports direct dim command (extended x10), preset dim, and standard dimming.
o The ACT TI103 driver now uses a range of 0-100 for light levels.

o Improved communication performance layer even more.
o Improved error logging in the XML Communication Protocol.

Scripting API
o ScriptContact is now fully serializable.
o ScriptObject members which are decorated with the Obsolete attribute are no longer shown in the user interfaces.

o Added more logging options to device developer API.
o Added MaximumLogSize setting to configuration to allow for a larger/smaller log.
o Added full support for context ID binding in touch screen controls. (name binding will come later)
o Added scroll bars to log viewer details.

o Fixed: The clientconfig.exe command line application did not recognize /? as a command line argument.
o Fixed: The memory used by a device was not freed when a driver was stopped or restarted.
o Fixed: The memory used by scripting objects in a script and passed to other app domains was not freed.
o Fixed: The XML Communication Protocol would incorrectly serialize numbers using the local locale.
o Fixed: Device property change notifications were not properly xml encoded.
o Fixed: The HAI driver would throw an error when an extended unit message was received if the status value was larger than 199.
o Potentially fixed an issue which caused the "Connecting to Master Service" window to endlessly attempt to connect.

Thanks again for all the great feedback.
Version 0.25.4 is now available for download.

We have fixed some major issues in the Installer as well as other reported issues.

* Fixed: Denon driver was erroring when viewing it's properties in EMS.
* Fixed: The Infrared Library Manager would error of the Add/Learn button was pressed before the IR device was saved.
* Fixed: The Global Cache driver was not properly detecting all sensor ports.
* Fixed: The Infrared Library Manager Test feature did not support Send Count and Delay.
* Improved memory cleanup in Image and Music filesystem library drivers.
* Fixed: Some objects were not being disposed.
* Fixed: The installer was not waiting for a service to stop before attempting to delete it or files it had open causing upgrades to fail sometimes.
* Fixed: The installer now auto-uninstalls after a failed installation.
Version 0.25.5 is now available for download as a quick same day update to 0.25.4.

* Fixed: A cross-threading UI error could occur when the action list editor added items to the Add Action menu.
* Fixed: The Action List Member's Custom Value tab was validating the entered text even when clicking another tab or cancel.
Version 0.25.6 is now available for download.

New Device Support
o Added Ocelot driver (currently supports controlling X10 devices, setting relays, and blasting IR codes).

Fixes & Improvements
o Fixed: When the Rules window opened in EMS it would sometimes show an InvalidOperationException message and the Control Device menu wasn't populated.
o Fixed: The touch screen viewer lite apps (including Elve Mobile) could not display images using the DEVICEIMAGE:// scheme.
o Added maximum memory usage to image cache for touch screen lite apps to prevent the cache from using too much memory.
o Fixed: The logger was not trimming hex byte data causing the log to fill up quickly.
o Improved device startup logging.
o The property name on the Device Properties tab in EMS is now copyable to the clipboard.

Driver SDK
o Added LocalDeviceDataDirectoryPath prooperty to the Driver class.
o Added HandleDevicePropertyChangeNotification to the Driver class.
o Added HandleDeviceEventOccurance to the Driver class (not currently implemented).
o Added a color device setting editor: ColorDeviceSettingEditor

Thanks for all the great feedback.