Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 4.3 Beta Release Thread
#1
<4.3 is now released so this thread is closed. A new one has been opened for the 4.4 beta discussion phase.>
Dean Roddey
Explorans limites defectum
#2
Version 4.2.900 is posted. This one has a new RadioRA/HomeworksQS driver, and some improvements to the Z-Wave Leviton driver, and some small general improvements.
  • There's an issue in the client side support of the remote serial port server. When it gets the IP end point that the user provided to connect to the server, it sets up the client proxy by calling the IP end point's host name query method (and port of course.) But if we got an IP address, this just makes us do a reverse lookup, and then pass in the host name to be converted back to an address. If the address won't convert, we can't connect, even though we got a numeric address to begin with. So we should ask for the textual address format, which will return what we were given. That avoids a round trip resolution best case and a failure worst case.

  • The dialog that pops up if you select the event server config option in the Admin Intf when the event server isn't loaded isn't using the right owner window, so it won't pop up on the same monitor of the AI unless the AI is on the main monitor.

  • The CML IDE (driver and macro) should have a hot key for open a new session (Ctlr-Shift-N) and one for closing the current class (Ctrl-Minus.)

  • CQCNetTest should display, in the introductory name resoluton section, the configured name server address info, and then attempt to do a resolution of the address and display what it resolves to, if it does. This will give more useful info than we currently get which just displays a failure to connect. And display some more info when it finally does do the name server connection, failed or successful.

  • CQCNetTest should output the CQC version and local date/time for diagnostic purposes, in the first block of general info.

  • Do a first whack at a RadioRA2 driver and get it out there for evaluation, I haven't tested the serial connection version though it should work. I wouldn't recommend using it since it appears to be limited to 9600 for the RA2. Though it's ostensibly a RadioRA2 driver, it should work for HWQS as well, within the contraints of the types of modules it supports (Buttons, Dimmers, and LEDs.)

  • When the ORB logs the message that it couldn't find the name server, it should also include the original error message, to make it clearer what caused the failure. If it's not hte server not found error, it should add a stack trace and rethrow.

  • Provide some extra throttling on the Z-Wave Leviton driver, to see if it helps prevent the VRCOP from getting confused and locking up. One issue that was found was that outgoing messages sent in response to field writes weren't waiting for transmit acks, so that could have been an issue.
Dean Roddey
Explorans limites defectum
#3
4.2.901 is posted. This guy has a few small fixes and one new driver. I mainly am putting it up to fix the CML editing issue introduced in .900 and to get some more tweaks to the Z-Wave Leviton driver for folks to try.

The changes are:
  • The stream class that wraps sockets needs to do a chunked, throttled send when data is written to the socket, in case a large chunk is written, like an image attachement or some such. Otherwise it'll choke trying to send that much data at once to the server.

  • The recent changes to the CML driver IDE to make setting the driver verbosity level async, along with the other changes to make field writes and driver commands async, wasn't quite working right.

  • Verion 4.2.900 added some new hot keys for the CML IDE variations, but broke the ability to get characters into the editor window so you couldn't type anything when editing CML.

  • Do a Pentair Intelli-Touch pool/spa controller driver. This one has been fairly well tested by a customer, but this is still a first cut.

  • Do some more tweaking on the Z-Wave Leviton driver. Increase the minimum inter-transmit interval a good bit. Get rid of multi-cast polling altogether. Just process messages for a little bit after sending a poll query, to give the VRCOP some time to settle, while still being sure to process incoming messages. The message that the driver sends to the VRCOP if it gets an exception the poll method (just to see if the VRCOP is alive) wasn't really right and could have made things worse if problems began. Just change it to a simple node list clear, which will just get an ack back from the vRCOP if it's alive, meaning we haven't lost connection we just had something else go wrong, so no need to cycle the connection.
Dean Roddey
Explorans limites defectum
#4
Version 4.2.902 is posted. This one has some fixes and some useful new features.
  • Implement support for sending attachments in our C++ STMP class. This requires adding a new class to keep up with an attachemnt and supporting the multi-part MIME type extensions when an attachment is present.

  • Do a basic driver for the Marantz SR7005 A/V receiver. It's a newer version of the previus 5005 receiver, but for whatever reason they changed the protocol completely for this new generation. Oh, the reason is that Denon bought them, and the new commands are in the Denon format.

  • The Animated Image widget isn't honoring state driven visibility.

  • In the Intf Designer, if an Animated Image widget is marked to skip the first image, then show the second one. Currently it will just not show anything since it's set up to show the first image and if that's being skipped the drawing code suppresses drawing it. That makes it harder to judge correct placement.

  • When adding the GetLockStatusInfo() command, I messed up the loadable text id and now the SetTimeVar command is showing GetLockStatusInfo() as its name? Sigh...

  • Add action commands that will let you both send an e-mail and pass along an image retrieved from a URL, and get an image from an e-mail and store it to a local file. These are on the System:: target.

  • Add a 'Feels Like' field to the Weather Underground driver.

  • Provide a dialog in the Intf Viewer to show the currently active fields being polled. It will help for diagnostic purposes.It shows the fields currently being polled, which may be more than currently are referenced on screen, since fields are kept around a bit and only released if they aren't accessed for a while (so that they will be there if you go back to screens which access them.)

  • It appears that the bogus handle wait timeout issue is still occurring, the one that can cause spontaneous server exits, so take another shot at making sure that that doesn't happen anymore.

  • Add a command to the toolbar widget to allow for dynamic removal of items. This way, the toolbar can be loaded up with all the required options, and then optional ones can be removed based on runtime information. Currently it's only available in the OnPreload, so it's just for updating the toolbar before it's visible, it can't be used to remove items after the template is displayed. Typically you'd use environmental info to decide whether to remove items, via the environmental runtime values.

  • Add the button text as a runtime value to the ToolBar widget. Since we can now delete items, it may be useful to have the text of the clicked item available as well.
Dean Roddey
Explorans limites defectum
#5
Version 4.2.903 is posted. This one has some nice improvements and small fixes.
  • Add a CQCGWTongueing option to the generic query message of the XML GW server, so that clients can keep the connection alive even if they don't have anything to do for a while. The GW server will drop the connection if it doesn't hear anything from the client for a minute or so.
  • The AdjustEnumValue command of the local/global variables action target should return a boolean result to indicate if it changed the value or not, to make it easier to know when you hit the end.
  • The Web Image widget shouldn't bother looking at the content type. Just use our image format probe to see if it's something we understand or not.
  • The CIDLogAdmin utility's full dump functionality is not so great because it dumps locally on the master server, to avoid locking up the log server while it transmits a whole dump to the client that is requesting it. Update it so that it does the dump to a local temp file, and then just spools that file to the client. That way it only has to lock up the in-memory data long enough to dump the file, which it already does now. So it now requires an /OutFile= parameter when doing the full dump and it'll dump the output there.
  • Up the CIDLogAdmin uilility's number of log messages dumped in the basic dump command to 256.
  • The RIVA server should slightly increase the priority of the threads that serve the RIVA clients, to help increase responsiveness.
  • The Russound driver can receive messages for zones that are not defined for it, which will cause it to index the various field id lists at unset offsets and get a zero field id. That causes it to access the $BadMsgs field instead of the field it is supposed to be accessing. This will happen if you enter a zone count lower than actually exists, i.e. there are 16 but you are only using 12 so you enter 12 as the zone count. It's nice to be be able to do this since it can lower the number of fields significantly.
  • Make the CQC system id (the unique identifier for the system, which allows multiple CQC systems to be on the same network and not conflict) available as one of the standard runtime values.
  • Provide a 'lock' mechanism on interface widgets which will make them be ignored for selection. That way they can't be moved or modified. Only single widgets can be locked. Since it prevents selection, they can't be added to groups since you have to select widgets in order to group them.You can still double click them for attribute editing.
  • Update the HTTP client support to automatically handle basic and digest authentication requests from the server, if the username/password info is available. If it's in the URL that will be used first. If not, you can also set that info on the client object and it will use that.
  • Update the CML HTTP client to expose the new authentication functionality. Add a SetAutoAuth(bool) to enable or disable the auto-authentication stuff, so you can handle it yourself if you want. Add a SetAuthInfo(username, password) to set authentication info that will be used if its not in the URL. If you want to it to handle basic/digest but you might have another you need to handle, leave auto on, and if you still get an authorization HTTP result code back, see if it's the one you want to handle, else fail. If it's not basic or digest, or username/password info is not available, the HTTP client will just return the authorization result code to the caller.
  • Functionality like the web image widget, and the new action commands that get an image from a URL and mail it or save it to disc, repos that get cover art via HTTP, none of these things previously handled authentication if the server challenges the access. The above changes will allow all such HTTP access to automatically handle basic or digest authentication challenges now.
  • Update the HTTP client to just reallocate the caller's buffer to fit the size required, if we were given a specific size by the server. This way, callers don't have to guess and allocate larger buffers in order to avoid multiple expansions of the buffer. They can just start with a small one and let it size up as required. If the server doesn't provide a size, we still pay the price of resizing it up possibly multiple times as we figure out what is required. But, generally they do provide an expected size.
  • When you do the SetBrowserList2 or SetDlbBrowserList commands on a list browser widget, and there's an error in one of the lists, the resulting error is bad at worst, and not very helpful at best, so improve it to say which list and make it show the right error index.
  • Russound ACA-E5 units do not include expanders, so set the number of expanders to zero if that model is selected.


Just as an aside, I just realized I didn't really test the HTTPClient changes in their CML based form. The HTTPClient class is fine and works the same as before, though with the automatic authentication now. But the new methods for setting authentication settings I didn't actually test, so they may not be completely right. They are pretty simple so likely they are, but never say never.

I increased the priority slightly of the threads in the RIVA server that serve the clients. So it would be interesting to know if this has provided any noticeable improvement in responsiveness. If not, then it's not worth risking thread priority elevation and I'll just remove it. But see if it does anything for you.
Dean Roddey
Explorans limites defectum
#6
Version 4.2.904 is posted. This one has some small but nice improvements, and some useful fixes. It has one fix which may be breaking, related to the Omni driver so see the red one below.

The changes are:
  • For the popup/popout invocation commands, update the action editor so that, as long as the template is set (and resolvable at design time) that you can click on the value helper for the parameters and it'll go grab the notes for the referenced template and display them. This way, you can document parameters and return values in the template's notes and have a way to see them when you need to invoke the template in a popup/popout. This will avoid a lot of 'close this, open that, close that, then open this again' type of business. This actually involves quite a bit of fiddling to add functionality to make this possible.

  • The CML string based text output stream class was not setting up the error code for the XCodeErr exception but could throw it, which would in turn cause a C++ exeption.

  • The CML text output stream classes are not catching the C++ exception that occurs if you try to format out a string (or formattable object) that has characters not legal for the current encoding. It only applies to file or memory based ones, i.e.the ones that require transcoding to the actual storage target. Add a new nested error enum class to the base text output stream class "TextOutStreamErrs". It has one value currently, "FmtErr", the text of which will be the underlying C++ exception text.

  • Allow the Zone Violated/Zone Secure event trigger filters to optionally indicate a specific zone status field. That will allow for much better filtering since often that's specifically what you are interested in, a specific zone going into violated or secure mode. If no field is indicated it will just check for any zone violated or secured trigger.

  • Add a new GetZoneAlarmInfo() command on the TrgEvent target for retrieving Zone Alarm info when you receive one of those triggers. As with the others of that sort, it will return false if the event wasn't a zone alarm, else true and the provided variables are filled in. It returns the state string and the zone number reported by the driver.

  • Add new IsDevSource(targetvar) and IsFieldSource(targetvar) commands to the TrgEvent action target, so that you can quickly determine if an event has a device or field source. If so, they return true and fill in the target variable with the device or field name. Else they return false.

  • The CML IP end point class has a GetHostName() which will do a reverse lookup if needed to get the host name. And it has a GetAsText will return the original host name plus colon and port. Add a GetOrgAddr() to get the originally provided address (without port) back if it's needed. So, it's basically the same as GetAsText() but leaving the port off, which is often not wanted.

  • Argh.... The Omni driver is not doing the right thing for Zone alarm or load change triggers. It's passing the unit name as the source field, not the field name. This has to be changed, though it's probably going to break some people's stuff who just figured out by experiment that it wasn't sending the field and set up to use the name (always question if not in sync with documentation!) It can't be left like that because it's wrong and not sending out what it's supposed to. Sorry about that.

  • The action editor, if it invokes the file open dialog to allow you to browse to a file, is invoking it in 'open only' mode which means you have to select a file that exists, you can't enter a new one. Change it allow you to select a new file if that is desirable.

  • Add a couple new methods to the CML URL class. These are BuildURL() and BuildURL2(). These allow you to pass in the constituent parts of a URL and have it be built up with all the appropriate escapment of special characters and such. One takes a list of key/value pairs for the query parameters and one doesn't. They are BuildURL(protocolenum, user, pass, host, path, Frament) Returns String. The 2 version just adds a vector of key/value pairs at the end. They return a new string with the URL built into it.

  • The calendar widget has an issue in that once in a while a month needs six rows to display because of the way the days fall, currently it only supports 5.

  • In the bulk loader, add the ability to unload drivers (not just load new ones or replace existing ones.) So add an UNLOAD= /END UNLOAD block at the top (after the main block and before the DRIVERS block. It will be able to contain multiple child blocks later but currently just supports a DRIVERS=/END DRIVERS block. Each line inside the DRIVERS block is the moniker of a driver to unload. Since the program expects to see all blocks and the new one is the first one, you'll have to add at least an empty block at the top of any existing bulk loader config files (with an empty drivers/end drivers block inside it as well.
Dean Roddey
Explorans limites defectum
#7
Version 4.2.905 is posted. This one contains one significant new feature, support for the serial ports of GC-100s. See the notes at the end. The changes are:
  • Implement support for GC-100 serial ports, so that they will be available as regular serial ports in CQC. This involves creating a new virtual serial port type that works in terms of a socket connection to the GC-100, a new port factory to install with the comm port system to make the ports available and gen up new ones upon demand, and configuration in the Admin Intf to all the user to configure which GC-100s should be available for this purpose. There is also a requirement, upon saving new config, to let any loaded CQCServers know of the changes so that they can update their information about available GC-100s.

  • The HTTP client was not honoring the auto-authorization flag, so it would always try to auto-authorize if it got challenged and it was a Basic or Digest challenge.

  • And, to avoid breaking things and to maintain backwards compability, default the auto-authorization to disabled and require those that want it to enable it.

  • The JSON parse is leaking because the base class of the family of value nodes hadn't marked the destructor virtual, so the derived dtors of the array/object classes weren't being called and hence the things they contain weren't being cleaned up.


You can now use GC-100 serial ports as regular ports within CQC. To do you need to go to the Admin Intf. Go to Administer->Settings->GC-100 Ports. Here you can define which GC-100s you want to make available and enable which ports to make available on them.

Once you save the configuration, you will see these ports when selecting serial ports. You must give each one a short name (max of 8 characters) and that will be part of the port name. If you named a GC-100 "Bubba", a port on that one would look like:

/GC100/Bubba/COM1

So you can easily figure out which one has the port you are trying to get to. There are issues to consider when using these ports:
  • These ports only support 8 data bits, even or odd or no parity, can't support any of the control lines, and has limited baud rate support (older ones up to 19,200 and newer ones up to 57600. So any device that requires more than that will not work.
  • When you are configuring them, be sure to get the IP address right. The configuration dialog can't test them, because if you are using the GC-100 it's certain you'll have the GC-100 driver loaded, and we can't make another connection to the GC-100 to test for its presence. So we have to just assume the address is correct.
  • Also, because we can't make another connection, we can't set or query the port configuration. The virtual serial port support is way down below device drivers (for obvious reasons.) So there's no way it can be done via the GC-100 driver. So basically you must set up the serial ports via the GC-100's web interface to be correct for the target devices connected to the serial ports. Any port configuration info in the manifest will be ignored because it can't be sent to the GC-100.

You will of course need to unload any existing virtual com port software you have been using to support the GC ports, because this new feature takes the place of that software and they can't both connect.


There was a memory leak in the new JSON parser stuff, so if you are using a driver that makes extensive use JSON, parsing signficant amounts of data, the leak may become a problem for you. So you will want to upgrade to this version if so.
Dean Roddey
Explorans limites defectum
#8
The Software Gods mock us, therefore version 4.2.906 is posted. It takes care of some things that got broken in the process of moving things forward. The changes are:
  • The Tray Monitor logs errors when it closes and can't remove its name server entries (most likely because the service was already stopped, since the TM is often used to stop the service.)

  • The CML compiler is allowing you to pass in a constant or literal value to an Out or InOut parameter, which should not be possible because it's now going to write back to an object that is supposedly a literal or a constant. A number of shipped drivers had managed to do the wrong thing over time. These were fixed but this fix may also break third party drivers or macros, or macros of your own, if they have similar errors. The fixes are trivial though so it shouldn't be hard to get them taken care of. The the changes will be backwards compatible, and the system will be much more solid for this fix, painful though it might be for a little bit.

  • The recent changes to the HTML client support code broke the SendPOST2 CML method, because I was passing the output header list where the input header list should have been passed, so header lines weren't making it into the POST headers.

Note the red one. There was a bug in the CML compiler where it wasn't enforcing something important. Correctly written CML would work fine, but it would let something be done that shouldn't have been possible, something that could have caused various wierdnesses in CML based drivers over the years and been pretty difficult to figure out.

All of the shipped drivers that were affected by this were fixed, and the changes required are typically pretty small. But, if you are using third party drivers, or modified versions of shipped drivers, or have written CML macros for your own use, they may not compile after this upgrade and they'll need to be tweaked. It shouldn't be hard to do this, but of course it will be annoying for you until you get an updated one. Probably most stuff will be fine, but these errors could have crept into some and they will now cause compiler errors.

In the end though, this is an important fix and in the grander scheme of things the increased robustness of the product will far outweigh the fairly short term hassle of getting the drivers tweaked.

In other news, a wee error in the recent reworking of the HTTP code (early moves towards finally getting some SIP stuff working) broke the CML SendPost2() method if it depended on sending any outgoing header lines. This broke the Isy driver in particular (and the Isy driver was one also affected by the above error so if you are using a non-shipped version of it you will need to get it updated.)
Dean Roddey
Explorans limites defectum
#9
Version 4.2.907 is posted. It has some small new features and fixes, a couple updated drivers, and includes a pretty serious re-working of our URL supports. That latter is not something you'd really see much, though there are some new methods on the CML URL class. Mostly it's related to the similar HTTP changes a couple drops back, leading towards more things network in the future.

The changes are:
  • Enable the remote port server and the CML/PDL driver IDEs for the new GC-100 serial port support, so that those ports can be used for development purposes.

  • Get the updated LG TV driver into the build. It has a new command field for that supports one set of models that weren't supported by the original one. And it fixes an issue with the video mute.

  • Get the latest network monitor driver into the build (version 1.5)

  • Make the zone alarm event trigger filters more flexible. For IsZoneAlarm, IsZoneAlarmFor, and IsZoneAlarmFrom, allow an optional comparison value to test for a specific state. So you can make sure it's a specific state, in addition to being from a particular device or for a particular zone field. For the generic IsZoneAlarm one, the comp value would let you trigger on any new zone state for any device or field.

  • Rework our URL support to take it up another notch, making it much more compliant in terms of parsing or URLs and building up URLs based on relative and base URLs, and all the obscure rules thereof. Add some more methods at the CML URL class level to expose more functionality. Add support for sip URLs as well, in preparation for the future.

  • Update the Tray Monitor to log msgs about remote app invocations to the activity log window to aid in debugging, if in at least low verbosity level.

  • The Tray Monitor's support for the remote start app command may not work correctly all the time, because it wasn't making sure the TM pushed its (hidden) launcher window to the front before trying to start the app. That will sometimes cause the startup to fail, and may explain why it doesn't work right on XP.

  • Get the latest Audio Authority driver into the build, which is updated for the newer firmware version of these devices. The shipped version won't work with these newer ones.

  • The Logic Server is removing the wrong admin interface binding from the name server, it's removing the CQC Server binding and leaving it's own.

  • The RIVA server isn't calling its own cleanup method on shutdown, so it doesn't do various bits of cleanup it should, including removing name server bindings.

  • Update the triggered event filter dialog so that the entry field prefixes are blue for optional values and black for required values, to further help that screen be self-documenting.
Dean Roddey
Explorans limites defectum
#10
Oops, 908 was packaged incorrectly, and folks are having issues with it. My bad. I'm working too many hours and losing it. I'll put up a 909 here in an hour or so. It'll be the same as this, but just correctly packaged.

Version 4.2.908 is posted. This one represents a pretty big internal change for drivers. As with all such big ones, there's a small chance that, despite the fact that it is 99% fully solid again, that you may see a quirk or two. Just let us know about them and we'll look into it.

The big thing is that the way drivers work internally has been changed very significantly. The changes should make for a tighter, easier to maintain, and more robust driver system. It gets rid of a lot of historical small issues from the past. It will also allow for a number of new capabilities moving forward as well.

You shouldn't be really much aware of it. Drivers will unload and load and reconfigure asynchronously. I.e. where the Admin Intf used to wait for these things, now they are just queued up on the driver and control returns immediately. This is a much cleaner way of doing things, and you don't have issues like really slow drivers causing a timeout in the AI because it took to long to stop or reconfig.

Drivers can now choose to make themselves asynch wrt to client commands if they want. Currently the only one that I've enabled this on is the Leviton Z-Wave driver, as a test. This means that clients won't wait around for the potentially very piggy operations of the driver, and it also means that if another command comes in that would just override one already queued up, the one in the queue will just be updated with new data. This avoids issues where backedup commands would issue redundantly, and allows for more client command overlap by far when multiple clients are issuing commands.

It also means that just because a fld write returns that doesn't mean it has completed, it's only been queued up. So this is potentially a change. If you really have to be sure that something has completed before you continue in an action, you'd need to do a wait for field value type of command, for any drivers that are async like this. This will be a part of driver docs moving forward, though only really slow ones will really require it. Some others will probably be made async probably in the next release.

As of 4.2.907 there have been some improvements in standards compliance and some fixes in the CML compiler to catch more errors, which has broken some drivers. The shipped ones are fixed of course and the known broken third party ones have been fixed and new versions posted in their respective threads in the Beta Drivers section. If you find another one just let us know and we can fix it. The fixes are typically pretty simple.

So, anyhoo, though there may be some slight risk that this one may not be perfect for you, please update if you can risk it since it's important to test out the changes here and you may find it's a good bit faster potentially. Just let the installer do a backup for you and it's fairly risk free to do it.

The changes in this version are:
  • The Tekmar gateway seems to get slower and slower to respond as more thermos are attached, and some commands can take a long time to complete, which is causing the driver to timeout and cycle. See if we can get away with extending those timeouts, or if we will have to take more radical action.

  • The driver state logic had gotten to the point where the per loop interval time was being done the first time through, instead of after the first time. So the poll callback wouldn't happen the first time after connecting. If the driver had a long poll time it could be a while before the first poll.

  • Do a pretty substantial re-work of the driver logic, changing it so that all methods that would call out to the driver callbacks are now queued up on the driver and processed asynchronously, and the client call can either block and wait on it or just return immediately. See the post comments above.

  • Though it's not being exposed yet, go through and add a wait type parameter on the field write and non-query oriented driver backdoor calls, to let the caller indicate wait preference. It can wait or not wait unconditionally, or just accept the recommended driver waiting policy. For all of the general ways in which fields are writting to currently (simple field I/O CML class, Devices action target and such) set them all to use the driver's suggested policy. We can later add new options on these things to allow indicating a preference as well. The driver can choose to update existing queued commands of the same type with a new incoming one, and if the client doesn't wait, it's always done. This prevents overload of the driver with too many queued up commands, and makes slow devices much more efficient, since it makes no sense to write one value and another right behind it. Currently no drivers set a no wait policy, so so far nothing really has changed as far as user logic is concerned.

  • Update some of the client side drivers for slower devices, like Z-Wave, so that setting new configuration is a no-wait deal, so that they can just drop off the new config and come back, because some of these devices take a lot of time to respond to such requests. We also make pause/resume commands async from the host admin dlg, so that the Admin Intf. doesn't get stuck waiting for a driver to recycle. It just queues up the command and comes back.

  • Dump the dedicated client side drivers for the Dwin HD700, Lexicon MC-1, Quadscan, Extron VSC, and Kramer 2053. These are just vestiages of an ancient version of CQC where client side drivers were the only device manipulation interface. There's just no need to keep them around these days. It's just code being maintained and constantly rebuilt for no real reason.

  • If you try to run the Logic Server config from the Admin Intf. and it's not running, the warning msg box that comes up uses the new dialog as the owner window, but it's not created yet, so it gets a default and comes up on the main monitor, no matter what monitor the AI is currently running on. It should use the new dialog's incoming owner window for that.

  • Change the logic for removing server side drivers. There are tricky issues. We can't remove the driver from CQCServer's list until the driver is down, else someone could try to load another with the same moniker (probably another instance of the same driver) while the old one is still trying to talk to the device. But we don't want to hang up CQCServer while it's happening, and hence hold up the client that started the process and other client operations. So, instead we'll now just set a flag on the driver to trigger it to start the shutdown process the driver's own thread. It will stay the list in the meantime and will just show up as offline while it's going down. Create a scavenger thread in CQCServer to scan every few seconds or so for drivers that have gone to terminated state and remove them. This is a much cleaner scheme. This also allows for fully parallel driver shutdown when CQCServer stops, which was not the case before..

  • The CML string input text stream is setting a copy of the caller's string on the stream, since it can't let the C++ stream ref the CML string. But it's not telling the stream to adopt the string, so they getting leaked when the stream is destructed.

  • The System::Email action command somehow got lost a while back. Put it back and make sure it still works.

  • The Text tab isn't being added to the widget config dialog for special action buttons or Inc/Dec buttons, so you can't set or change the text on those.

  • The task scheduler API we use isn't available on all OS versions, so test for availability and if not there gray it out.

  • Make a couple more low level file system operations tolerant of abusive anti-virus programs poking around and getting in the way.

  • The Weather Underground driver is storing the same value for sunrise and sunset times.

  • The IsZoneViolated event filter was just checking to see if the value was secure, and then negating the result. But of course this would return true if was anything but violated, including empty or a non-valid value.

  • Update the Squeezebox, RRS, and Recipe drivers for the CML compiler change that now correctly catches attempts to pass const objects to non-const method parameters, and some changes in URL parsing. These are posted in their respective threads on the forum.

  • If you run the uninstaller and the 'are you sure' message box is displayed and you hit escape it will go ahead and do the uninstall. It should exit without doing the uninstall.

  • The uninstaller will say that errors occurred if the service removal operation gets 'marked for removal' return, which is an error return but not really an error. It should treat that as a success.

  • The source templates for the auto-generation system had somehow turned on per-user limits on the volume slider, so you couldn't go beyond like 75 or 85 or some such. Disable that. Maybe we can allow that to be configured at some point in the auto-generation configuration setup.

  • The animated widget is not showing if the associated field comes out false in the expression. It should just show the 0th image when the expression comes out false.

  • There was a small error in the ORB where, if things were running slow and a response came in just at the last little bit before it would have timed out, it would still give a partial ORB packet error even though it had actually gotten a valid packet.

  • The CML driver IDE doesn't always get the currently set verbosity set on the driver when it first starts up, making it harder to debug the init, config, and connect phases of the driver.
Dean Roddey
Explorans limites defectum


Possibly Related Threads...
Thread Author Replies Views Last Post
  5.5 Beta Discussions Thread Dean Roddey 8 330 07-07-2019, 11:32 AM
Last Post: Dean Roddey
  Official 5.5 Beta Release Thread Dean Roddey 2 154 07-07-2019, 11:28 AM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 43,813 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 7,843 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 154,279 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 8,261 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 89,559 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 9,031 10-09-2017, 06:49 PM
Last Post: Dean Roddey
  Official 5.1 Beta Discussion Thread Dean Roddey 453 200,257 05-16-2017, 03:45 PM
Last Post: Dean Roddey
  Official 5.1 Beta Release Thread Dean Roddey 28 19,880 05-12-2017, 05:44 PM
Last Post: Dean Roddey

Forum Jump:


Users browsing this thread: 1 Guest(s)