コード例 #1
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
void vsetBOB(int rtparam, int reg)
{
   char            msge[128];

    if (!newacq)
    {
	text_error("Warning: vsetuserap available only on Inova systems.\n");
	text_error("         vsetuserap ignored.\n");
	return;
    }
    switch (reg)
    {
	case 0:
		SetAPAttr(BOBreg0, SET_RTPARAM, (c68int)(rtparam), NULL);
		break;
	case 1:
		SetAPAttr(BOBreg1, SET_RTPARAM, (c68int)(rtparam), NULL);
		break;
	case 2:
		SetAPAttr(BOBreg2, SET_RTPARAM, (c68int)(rtparam), NULL);
		break;
	case 3:
		SetAPAttr(BOBreg3, SET_RTPARAM, (c68int)(rtparam), NULL);
		break;
	default:
		sprintf(msge,"vsetuserap: Invalid register = %d.\n",reg);
		text_error(msge);
        	psg_abort(1);
    }

}
コード例 #2
0
ファイル: cps.c プロジェクト: timburrow/ovj3
/*-----------------------------------------------------------------
|	putstr()/2
|	Sets a vnmr parmeter to a given string.
+------------------------------------------------------------------*/
void putstr(char *paramname, char *paramstring)
{
   int stat,expnum;
   char	message[STDVAR];
   char addr[MAXSTR];

   expnum = getExpNum();
   stat = -1;
   if (getparm("vnmraddr","string",GLOBAL,addr,MAXSTR))
   {
	sprintf(addr,"putval: cannot get Vnmr address for %s.\n",paramname);
        text_error(addr);
   }
   else
   {
   	sprintf(message,"sysputval(%d,'%s','%s')\n",
					expnum,paramname,paramstring);
   	stat = deliverMessageSuid(addr,message);
	if (stat < 0)
	{
	   sprintf(addr,"putval: Error in parameter: %s.\n",paramname);
           text_error(addr);
	}
   }

}
コード例 #3
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
void vreadBOB(int rtparam, int reg)
{
    int addrreg;
    char msge[128];

    if (!newacq)
    {
	text_error("Warning: readuserap available only on Inova systems.\n");
	text_error("         readuserap ignored.\n");
	return;
    }
    addrreg = (BOB_APADDR << 8) | (BOB_REG);
    switch (reg)
    {
	case 0:
		vapread(rtparam,addrreg,BOB_READ_SYNC_DELAY);
		break;
	case 1:
		vapread(rtparam,addrreg+1,BOB_READ_SYNC_DELAY);
		break;
	case 2:
		vapread(rtparam,addrreg+2,BOB_READ_SYNC_DELAY);
		break;
	case 3:
		vapread(rtparam,addrreg+3,BOB_READ_SYNC_DELAY);
		break;
	default:
		sprintf(msge,"readuserap: Invalid register = %d.\n",reg);
		text_error(msge);
        	psg_abort(1);
    }

}
コード例 #4
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
void vapread(int rtparam, int addrreg, double apsyncdelay)
{
    int ticks,secs;
    short *ptr;

    if (!newacq)
    {
	text_error("Warning: vapread available only on Inova systems.\n");
	text_error("         vapread ignored.\n");
	return;
    }
    
    timerwords(apsyncdelay,&ticks,&secs);

    putcode((c68int)IAPREAD);
    putcode((c68int)addrreg);
    putcode((c68int)rtparam);
    ptr = (short *) &secs;
    putcode((codeint) *ptr);	/* timerword one */
    ptr++;
    putcode((codeint) *ptr);	/* timerword one */
    ptr = (short *) &ticks;
    putcode((codeint) *ptr);	/* timerword one */
    ptr++;
    putcode((codeint) *ptr);	/* timerword one */
	
}
コード例 #5
0
ファイル: abort.c プロジェクト: timburrow/OpenVnmrJ
/*-----------------------------------------------------------------
|	vnmrmsg()/1
|	Sends normal message to vnmr.
+------------------------------------------------------------------*/
void vnmrmsg(const char *paramstring)
{
    int stat;
    char	message[MAXSTR];
    char addr[MAXSTR];

    stat = -1;
    if (getparm("vnmraddr","string",GLOBAL,addr,MAXSTR))
    {
        text_error("vnmrmsg: cannot get Vnmr address.\n");
    }
    else if (strcmp(addr,"Autoproc"))
    {
        int i = 0;
        sprintf(message,"write('line3',`%s`,'noReformat')\n",paramstring);
        while ( (i<MAXSTR) && (message[i] != '\0') )
        {
            if (((message[i] < ' ') || (message[i] > '~') ) &&
                    (message[i] != '\n') )
            {
                message[i] = ' ';
            }
            i++;
        }
        stat = deliverMessageSuid(addr,message);
        if (stat < 0)
        {
            text_error("vnmrmsg: Error sending msg:%s.\n",paramstring);
        }
    }
}
コード例 #6
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
/*--------------------------------------------------------------*/
void signal_acqi_updt_cmplt()
{
    if (!newacq)
    {
	text_error("Warning: signal_acqi_updt_cmplt available only on Inova systems.\n");
	text_error("         signal_acqi_updt_cmplt ignored.\n");
	return;
    }
    putcode((c68int)IACQIUPDTCMPLT);
}
コード例 #7
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
/*--------------------------------------------------------------*/
void start_acqi_updt(double delaytime)
{
    if (!newacq)
    {
      text_error("Warning: start_acqi_updt available only on Inova systems.\n");
      text_error("         start_acqi_updt ignored.\n");
      return;
    }
    delay(delaytime);
    putcode((c68int)ISTARTACQIUPDT);
}
コード例 #8
0
ファイル: getparm.c プロジェクト: timburrow/openvnmrj-source
int getparm(char *varname, char *vartype, int tree,
            void *varaddr, int size)
{
    int ret;
    char mess[MAXSTR];

    if ( (strcmp(vartype,"REAL") == 0) || (strcmp(vartype,"real") == 0) )
    {
        if ((ret = P_getreal(tree,varname,(double *)varaddr,1)) < 0)
        {
           if (dowarn)
           {
             sprintf(mess,"Cannot get parameter: %s\n",varname);
             text_error(mess);
	     if (bgflag)
	         P_err(ret,varname,": ");
           }
           else
           {
              dowarn = 1;
           }
	   return(1);
        }
    }
    else 
    {
	if ( (strcmp(vartype,"STRING") == 0) || 
	     (strcmp(vartype,"string") == 0) )
        {
            if ((ret = P_getstring(tree,varname,(char *)varaddr,1,size)) < 0)
            {
              if (dowarn)
              {
                sprintf(mess,"Cannot get parameter: %s\n",varname);
                text_error(mess);
		if (bgflag)
	     	    P_err(ret,varname,": ");
              }
              else
              {
                 dowarn=1;
              }
              return(1);
            }
	}
	else
	{   sprintf(mess,"Variable '%s' is neither a 'real' or 'string'.\n",
			vartype);
            text_error(mess);
	    return(1);
	}
      }
    return(0);
}
コード例 #9
0
/* Show the window */
int
text_create(TW *tw, const char *app_name, int show_cmd)
{
    HMENU sysmenu;
    HINSTANCE hInstance = GetModuleHandle(NULL);

    tw->Title = app_name;
    tw->nCmdShow = show_cmd;
    tw->quitnow = FALSE;

    /* make sure we have some sensible defaults */
    if (tw->KeyBufSize < 256)
	tw->KeyBufSize = 256;

    tw->CursorPos.x = tw->CursorPos.y = 0;
    tw->bFocus = FALSE;
    tw->bGetCh = FALSE;
    tw->CaretHeight = 0;


    /* allocate buffers */
    tw->KeyBufIn = tw->KeyBufOut = tw->KeyBuf = malloc(tw->KeyBufSize);
    if (tw->KeyBuf == NULL) {
	text_error("Out of memory");
	return 1;
    }
    tw->ScreenBuffer = malloc(tw->ScreenSize.x * tw->ScreenSize.y);
    if (tw->ScreenBuffer == NULL) {
	text_error("Out of memory");
	return 1;
    }
    memset(tw->ScreenBuffer, ' ', tw->ScreenSize.x * tw->ScreenSize.y);

    tw->hwnd = CreateWindow(TextWinClassName, tw->Title,
		  WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
		  tw->x, tw->y, tw->cx, tw->cy,
		  NULL, NULL, hInstance, tw);

    if (tw->hwnd == NULL) {
	MessageBox((HWND)NULL,"Couldn't open text window",(LPSTR)NULL, MB_ICONHAND | MB_SYSTEMMODAL);
	return 1;
    }

    ShowWindow(tw->hwnd, tw->nCmdShow);
    sysmenu = GetSystemMenu(tw->hwnd,0);	/* get the sysmenu */
    AppendMenu(sysmenu, MF_SEPARATOR, 0, NULL);
    AppendMenu(sysmenu, MF_STRING, M_COPY_CLIP, "Copy to Clip&board");
    AppendMenu(sysmenu, MF_STRING, M_PASTE_CLIP, "&Paste");

    return 0;
}
コード例 #10
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
void vapset(int rtparam, int addrreg)
{
    if (!newacq)
    {
	text_error("Warning: apset available only on Inova systems.\n");
	text_error("         apset ignored.\n");
	return;
    }
    SetAPAttr(APall,
	SET_APADR,		((addrreg >> 8) & 0x0f),
	SET_APREG,		(addrreg & 0x0ff),
	SET_RTPARAM, 		(c68int)(rtparam),
	NULL);
}
コード例 #11
0
ファイル: apuserdev.c プロジェクト: timburrow/ovj3
void apsetbyte(int value, int addrreg)
{
    if (!newacq)
    {
	text_error("Warning: apsetbyte available only on Inova systems.\n");
	text_error("         apsetbyte ignored.\n");
	return;
    }
    SetAPAttr(APbyte,
	SET_APADR,		((addrreg >> 8) & 0x0f),
	SET_APREG,		(addrreg & 0x0ff),
	SET_MASK, 		(c68int)(value & 0xff),
	SET_VALUE,
	NULL);
}
コード例 #12
0
ファイル: hash.c プロジェクト: DanIverson/OpenVnmrJ
/*-------------------------------------------------------
| insert(name,size)   Load hash table with the parameter
|			 names & indices
+-------------------------------------------------------*/
static void
insert(const char *word, int index)		/* enter a word in the hash table */
{
   int             key;

   key = hash(word);	/* calculate hash key */
   if (debug > 2)
      fprintf(stderr,"hash: word=%s key=%d\n", word, key);
   /* Check if hash table slot is free  */
   while (htable[key].word)	/* look for next free slot */
   {
      total_cols++;
      if (debug > 1)
	 fprintf(stderr,"hash:collision with %s and %s, total: %d\n",
		word, htable[key].word, total_cols);
      ++key;	/* increment key */
      key %= max_hash;	/* increment key */
   }
   htable[key].index = index;
   htable[key].word = word;
   if (debug > 1)
      fprintf(stderr,"hash: adding word %s  id %d \n", word, index);
   if (++hash_entries > max_hash)
   {
      text_error("hash: ERROR Number of identifiers exceeds hash table\n");
      psg_abort(17);
   }
}
コード例 #13
0
ファイル: lk_sh.c プロジェクト: timburrow/ovj3
lk_hold()
{
    static int errorsent = 0;
    if (ap_interface!=4)
    {
        if (!errorsent)
        {
            text_error("lk_hold is not valid with this hardware configuration\n");
            text_error("lk_hold is ignored\n");
            errorsent = 1;
        }
        return;
    }
    putcode(SMPL_HOLD);
    putcode(HOLD);
}
コード例 #14
0
ファイル: hwlooping.c プロジェクト: DanIverson/OpenVnmrJ
/*-------------------------------------------------------------------
|
|	starthardloop()/1 
|	index is to v1-v14, number of times to cycle through loop
|	This start a hardware loop.
|	hwlooping flag is set.
|	curfifocount is saved so that the # of fifo words in the
|	 hardwarre loop can be calcualted later in 'endhardloop'.
|	pointer to the starthardloop Acode is save so that the
|	 values can update later by 'endhardloop'
|	 1. setICM is inserted in nop, if this loop acquires data
|	     and no previous hardware loop did.
|	 2. # of fifo words in hardware loop is set.
|	 3. enable interrupt is nulled if only one hardware loop
|	    exists.
|	
|				Author Greg Brissey  7/10/86
+------------------------------------------------------------------*/
void starthardloop(codeint rtindex)
{
    setSSHAdisable();
    if(bgflag)
	fprintf(stderr,"starthardloop(): v# index: %d \n",rtindex);
    if (hwlooping)	/* No nesting of hardware loops */
    {
	text_error("Missing endhardloop after previous starthardloop\n");
	psg_abort(0);
    }
    hwlooping = TRUE;	/* mark the start of a hardware loop */
    starthwfifocnt = curfifocount; /* must know # words in fifo */
    fifostarttime = totaltime; /* must know time of loop */
    hwloopelements = 0;  /* reset pulse elements in hardware loop to zero */
    putcode(0);		/* nop that might be change to a setSTM acode */
    hwloop_ptr = (codeint) (Codeptr - Aacode); /* save location for use */
    putcode(HWLOOP);	/* hardwareloop Acode */
    putcode(0);		/* will be then number of fifo words in loop */
    putcode(2);		/* default to enable looping interrupt in acq.  */
			/* for multiple hardware loops */
    putcode(rtindex);   /* real time variable containing # of cycles of loop */

    /* Update time for loop */
    hwloopcnt4time = get_acqvar(rtindex); /* get count for this loop	*/
}
コード例 #15
0
ファイル: initacqparms.c プロジェクト: DanIverson/OpenVnmrJ
/*---------------------------------------------------------------------
|       open_acqpar(path)/1
|
|       Position the disk read/write heads to the proper block offset
|       for the acqpar file (lc,auto structure parameters.
+-------------------------------------------------------------------*/
void open_acqpar(char *filename)
{
   int len;
   if (bgflag)
     fprintf(stderr,"Opening Acqpar file: '%s' \n",filename);
   acqfd = open(filename,O_EXCL | O_RDONLY ,0666);
   if (acqfd < 0)
   { text_error("Cannot open acqpar file: '%s', RA not possible.\n",filename);
       psg_abort(1);
   }
   len = read(acqfd,&acqfileheader,sizeof(struct datafilehead));
   if (len < 1)
   { text_error("Cannot read acqpar file: '%s'\n",filename);
       psg_abort(1);
   }

}
コード例 #16
0
ファイル: abort.c プロジェクト: timburrow/OpenVnmrJ
void closeFiles()
{
    const char  *mess = "ABORT(): could not delete %s\n";
    char  tmpPath[MAXPATHL];

    /* delete file filexpath and filepath from acqqueue directory */
    if (strcmp(filepath,"") != 0)
    {
        if ( (unlink(filepath) == -1) && (errno != ENOENT) )
        {
            text_error(mess,filepath);
        }
    }
    if (strcmp(filexpath,"") != 0)
    {
        if ( (unlink(filexpath) == -1) && (errno != ENOENT) )
        {
            text_error(mess,filexpath);
        }
    }
    if (strcmp(fileRFpattern,"") != 0)
    {
        if ( (unlink(fileRFpattern) == -1) && (errno != ENOENT) )
        {
            text_error(mess,fileRFpattern);
        }
    }
    if (strcmp(filegrad,"") != 0)
    {
        if ( (unlink(filegrad) == -1) && (errno != ENOENT) )
        {
            text_error(mess,filegrad);
        }
    }
    if (strcmp(filexpan,"") != 0)
    {
        if ( (unlink(filexpan) == -1) && (errno != ENOENT) )
        {
            text_error(mess,filexpan);
        }
    }
    if (strcmp(filexpath,"") != 0)
    {
        strcpy(tmpPath,filexpath);
        strcat(tmpPath,".RTpars");
        if ( (unlink(tmpPath) == -1) && (errno != ENOENT) )
        {
            text_error(mess,tmpPath);
        }
    }
    if (strcmp(filexpath,"") != 0)
    {
        strcpy(tmpPath,filexpath);
        strcat(tmpPath,".Tables");
        if ( (unlink(tmpPath) == -1) && (errno != ENOENT) )
        {
            text_error(mess,tmpPath);
        }
    }
}
コード例 #17
0
ファイル: bp_image.c プロジェクト: DanIverson/OpenVnmrJ
check_parameters()
{
/*
 *  do some error checking on string variables 
 */
   if (p1pat[0] == '\0') { 
     text_error("p1pat file spec error\n"); 
     exit(2); 
   }
   if (pwpat[0] == '\0') { 
     text_error("pwpat file spec error\n"); 
     exit(2); 
   }
   if ((ni2 > 1) && (!strcmp(bptype,"slice"))){
     text_error("can't do slice selection in 3D experiment\n");
     exit(2);
   }
}
コード例 #18
0
ファイル: sis_position.c プロジェクト: timburrow/ovj3
double nucleus_gamma(int device)
{
    double nucgamma = 0.0;

    if (B0 <= 0.0) {
        text_error("nucleus_gamma: B0 (field) value <= zero\n");
        psg_abort(1);
    }

    if (device == DODEV)
        nucgamma=MHZ_HZ*dfrq/B0;
    else if (device == TODEV)
        nucgamma=MHZ_HZ*sfrq/B0; 
    else {
        text_error("nucleus_gamma: Bad transmitter device\n");
        psg_abort(1);
    }

    return(nucgamma);
}
コード例 #19
0
ファイル: hwlooping.c プロジェクト: DanIverson/OpenVnmrJ
/*-------------------------------------------------------------------
|
|	notinhwloop() 
|	set the invalid hardware loop flag 
|				Author Greg Brissey  7/10/86
+------------------------------------------------------------------*/
void notinhwloop(char *name)
{
   char mess[80];
   if (bgflag)
       fprintf(stderr,"notinhwloop('%s'):\n",name);
   if (hwlooping)
   {
       sprintf(mess," '%s' is not valid in a Hardware Loop \n",name);
       text_error(mess);
       psg_abort(0);		/* abort process */
   }
}
コード例 #20
0
ファイル: treefuncs.c プロジェクト: timburrow/ovj3
/*------------------------------------------------------------------------------
|
|	maxminlimit(tree,name)
|
|	This function returns the max & min limit of the real variable based
|				Author: Greg Brissey  8-18-95
+----------------------------------------------------------------------------*/
int par_maxminstep(int tree, const char *name, double *maxv, double *minv, double *stepv)
{
   int             ret,pindex;
   vInfo           varinfo;	/* variable information structure */
   char            mess[MAXSTR];

   if ( (ret = P_getVarInfo(tree, name, &varinfo)) )
   {
      sprintf(mess, "Cannot find the variable: %s", name);
      text_error(mess);
      if (bgflag)
	 P_err(ret, name, ": ");
      return (-1);
   }
   if (varinfo.basicType != ST_REAL)
   {
      sprintf(mess, "The variable '%s' is not a type 'REAL'", name);
      text_error(mess);
   }
   if (varinfo.prot & P_MMS)
   {
      pindex = (int) (varinfo.minVal+0.1);
      if (P_getreal( SYSTEMGLOBAL, "parmin", minv, pindex ))
         *minv = -1.0e+30;
      pindex = (int) (varinfo.maxVal+0.1);
      if (P_getreal( SYSTEMGLOBAL, "parmax", maxv, pindex ))
         *maxv = 1.0e+30;
      pindex = (int) (varinfo.step+0.1);
      if (P_getreal( SYSTEMGLOBAL, "parstep", stepv, pindex ))
            *stepv = 0.0;
   }
   else
   {
       *maxv = varinfo.maxVal;
       *minv = varinfo.minVal;
       *stepv = varinfo.step;
   }
   return (0);
}
コード例 #21
0
ファイル: abort.c プロジェクト: timburrow/OpenVnmrJ
/*-----------------------------------------------------------------
|	release_console()/1
|	Sends release console command to Vnmr
+------------------------------------------------------------------*/
void release_console()
{
    int stat;
    char	message[STDVAR];
    char addr[MAXSTR];

    stat = -1;
    if (getparm("vnmraddr","string",GLOBAL,addr,MAXSTR))
    {
        text_error("vnmremsg: cannot get Vnmr address.\n");
    }
    else if (strcmp(addr,"Autoproc"))
    {
        sprintf(message,"releaseConsole\n");
        stat = deliverMessageSuid(addr,message);
        if (stat < 0)
        {
            text_error("vnmremsg: Error sending release console msg.\n");
        }
    }

}
コード例 #22
0
ファイル: treefuncs.c プロジェクト: timburrow/ovj3
/*------------------------------------------------------------------------------
|
|	parmult(tree,name)
|
|	This function returns the multiplier of a real parameter
+----------------------------------------------------------------------------*/
double parmult(int tree, const char *name)
{
   int             ret;
   vInfo           varinfo;	/* variable information structure */

   if ( (ret = P_getVarInfo(tree, name, &varinfo)) )
   {
      text_error("parmult(): cannot find variable %s", name);
      if (bgflag)
	 P_err(ret, name, ": ");
      return (-1.0);
   }
   return( (varinfo.subtype == ST_PULSE) ? 1e-6 : 1.0);
}
コード例 #23
0
ファイル: bp_image.c プロジェクト: DanIverson/OpenVnmrJ
noslice_timing()
{
/* calculate dx: */
   dx = (te/2.0) - 0.5*(p1+pw) - rof1 - rof2;
   if (dx < 1.0e-6) { 
       text_error("cannot fit tpe trise p1 pw into te... ABORT");
       exit(2);
   }
/* calculate dy: */
   dy = (te/2.0) - at/2.0 - pw/2.0 - rof2;
   if (dy < 1.0e-6) { 
       dy = 1.0e-6;
   }
   tix = tr - pi/2.0 - rof2 - trise;
}
コード例 #24
0
ファイル: treefuncs.c プロジェクト: timburrow/ovj3
/*------------------------------------------------------------------------------
|
|	whattype(tree,name)
|
|	This function returns the address of a real value of a variable based on
+----------------------------------------------------------------------------*/
int whattype(int tree, const char *name)
{
   int             ret;
   vInfo           varinfo;	/* variable information structure */
   char            mess[MAXSTR];

   if ( (ret = P_getVarInfo(tree, name, &varinfo)) )
   {
      sprintf(mess, "Cannot find the variable: %s", name);
      text_error(mess);
      if (bgflag)
	 P_err(ret, name, ": ");
      return (-1);
   }
   return (varinfo.basicType);
}
コード例 #25
0
ファイル: initacqparms.c プロジェクト: DanIverson/OpenVnmrJ
void write_shr_info(double exp_time)
{
    int Infofd;	/* file discriptor Code disk file */
    int bytes;

    /* --- write parameter out to acqqueue file --- */

    if (usertime < 0.0)
       ExpInfo.ExpDur = exp_time;
    else
       ExpInfo.ExpDur = usertime;

    /*
       BKJ: CAUTION: need to check ExpInfo.NumTables
       ExpInfo.NumTables = num_tables;
    */

    if ( ! AcodeManager_getAcodeStageWriteFlag(0) ) strcpy(ExpInfo.InitCodefile,"\0");
    if ( ! AcodeManager_getAcodeStageWriteFlag(1) ) strcpy(ExpInfo.PreCodefile,"\0");
    if ( ! AcodeManager_getAcodeStageWriteFlag(2) ) strcpy(ExpInfo.PSCodefile,"\0");
    if ( ! AcodeManager_getAcodeStageWriteFlag(3) ) strcpy(ExpInfo.PostCodefile,"\0");
    if ( ! AcodeManager_getAcodeStageWriteFlag(4) ) strcpy(ExpInfo.WaveFormFile,"\0");

    if (ExpInfo.InteractiveFlag)
    {
       char tmppath[256];
       sprintf(tmppath,"%s.new",infopath);
       unlink(tmppath);
       Infofd = open(tmppath,O_EXCL | O_WRONLY | O_CREAT,0666);
    }
    else
    {
       /* fprintf(stdout,"infopath: '%s'\n", infopath); */
       Infofd = open(infopath,O_EXCL | O_WRONLY | O_CREAT,0666);
    }
    if (Infofd < 0)
    {	text_error("Exp info file already exists. PSG Aborted..\n");
	psg_abort(1);
    }
    /* fprintf(stdout," [[[[[[[[[-->>writing  RcvrMapStr: '%s'\n",ExpInfo.RvcrMapping); */
    bytes = write(Infofd, (const void *) &ExpInfo, sizeof( SHR_EXP_STRUCT ) );
    /* fprintf(stdout,"sizeof( SHR_EXP_STRUCT ) = %d\n",sizeof( SHR_EXP_STRUCT )); */
    fsync(Infofd);
    if (bgflag)
      fprintf(stdout,"Bytes written to info file: %d (bytes).\n",bytes);
    close(Infofd);
}
コード例 #26
0
ファイル: ecc_setup.c プロジェクト: DanIverson/OpenVnmrJ
static void compare_dutycycle_limits()
{
    Sdac *pd;
    int  panic;

    if (option_check("danger") ) return;
    pd = sdac_values;
    panic = 0;
    if (coilLimits.xduty < pd[DUTYLIMIT].values[X1_AXIS])  panic=1;
    if (coilLimits.zduty < pd[DUTYLIMIT].values[Y1_AXIS])  panic=1;
    if (coilLimits.zduty < pd[DUTYLIMIT].values[Z1_AXIS])  panic=1;
    if (panic)
    {
        text_error("Dutycycle limits exceed gradient coil specifications");
        psg_abort(3);
    }
}
コード例 #27
0
int create_angle_list(char *nm, double* angle_set, int num_sets)
{
   if (gradtype[0] != gradtype[1])
       abort_message("error in gradient or pfg configuration parameter gradtype. abort!\n");
   if (gradtype[0] != gradtype[2])
       abort_message("error in gradient or pfg configuration parameter gradtype. abort!\n");

   int listId = -1;
   GradientBase  *gC = P2TheConsole->getConfiguredGradient();
   listId = gC->create_angle_list(nm, angle_set, num_sets);

   if (listId > 0)
     return listId;
   else
     text_error("error in creating rotation list on %s . abort!\n", gC->getName());
   return(listId);
}
コード例 #28
0
ファイル: abort.c プロジェクト: timburrow/OpenVnmrJ
void psg_abort(int error)
{
    closeFiles();
    if (dpsTimer)
    {
        close_error(1);   /* 1 arg means failure/abort */
        exit(1);
    }
    text_error("P.S.G. Aborted.");
    if (newacq)
    {
        if (!acqiflag && !dps_flag)
            release_console();
    }
    close_error(1);     /* 1 arg means failure/abort */
    exit(error);
}
コード例 #29
0
ファイル: ecc_setup.c プロジェクト: DanIverson/OpenVnmrJ
/* fill in the Sdac sdac_value structure with sdac numbers */
static int
get_all_sdac_from_file(char *filename)
{
    int i, j;
    int rtn = TRUE;
    FILE *fd = NULL;
    Sdac *pd;
    struct stat statbuf;

    if (strstr(filename, "/.None")) {
        rtn = FALSE;
    } else if (stat(filename, &statbuf) == -1
               || ! (statbuf.st_mode & S_IFREG)
               || ! (fd = fopen(filename, "r") ))
    {
        text_error("Cannot find \"%s\". Check the sysgcoil parameter", filename);
        psg_abort(1);
    }


    if (!rtn){
        /* If no file, just turn off gain for safety */
        for (j=0, pd=sdac_values; j<3; j++){
            pd[TOTALSCALE].values[j] = 0;
        }
    }else
    {
        for (i=0, pd=sdac_values; i<N_SDAC_VALS; pd++, i++){
            for (j=0; j<4; j++){
                if (i == SLEWLIMIT) {
                    pd->values[j] = pd->max_val;
                }else{
                    pd->values[j] = 0;
                }
            }
            get_one_sdac_setting_from_file(fd, pd->label, pd->values);
        }
        fclose(fd);
    }

    return rtn;
}
コード例 #30
0
ファイル: hash.c プロジェクト: DanIverson/OpenVnmrJ
/*-------------------------------------------------------
| init_hash(size)   Malloc space for hash table and
|		    initialize hash table to null
+-------------------------------------------------------*/
void init_hash(int size)	/* Initialize hash table to null */
{
   int             i;

   max_hash = size * 10;
   if (debug > 0)
      fprintf(stderr, "Max Hash Table Size : %d \n", max_hash);
   htable = (hash_table *) malloc(max_hash * (sizeof(hash_table)));
   if (htable == 0L)
   {
      text_error("insuffient memory for variable pointer allocation!!");
      psg_abort(0);
   }
   for (i = 0; i < max_hash; i++)
   {
      htable[i].word = NULL;
      htable[i].index = -1;
   }
   hash_entries = 0;
}