Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
5.2.0 follow up releases
This thread is for announcements and discussion of any small followup releases to 5.2 that we need to do. Most of these are just to get fixes out, but we'll periodically take one that is well vetted and make it the new official version.

Latest: [The latest version is 5.2.11 which is the official version, so there are no more recent, unofficial versions at this time]

5.2.7 is the latest version. It has a nice new features that lets you search for widgets in the interface editor, which can be very useful in more complex ones. The remote file selection dialog also now remembers the last path accessed for each file type. So, if there's no previous file to go back to, it goes back to the last path for that type. There are also a lot of fixes from 5.2.6 (which I just gave to Bryan for some Pluckers needs) and 5.2.7 that have been accumulating.

  • Somehow we never got a good, up front link to the supported devices list into the new HTML help, when that was one of the primary reasons I started down the path of improving it.
  • In the popup menu for the /Customize section of the AI browser tree, change New File to Create New, since that is less confusing. It does in fact create a new file, but not locally and semantically the user probably doesn't think about the things created in that way.
  • The Intf Viewer isn't updating the title bar when you select a new template to load.
  • The driver monitor tab needs to clip the displayed field values to some reasonable max length. In some cases they may be very long and this can bring the GUI to a crawl.
  • There was a decade plus old bug in some very low level OS platform encapsulation code that, due to a quirk in Windows, actually worked all this time, but finally stopped working when the Fall 2017 Windows 10 Creator updates were installed. This has been fixed now, so it should be safe to upgrade to that version.

  • We use our own implementation of the very common 'tim sort' as our workhorse sorting algorithm. Some researchers found that there was a possibility of the algorithm's pending run stack being overflowed given certain input data. An extra check was needed in the MergeCollapse method prevent this from happening.
  • The image pack generator program was not updated to use forward slashes (which are now used for all data server resources.) So, when I had to re-generate the packages again the other day, in order to rebuild the Downloads directory I accidentally deleted, they got generated with old style slashes, but with a new version number, so the the importer didn't think it needed to modify the paths, and so they would fail.
  • Change the main menu item "Change PW" in the AI and IV to "Change My PW" to make it clear that the user is changing his own password in that case. This differentiates that from the ability to change another user's password in the IA when editing that account.
  • We didn't get the Purchase button on the nag screen updated when the web site was re-done, so the purchase button tries to open a bogus URL. Ugh... Probably should just have it go to the main web site URL. The purchase link is at the top anyway, and that way it'll never have to be updated again.
  • Towards the end of 4.8.x, when I was working on the 4.8 followups and 5.x at the same time, I added a SetBoolCompVal() command to the widgets that use the boolean interface. That was ported but not exactly right, so the command doesn't get loaded into the list of available commands. That causes the action editor to think it's a bad command and comment it out.
  • In some cases the installer assumes that it has enabled the web server if the MS is being installed, and it does. But, if you read in the info file from a previous installation that had it disabled, then it doesn't go back and force it back on. So you can get into a situation where the web server isn't being installed even though it says it is on the enable/disable options screen. So have the info object check after streaming itself in that it enables the web server if the master server is enabled.
  • Lower the frequency of polling and extend the GET timeout on the Venstar thermo driver to see if this helps reduce timeouts.
  • The web server's engine sets the interface engine's RIVA mode flag to true, because it runs the WebRIVA system. But, it also gets loaded in the AI, which is causing the RIVA mode flag to be set there, which is not at all desired. One side effect is that things like RIVA oriented minimums get enforced, such as the refresh time on the web image widget.
  • Add scheduled/triggered events to the available types of files to Import into the tree browser in the Admin Interface. And, since we never implemented export of those for 5.x, add an export option for those event types as well.
  • The bulk loader utility never got ported to the 5.x world, because things had changed so much and it was going to take quite a bit of work. But Bryan now needs it for moving forward his Pluckers systems to 5.x. Also need to port the docs for this guy forward to the HTML format.
  • The Radio RA2/Caseta/HWSQ driver was incorrectly creating V2 field names for switches no matter what the V2 mode flag was set to by the driver manifest file. No one had been using the most recent versions of it in V1 mode so this was not noticed.
  • Move the field extraction tool into the Admin Intf. You can now right click a driver to export its fields to the standard XML field export format that the variables driver can import. You can also click on a host to export all its drivers at once. So we can remove the old command line field extraction program from the release now.
  • In the attribute editor, the widgets now only show those colors they support, and they show names that are meaningful to what that color is used for in that widget. They do this by playing some tricks. Internally there is a fixed set of colors with a fixed set of names. Currently in the get/set widget colors commands in the action editor, it still shows them by their internal names and shows them all all the time. I did some work so that at least in the selection drop down menu it shows them by their per-widget names, but still in the actual value displayed it has to show the real internal name. That sort of sucks, but it's a step forward and totally fixing that would require something I'm not prepared to take on right now.
  • Implement a client side driver for the Lutron RA2/Caseta/HWQS driver, so you don't have to edit the text file anymore. You still can, but you don't have to.

  • I forgot to update the installer image creation script to include the new Lutron RA2/Caseta/HWQS client side driver, so it's referenced in the manfest but the actual files aren't being shipped.
  • One of the info msgs being logged by the event server is one that probably doesn't need to be logged unless in more verbose mode since it can get kicked off by anything updating an event. The others, for adding, deleting and renaming, we can keep since those are fairly rare and it will be good to have a record of such changes.
  • The generic IR/RF/Trigger driver's blaster tab doesn't deal with the fact that there might be zero blaster zones. If they configured all of the IR ports as sensors, then we can have zero blaster zones. So don't try to select a zone initially and if they try to invoke a command, give them an error that there is no zone selected.
  • We have a default empty image which we assign to any images that we can't download. Somewhere along the line that image's initialization got lost and so it would cause an exception when it got used.
  • When a certain set of bitmap operations were done, they were leaking a Windows graphics device handle. No one had noticed since, though it was raising the memory usage of the apps, not enough of them were getting eaten to become deadly too quickly. A particular scenario in someone's templates suddenly brought the issue to light and it took a while to track it down.
  • When active widgets decide to update themselves (clocks, marquees, field driven widgets, etc...) they are not taking into account that they may be scrolled out of the visible area of the overlay they are in. In that case, the invalidate the area they are in, to cause a redraw, but they never themselves redraw because the drawing code does check. But they also cause the visible stuff (outside of the overlay) that is in the same area to redraw. This is needless redrawing. For a marquee, which updates rapidly, this can cause LOTS of needless redrawing. Same for field/variable driven widgtes though far less so due to lower frequency.
  • Even if partially visible, for active updates only invalidate the visible part so that adjacent stuff doesn't redraw. That's much harder on field/variable driven ones so can't do those yet, but we can live with that for now. What we've done will make a big difference already in the more pathological cases.
  • Add a command to enable/disable a widget having a border, so that you can turn it off and on at viewing time via action commands.
Dean Roddey
Software Geek Extraordinaire
  • Due to a wee error, the LogMsg3P methods of the CML logger class is doing token substitution, only the non 'P' version of it works.
  • The dialog box class used the wrong method to intercept system generated close events (escape or close button), so even if it indicated it wanted to eat a close command, that would still get to the default handler and that would let the dialog exit. So if you hit the X button or Escape in a dialog, even if it presents you with an option to exit or not, it will still exit.
  • The Web Server is creating the Faux GUI thread (the one that takes the place of the Windows GUI thread in a real IV) before it creates the view object. This leaves room, if the client gets going quickly, of it sending some messages before the IV object is in place, which can cause the Faux GUI thread to generate errors and possibly get it confused.
  • It turns out that the Windows ReplaceFile() API, which is down at the guts of our own file swapping scheme, is not really atomic and things like anti-viruses can prevent it from working in a way that either prevents changes from being saved, or even stops the operation after the original file has been renamed but before the new file can be swapped in, which would effectively 'lose' that file. So we need to watch for these types of errors and either retry the swap, or try to complete the final rename or recover the original file worst case. This was sometimes preventing files from being correctly saved by the data server (which provides the storage for all the stuff in the /Customize part of the tree.)
  • A failure to prepend a ! (not) before an operator would sometimes cause the comparison of the elements of two vectors for inequality to show up as not equal, because the caller would be doing a != comparison, but the != operator was basically just passing through to the == operator without inverting the result. So they would look not equal when they were equal. One place where this presented itself was when you edited the hot keys in a template, then just hit escape or cancel without making changes. It would present you with the save changes dialog even though no changes were present.
  • Have the remote file selection dialog (browser in single type mode) remember the last path accessed of each type. The next time it is invoked for that type, if there is no explicit location indicated, and the previous one still exists, go back to the scope that contained that previous selection. This is so often the desired scenario that it will make a big difference in usability.
  • In order to reduce memory usage and 'cache churn' add an option to the interfaces used by clients to write files to the MS, which lets them tell it not to add the file to the in memory cache if it's not already there. Use this in auto-gen, template scaling, bulk loader, etc... to prevent lots of files (which may not be accessed otherwise for a while or never) being written into the in-memory cache.
  • To avoid any possible weirdness wrt to the serial numbers that the MS uses to track changes to files, stop just starting new files at 1 and generate a random value instead. That will make it extremely unlikely that a file might be accessed by a client, then removed, then regenerated (such as by scaling) and the client still thinks he has the latest stuff because the new file ended up with a 1 (or very small valued) serial number and the original had that as well.
  • The above is particularly an issue for templates since the serial number was just a runtime thing and always got recreated any time it was accessed the first time and loaded into the MS' memory cache. That has now been made persistent as well, to further prevent such issues.
  • The variable driver's import of field extraction dumps doesn't agree with the format generated by the new export scheme (or the old command line field extractor for that matter.) They use the CML types for the field types (MEng.String, MEng.Int4, etc...), whereas the variable driver is expecting a basic type name as used by the field definition class' enum (Card, Float, String, etc...) To maintain backwards compatibility the import should use the CML scheme as before.
  • There were some issues in the past where a widget could accidentally get outside of the template area. Sometimes, way outside. This could cause an unrecoverable error in the IV when it tried to draw the widget because the coordinates were outside of the range of valid UI coordinates. So you'd get an unending sequence of error popups. So, add a sanity check when the template is being read in to force such widgets back within the template area, and log a msg. Worst case you may end up with a widget in the wrong place until you fix it, but that's better than the IV becoming useless.
  • Though it doesn't seem likely, just in case it's possible for our secure socket stuff to time out mid-encrypted packet, add a one shot extension mechanism to give it a bit more time to read the current packet. If we just don't read enough data, that's one thing, as long as we are getting whole packets. But if we get a partial encrypted packet we are hosed and can't recover. The socket has to be recycled.
  • The interface editor tab's main editor window area doesn't accept focus via tab, so you can't tab to it from the error list or the current tool tab on the right. You have to click on it, and that will affect the selected widgets. So fix that, and have it change the color of the selection handles based on whether it has the focus or not to make it more clear when it has it. If nothing selected it's not possible to tell if it has the focus or not. The same is true for the error list. Kind of sucks but not much to be done about it right now.
  • Create a 'find widgets' tab for the interface editor, which will allow you to search for widgets using a handful of useful criteria. It will display a list of them. You can select some and those will be selected in the editor window. It will be one of the 'tool' tabs on the right side of the editor tab.
  • You can't rename something in the AI's browser tree such that it just changes the case. It will get a duplicate name error from the data server. We need to specially check that with a case sensitive comparison. If equal insensitively and not equal sensitively, it's a case only rename and we need to skip some steps.
  • There's an error in the auto-gen related to custom tiles (extra overlays) in that it puts the wrong target template name into the list of templates to scale, so the custom tile's content overlays (the right side content for them if they have any) doesn't get uploaded. So clicking the title bar on the tile fails because it's trying to scroll over to a template that doesn't exist.

  • There are places where you can enter double slashes (//) into remote file paths. This can cause some weirdness because it will be take as gospel and treated as a legit path. It doesn't fail because when it gets turned into a local path, Windows ignores duplicate slashes. But the path gets used as a unique key to the MS' in memory cache. So you can be editing the file, and those changes get written through the cache to the right key, but a read of the invalid path will still work, but will load that into a different in-memory cache item. So those reads subsequently never see the original file being modified. So put code in place to both prevent this up front, and also to try to mitigate it in configuration already stored.
  • Per the above, add checks in various places both for reading in old data and accepting user input, to avoid getting any double slashes into remote file paths. We need to handle in place editing in the interface editor, and validate any path parameters in the action editor, check any object members when they are being streamed in and correct them where necessary. A pain really.
  • The above isn't sufficient altogether since paths built up dynamically in actions could still have sequential slashes. So have the data server client remove them from passed remote file paths before it talks to the server, so that worst case we don't cause the bogus cache entry issue. This will provide a further safety net. I'd like to just have it throw an exception so such paths could be found and fixed, but that could cause working systems to fail. I'll do it during debug builds so that if I manage to introduce such bad paths I'll know it in the future, but for customer systems we need to be forgiving.
  • Have the data server in turn remove any should any still get through, just to be extra safe. With these three layers of protection, that should be sufficient.
  • Template validation isn't passed along down through the toolbar buttons. So things like missing images in tool bar buttons don't show up in the error list.
  • Now that we have a client side interface for the Lutron RA2/HWQS driver, the driver needs to insure that the "Drivers\RadioRA2" scope is created. Before the user had to create the file himself so it was always there. Now that won't necessarily be the case if they just use the client side interface from scratch.
  • If an error occurred while saving the RA2/HWQS client side driver's changes, and the server side couldn't store the file, that was propagating back to the client to let the user know. And that also made it think it had no changes to store, even though the current ones never got saved. So you could then close the tab and lose the changes without knowing it.
  • Add some more logging to the UPnP media renderer driver to help diagnose connectivity issues in the field.
  • The scaling process can actually scale an image down to zero size. That will cause an error because it generates an image with no pixels, which means zero pixel bytes.
  • The custom overlay stuff in the auto-gen was done before relative paths came along, so when it generates the link from the tile to load the custom overlay content template, it's using the full path to the generated template. It should use a relative path, so that those generated templates can be copied and pasted en masse elsewhere.

  • In WebRIVA, sometimes it can't display the logo because it can't get the web socket connection going. This used to be semi-benign but now seems to throw an exception that stops the loading process, so catch that. When time permits, readdress this and either get rid of it or figure out how to be sure we can get it.
  • The font scaling in the auto-gen and template scaling is trying to keep about the same number of characters visible. This ultimately is probably not worth it. It causes some non-obvious font differences if a set of widgets are otherwise the same but slightly different widths. Just revert to a straight scaling of the font height by the vertical scaling factor. There's no free lunch of course. If you scale the horizontal differently from the vertical, this will now mean that you may have more or fewer characters visible (which may cause clipping of the text or different text wrapping.) But ultimately it's probably the least weird.
  • In various places where scaling of points and sizes are going on, do better wrt to rounding to the closest integral value.
  • Some things were not being scaled when the template is scaled, such as the image offsets for wigets that support the multi-image interface, and the font interface's text f/x offset.
  • There is an issue in the logic server configuration tab. The combo boxes that show the available expression types (for those fields that use expressions) isn't adding the regular expression type first before the other (statement) types. That makes calculations come out wrong and can cause an index underflow when a new field is added. And it means that regular expressions can't be used in any of the expressions. That now works as it should.
  • The Echo stuff did not get updated to reflect the change from back to forward slashes for remote file resources (and to insure no double slashes.) This is to provide backwards compatibility for existing files that still have backslashes in them.
  • Update the Echo docs to reflect the 5.x change from back to forward slashes, where it documents the configuration file (which references global actions and macros.)
  • Have the installer pause for a little bit after doing a backup and at the end of creating the temp new install directory, but before it tries to rename the directory to its final form. Because of the number of files spit out, anti-virus programs can spend too much time in there and cause our rename operation (even with the many retries it does) to time out.
  • Have our kernel level file system code maintain a counter of how many times it is having to retry file operations because of the OS or AV or whatever interfering. This will be useful information for spelunking issues like slow installer progress. Log this count to the installer's install log file at the end of the installation process.
  • The RIVA system allows the clients to set the environmental runtime values for their session. Enable this in the WebRIVA client so that environment variables can be used consistently across regular and Web IVs. They are done via env1=xxx&env2=xxx type options on the URL. This way users can have a consistent way to set per-client options on IV or WebRIVA.
  • We need to get the old Lutron HWs client side driver working again now that Acme has upgraded to 5.x. It wasn't initially done because there were the only users of the old HWs type system and so I'd have had no one to test it and would have forgotten all the details. It's not a massive rush so it can be redone in the style of the new RA2/QS driver, using the multi-column list box and editing in place. While in there make some useful improvements in the server side driver.
Dean Roddey
Software Geek Extraordinaire

This has been made the new official versions. Likely this is the last followup release and we'll move on towards a real beta phase now so that we can make some substantial changes. But it was well worth getting all of these issues taken care of, so that we have a nice, solid 5.2 version before we jump off the cliff again.
  • There's an issue with the IE tab's horizontal/vertical spacing tools. Depending on order of selection (or natural order if lasso selected) the way it decides the left/right or top/bottom points to space out between is wrong and can push widgets way off the template and cause graphics region errors because the coordinates are beyond the legal graphical device coordinate space.
  • An error I supposedly fixed in 5.2.7, and which I clearly did do, somehow got lost. The vector class has global == and != operators. As usual, != is just a negation of a call to ==. But it wasn't being negated. So where a vector was being compared by a != operator, it would actually get the opposite result, i.e. it was really just doing ==. This would cause changes to appear to exist when they didn't and vice versa. Known places it happened are the RA2 client side driver and one of the template actions dialogs (hot keys or templates actions.)
Dean Roddey
Software Geek Extraordinaire
(reserved 3)
Dean Roddey
Software Geek Extraordinaire
I posted a 5.2.4 drop above. It's not official yet, but if everyone is happy with it I can make it so. It should be quite safe since it has just smallish changes but some of them are things that might be desirable to some folks and there were enough of them that I figured I should get them out there, since here soon we may go beta mode and any fixes to 5.2 will require changes in two code bases.
Dean Roddey
Software Geek Extraordinaire
(12-15-2017, 03:42 PM)Dean Roddey Wrote: I posted a 5.2.4 drop above. It's not official yet, but if everyone is happy with it I can make it so. It should be quite safe since it has just smallish changes but some of them are things that might be desirable to some folks and there were enough of them that I figured I should get them out there, since here soon we may go beta mode and any fixes to 5.2 will require changes in two code bases.

I installed 5.2.4 to check out the RadioRA2 driver changes, and now my SNMP driver started throwing errors about every 12 seconds in the log as follows:

12/16 11:07:13-CQC, CQCServer, CQCDrv_SNMPThread18
   CQCKit, MEng.System.CQC.Runtime.CQCLogger.110, Status/App Status
   MathParse.MemCalc Exception - The index 0 is invalid for this string

I traced this back to a Celsius to Fahrenheit inline calculation that is done by the driver, but not completely sure. The driver reads a temperature value from an SNMP device and converts it to F which than is presented in another field. Nothing changed in the setup or arrangements.
(12-16-2017, 09:23 AM)lleo Wrote:
(12-15-2017, 03:42 PM)Dean Roddey Wrote: I posted a 5.2.4 drop above. It's not official yet, but if everyone is happy with it I can make it so. It should be quite safe since it has just smallish changes but some of them are things that might be desirable to some folks and there were enough of them that I figured I should get them out there, since here soon we may go beta mode and any fixes to 5.2 will require changes in two code bases.

I installed 5.2.4 to check out the RadioRA2 driver changes, and now my SNMP driver started throwing errors about every 12 seconds in the log as follows:

12/16 11:07:13-CQC, CQCServer, CQCDrv_SNMPThread18
   CQCKit, MEng.System.CQC.Runtime.CQCLogger.110, Status/App Status
   MathParse.MemCalc Exception - The index 0 is invalid for this string

I traced this back to a Celsius to Fahrenheit inline calculation that is done by the driver, but not completely sure. The driver reads a temperature value from an SNMP device and converts it to F which than is presented in another field. Nothing changed in the setup or arrangements.

OK, one of the SNMP devices polled for temperature failed and reports an empty value which in turn causes a calculation like: 9/5*+32
and this is not handled. Will look into the driver more, thanks
So after I got over the SNMP driver error, finally got to test the new RadioRA2 driver and the new client interface. Unfortunately could not load the new client interface and this is causing the entire Admin interface to fail.
Some background if that is relevant: I already had a RadioRA2 driver with a config file. I paused this driver and then added a new driver with a different moniker as test, without a config and with a different login/password.
The driver is connected to the device and than I tried to open the client interface. I got "Driver Client Error" pop-up message with the detail as below:

12/17 11:16:51-CQC, CQCDataSrv, CIDOrbSrvWorkThread_4
   CQCDataSrv, CQCDataSrv_InstServerImpl.cpp.1502, Failed/Not Found, Error: 3200/0/0
   Facility 'LutronRA2C' was not found. Version=5.2
     <CQCDataSrv> CIDOrb_ThisFacility.cpp - 536
     <CQCAdmin> CQCKit_InstClientProxy.cpp - 572
     <CQCAdmin> CQCAdmin_ClientDrvTab.cpp - 114


After closing the error message, for any click on the admin interface I get a pop-up with title of unhandled system exception in GUI Thread, No information available, even when I want to exit or close the program. The only way out if to kill the interface. Let me know if you need more info to troubleshoot this.
As mentioned in the other thread, I forgot to add the client side interface to the release. For a C++ driver it would just get picked up with the server side driver, but this one is CML, so I had to add it manually and forgot to. I'll get another driver up with it there as it should be.

Though I should look into the resulting error and handle it better, that's a fairly pathological scenario that would only happen if I make a mistake creating the installer image, so it's not likely to actually ever happen in a real system.
Dean Roddey
Software Geek Extraordinaire
I updated the post above to get rid of 5.2.4 and replace it with 5.2.5. The only difference is that the Lutron RA2/Casteta/HW client side driver is now correctly included in the release.
Dean Roddey
Software Geek Extraordinaire

Possibly Related Threads...
Thread Author Replies Views Last Post
  5.1.0 followup releases Dean Roddey 47 9,831 07-17-2017, 11:38 AM
Last Post: Dean Roddey
  4.2 Followup Releases Info Dean Roddey 131 11,333 11-28-2012, 08:36 PM
Last Post: Dean Roddey

Forum Jump:

Users browsing this thread: 1 Guest(s)