AVS Forum banner
Status
Not open for further replies.
1 - 14 of 14 Posts

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #1 ·
* Posted with permission from AVS *


I'm finally on the up slope of the journey to the next generation of CQC -The Charmed Quark Controller , and I just wanted to get a little feedback on some of the new functionality that it will include, hopefully so that if anyone sees any shortcomings I can deal with them earlier rather than later. This next release is going to be 0.9.0, which will be the first candidate for a 'blessed release'. As soon as the bugs are worked out of it and any serious user issues dealt with, it will, after seemingly centuries, be available for sale as a commercial product.


* Note that the web site current describes the released version, not the upcoming version being discussed here!


I had hoped to get the 1.0 release out about a month ago. However, after discussion with beta uses, who confirmed some concerns I had, I decided to step back and take a bigger bite out in preperation for the next release. There were two primary reasons. One was ability for users to customize the product and ability for users to create their own interfaces to devices without any C++ programming.


Customization is done in a number of ways, some of them graphical via drawing tools and configuration, but also via macro programs, which are just text files of commands that cause sequences of things to happen. The CQC version currently out there has a macro language, but it's rather simple and difficult to extend. The current version also has a means for users to integrate their own devices into CQC, a protocol description language in which you describe the protocol in a text file. It worked out ok, but wasn't nearly powerful enough to handle more complex devices.


So, in order to basically kill two birds with one bush, I decided to ditch both the macro language and protocol language, and instead create a very powerful macro language which could be used both for customization and for creating device interfaces. The outcome of this, the result of a few months of insane work, is a very powerful, object oriented, macro language with it's own graphical development environment (integrated debugger and editor), a nice runtime library, and a device driver (in the CQC sense, not in the Windows sense) development and macro development framework based on that IDE and macro engine.


This means that the next version of CQC will be able to support almost any sort of device completely without any C++ code at all, and that your CQC macros will be fully debuggable in a visual debugger that provides you most of the conveniences you'd expect from a language IDE (break points, single stepping, display of parameters, members, and locals, redirection of console output, integrated editor/debugger, click on compile error to go to error, call stack window, etc...)


There will still be C++ drivers that I'll do, for some types of devices which are still a little complex to do in the macro language, mostly because they are core parts of CQC system, such as the X-10 driver, which supports different module types and soon different controller types and has lots of configuration and such, or the IR device drivers, for similar reasons plus it needs training interfaces and whatnot. But in terms of A/V or home automation devices, the ones that you'd want to be able to interface to CQC, you should be able to pretty much handle any of them with minimal to no compromise.


I've just completed the first macro based driver, which is for a simple Kramer video switcher that I often use as a guinea pig for binary type protocols (as apposed to ASCII text protocols), and I've posted the code for it here , if you would like to look at it. The protocol is simple and is documented in the file comments. The language isn't documented yet, so you'll kind of have to pick it up as you read, but if you are familiar with Java or C++ or C#, you'll probably have no problem with it. It's a combination of Java, C++, and Modula3 concepts mostly. It is very strictly OO, and leans towards safety over convenience and speed, as is appropriate for a language used for what it will be used for, i.e. automation.

Here is a screen cap of the IDE showing most of it's windows open, to give you a feeling for what it is like. This same IDE is used when you write a macro or create a device driver. The editor handles multiple files at once, and the compiler uses your local changes so you don't have to save to test. CQC, if you aren't familiar with it, is a fully distributed system. Macros are saved on a 'master server' and are easily editable or runnable from any machine on the network running CQC. It is also fully secure and account based, so only admins can run the IDE and manage macros (and other important system configuration.) You can create common macros and use them from other macros just by importing them, with a syntax like the Java classpath.


Anyway, this is a major step forward towards making CQC not just a product but a complete platform for distributed control and processing. I'll soon add a 'scheduled events' server as an optional component and you'll be able to create very powerful macros that automate your home and home theater by either running periodically or based on events occuring in the system. And, since CQC is all about two way control, your macros can look around at any device states in the network and decide what it should do, allowed for slick coordination of disparate subsystems that would otherwise not understand how to work together.


I hope that you'll take a moment and check out this new functionality and give me some feedback. Please feel free to ask any questions you might have or let me know about any concerns. You can do it here, or you can do so on the Charmed Quark discussion forum (link is at the top of the main page), if you don't want to bog down AVS with CQC specific discussion. There are already threads over there about the new macro language and the macro based driver system.


I can't say for sure how much longer till 0.9.0, but the far and away biggest chunk of work is basically done and mostly debugged now. I'll provide more information as I become more sure of things. I'll probably be getting a little hacked up toolkit available to people who've done drivers in the current system, to let them get a chance to start working on converting their drivers to the new system as soon as possible. I'll be more than happy to give a free copy of each new release to anyone who completes a quality driver and keeps it tested and up to date for that release (and of course who provides the macro source code for integration into CQC releases, by releasing the code to Charmed Quark for future distribution.)
 

·
Registered
Joined
·
4,321 Posts
Hi Dean,


Okay, so lets say I think I'm interested in the product but looking at the information and your screenshots, I still don't have a good grasp of what this software does. I know it is used for controlling other hardware, but assume that I am a neophyte (that I am), can you describe in very short sentences what this program will do for me, or is this program strictly for the programmer types?
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #3 ·
The main web page describes it pretty well, but to take a stab a 100 words or less, it is basically a Crestron-like system, but based on PC hardware and fully network distributed. It's very useful without any programming skills, I was just concentrating on that aspect of it since it is going to be one of the hugest improvements in the upcoming release. Basically you can:


1. Run it on any machine in your network, with any machine controlling devices and any machine running client GUI interfaces. Configuration of CQC and control and monitoring of devices is fully distributed around the network (though you can run it on a single machine as well, if that's what you want to do.)

2. Control IR devices, and control CQC (and any devices it controls) via IR remote

3. Draw your own interfaces that display information from any devices being controlled by CQC anywhere on the network, and which control any devices being controlled by CQC anywhere on the network.

4. Control X-10 devices

5. Control serial and IP based devices (and other types as that becomes useful, e.g. USB), and create your own interfaces to those devices using the new macro language based drivers as discussed in the original post.

6. Create powerful macros based on the new macro language, which can look at the state of any devices around the network and control them based on what they see.

7. There are two types of 'actions', one is invoking a macro and the other is a simple list of writes of values to device fields, and these can be mapped to keyboard hot keys, IR remote buttons, or buttons on interfaces that you draw.

8. It is a secure system in which each user has an account which limits their access to CQC functionality, so you can let the family units use it without exposing functionality that they should see. You can set login time limits.

9. It has a simple XML based gateway server that will allow third party clients (such as PocketPC clients) to access device information, invoke macros, and write values to devices. No one is officially using this gateway yet, but it's there and ready for anyone to use who wants to do such a CQC integration.


The basic jist of using it is that you install a 'master server' component on one machine in the network, the CQCServer component on any machines that need to be connected to devices, and CQCClient on any machines where you want to run client interfaces. You can install them all on one machine or distribute them around the network as required. The official version will be a license to run the master server, and the others will be unconstrained, so effectively it will be a license for the network, though there may be a couple of 'strata' of number of clients allowed. You load drivers for the devices you want to support (out of the list of those provided of course, or you can create your own if you are reasonably technical) to those machines running CQCServer (which can all be done from any machine on the network, since the drivers are 'pushed' out to the target machine you select to load them to), and connect them with the appropriate cable. Once CQC is talking to the device, you can then set up IR control of CQC (via IRMan), train it for control of IR devices (via RedRat now, soon to be some others as well), set up key mappings, user accounts, and draw interfaces you want to use.


Does that make sense? If not, feel free to ask any other questions. The big reason for the emphasizing the new macro language capabilities is that this opens up CQC for people to use it even more as a 'platform', in addition to as a product. I.e. people will be able to develop drivers for their own purposes or for other users to use, or develop macros designed to do useful things with particular devices, or which are designed to implement certain types of automation logic.
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #4 ·
Hey guys, I'm starting to work on the new web site content for the next drop of CQC. I'd like some feedback on the look and feel and so forth. If you have a moment, take a peek at it and let me know what you think. A lot of the technical documents are just stubbed out right now, for the installation and configuration of the product, since those things are going to change in the new release, and the supported devices list only has a couple of place holder documents since I've not finished updating all of those pages. But, a lot of new stuff is in there, in particular related to the new powerful macro language (as discussed above, one of the big new features in this upcoming release.)

Here is a link to the preview content. Keep in mind that everything there is subject to change, since it's just preview content. The main web site ( www.charmedquark.com ) is still the official word until the new release comes out.


Also not mentioned there, since I've not got around to adding it, but anyone who does a quality CQC driver for a non-trivial device will get CQC for free. In subsequent releases, if you insure that the driver continues to work and keep it going, you'll continue to get it for free. You just have to assign copyright to the driver classes (written in the new macro language) to yourself and Charmed Quark Software so that it can be distributed with the product without restrictions.


I'm going to be providing a preview drop of the driver development kit in the next day or so, which allows you to develop your driver in a simpler, offline environment. If it works there, it'll work under CQC proper. I have a few folks who have done drivers in the old serial protocol language scheme that existing CQC versions support, who will be upgrading their drivers for the new scheme. But if any of you are interested in using CQC and getting your devices under control, let me know and I'll give you a copy of this development kit preview drop. The development kit is based on the new macro language IDE that will also be part of the upcoming release, so it's a nice, video development tool that really makes it far easier to develop a driver, using a simple but powerful object oriented language.
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #5 ·
I've posted the preview drop of the test harness. So, if anyone is interested, just drop me a line and I'll get you going.
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #6 ·
Gawd this forum moves too fast. Just one bump to make sure this gets seen.
 

·
Registered
Joined
·
2,195 Posts
So is it kinda like VNC then?
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #8 ·
No, nothing like that it. It's more like a PC based Crestron system. It's a PC based, network distributed, control and automation system for home and home theater.
 

·
Registered
Joined
·
2,195 Posts
What is a creston system?


Also the way in which you describe your system is a little bit to technical. Maybe just a quick summary like ZP or Xlobby2.0 does would help out a bit.
 

·
Registered
Joined
·
1,448 Posts
Dean,


just my 2 cents. If you are really going to take this main steam you need to bump up some of the marketing.


1 - the web site does not explain in simple terms what your system will do for me. So I will not need a remote control? will it work with my HTPC and another monitor or do I want a separate system. Put a chart comparing what the Creston does to yours. How hard is it to get the Macros working.

Rember, make the consumer know that it will work, will be simple, will not take much time to set up, will work with the whole family not just the PC geek


2- Web site need to be a little better looking. The print on that background is a little hard to read, the format with simple paragraphs just going down a page does not look interesting


3 - Not sure what the meaning for the name is 'Charmed quark', but may want to consider something the will stick with your consumers. Charmed quark does not make me think of something that will make my life simpler, cooler and have anything to do with Home Theater.



Good luck, hope you strike it big time!


Goo
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #11 ·
Thanks for the feedback. I'm working on a new web site now and I will try to address these issues. Here is the link to the preview content. I'll be getting more images and whatnot on it, but right now I'm just concentrating on content, and mostly on technical content in order to help the folks doing device drivers to get going early.


The marketing has stayed lower key so far because it's not quite ready to go yet. I've slowly ramped it up as it's gotten closer, and when the 0.9.0 relese comes out (which will, after any bugs are fixed become 1.0) I will start it in earnest.


The Charmed Quark name is a keeper though. I purposely don't want a name that implies a particular product or area. That is a mistake that many companies make then regret when they try to move beyond that type of product. But the other issues I will deal with. What does 'Crestron' mean? :)
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #12 ·
Quote:
What is a creston system?
Crestron is a control and automation system. It's based on proprietary hardware and quit expensive. CQC is basically along the same lines, but based on inexpensive PC/network commodity hardware, with the software turning it into a similar system, for a lot less money and with a lot more flexibility and network distributed.

Quote:
Also the way in which you describe your system is a little bit to technical. Maybe just a quick summary like ZP or Xlobby2.0 does would help out a bit.
Yes, I will deal with that in the new web site, providing more up front information. It will always be more difficult to describe that something like ZP since it is probably 10 or 20 times larger and more complex than that kind of program (coming up on 400,000 lines of source code) but I'll try to provide more preliminary information definition.
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #13 ·
BTW, here is a CQC device driver for the HAI Omni family of panels, written in the new CQC macro language. This pretty much shows that the language is powerful enough to handle a quite complex device and protocol. So technically minded users should be able to get pretty much any device under control without any C++ code and using the driver development tools provided by CQC in th upcoming 0.9.0 release.


There are five files involved in this driver so far:
  • DriverImpl.mengc . The main driver implementation class.
  • OmniHelpers.mengc . Gets some grunt work, bulky code out of the main class to keep it more readable.
  • OmniInfo.mengc . Just contains types and literals used by other classes.
  • OmniItem.mengc . The Omni has a lot of things that are dynamically discovered, because they are optional on any particular panel. So we need to track them and be able to convert between the name, the Omni item number, and any field ids that we associate with an item of a particular type. So we keep some lists of these items, one list for each type of item (button, unit, area, etc...)
  • OmniMsg.mengc . Hides the complexities of dealing with the Omni message format.


The driver test harness part of the upcoming release has been in the hands of some long term testers for a bit now, and I'm about to do the 4th drop of it. It's getting pretty well worked out now. So, if anyone else is interested in getting access to it so that you can do a CQC device driver, let me know. You will get a free copy of CQC for as long as you maintain one or more drivers, and share the copyright with Charmed Quark Software so that it can be freely distributed with the product, so it's a good way to get a free copy of a very powerful tool while simultaneously making that tool useful for your own purposes.
 

·
Registered
Joined
·
19,586 Posts
Discussion Starter · #14 ·
And here is a first whack at the Digital Leeza driver. I still have to add support for some more fields, but this is a good example of what a CQC driver for a purely ASCII based driver would be like. It's fairly straightforward for a device like the Leeza which only speaks when spoken to.
 
1 - 14 of 14 Posts
Status
Not open for further replies.
Top