- Major changes folling the rework of the connection object
- Added support for galil controllers
This commit is contained in:
87
amorstat.c
87
amorstat.c
@@ -54,15 +54,18 @@
|
||||
static int iTOF = 0;
|
||||
static pHistMem pHMHM = NULL;
|
||||
/*-------------------------------------------------------------------------*/
|
||||
static int HMCountStartCallback(int iEvent, void *pEvent, void *pUser,
|
||||
commandContext cc)
|
||||
static int HMCountStartCallback(int iEvent, void *pEvent, void *pUser)
|
||||
{
|
||||
SConnection *pCon = (SConnection *)pUser;
|
||||
const float *fTime = NULL;
|
||||
int *iTime = NULL;
|
||||
int iLength, iRet, i;
|
||||
|
||||
assert(pCon);
|
||||
/* check kill condition */
|
||||
if(pCon == NULL || !SCisConnected(pCon))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(iEvent == COUNTSTART)
|
||||
{
|
||||
@@ -80,18 +83,15 @@
|
||||
iTime[i+1] = htonl((int)((fTime[i]/10.)*65536.));
|
||||
}
|
||||
/* send new time binning to all clients */
|
||||
SCPushContext2(pCon,cc);
|
||||
SCWrite(pCon,"TOFClear",eError);
|
||||
SCWriteUUencoded(pCon,"arrowaxis_time",iTime,
|
||||
(iLength+1)*sizeof(int));
|
||||
SCPopContext(pCon);
|
||||
free(iTime);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/*-------------------------------------------------------------------------*/
|
||||
static int ScanStartCallback(int iEvent, void *pEvent, void *pUser,
|
||||
commandContext cc)
|
||||
static int ScanStartCallback(int iEvent, void *pEvent, void *pUser)
|
||||
{
|
||||
float *fAxis = NULL;
|
||||
int *iAxis = NULL;
|
||||
@@ -100,9 +100,13 @@
|
||||
SConnection *pCon = (SConnection *)pUser;
|
||||
pScanData pScan = (pScanData)pEvent;
|
||||
|
||||
assert(pCon);
|
||||
assert(pScan);
|
||||
|
||||
|
||||
/* check kill conditions */
|
||||
if(pCon == NULL || !SCisConnected(pCon))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(iEvent == SCANSTART)
|
||||
{
|
||||
@@ -124,19 +128,16 @@
|
||||
iAxis[i+1] = htonl((int)(fAxis[i]*65536.));
|
||||
}
|
||||
/* send new axis to client */
|
||||
SCPushContext2(pCon,cc);
|
||||
SCWrite(pCon,"SCANClear",eError);
|
||||
SCWriteUUencoded(pCon,pBueffel,iAxis,
|
||||
(iLength+1)*sizeof(int));
|
||||
SCPopContext(pCon);
|
||||
free(iAxis);
|
||||
free(fAxis);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/*------------------------------------------------------------------------*/
|
||||
static int ScanPointCallback(int iEvent, void *pEvent, void *pUser,
|
||||
commandContext cc)
|
||||
static int ScanPointCallback(int iEvent, void *pEvent, void *pUser)
|
||||
{
|
||||
long *lData = NULL;
|
||||
int *iData = NULL;
|
||||
@@ -144,9 +145,12 @@
|
||||
SConnection *pCon = (SConnection *)pUser;
|
||||
pScanData pScan = (pScanData)pEvent;
|
||||
|
||||
assert(pCon);
|
||||
assert(pScan);
|
||||
|
||||
|
||||
/* check kill conditions */
|
||||
if(pCon == NULL || !SCisConnected(pCon)){
|
||||
return -1;
|
||||
}
|
||||
|
||||
if( (iEvent == SCANPOINT) || (iEvent == SCANEND) )
|
||||
{
|
||||
@@ -166,7 +170,6 @@
|
||||
iData[i+1] = htonl((int)(lData[i]));
|
||||
}
|
||||
/* send counts to client */
|
||||
SCPushContext2(pCon,cc);
|
||||
SCWriteUUencoded(pCon,"arrow_spinupup",iData,
|
||||
(iLength+1)*sizeof(int));
|
||||
/* send counts for other detector */
|
||||
@@ -178,7 +181,6 @@
|
||||
SCWriteUUencoded(pCon,"arrow_spinuplo",iData,
|
||||
(iLength+1)*sizeof(int));
|
||||
/* to do: check for polarization and send spinlo */
|
||||
SCPopContext(pCon);
|
||||
free(iData);
|
||||
free(lData);
|
||||
}
|
||||
@@ -214,21 +216,25 @@
|
||||
return 0;
|
||||
}
|
||||
/*------------------------------------------------------------------------*/
|
||||
static int LoadCallback(int iEvent, void *pEvent, void *pUser,
|
||||
commandContext cc)
|
||||
static int LoadCallback(int iEvent, void *pEvent, void *pUser)
|
||||
{
|
||||
pAmorStat pAS = NULL;
|
||||
SConnection *pCon = NULL;
|
||||
|
||||
|
||||
pCon = (SConnection *)pUser;
|
||||
|
||||
/* check kill conditions */
|
||||
if(pCon == NULL || !SCisConnected(pCon))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(iEvent == FILELOADED)
|
||||
{
|
||||
pAS = (pAmorStat)pEvent;
|
||||
pCon = (SConnection *)pUser;
|
||||
assert(pAS);
|
||||
assert(pCon);
|
||||
SCPushContext2(pCon,cc);
|
||||
SendLoadedData(pAS,pCon);
|
||||
SCPopContext(pCon);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -394,7 +400,6 @@
|
||||
long lID;
|
||||
pDummy pDum = NULL;
|
||||
pICallBack pCall = NULL;
|
||||
commandContext comCon;
|
||||
|
||||
assert(self);
|
||||
assert(pCon);
|
||||
@@ -403,11 +408,9 @@
|
||||
iTOF invoke the apropriate callbacks in order to force
|
||||
an initial update.
|
||||
*/
|
||||
comCon = SCGetContext(pCon);
|
||||
/* file load callback */
|
||||
lID = RegisterCallback(self->pCall, comCon,FILELOADED, LoadCallback,
|
||||
pCon, NULL);
|
||||
SCRegister(pCon,pServ->pSics, self->pCall,lID);
|
||||
lID = RegisterCallback(self->pCall,FILELOADED, LoadCallback,
|
||||
SCCopyConnection(pCon), SCDeleteConnection);
|
||||
SendLoadedData(self,pCon);
|
||||
|
||||
/* scan object */
|
||||
@@ -415,19 +418,16 @@
|
||||
pCall = pDum->pDescriptor->GetInterface(pDum,CALLBACKINTERFACE);
|
||||
if(pCall)
|
||||
{
|
||||
lID = RegisterCallback(pCall,comCon,SCANSTART,ScanStartCallback,
|
||||
pCon, NULL);
|
||||
SCRegister(pCon,pServ->pSics,pCall,lID);
|
||||
lID = RegisterCallback(pCall,comCon,SCANPOINT,ScanPointCallback,
|
||||
pCon, NULL);
|
||||
SCRegister(pCon,pServ->pSics,pCall,lID);
|
||||
lID = RegisterCallback(pCall,comCon,SCANEND,ScanPointCallback,
|
||||
pCon, NULL);
|
||||
SCRegister(pCon,pServ->pSics,pCall,lID);
|
||||
lID = RegisterCallback(pCall,SCANSTART,ScanStartCallback,
|
||||
SCCopyConnection(pCon), SCDeleteConnection);
|
||||
lID = RegisterCallback(pCall,SCANPOINT,ScanPointCallback,
|
||||
SCCopyConnection(pCon), SCDeleteConnection);
|
||||
lID = RegisterCallback(pCall,SCANEND,ScanPointCallback,
|
||||
SCCopyConnection(pCon), SCDeleteConnection);
|
||||
if(iTOF == 0)
|
||||
{
|
||||
ScanStartCallback(SCANSTART,pDum,pCon,SCGetContext(pCon));
|
||||
ScanPointCallback(SCANPOINT,pDum,pCon,SCGetContext(pCon));
|
||||
ScanStartCallback(SCANSTART,pDum,pCon);
|
||||
ScanPointCallback(SCANPOINT,pDum,pCon);
|
||||
}
|
||||
}
|
||||
/*
|
||||
@@ -437,12 +437,11 @@
|
||||
pCall = pDum->pDescriptor->GetInterface(pDum,CALLBACKINTERFACE);
|
||||
if(pCall)
|
||||
{
|
||||
lID = RegisterCallback(pCall,comCon,COUNTSTART,HMCountStartCallback,
|
||||
pCon, NULL);
|
||||
SCRegister(pCon,pServ->pSics,pCall,lID);
|
||||
lID = RegisterCallback(pCall,COUNTSTART,HMCountStartCallback,
|
||||
SCCopyConnection(pCon), SCDeleteConnection);
|
||||
if(iTOF == 1)
|
||||
{
|
||||
HMCountStartCallback(COUNTSTART,pDum,pCon,SCGetContext(pCon));
|
||||
HMCountStartCallback(COUNTSTART,pDum,pCon);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
@@ -1110,7 +1109,7 @@
|
||||
}
|
||||
else if(strcmp(argv[1],"tofmode") == 0)
|
||||
{
|
||||
HMCountStartCallback(COUNTSTART,NULL,pCon,SCGetContext(pCon));
|
||||
HMCountStartCallback(COUNTSTART,NULL,pCon);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user