Newer
Older
#include "DitsFix.h"
#include "Sdp.h"
#include "Git.h"
#include "dul_err.h"
/* externals */
extern void tdfio_init_();
extern void combine_image_(DitsArgType*,StatusType*);
extern void combine_spectra_(DitsArgType*,StatusType*);
/* extern void flx_calib_(DitsArgType*,StatusType*); */
/* extern void gen_calib_(DitsArgType*,StatusType*); */
extern void reduce_arc_(DitsArgType*,StatusType*);
extern void reduce_bias_(DitsArgType*,StatusType*);
extern void reduce_fflat_(DitsArgType*,StatusType*);
extern void reduce_lflat_(DitsArgType*,StatusType*);
extern void reduce_object_(DitsArgType*,StatusType*);
extern void reduce_sky_(DitsArgType*,StatusType*);
extern void splice_aaomega_(DitsArgType*,StatusType*);
static void combineImageAction(StatusType*);
static void combineSpectraAction(StatusType*);
/* static void flxCalibAction(StatusType*); */
/* static void genCalibAction(StatusType*); */
static void plotAction(StatusType*);
static void reduceArcAction(StatusType*);
static void reduceBiasAction(StatusType*);
static void reduceFFlatAction(StatusType*);
static void reduceLFlatAction(StatusType*);
static void reduceObjAction(StatusType*);
static void reduceSkyAction(StatusType*);
static void spliceAction(StatusType*);
/*---------------------------------------------------------------------------*/
* This task acts as an action server for 2dfdr. drcontrol acts as the client
* DRAMA task sending this task requests for 2dfdr processing.
StatusType status = DITS__OK;
char taskName[40];
{ combineImageAction, 0,0,0,0,0,"COMBINE_IMAGE"},
{ combineSpectraAction,0,0,0,0,0,"COMBINE_SPECTRA"},
/* { flxCalibAction, 0,0,0,0,0,"FLX_CALIB"}, */
/* { genCalibAction, 0,0,0,0,0,"GEN_CALIB"}, */
{ find2dfFibresAction, 0,0,0,0,0,"GFIBPOS"},
{ plotAction, 0,0,0,0,0,"PLOT"},
{ reduceArcAction, 0,0,0,0,0,"REDUCE_ARC"},
{ reduceBiasAction, 0,0,0,0,0,"REDUCE_BIAS"},
{ reduceFFlatAction, 0,0,0,0,0,"REDUCE_FFLAT"},
{ reduceLFlatAction, 0,0,0,0,0,"REDUCE_LFLAT"},
{ reduceObjAction, 0,0,0,0,0,"REDUCE_OBJECT"},
{ reduceSkyAction, 0,0,0,0,0,"REDUCE_SKY"},
{ spliceAction, 0,0,0,0,0,"SPLICE"},
{ exitAction, 0,0,0,0,0,"EXIT"}
/* The task name is normally given in argv[1]. Multiple copies of the
task can be started using different task names. A default name is
used if one is not given. */
strcpy(taskName,(argc > 1) ? argv[1] : "DREXEC");
/* initialise DRAMA
DITS_M_NOEXHAND => we will install exit handler */
DitsAppInit(taskName,300000,DITS_M_NOEXHAND,0,&status);
/* define supported actions */
DitsPutActions(DitsNumber(actions),actions,&status);
/* enter DRAMA main loop
This returns when action returns DITS_REQ_EXIT */
DitsMainLoop(&status);
/* here returned from DRAMA main loop, shutdown DRAMA and exit */
/*---------------------------------------------------------------------------*/
/* call Fortran TDFIO_INIT and COMBINE_IMAGE() */
tdfio_init_();
combine_image_(&args,pStatus);
/*---------------------------------------------------------------------------*/
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* call Fortran TDFIO_INIT() and COMBINE_SPECTRA() */
tdfio_init_();
combine_spectra_(&args,pStatus);
/*---------------------------------------------------------------------------*/
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* call Fortran TDFIO_INIT() and ???() */
tdfio_init_();
/* ???_(&args,pStatus); */
/* SdsDelete(localArgs,pStatus); */
/*---------------------------------------------------------------------------*/
/* get our SDS argument structure */
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* SdsCopy(args,&localArgs,pStatus); */
/* call Fortran TDFIO_INIT() and ???() */
tdfio_init_();
/* ???_(&args,pStatus); */
/*---------------------------------------------------------------------------*/
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* call Fortran TDFIO_INIT() and CMFIM_GFIBPOS() */
tdfio_init_();
cmfim_gfibpos_(&args,pStatus);
/*---------------------------------------------------------------------------*/
*/
{
DitsArgType args;
if (*pStatus != DITS__OK) return;
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* make copy so it can be changed (external SDS -> internal) */
SdsCopy(args,&localArgs,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
*/
{
DitsArgType args;
if (*pStatus != DITS__OK) return;
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* make copy so it can be changed (external SDS -> internal) */
SdsCopy(args,&localArgs,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
*/
{
DitsArgType args;
if (*pStatus != DITS__OK) return;
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
if (*pStatus != DITS__OK) return;
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* make copy so it can be changed (external SDS -> internal) */
SdsCopy(args,&localArgs,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
/* make copy so it can be changed (external SDS -> internal) */
SdsCopy(args,&localArgs,pStatus);
/* call Fortran TDFIO_INIT() and REDUCE_SKY() */
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/
*/
{
DitsArgType args;
if (*pStatus != DITS__OK) return;
/* get our SDS argument structure */
args = DitsGetArgument();
/* for debug print our argument structure on stdout */
SdsList(args,pStatus);
DitsPutRequest(DITS_REQ_END,pStatus);
}
/*---------------------------------------------------------------------------*/