// ***************************************************************************** // * Tcl/Tk Interface to cdev // ***************************************************************************** 1) All communication is through strings, the cdevdata object takes care of all conversion. 2) Use a 'get' in your client code, 'find' will not do type conversions. 3) syntax: cdev $service $message "$tag1 $val1" "$tag2 $val2" ... or cdev $service $message "$tag1 $val1" "$tag2 $val2" $cb where: $service is any cdev service, i.e. "model", "IPM1A01" $message a message to that device, i.e "get elements" the rest of the arguments are list of length 2 with the first entry the tag name, and the second the tag value. If the length of the last list is 1 the cdev routine sendCallback is used instead of the synchronous send. The result of the call will appear in the tcl array "$Control($cb)" in due time. On return only the 'value' tag will be converted into a tcl result, arbitrary dimensional results are handled. Error handling: See code for 'status' and 'severity' tag handling, this will be superseded by real cdev errorhandler interface Bugs: Cannot send space delimited string since the interface will parse these up as char**'s examples: cdev IPM1S01 "get XPOS" cdev IPM1S01 "monitorOn XPOS" IPM1S01.XPOS results appear in $Control(IPM1S01.XPOS) cdev model "get elements" "value quads" "section {arc1 arc2 arc3}" value is char* section is char** length 3