Added the generation of incomensurate reflections for 0,0,0 in fourmess

Applied Douglas  task deletion patch
Fixed a bug with repeated motor failures in interface.c
This commit is contained in:
2016-04-13 09:18:13 +02:00
parent 019dc11131
commit 96114fc803
3 changed files with 32 additions and 9 deletions

View File

@ -811,6 +811,21 @@ static int GenInconsumerate(pSICSOBJ self, SConnection * pCon,
SCPrintf(pCon,eLog, "%d of %d input reflections processed", i, startCount);
}
}
/*
add satellites of 0,0,0,
*/
for(i = 0; i < 3; i++){
hkl[i] = 0. + qvec[i];
}
AddRefIdx(priv->messList, hkl);
iGen++;
for(i = 0; i < 3; i++){
hkl[i] = 0. - qvec[i];
}
if(FindHKL(priv->messList, hkl[0], hkl[1], hkl[2]) == NULL){
AddRefIdx(priv->messList, hkl);
iGen++;
}
SCPrintf(pCon, eValue,
"%d additional inconsumerate reflections generated", iGen);
return 1;

View File

@ -241,6 +241,8 @@ static int DriveTaskFunc(void *data)
}
if(status == HWFault){
taskData->pDriv->iErrorCount++;
} else {
taskData->pDriv->iErrorCount = 0;
}
if(status == HWFault || status == HWPosFault){
SetDevexecStatus(pServ->pExecutor,DEVERROR);

24
task.c
View File

@ -214,22 +214,28 @@ static pTaskHead MakeTaskHead(char *name, TaskFunc pTask, SignalFunc pSignal,
static void DeleteTaskHead(pTaskHead self)
{
assert(self);
void *pData;
if (self->pKill) {
if (self->pData) {
self->pKill(self->pData);
}
}
if(self->name != NULL){
free(self->name);
}
/* unlink */
/* unlink first to prevent double handling when Kill calls Yield*/
if (self->pPrevious != NULL) {
self->pPrevious->pNext = self->pNext;
}
if (self->pNext != NULL) {
self->pNext->pPrevious = self->pPrevious;
}
if (self->pKill) {
if (self->pData) {
pData = self->pData;
self->pData = NULL;
self->pKill(pData);
}
}
if(self->name != NULL){
free(self->name);
}
memset(self,0,sizeof(TaskHead));
free(self);
}