Defines | Functions | Variables

marstartup.cpp File Reference

#include "marstartup.h"
#include "qscan345settings.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include <errno.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include "esd.h"
#include "marglobals.h"
#include "version.h"
#include "config.h"
Include dependency graph for marstartup.cpp:

Go to the source code of this file.

Defines

#define CONFIGGLOBAL

Functions

int net_open (int)
int marStartup ()
CONFIG GetConfig (FILE *)
void PutConfig (CONFIG)

Variables

char martable_dir [128]
char nbcode_file [128]
int lines
int status_interval

Define Documentation

#define CONFIGGLOBAL

Definition at line 27 of file marstartup.cpp.


Function Documentation

CONFIG GetConfig ( FILE *  )

Definition at line 49 of file marconfig.c.

References CONFIG::adcadd, CONFIG::adcadd_A, CONFIG::adcadd_B, CONFIG::adcoff, buf, CONFIG::chi_def, CONFIG::chi_max, CONFIG::chi_min, CONFIG::chi_speed, CONFIG::chi_steps, CONFIG::colors, CONFIG::dist_def, CONFIG::dist_max, CONFIG::dist_min, CONFIG::dist_speed, CONFIG::dist_steps, CONFIG::dosemin, CONFIG::erasetime, CONFIG::filter, CONFIG::flags, FLOAT, CONFIG::gain, CONFIG::host, i, CONFIG::init_maxdist, input_priority, InputType(), INTEGER, CONFIG::intensmin, CONFIG::intenswarn, j, CONFIG::kV, CONFIG::lambda_var, CONFIG::lock_speed, CONFIG::mA, MAX_IGNORE_ERR, MAX_SCANMODE, CONFIG::memory, CONFIG::ome_def, CONFIG::ome_max, CONFIG::ome_min, CONFIG::ome_speed, CONFIG::ome_steps, CONFIG::phi_def, CONFIG::phi_speed, CONFIG::phi_steps, CONFIG::polar, CONFIG::port, CONFIG::prelock_speed, RemoveBlanks(), CONFIG::roff, CONFIG::scantime, SetConfig(), CONFIG::sets, CONFIG::shutter_delay, CONFIG::size, CONFIG::slitx, CONFIG::slity, CONFIG::source, CONFIG::spiral_max, CONFIG::spiral_scale, stat_wavelength, status_interval, str, CONFIG::thet_def, CONFIG::thet_max, CONFIG::thet_min, CONFIG::thet_speed, CONFIG::thet_steps, CONFIG::toff, CONFIG::units_dose, CONFIG::units_time, CONFIG::use_adc, CONFIG::use_base, CONFIG::use_chi, CONFIG::use_dist, CONFIG::use_distmax, CONFIG::use_distmin, CONFIG::use_dose, CONFIG::use_erase, CONFIG::use_error, CONFIG::use_html, CONFIG::use_image, CONFIG::use_msg, CONFIG::use_ome, CONFIG::use_phi, CONFIG::use_run, CONFIG::use_shell, CONFIG::use_sound, CONFIG::use_stats, CONFIG::use_thet, CONFIG::use_txt, CONFIG::use_wave, CONFIG::use_xray, CONFIG::use_zaxis, CONFIG::wavelength, WrongType(), CONFIG::xcen, and CONFIG::ycen.

Referenced by MarStartup::marStartup().

{
  CONFIG                h;
  int           i,j,k, size, ntok=0, nmode=0;
  char          buf[128], *key, *token[20];
  extern int    input_priority;
  extern float  stat_wavelength;

  /* Set defaults */
  h = SetConfig();

  fseek( fp, 0, SEEK_SET );

  /*
   * Read input lines
   */

  while( fgets(buf,128,fp)!= NULL){
    if ( strlen(buf) < 2 ) continue;

    /* Scip comment lines */
    if( buf[0] == '#' || buf[0]=='!' ) continue;

    /* Tokenize input string */
    /* ntok  = number of items on input line - 1 (key) */
    ntok = -1;  

    for(i=0;i<128;i++) {
      /* Convert TAB to SPACE */
      if( buf[i] == '\t') buf[i] = ' ';
      if( buf[i] == '\f') buf[i] = ' '; 
      if( buf[i] == '\n') buf[i] = '\0'; 
      if( buf[i] == '\r') buf[i] = '\0'; 
      if( buf[i] == '\0') break;
    }

    for(i=0;i<strlen(buf);i++) {
      if( buf[i] == ' ' ) continue;
      ntok++; 
      for (j=i;j<strlen(buf);j++) 
        if( buf[j] == ' ') break;
      i=j;
    }
    if (strlen(buf) < 3 ) continue; 

    key = strtok( buf, " ");

    /* Convert keyword to uppercase */
    for ( i=0; i<strlen(key); i++ )
      if ( isalnum( key[i] ) ) key[i] = toupper( key[i] );

    for(i=0;i<ntok;i++) {
      token[i] = strtok( NULL, " ");
      strcpy( str, token[i] );

      if ( !strstr( key, "NET" ) )
        for ( j=0; j<strlen( str ); j++ )
          if ( isalnum( str[j] ) ) str[j] = toupper( str[j] );
      strcpy( token[i] , str );
      RemoveBlanks( token[i] );
    }

    /* Keyword: GAIN */
    if(!strncmp(key,"GAIN",4) && ntok >= 0 )
      if ( InputType( token[0] ) >= INTEGER ) 
        h.gain = atof( token[0] );
      else
        WrongType( FLOAT, key, token[0] );

    else if( !strncmp(key,"MONO",4) && ntok >=0 ) {
      for ( i=0; i<ntok; i++ ) {
        if ( strstr(token[i],"POLA" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER )
            h.polar = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else {
          strcat( h.filter, token[i] );
        }
      }
    }

    /* Keyword: SHUTTER_DELAY */
    else if(!strncmp(key,"SHUT",4) && ntok >= 0 )
      if ( InputType( token[0] ) == INTEGER ) 
        h.shutter_delay = atoi( token[0] );
      else
        WrongType( INTEGER, key, token[0] );

    /* Keyword: SETS */
    else if(!strncmp(key,"SETS",4) && ntok >= 0 )
      if ( InputType( token[0] ) == INTEGER ) 
        h.sets = (unsigned char)atoi( token[0] );
      else
        WrongType( INTEGER, key, token[0] );


    /* Keyword: GENERATOR */
    else if( !strncmp(key,"GENE",4) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "MA" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.mA = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "KV" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.kV = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else
          strcat( h.source, token[i] );
      }
    }

    /* Keyword: COLORS */
    else if(!strncmp(key,"COLO",4) && ntok >= 0 )
      if ( InputType( token[0] ) == INTEGER ) 
        h.colors = (unsigned char)atoi( token[0] );
      else
        WrongType( INTEGER, key, token[0] );

    /* Keyword: PRIORITY */
    else if(!strncmp(key,"PRIO",4) && ntok >= 0 && input_priority < 0 )
      if ( InputType( token[0] ) == INTEGER ) 
        input_priority = atoi( token[0] );
      else
        WrongType( INTEGER, key, token[0] );

    /* Keyword: FLAGS */
    else if(!strncmp(key,"FLAG",4) && ntok >= 0 )
      if ( InputType( token[0] ) == INTEGER ) 
        h.flags = atoi( token[0] );
      else
        WrongType( INTEGER, key, token[0] );

    /* Keyword: SPIRAL */
    else if(!strncmp(key,"SPIR",4) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "MAX" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.spiral_max = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "SCA" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.spiral_scale = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }

    /* Keyword: INTENSITY */
    else if(!strncmp(key,"INTE",4) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "MIN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) 
            h.intensmin = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "WAR" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) 
            h.intenswarn = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "DOS" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER )
            h.dosemin = (float)atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }

    /* Keyword: COLLIMATOR */
    else if( !strncmp(key,"COLL",4) && ntok >= 1 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "WID" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.slitx= atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "HEI" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.slity = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }
                
    else if(!strncmp(key,"PHI",3) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "SPE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.phi_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "STE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.phi_steps = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "DEF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.phi_def = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }

    else if(!strncmp(key,"OME",3) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "SPE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.ome_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "STE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.ome_steps = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "MIN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.ome_min = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "MAX" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.ome_max = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "DEF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.ome_def = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }

    else if(!strncmp(key,"CHI",3) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "SPE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.chi_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "STE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.chi_steps = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "MIN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.chi_min = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "MAX" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.chi_max = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "DEF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.chi_def = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }

    else if(!strncmp(key,"THET",4) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "SPE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.thet_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "STE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.thet_steps = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "MIN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.thet_min = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "MAX" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.thet_max = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "DEF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.thet_def = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }
    }

    else if(!strncmp(key,"DIST",4) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "SPE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.dist_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "STE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.dist_steps = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "DEF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.dist_def = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "USEMIN" ) )
          h.use_distmin = 1;
        else if ( strstr( token[i], "USEMAX" ) )
          h.use_distmax = 1;
        else if ( strstr( token[i], "MIN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.dist_min = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "MAX" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) {
            h.dist_max = atof( token[i] );
          }
          else
            WrongType( FLOAT, key, token[i] );
        }
      }

    else if(!strncmp(key,"LOCK",4) && ntok >= 0 ) {
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "PRE" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.prelock_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "LOC" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.lock_speed = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
      }
    }

    else if(!strncmp(key,"WAVE",4) && ntok >= 0 ) {
      if ( strstr( token[0], "VAR" ) )
        h.lambda_var = 1;
      else {
        h.lambda_var = 0;
        if ( InputType( token[0] ) >= INTEGER )
          h.wavelength = stat_wavelength = atof( token[0] );
        else
          WrongType( FLOAT, key, token[0] );
      }
    }

    /* Keyword: MODE   */
    else if(!strncmp(key,"MODE",4) && ntok >= 0 ) {
      for ( i=nmode=0; i<ntok; i++ ) {
        if ( strstr( token[i], "SCAN" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) 
            h.scantime[nmode] = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "ERAS" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER ) 
            h.erasetime[nmode] = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "ROFF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER) 
            h.roff[nmode] = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "TOFF" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER) 
            h.toff[nmode] = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "XC" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER) 
            h.xcen = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "YC" ) ) {
          i++;
          if ( InputType( token[i] ) >= INTEGER) 
            h.ycen = atof( token[i] );
          else
            WrongType( FLOAT, key, token[i] );
        }
        else if ( strstr( token[i], "ADC" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER) 
            h.adcoff[nmode] = atoi( token[i] );
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "AADD" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER) 
            h.adcadd_A[nmode] = atoi( token[i] );
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "BADD" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER) 
            h.adcadd_B[nmode] = atoi( token[i] );
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "ADD" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER) 
            h.adcadd[nmode] = atoi( token[i] );
          else
            WrongType( INTEGER, key, token[i] );
        }
        else {
          if ( InputType( token[i] ) == INTEGER ){
            size = atoi( token[i] );
            for ( nmode=0; nmode<MAX_SCANMODE; nmode++ ) {
              if ( size == h.size[nmode] ) break;
            }
          }
          else {
            WrongType( INTEGER, key, token[i] );
            break;
          }
        }
      }
    }

    /* Keyword: UNITS */
    else if(!strncmp(key,"UNIT",4) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "TIME" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.units_time = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "DOS" ) ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.units_dose = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
      }
                
    /* Keyword: INITIALIZE */
    else if(!strncmp(key,"INIT",4) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "MIN" ) ) {
          h.init_maxdist=0;
        }
        else if ( strstr( token[i], "MAX" ) ) {
          h.init_maxdist=1;
        }
      }

    /* Keyword: IGNORE */
    else if(!strncmp(key,"IGNO",4) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "PHI" ) )
          h.use_phi = 0;
        else if ( strstr( token[i], "OME" ) ) 
          h.use_ome = 0;
        else if ( strstr( token[i], "CHI" ) )
          h.use_chi = 0;
        else if ( strstr( token[i], "THE" ) )
          h.use_thet = 0;
        else if ( strstr( token[i], "DIS" ) )
          h.use_dist = 0;
        else if ( strstr( token[i], "ERA" ) )
          h.use_erase = 0;
        else if ( strstr( token[i], "XRA" ) )
          h.use_xray  = 0;
        else if ( strstr( token[i], "SOU" ) )
          h.use_sound = 0;
        else if ( strstr( token[i], "BAS" ) )
          h.use_base  = 0;
        else if ( strstr( token[i], "IMA" ) )
          h.use_image = 0;
        else if ( strstr( token[i], "DOS" ) )
          h.use_dose  = 0;
        else if ( strstr( token[i], "RUN" ) )
          h.use_run   = 0;
        else if ( strstr( token[i], "STA" ) )
          h.use_stats = 0;
        else if ( strstr( token[i], "Z-A" ) )
          h.use_zaxis = 0;
        else if ( strstr( token[i], "WAV" ) )
          h.use_wave  = 0;
        else if ( strstr( token[i], "SHE" ) )
          h.use_shell= 0;
        else if ( strstr( token[i], "ERR" ) )
          h.use_error[0] = 1;
        else if ( h.use_error[0] > 0 ) {
          strcpy( str, token[i] );
          for ( j=k=0; k<strlen(str); k++ ) {
            if ( !isdigit( str[k] ) ) {
              j=1;
              break;
            }
          }
          if ( j==0 && h.use_error[0] < MAX_IGNORE_ERR ) {
            j = atoi(str);
            h.use_error[h.use_error[0]] = atoi(str);
            h.use_error[0] ++;
          }
        }
        else if ( strstr( token[i], "SPY" ) )
          h.use_msg  = 0;
        else if ( strstr( token[i], "ADC" ) )
          h.use_adc = 0;
        else if ( strstr( token[i], "HTM" ) )
          h.use_html = 0;
        else if ( strstr( token[i], "SUM" ) )
          h.use_txt = 0;
      }

    /* Keyword: USE */
    else if(!strncmp(key,"USE",3) && ntok >= 0 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "PHI" ) )
          h.use_phi = 1;
        else if ( strstr( token[i], "OME" ) )
          h.use_ome = 1;
        else if ( strstr( token[i], "CHI" ) )
          h.use_chi = 1;
        else if ( strstr( token[i], "THE" ) )
          h.use_thet = 1;
        else if ( strstr( token[i], "DIS" ) )
          h.use_dist = 1;
        else if ( strstr( token[i], "ERA" ) )
          h.use_erase = 1;
        else if ( strstr( token[i], "XRA" ) )
          h.use_xray  = 1;
        else if ( strstr( token[i], "SOU" ) )
          h.use_sound = 1;
        else if ( strstr( token[i], "BAS" ) )
          h.use_base  = 1;
        else if ( strstr( token[i], "IMA" ) )
          h.use_image = 1;
        else if ( strstr( token[i], "DOS" ) )
          h.use_dose  = 1;
        else if ( strstr( token[i], "SPI" ) )
          h.use_image = 2;
        else if ( strstr( token[i], "SPK" ) )
          h.use_image = 3;
        else if ( strstr( token[i], "RUN" ) )
          h.use_run   = 1;
        else if ( strstr( token[i], "STATS" ) )
          h.use_stats = 1;
        else if ( strstr( token[i], "STATUS" ) )
          status_interval = 1;
        else if ( strstr( token[i], "Z-A" ) )
          h.use_zaxis = 1;
        else if ( strstr( token[i], "WAV" ) )
          h.use_wave  = 1;
        else if ( strstr( token[i], "SHE" ) )
          h.use_shell= 1;
        else if ( strstr( token[i], "SPY" ) )
          h.use_msg  = 1;
        else if ( strstr( token[i], "ADC" ) )
          h.use_adc  = 1;
        else if ( strstr( token[i], "HTM" ) )
          h.use_html = 1;
        else if ( strstr( token[i], "SUM" ) )
          h.use_txt = 1;
      }

    /* Keyword: NETWORK */
    else if(!strncmp(key,"NET",3) && ntok >= 1 )
      for(i=0;i<ntok;i++) {
        if ( strstr( token[i], "PORT" ) || strstr( token[i], "port") ) {
          i++;
          if ( InputType( token[i] ) == INTEGER ) {
            h.port = atoi( token[i] );
          }
          else
            WrongType( INTEGER, key, token[i] );
        }
        else if ( strstr( token[i], "HOST" ) || strstr( token[i], "host") ) {
          i++;
          strcpy( h.host, token[i] );
        }
        else if ( strstr( token[i], "TIMEOUT") || strstr( token[i], "timeout") ) {
          double tmo;
          i++;
          tmo = atof( token[i] );
        }
        /* Host */
        else {
          strcpy( h.host, token[i] );
        }
      }

    /* Keyword: MEMORY */
    else if(!strncmp(key,"MEMO",4) && ntok >= 0 )
      if ( strstr( token[0], "SMA" ) )
        h.memory = 0;

  } /* End of while loop */

  /*
   * End of input lines (while loop)
   */

  /* Ignore all base functions requested */
  if ( h.use_base == 0 ) {
    h.use_phi   = 0;
    h.use_chi   = 0;
    h.use_ome   = 0;
    h.use_thet  = 0;
    h.use_dist  = 0;
    h.use_xray  = 0;
  }

  if ( h.use_wave ) h.lambda_var = 1;

  return( h );

}
int marStartup ( )
int net_open ( int  )
void PutConfig ( CONFIG  )

Definition at line 936 of file marconfig.c.

References CONFIG::adcadd, CONFIG::adcadd_A, CONFIG::adcadd_B, CONFIG::adcoff, CONFIG::chi_def, CONFIG::chi_max, CONFIG::chi_min, CONFIG::chi_speed, CONFIG::chi_steps, CONFIG::colors, CONFIG::dist_def, CONFIG::dist_max, CONFIG::dist_min, CONFIG::dist_speed, CONFIG::dist_steps, CONFIG::dosemin, CONFIG::erasetime, CONFIG::filter, CONFIG::flags, CONFIG::gain, CONFIG::host, i, CONFIG::init_maxdist, CONFIG::intensmin, CONFIG::intenswarn, j, CONFIG::kV, CONFIG::mA, MAX_SCANMODE, CONFIG::memory, CONFIG::ome_def, CONFIG::ome_max, CONFIG::ome_min, CONFIG::ome_speed, CONFIG::ome_steps, CONFIG::phi_def, CONFIG::phi_speed, CONFIG::phi_steps, CONFIG::polar, CONFIG::port, CONFIG::roff, CONFIG::scantime, CONFIG::sets, CONFIG::size, CONFIG::slitx, CONFIG::slity, CONFIG::source, CONFIG::spiral_max, CONFIG::spiral_scale, status_interval, str, CONFIG::thet_def, CONFIG::thet_max, CONFIG::thet_min, CONFIG::thet_speed, CONFIG::thet_steps, CONFIG::toff, CONFIG::units_dose, CONFIG::units_time, CONFIG::use_adc, CONFIG::use_chi, CONFIG::use_dist, CONFIG::use_distmax, CONFIG::use_distmin, CONFIG::use_erase, CONFIG::use_error, CONFIG::use_html, CONFIG::use_image, CONFIG::use_msg, CONFIG::use_ome, CONFIG::use_phi, CONFIG::use_run, CONFIG::use_shell, CONFIG::use_sound, CONFIG::use_thet, CONFIG::use_txt, CONFIG::use_wave, CONFIG::use_xray, CONFIG::use_zaxis, verbose, and CONFIG::wavelength.

Referenced by MarStartup::marStartup().

{
  int           i,j;
  char            num[10];
  /* extern FILE        *fpout;  */
  extern int    verbose;

  status_interval = 0;

  for ( i=0; i<MAX_SCANMODE; i++ ) {
    if ( h.adcadd[i] != 0 )
      h.adcadd_A[i] = h.adcadd_B[i] = h.adcadd[i];
  }

  for ( i=0; i<MAX_SCANMODE; i++ ) {
    sprintf( str, "scan345: MODE       %d  SCAN %1.1f  ERAS %1.1f\n",h.size[i],h.scantime[i],h.erasetime[i]);  
    if ( verbose > 2 ) fprintf( stdout, str );
    sprintf( str, "scan345: MODE       %d  ROFF %1.1f  TOFF %1.1f ADC %d  AADD %d  BADD %d\n",h.size[i],h.roff[i],h.toff[i],h.adcoff[i],h.adcadd_A[i],h.adcadd_B[i]);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_phi ) {
    sprintf( str, "scan345: PHI        SPEED %d STEPS %d\n",h.phi_speed,h.phi_steps);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }
  else {
    sprintf( str, "scan345: PHI        DEFAULT %1.3f\n",h.phi_def);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_ome ) {
    sprintf( str, "scan345: OMEGA      SPEED %d STEPS %d MIN %1.3f MAX %1.3f\n",h.ome_speed,h.ome_steps,h.ome_min,h.ome_max);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }
  else {
    sprintf( str, "scan345: OMEGA      DEFAULT %1.3f\n",h.ome_def);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }


  if ( h.use_chi ) {
    sprintf( str, "scan345: CHI        SPEED %d STEPS %d MIN %1.3f MAX %1.3f\n",h.chi_speed,h.chi_steps,h.chi_min,h.chi_max);  
    if ( verbose > 2 ) fprintf( stdout, str );

  }
  else {
    sprintf( str, "scan345: CHI        DEFAULT %1.3f\n",h.chi_def);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_thet ) {
    sprintf( str, "scan345: THETA      SPEED %d STEPS %d MIN %1.3f MAX %1.3f\n",h.thet_speed,h.thet_steps,h.thet_min,h.thet_max);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }
  else {
    sprintf( str, "scan345: THETA      DEFAULT %1.3f\n",h.thet_def);
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_dist ) {
    sprintf( str, "scan345: DISTANCE   SPEED %d STEPS %d MIN %1.3f MAX %1.3f",h.dist_speed,h.dist_steps,h.dist_min,h.dist_max);  
    if ( h.use_distmin ) strcat( str, " USEMIN " );
    if ( h.use_distmax ) strcat( str, " USEMAX " );
    strcat( str, "\n");
    if ( verbose > 2 ) fprintf( stdout, str );
  }
  else {
    sprintf( str, "scan345: DISTANCE   DEFAULT %1.3f\n",h.dist_def); 
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: UNITS      TIME  %d DOSE  %d\n",h.units_time,h.units_dose);  
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: IGNORE     ");
  if ( h.use_phi  ==0 ) strcat(str, "PHI ");
  if ( h.use_ome  ==0 ) strcat(str, "OMEGA ");
  if ( h.use_chi  ==0 ) strcat(str, "CHI ");
  if ( h.use_thet ==0 ) strcat(str, "THETA ");
  if ( h.use_zaxis==0 ) strcat(str, "Z-AXIS ");
  if ( h.use_dist ==0 ) strcat(str, "DISTANCE");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: IGNORE     ");
  if ( h.use_xray ==0 ) strcat(str, "XRAY ");
  if ( h.use_erase==0 ) strcat(str, "ERASE ");
  if ( h.use_adc  ==0 ) strcat(str, "ADC ");
  if ( h.use_sound==0 ) strcat(str, "SOUND ");
  if ( h.use_shell==0 ) strcat(str, "SHELL ");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: IGNORE     ");
  if ( h.use_msg  ==0 ) strcat(str, "SPY ");
  if ( h.use_wave ==0 ) strcat(str, "WAVE ");
  if ( h.use_run  ==0 ) strcat(str, "RUN ");
  if ( h.use_html ==0 ) strcat(str, "HTML ");
  if ( h.use_txt  ==0 ) strcat(str, "SUMMARY ");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_error[0] > 1 ) {
    sprintf( str, "scan345: IGNORE     ERROR");
    for ( j=1; j<h.use_error[0]; j++ ) {
      sprintf( num, " %d", h.use_error[j] );
      strcat ( str, num );
    }
    strcat( str, "\n");
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: USE        ");
  if ( h.use_phi  ==1 ) strcat(str, "PHI ");
  if ( h.use_ome  ==1 ) strcat(str, "OMEGA ");
  if ( h.use_chi  ==1 ) strcat(str, "CHI ");
  if ( h.use_thet ==1 ) strcat(str, "THETA ");
  if ( h.use_zaxis==1 ) strcat(str, "Z-AXIS ");
  if ( h.use_dist ==1 ) strcat(str, "DISTANCE ");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: USE        ");
  if ( h.use_xray ==1 ) strcat(str, "XRAY ");
  if ( h.use_erase==1 ) strcat(str, "ERASE ");
  if ( h.use_sound==1 ) strcat(str, "SOUND ");
  if ( h.use_shell==1 ) strcat(str, "SHELL ");
  if ( h.use_adc  ==1 ) strcat(str, "ADC ");
  if ( status_interval) strcat(str, "STATUS ");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }


  sprintf( str, "scan345: USE        ");
  if ( h.use_wave ==1 ) strcat(str, "WAVE ");
  if ( h.use_msg  ==1 ) strcat(str, "SPY ");
  if ( h.use_run  ==1 ) strcat(str, "RUN ");
  if ( h.use_html ==1 ) strcat(str, "HTML ");
  if ( h.use_txt  ==1 ) strcat(str, "SUMMARY ");
  if ( h.use_image==1 ) strcat(str, "IMAGE ");
  if ( h.use_image==2 ) strcat(str, "SPIRAL ");
  if ( h.use_image==3 ) strcat(str, "SPK ");
  strcat( str, "\n");
  if ( strlen( str ) > 20 ) {
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.init_maxdist ) 
    sprintf( str, "scan345: INITIAL    MAXDIST\n");
  else
    sprintf( str, "scan345: INITIAL    MINDIST\n");
  if ( verbose > 2 ) fprintf( stdout, str );
                
  sprintf( str, "scan345: NETWORK    HOST %s   PORT %d\n",h.host,h.port);
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: SPIRAL     SCALE %1.3f  MAX %d\n",h.spiral_scale, h.spiral_max);
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: FLAGS      %d\n",h.flags);  
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: COLORS     %d\n",h.colors);  
  if ( verbose > 2 ) fprintf( stdout, str );

  if ( h.sets < 4 ) h.sets = 4;
  if ( h.sets > 4 ) h.sets = 8;
  sprintf( str, "scan345: SETS       %d\n",h.sets);  
  if ( verbose > 2 ) fprintf( stdout, str );

  if ( h.memory )
    sprintf( str, "scan345: MEMORY     LARGE\n");  
  else
    sprintf( str, "scan345: MEMORY     SMALL\n");  
  if ( verbose > 2 ) fprintf( stdout, str );

  if ( h.gain != 1.0 ) {
    sprintf( str, "scan345: GAIN       %1.0f\n",h.gain);  
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  sprintf( str, "scan345: INTENSITY  MIN %1.3f  WARNING %1.1f  DOSE %1.3f\n",h.intensmin,h.intenswarn,h.dosemin);  
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: WAVELENGTH %1.5f\n",h.wavelength);  
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: MONOCHROM  %s  POLAR %1.3f\n",h.filter, h.polar);
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: COLLIMATOR WIDTH %1.3f  HEIGHT %1.3f\n",h.slitx,h.slity);
  if ( verbose > 2 ) fprintf( stdout, str );

  sprintf( str, "scan345: GENERATOR  %s  mA %1.1f  kV %1.1f\n",h.source, h.mA,h.kV);
  if ( verbose > 2 ) fprintf( stdout, str );

  if ( status_interval ) {
    sprintf( str, "scan345: STATUS     %d\n",status_interval);
    if ( verbose > 2 ) fprintf( stdout, str );
  }

  if ( h.use_zaxis ) h.use_ome=1;

}

Variable Documentation

int lines
char martable_dir[128]

Definition at line 67 of file marstartup.cpp.

Referenced by MarXF::mar_start_scan_readout(), and MarStartup::marStartup().

char nbcode_file[128]

Definition at line 68 of file marstartup.cpp.

Referenced by MarXF::mar_start_scan_readout(), and MarStartup::marStartup().

Definition at line 48 of file scan345.cpp.