nxscript.c SICS-295

Restored a modification made in revision 1.7 which was reverted during the PSI update (2/10/08) probably when investigating SICS-291

hmm_configuration_common_1.tcl
Added hmm ratemap_xy_max_bin and ratemap_xy_total

site_ansto/hardsup/sct_galilprot.c
site_ansto/hardsup/makefile
Started adding galil protocol for script-context controllers.

sans/config/parameters/parameters.tcl
SICS-180 BeamCenterY should have been BeamCenterZ

r2742 | ffr | 2008-11-07 10:13:51 +1100 (Fri, 07 Nov 2008) | 13 lines
This commit is contained in:
Ferdi Franceschini
2008-11-07 10:13:51 +11:00
committed by Douglas Clowes
parent a00b32dbe4
commit 283c7d56dc
5 changed files with 93 additions and 9 deletions

View File

@@ -668,6 +668,7 @@ static int listToArray(SicsInterp *pSics, char *list,
return TCL_OK; return TCL_OK;
} }
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
#define HANUM 3
static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self, static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
int argc, char *argv[]){ int argc, char *argv[]){
int start[NX_MAXRANK], size[NX_MAXRANK]; int start[NX_MAXRANK], size[NX_MAXRANK];
@@ -675,6 +676,9 @@ static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
pHistMem mem = NULL; pHistMem mem = NULL;
HistInt *histData = NULL; HistInt *histData = NULL;
pSICSData data = NULL; pSICSData data = NULL;
char buffer[256];
enum histargs {haStart, haLength, haBank};
int i, haIndex, hpars[HANUM], haFirst=6;
if(argc < 6){ if(argc < 6){
SCWrite(pCon,"ERROR: insufficient number of arguments to putslab", SCWrite(pCon,"ERROR: insufficient number of arguments to putslab",
@@ -705,12 +709,36 @@ static void putSlab(SConnection *pCon, SicsInterp *pSics, pNXScript self,
*/ */
mem = (pHistMem)FindCommandData(pSics,argv[5],"HistMem"); mem = (pHistMem)FindCommandData(pSics,argv[5],"HistMem");
if(mem != NULL){ if(mem != NULL){
if (argc == 6) {
histData = GetHistogramPointer(mem,pCon); histData = GetHistogramPointer(mem,pCon);
} else if (argc > 6) {
for (i=0, haIndex=haFirst; i < HANUM; i++, haIndex++) {
status = Tcl_GetInt(InterpGetTcl(pSics),argv[haIndex],&hpars[i]);
if(status != TCL_OK){
sprintf(buffer,"ERROR: failed to convert %s to integer",
argv[haIndex]);
SCWrite(pCon,buffer,eError);
return;
}
}
histData = (HistInt *)malloc(hpars[haLength]*sizeof(HistInt));
if(!histData){
SCWrite(pCon,"ERROR: out of memory for reading histogram memory",
eError);
return;
}
memset(histData,0,hpars[haLength]*sizeof(HistInt));
status = GetHistogramDirect(mem,pCon,hpars[haBank],
hpars[haStart],hpars[haStart]+hpars[haLength],histData,
hpars[haLength]*sizeof(HistInt));
}
if(histData){ if(histData){
status = NXputslab(self->fileHandle, histData, start, size); status = NXputslab(self->fileHandle, histData, start, size);
if(status == NX_OK){ if(status == NX_OK){
written = 1; written = 1;
} }
if (argc > 6)
free(histData);
} }
} }

View File

@@ -10,7 +10,7 @@ SRC = .
CC = gcc CC = gcc
CFLAGS = -g -DLINUX $(DFORTIFY) -I$(SRC) -I../.. -Wall -Wno-unused CFLAGS = -g -DLINUX $(DFORTIFY) -I$(SRC) -I../.. -Wall -Wno-unused
HOBJ= nhq200util.o itc4util.o lh45util.o lakeshore340util.o west4100util.o asynsrv_utility.o geterrno.o strjoin.o chopper.o modbustcp.o HOBJ= nhq200util.o itc4util.o lh45util.o lakeshore340util.o west4100util.o asynsrv_utility.o geterrno.o strjoin.o chopper.o modbustcp.o sct_galilprot.o
libhlib.a: $(HOBJ) libhlib.a: $(HOBJ)
rm -f libhlib.a rm -f libhlib.a

View File

@@ -0,0 +1,42 @@
#include <errno.h>
#include <ascon.h>
#include <ascon.i>
#include <dynstring.h>
int GalilProtHandler(Ascon *a) {
int ret;
char chr;
switch(a->state){
case AsconReadStart:
DynStringClear(a->rdBuffer);
a->start = DoubleTime();
ret = AsconReadChar(a->fd, &chr);
switch (chr) {
case ' ':
a->state = AsconReading;
break;
case '?':
AsconError(a, "Galil Error", errno);
a->state == AsconReadDone;
break;
case ':':
a->state == AsconReadDone;
break;
}
break;
default:
return AsconStdHandler(a);
}
return 1;
}
void AddGalilProtocoll(){
AsconProtocol *prot = NULL;
prot = calloc(sizeof(AsconProtocol), 1);
prot->name = strdup("galil");
prot->init = AsconStdInit;
prot->handler = GalilProtHandler;
AsconInsertProtocol(prot);
}

View File

@@ -1,5 +1,5 @@
# $Revision: 1.42 $ # $Revision: 1.43 $
# $Date: 2008-10-27 04:55:41 $ # $Date: 2008-11-06 23:13:50 $
# Author: Ferdi Franceschini # Author: Ferdi Franceschini
# Based on the examples in the hs_test.tcl sample configuration by Mark Lesha. # Based on the examples in the hs_test.tcl sample configuration by Mark Lesha.
# http://gumtree.ansto.gov.au:9080/nbicms/bragg-systems/histogram-server/hs_test.tcl/view # http://gumtree.ansto.gov.au:9080/nbicms/bragg-systems/histogram-server/hs_test.tcl/view
@@ -1576,6 +1576,20 @@ sicslist setatt ::histogram_memory::time long_name time
sicslist setatt ::histogram_memory::time mutable true sicslist setatt ::histogram_memory::time mutable true
sicslist setatt ::histogram_memory::time units seconds sicslist setatt ::histogram_memory::time units seconds
::utility::macro::getset int ::histogram_memory::ratemap_xy_max_bin {} {
return "ratemap_xy_max_bin = [lindex [hmm configure ratemap_xy_max_bin] 2]"
}
sicslist setatt ::histogram_memory::ratemap_xy_max_bin klass detector
sicslist setatt ::histogram_memory::ratemap_xy_max_bin long_name max_binrate
sicslist setatt ::histogram_memory::ratemap_xy_max_bin mutable true
::utility::macro::getset int ::histogram_memory::ratemap_xy_total {} {
return "ratemap_xy_total = [lindex [hmm configure ratemap_xy_total] 2]"
}
sicslist setatt ::histogram_memory::ratemap_xy_total klass detector
sicslist setatt ::histogram_memory::ratemap_xy_total long_name total_maprate
sicslist setatt ::histogram_memory::ratemap_xy_total mutable true
## ##
# @brief Update the beam monitors when the histmem has finished counting. # @brief Update the beam monitors when the histmem has finished counting.
proc ::histogram_memory::countend_event {} { proc ::histogram_memory::countend_event {} {

View File

@@ -65,7 +65,7 @@ foreach {var lname nxname units priv } {
BSZmm BSZmm z mm user BSZmm BSZmm z mm user
Transmission Transmission Transmission 1 user Transmission Transmission Transmission 1 user
BeamCenterX BeamCenterX BeamCenterX mm user BeamCenterX BeamCenterX BeamCenterX mm user
BeamCenterY BeamCenterY BeamCenterY mm user BeamCenterZ BeamCenterZ BeamCenterZ mm user
} { } {
::utility::mkVar $var float $priv $lname true parameter true true ::utility::mkVar $var float $priv $lname true parameter true true
if {$units != 1} { if {$units != 1} {