Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 5.5 Beta Release Thread
This thread is not for discussion, so please don't post here. It is for official 5.5 beta release information. There is a separate sticky thread for discussion.

To get across the 5.3.903 boundary (which introduced some significant internal plumbing changes) you have to first be on 5.3.2 or beyond, so upgrade to one of those first, then you can take the next step to the latest beta.

As of 5.4.917 (915 1nd 916 were misfires), we are moving towards the open source release. This one removes the licensing stuff. Anyone on 5.4.914 and before will have to move to this version first. It moves a lot of things around to move from the licensed version to the open source version, and also greatly increases internal security to make up for that.

This is early days, so definitely allow it to make a backup for you. Maybe try it out first on a test system even. Also be aware that the new security stuff has some ramifications which I'll discuss briefly below. But it also means you have to be formal about how you upgrade, since the secondary machines get info from the master. So the master has to be upgraded first. Otherwise, the secondaries will get the old info, then you'll update the master and it might change the info, then the background services on the secondary systems may not be able to access the master server.

The secondary (non-master) machines will require you to log in as an admin during the installation. This is the first new security measure, so no one can just install a client on your system. And, it also means that the installer can safely get needed info from the master. It will store this extra info in the registry along with the other CQC info (not very much.) This is in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Charmed Quark Systems, Ltd. This info is used by the background services on secondary machines to get access to CQC system functionality that they provide for you.

It's important that you set the access rights on this whole registry section (right click on it in the list on the left of RegEdit and select permissions) such that it is not generally accessible. For most folks this means removing Users, which is anyone who can log into that machine. Add the Windows admin account that you use to do installations on that system, and add the account that the two CQC services run on (and they both need to be running on an account that has rights to this section.) The account you run the installer on needs read/write. The account the services runs on can have read/write but only needs read access. If other people log into that machine, give them their own, non-admin account, which then won't have access to this information. At some point down the road we may be able to get this more integrated into the installer.

A good bit of stuff is moved from the general repository file on the master into service specific repos. The general repository is only used now for fairly basic stuff since it is potentially accessible to someone who can write a program to access the CIDLib config server. These other repos are only accessed by their respective services (logic server, data server, installations server, security server.) All those services require a CQC login to access. The config server doesn't since it exists below the level of CQC. Many more CQC master server remote APIs now require user credentials to access as well, any that can change system configuration or query anything that could contain sensitive info.

At some point I'd like to update the Name Server (the most fundamental one), to support a credentials service and have CQC use that. Then everything from the ground up could require credentials. But, even if that was done, I'd probably still keep the dedicated repos that I've created.

If you use the XML GW server, it now uses certificates for secure access, so you will need to set up a certificate on the MS if you do secure connections to it. It still supports non-secure connections as well. Both the XML GW server and Web server both now share the same certificate info and both of them allow for separately enabled secure and non-secure connections. On the MS the web server is always installed and at least one of the connections must be enabled since it serves up the help content.

Beyond the above, the only change you should see is no more licensing, and license info. The docs have not been updated yet. That'll be a bit of work.


Latest Version: 5.4.920
Confidence Level: 95

Download Link:

The subsequent posts list changes in each beta version...
Dean Roddey
Explorans limites defectum
  • The CIDLib assert mechanism wasn't setting the file/line of the location that invoked the assert, it was doing the file/line of the handler that was invoked to build and throw the exception, which made it hard to figure out where the assert occurred.
  • Lower the minimum 5.x firmware version check in the Elk V2 driver that it uses to decide if counter queries are supported. Move it down to 5.2, which we know is working based on user systems.
  • Make it optional for TModule to adopt the installed program logger object. This allows for things like having the facility object (or some other thing) implement MLogger and install itself as the program logger. Previously it assumed it was receiving a dynamically allocated object and it would delete it.
  • There was a bug in the old Homeworks driver client interface, which was caused by the collection maximum element stuff being removed and me not getting it fully tested out.
  • Get rid of the old RIVA system, server and client. And we have to update the installer to get rid of it there, and the app shell since it no longer runs that server, and the release image builder.
  • Look at adding support for the Honeywell TH8320 thermo to the Z-Wave driver. This is by eye, but it looks pretty conventional and should work with the existing thermostat handler.
  • The old Lutron HW client side driver will time out when you save new config and have a large number of defined items. The server side is re-doing the processor setup and query of initial field values in the context of the config setting method, because there's nothing else that's going to make those initial field value queries happen. It takes so long the client times out. Normally that stuff happens in Connect() before the driver is online. Changing that will be a good bit of work, but first just try only doing the processor setup and login stuff from Connect() and skip that on config storage. See if that reduces the time enough to make the client happy.
Dean Roddey
Explorans limites defectum
  • Get rid of a couple of the wee bits of ASM left in the code base, for the rotate left/right methods, and just move those up to platform platform independent, inline code done in C++. One less thing to worry about porting. The bulk byte swapping methods are still platform dependent since they can potentially get big speedups using local hardware.
  • Now that I'm using Visual Studio Code and it has syntax checking, I need to move the UNICODE define from the compiler command line generated by the build tool into the Windows per-platform defines header, so that it's seen by the syntax checking during editing. Otherwise, the IDE sees all ASCII versions of the APIs, which are not compatible with the wide character stuff I'm sending them and it marks lots of stuff as in error when it's not.
  • The SimpleFldClient CML class didn't get the new TimedFldChange2() method documented, which allows for sub-minute resolution.
  • Now that 5.4 is out, complete the previously begun work of creating a standard CQC server framework, so as to factor out most of the grunt work of setup and cleanup that the various CQC back-end services do, plus callbacks to let them customize where needed. This will make it easier to maintain and to change how servers work in the future, and it gets rid of probably the most significant code redundancy in CQC.
  • The installer is generating some no longer needed options for some of the servers, so get rid of those.
  • Update the data, event, logic, web, event, and driver servers to use the new server framework from above. A good bit of work, but it was well worth it.
  • Fix a silly error in the our core UPnP service action invocation method. Don't know if it really ever caused any issues, but it could have. It's used pretty much for all UPnP action invocation so that we can do them all generically, so it had plenty of opportunity.
  • Re-address the IV editor's alignment stuff to support align to initial selection again, which got lost in the previous version due to complexity in catching that up to a lot of changes. We need it to act reasonably both when lasso selection is done and when manual one at a time selection is done. In the latter case it should us the first one selected as the anchor for aligns. For spacing it's always the farthest ones used.
Dean Roddey
Explorans limites defectum
  • Add support for namespaces to the CIDDocComp processor
  • The CQC Web Server which, along with the other CQC servers was updated in the previous drop to use the new 'server framework' I created to standardize the setup/cleanup of those programs, was still using some old data of his own when he should have been using stuff from the framework. So actions invoked from within the web server could fail due to insufficient rights.
  • Move more of the raw string stuff up out of the per-platform code to the platform independent code, to help minimize per-platform work.
  • Get the build tool mostly building on Linux. Not linking yet, and there are a few stubbed out methods, but the files are compiling, which was a big step of getting the build environment set up correctly.
  • Implement 'placement' style adding of elements to the by-value collections. This makes some things more convenient to do, and you get efficiency improvements out of it as well. Instead of constructing objects just to copy them into the collection, you just construct them in place. Making use of this will be an ongoing thing.
  • A long-hiding bug in the Z-Wave driver was found finally. If we get more than one nonce backed up from a unit, the method that finds the right nonce can get hung up.
  • There's a bug in the old Lutron Homeworks (non-QS) client side driver, which causes the attempt to add new items to fail.
Dean Roddey
Explorans limites defectum
  • The composited style on the AI's main client window got lost somewhere along the line, making things flickery when resizing and whatnot.
  • Add support for the FortezZ MIMOLite Z-Wave unit.
  • Update the binary input stream system to support pushback. This will allow us to use streams in some places where currently we can't and have to use raw buffers.
  • The sys config global tab should be using + for the 'add new' buttons, not ... which means 'select'.
Dean Roddey
Explorans limites defectum
  • All of the media renderer drivers derive from a common class. It sets up and initializes all of the standard renderer fields. It currently doesn't create some movie oriented ones, because they may not be used in all of them. But it knows what media types the derived renderer supports, so it should create and initialize those fields if movies are supported.
  • My changing over to use my new 'emplace' style collection element insertion support caused the Layout Template attribute for CABs to be in the attribute editor twice due to leaving a stray old insertion call.
  • Add a Busy flag to the SMS driver so actions can wait lock until it's sent the current message.
  • Rework the CIDBuild project definition file to make the stuff that projects use to indicate what platformats they support simpler (and allow that same stuff to be used by various blocks within projects where we might need platform specific things like tools options and include paths. And make it just skip altogether things that aren't for the current platform being built, otherwise it tries to expand macros and such that may not be defined on the current platform.
  • Update CIDLib to support weak pointers and deleters for counted and weak pointers. Not made use of yet, but it will be eventually to hopefully good effect.
  • If you do a save-all in the AI, all of the tabs that actually save need to redraw their headers to get rid of the asterisk.
  • Finish dealing with some side effects of trying to hunker down and get the inclusive/exclusive area issues really worked out. I was making it more complicated than it needed to be.
  • A lot of work on Linux support. CIDBuild is working now and I've been able to start working on add a Linux driver for the lowest level library, CIDKernel, which provides 85% or so of the platform encapsulation. That'll be an ongoing undertaking for a bit.
  • Bump the Z-Stick's UIRT timeouts up a bit to see if it helps with some timeout issues that some folks see. I'm guessing it doesn't and that it's units not responding or some such, but we'll see.
  • Add support for the Somfy ZRTSI blinds controllers to the Z-Wave driver, just two channels initially to see how this works.
  • The in place editor window is clipping the top border line off when invoked by the tree browser (as mostly seen in the AI's tree browser pane.) This is likely due to the above inclusive/exclusive work, so we come up one pixel short on vertical size now in the popup editor window when it's sizing to the tree slots.
  • The log monitor has developed a tick after an apparent fix to something else caused it to start picking up old messages when it loads up new incoming ones. Redo it to make use of our fancy new strong/weak pointer stuff that lets us avoid the problem previously being worked around, and make it work right again in the process.
  • The event server is trying to wait for paused event monitors to stop, but they were never started. So it makes it take longer to shutdown and logs an error because the thread stop failed.
  • Have the Explore Logs tab set the time column as the initial sort column.
  • The logic server should set its fields to error state initially so that, if values can't be stored for any fields, we don't get the warning about uninitialized fields when it comes online.
  • The logic server tab would continually push the focus back to any field whose config is in error each time it was asked to report its good/bad configuration status. It should only do that when you save, not during the periodic validity checks.
  • The logic server should provide better initial setup of the per-source field expressions based on the logic server field type.
  • When you add a new field to the logic server that takes an expression, the expression oriented controls should be disabled until at least one source field has been added, and disabled again if you delete the last source field.
Dean Roddey
Explorans limites defectum
  • Add support for Insteon leak sensors (2852-222) to the ISY V2 driver.
  • Update the SMS driver to better support throttling of msgs. It has a Busy flag now which will remain set for five seconds after sending a message. It will reject msgs if they are sent while the Busy flag is set. So use a Devices::WaitFieldValue() to wait for the Busy Field to be False before you send. If you send faster than then the modem or the target service or someone along the line will generally just ignore the message.
  • Get rid of a fair bit of per-platform code by moving the file system tree deletion stuff up to the platform independent layer, working in terms of the more basic, underlying per-platform functionality.
  • More Linux platform support work, working through more CIDKernel Linux stuff.
  • Various performance improvements using new C++ capabilities implemented lately.
  • Add a new parameter parsing mechanism that will be very useful moving forward and save redundancy.
  • The fix to make all tabs clear their 'changes' indicator when a Save All is done created an unforeseen issue where saved triggered/scheduled events get saved to the Master Server but don't get pushed out to the Event Server, so you don't see them until a system restart. This has been fixed.
  • The client service is logging too much stuff if a media repo is configured but not online. So slow it down and log less when not in verbose mode.
  • Make the time column the initial sort column for the log monitor program, as was previously done in the log explorer tab in the AI.
  • Currently the logging core stuff is synchronous and the plugin loggers can queue and spool if they want. But this prevents a lot of optimizations. So move that queue and spool stuff into the core and let the spooler derivatives just be passive, and update to take advantage of a lot of optimization with new C++ capabilities.
  • Since we don't return the special . and .. directories from the kernel layer directory searches anymore, get rid of any checking for those in the higher level code.
Dean Roddey
Explorans limites defectum
  • The System::HTMLEMail and System::EMail commands are sending the target address as the subject field. This was broken during recent optimization work.
  • Make the driver wizard dialog resizable, which means adding correct anchors to all of the controls of all those panels. They were all created before that auto-resizing stuff was implemented.
  • Add the line end prompt to the 'RP6' driver. It's just a manifest that loads the generic serial trigger drive, which supports the line end type selection. I didn't originally add it because I thought the RTI just used fixed CR/LF line ends, which is the default if the prompt isn't present, but actually it can be configured on the RTI side. So might as well make the selection available.
  • Update the IDL compiler to support some move semantics on the server side for better efficiency in those cases where a buffer or string or collection is being passed in and the values are being kept. The server side has to create a temp to stream the values in, so it's always safe to move that temp into the called server side API if it's advantageous.
  • The new core server framework (from which most of the CQC servers now derive) wasn't checking for failure to get a remote interface that it was trying to get, which could cause an exception. It wouldn't fail, but it would log bogus messages because it looked like more than just we couldn't find the remote server.
  • The system config tab doesn't see changes to the driver configuration after you open it, so it will prevent you from saving changes even if you make them valid by adding missing drivers and such.
Dean Roddey
Explorans limites defectum
  • Move the socket ping functionality of CIDKernel up to the platform independent layer. It can work in terms of the underlying fundamental socket capabilities and avoid a good chunk of per-platform code. It just requires adding support for RAW socket types to the socket support, which probably should have been there to begin with.
  • Update all of the CIDKernel system wrapper classes that aren't using the handle class mechanism to use a forward declared structure for per-platform data instead of a void pointer that gets cast internally. Some were doing that, but it's much cleaner so make them all do that.
  • Drop the Firewire media changer support in CIDLib. It's not used anymore so not worth keeping around and having to try to deal with on the Linux side.
  • Long ago I gave up on using pre-compiled headers for reasons I don't really even remember. But it's been a long time so update CIDBuild to support them again on Windows and see how they work out. I could probably get builds as fast as now without the parallel build stuff which is awkward.
  • Update the RadioRA2 driver to use the 'call status' message to get the thermo operating mode, since the regular mode only shows the set mode, which is usually just Auto.
  • Update the IDL compiler to spit out fundamental typed constants to be constexpr instead of just const.
  • My push lately towards implementing static analysis on my code base finally turned up an actual bug. Gamma support never worked in the CQC image editor, and it caught the bug that was messing that up.
  • Upgrade to Visual Studio 2019 now that it's been out a while.
  • Add support for the Visor's contact closures to the Radio RA2 driver.
  • Do a first whack at a control-only version of the Dune driver, i.e. a V2 Media Player, for folks who don't need a formal Media Renderer.
  • Update the IDL compiler to generated deleted move constructors and operators, which the static analyzer prefers (define, delete or default all of the magic methods.)
  • Add more stats to the ORB engine to help diagnose issues in the field, and simplify that stuff by having the facility object just create a monitor thread that watches things and updates stats periodically. This will reduce overhead relative to the current scheme of trying to keep them up to date as things are actually changing (which can be quite rapidly.)
  • Update the IDL generator to initialize output parameters in the generated server side stub to make the static analysis tool happy. While in there clean up and consolidate some stuff related to data types info that is used in various places and so could be simpler.
  • Improve the docs page about how to take an existing driver and adapt it to create a new one, or how to create a new one.
  • It looks like perhaps the task scheduler may be closing the tray monitor if it is the one that starts it up on system startup, because there's a setting still checked on the scheduled task entry that makes it think this is something that should eventually stop and that it should kill it if it doesn't stop after a few days. Update the installer to turn that option off.
  • There's an issue with the web cam widget where settings the URL in the preload won't always get it initially loaded.
Dean Roddey
Explorans limites defectum
  • I screwed up in the previous drop. A new socket protocol type was added, and it wasn't added to the end of the list, so it messed up any existing persisted data that stored one.
  • When I removed the old RIVA stuff from the installer, I forgot to adjust the list of text values that hold the text that displays under the components list when you select one, so it was displaying the wrong text for some of them.
Dean Roddey
Explorans limites defectum

Possibly Related Threads…
Thread Author Replies Views Last Post
  6.x Beta Release Discussions Thread gReatAutomation 30 5,687 12-21-2022, 12:53 PM
Last Post: pilotguy7ca
  Official 6.x Beta Release Thread Dean Roddey 2 1,450 04-16-2021, 05:55 AM
Last Post: Dean Roddey
  5.5 Beta Discussions Thread Dean Roddey 291 85,287 04-05-2021, 04:10 PM
Last Post: Dean Roddey
  6.X Discussions Thread gReatAutomation 1 1,234 04-01-2021, 03:23 PM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 183,714 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 33,892 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 402,108 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 21,114 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 159,741 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 14,953 10-09-2017, 06:49 PM
Last Post: Dean Roddey

Forum Jump:

Users browsing this thread: 1 Guest(s)