int readConfig()
// Load Prioritizerd config stuff
{
  // Config file thingies
  //    KvpErrorCode kvpStatus=0;
  int status=0;
  char* eString ;


  kvpReset();
  status = configLoad (GLOBAL_CONF_FILE,"global") ;
  status = configLoad ("Prioritizerd.config","output") ;
  if(status == CONFIG_E_OK) {
    printToScreen=kvpGetInt("printToScreen",-1);
    verbosity=kvpGetInt("verbosity",-1);
    hkDiskBitMask=kvpGetInt("hkDiskBitMask",0);

    if(printToScreen<0) {
      syslog(LOG_WARNING,
	     "Couldn't fetch printToScreen, defaulting to zero");
      printToScreen=0;
    }
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading LOSd.config: %s\n",eString);
    fprintf(stderr,"Error reading LOSd.config: %s\n",eString);
  }
  kvpReset();
  status = configLoad ("Prioritizerd.config","prioritizerd");
  if(status == CONFIG_E_OK) {
      panicQueueLength=kvpGetInt("panicQueueLength",5000);
      writePowSpecPeriodSeconds=kvpGetInt("writePowSpecPeriodSeconds",60);
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading Prioritizerd.config: %s\n",eString);
    fprintf(stderr,"Error reading Prioritizerd.config: %s\n",eString);
  }

  kvpReset();
  status = configLoad ("Archived.config","archived");
  if(status == CONFIG_E_OK) {
    priorityPPS1=kvpGetInt("priorityPPS1",3);
    priorityPPS2=kvpGetInt("priorityPPS2",2);
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading Prioritizerd.config: %s\n",eString);
    fprintf(stderr,"Error reading Prioritizerd.config: %s\n",eString);
  }

  return status;
}
Beispiel #2
0
int readConfigFile() 
/* Load Playbackd config stuff */
{
    /* Config file thingies */
    char *tempString;
    int status=0;
    char* eString ;
    kvpReset();
    status = configLoad (GLOBAL_CONF_FILE,"global") ;
    status = configLoad ("Playbackd.config","playbackd") ;

    if(status == CONFIG_E_OK) {
	sendData=kvpGetInt("sendData",0);
	useDisk=kvpGetInt("useDisk",0);
	msSleepPeriod=kvpGetInt("msSleepPeriod",0);
	startPriority=kvpGetInt("startPriority",0);
	stopPriority=kvpGetInt("stopPriority",8);
	startEvent=kvpGetInt("startEvent",0);


	tempString=kvpGetString("usbName");
	if(tempString) {
	    strncpy(usbName,tempString,FILENAME_MAX);
	}
	else {
	    syslog(LOG_ERR,"Couldn't get usbName");
	    fprintf(stderr,"Couldn't get usbName\n");
	}
    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading Playbackd.config: %s\n",eString);
    }
           
    makeDirectories(PLAYBACK_LINK_DIR);
    return status;
}
int readConfig()
// Load Openportd config stuff
{
    // Config file thingies
    KvpErrorCode kvpStatus=0;
    int status=0,tempNum,count,maxVal,maxIndex;
    char* eString ;
    
    //Load output settings
    kvpReset();
    status = configLoad ("Openportd.config","output") ;
    if(status == CONFIG_E_OK) {
	printToScreen=kvpGetInt("printToScreen",-1);
	verbosity=kvpGetInt("verbosity",-1);
	if(printToScreen<0) {
	    printf("Couldn't fetch printToScreen, defaulting to zero\n");
	    printToScreen=0;
	}
    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading Openportd.config: %s\n",eString);
	fprintf(stderr,"Error reading Openportd.config: %s\n",eString);
    }

    //Load Openportd specfic settings
    kvpReset();
    status = configLoad ("Openportd.config","openportd");
    if(status == CONFIG_E_OK) {
	sendData=kvpGetInt("sendData",0);
	sendWavePackets=kvpGetInt("sendWavePackets",0);
	maxFileSize=kvpGetInt("maxFileSize",50000);
	syslog(LOG_INFO,"sendWavePackets %d\n",sendWavePackets);
    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading Openportd.config: %s\n",eString);
	fprintf(stderr,"Error reading Openportd.config: %s\n",eString);
    }

    //Load bandwidth settings
    kvpReset();
    status = configLoad ("Openportd.config","bandwidth") ;
    if(status == CONFIG_E_OK) {
//	maxEventsBetweenLists=kvpGetInt("maxEventsBetweenLists",100);
	headersPerEvent=kvpGetInt("headersPerEvent",30);
	eventBandwidth=kvpGetInt("eventBandwidth",5);
	tempNum=NUM_HK_TELEM_DIRS;
	kvpStatus = kvpGetIntArray("hkTelemOrder",hkTelemOrder,&tempNum);
	if(kvpStatus!=KVP_E_OK) {
	    syslog(LOG_WARNING,"kvpGetIntArray(hkTelemOrder): %s",
		   kvpErrorString(kvpStatus));
	    if(printToScreen)
		fprintf(stderr,"kvpGetIntArray(hkTelemOrder): %s\n",
			kvpErrorString(kvpStatus));
	}
	tempNum=NUM_HK_TELEM_DIRS;
	kvpStatus = kvpGetIntArray("hkTelemMaxPackets",hkTelemMaxPackets,&tempNum);
	if(kvpStatus!=KVP_E_OK) {
	    syslog(LOG_WARNING,"kvpGetIntArray(hkTelemMaxPackets): %s",
		   kvpErrorString(kvpStatus));
	    if(printToScreen)
		fprintf(stderr,"kvpGetIntArray(hkTelemMaxPackets): %s\n",
			kvpErrorString(kvpStatus));
	}


	tempNum=10;
	kvpStatus = kvpGetIntArray("priorityBandwidths",priorityBandwidths,&tempNum);
	if(kvpStatus!=KVP_E_OK) {
	    syslog(LOG_WARNING,"kvpGetIntArray(priorityBandwidths): %s",
		   kvpErrorString(kvpStatus));
	    if(printToScreen)
		fprintf(stderr,"kvpGetIntArray(priorityBandwidths): %s\n",
			kvpErrorString(kvpStatus));
	}
	else {
	    for(orderIndex=0;orderIndex<NUM_PRIORITIES*100;orderIndex++) {
		//Check for hundreds first
		for(count=0;count<tempNum;count++) {
		    if(priorityBandwidths[count]>=100) 
			priorityOrder[orderIndex++]=count;
		}
		
		//Next look for highest number
		maxVal=0;
		maxIndex=-1;
		for(count=0;count<tempNum;count++) {
		    if(priorityBandwidths[count]<100) {
			if(priorityBandwidths[count]>maxVal) {
			    maxVal=priorityBandwidths[count];
			    maxIndex=count;
			}
		    }
		}
		if(maxIndex>-1) {
		    priorityOrder[orderIndex]=maxIndex;
		    priorityBandwidths[maxIndex]--;
		}
		else break;
	    }			
	    numOrders=orderIndex;
	    if(printToScreen) {
		printf("Priority Order\n");
		for(orderIndex=0;orderIndex<numOrders;orderIndex++) {
		    printf("%d ",priorityOrder[orderIndex]);
		}
		printf("\n");
	    }
	}
    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading Openportd.config: %s\n",eString);
	fprintf(stderr,"Error reading Openportd.config: %s\n",eString);
    }

    return status;
}
Beispiel #4
0
int readConfigFile() 
/* Load Calibd and Relay config stuff */
{
    /* Config file thingies */
    int status=0;
    //    int tempNum=12;
//    int tempNum=3,count=0;
//    KvpErrorCode kvpStatus=0;
    char* eString ;
    kvpReset();
    status = configLoad ("Calibd.config","output") ;
    status = configLoad ("Calibd.config","calibd") ;
    status |= configLoad ("Calibd.config","relays") ;

    if(status == CONFIG_E_OK) {
	//Which board is the digital acromag?
	digitalCarrierNum=kvpGetInt("digitalCarrierNum",1);
      	printf("digitalCarrierNum %d\n",digitalCarrierNum);
	//Debug
	printToScreen=kvpGetInt("printToScreen",-1);
	
	//Heartbeat
	relayWritePeriod=kvpGetInt("relayWritePeriod",60);
	readoutPeriod=kvpGetInt("readoutPeriod",60);
	telemEvery=kvpGetInt("telemEvery",60);
	adcAverage=kvpGetInt("adcAverage",5);
	calibrationPeriod=kvpGetInt("calibrationPeriod",1200);

	//Relay States
	stateAmplite1=kvpGetInt("stateAmplite1",0);
	stateAmplite2=kvpGetInt("stateAmplite2",0);
	stateBZAmpa1=kvpGetInt("stateBZAmpa1",0);
	stateBZAmpa2=kvpGetInt("stateBZAmpa2",0);
	stateNTUAmpa=kvpGetInt("stateNTUAmpa",0);
	stateSB=kvpGetInt("stateSB",0);

	stateNTUSSD5V=kvpGetInt("stateNTUSSD5V",0);
	stateNTUSSD12V=kvpGetInt("stateNTUSSD12V",0);
	//	stateNTUSSDShutdown=kvpGetInt("stateNTUSSDShutdown",0);

    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading Calibd.config: %s\n",eString);
    }

   


    return status;
   
}
Beispiel #5
0
int main (int argc, char *argv[])
{
    int retVal=0;
    int relaysChanged=0;
    int firstTime=1;
    int lastRelayWriteSec=0;
       
    // Config file thingies 
    int status=0;
    char* eString;
    char *globalConfFile="anitaSoft.config";
    // Log stuff 
    char *progName=basename(argv[0]);
    

    int millisecs=0;
    struct timespec milliWait;
    milliWait.tv_sec=0;


    int lastCal=0;
    time_t rawTime;

    // Setup log 
    setlogmask(LOG_UPTO(LOG_INFO));
    openlog (progName, LOG_PID, ANITA_LOG_FACILITY) ;

    // Set signal handlers 
    signal(SIGUSR1, sigUsr1Handler);
    signal(SIGUSR2, sigUsr2Handler);
    signal(SIGTERM, handleBadSigs);
    signal(SIGINT, handleBadSigs);
    signal(SIGSEGV, handleBadSigs);

    //Dont' wait for children
    signal(SIGCLD, SIG_IGN);     

    //Sort out PID File
    retVal=sortOutPidFile(progName);
    if(retVal!=0) {
      return retVal;
    }


    // Load Config 
    kvpReset () ;
    status = configLoad (globalConfFile,"global") ;


    // Get Calibd output dirs
    if (status == CONFIG_E_OK) {
	hkDiskBitMask=kvpGetInt("hkDiskBitMask",1);

	disableUsb=kvpGetInt("disableUsb",1);
	if(disableUsb)
	    hkDiskBitMask&=~USB_DISK_MASK;
	//	disableNeobrick=kvpGetInt("disableNeobrick",1);
	//	if(disableNeobrick)
	//	    hkDiskBitMask&=~NEOBRICK_DISK_MASK;
	disableHelium2=kvpGetInt("disableHelium2",1);
	if(disableHelium2)
	    hkDiskBitMask&=~HELIUM2_DISK_MASK;
	disableHelium1=kvpGetInt("disableHelium1",1);
	if(disableHelium1)
	    hkDiskBitMask&=~HELIUM1_DISK_MASK;
    }
    else {
	eString=configErrorString (status) ;
	syslog(LOG_ERR,"Error reading %s: %s\n",globalConfFile,eString);
    }

    makeDirectories(CALIBD_STATUS_LINK_DIR);
    makeDirectories(HK_TELEM_DIR);
    makeDirectories(HK_TELEM_LINK_DIR);

    prepWriterStructs();

    //Need to set digital carrier num
    retVal=readConfigFile();
    //Setup acromag
    acromagSetup();
    ip470Setup();

    //Set code values
    autoZeroStruct.code=IP320_AVZ;
    rawDataStruct.code=IP320_RAW;
    calDataStruct.code=IP320_CAL;



    do {
	if(printToScreen) printf("Initializing Calibd\n");
	retVal=readConfigFile();
	relaysChanged=1;
	currentState=PROG_STATE_RUN;
//RJN for Hkd
        ip320Setup();
	millisecs=0;
	lastRelayWriteSec=0;
	while(currentState==PROG_STATE_RUN) {	  
	  time(&rawTime);
	  
	  //Set Relays to correct state
	  if(relaysChanged || firstTime) retVal=setRelays();
	  
	  if(relaysChanged || (rawTime-lastRelayWriteSec)>=relayWritePeriod) {

	    if(printToScreen) {
	      printf("Amplite1 (%d)  Amplite2 (%d)  BZAmpa1 (%d)  BZAmpa2 (%d)  NTUAmpa (%d)\tSB (%d) SSD_5V (%d) SSD_12V (%d) SSD_Shutdown (%d)\n",stateAmplite1,stateAmplite2,stateBZAmpa1,stateBZAmpa2,stateNTUAmpa,stateSB,stateNTUSSD5V,stateNTUSSD12V,stateNTUSSDShutdown);
	    }
	    writeStatus();
	    relaysChanged=0;
	    lastRelayWriteSec=rawTime;
	  }
	    

	  if(firstTime) firstTime=0;
	  
	  

	  
	  if((millisecs % readoutPeriod)==0) {
	    
	    time(&rawTime);		
	    
	    //		printf("Mag Ret: %d\n",retVal);
	    if((rawTime-lastCal)>calibrationPeriod) {
	      ip320Calibrate();
	      outputData(IP320_CAL);
	      outputData(IP320_AVZ);
	      lastCal=rawTime;
	    }
	    ip320Read(0);
	    outputData(IP320_RAW);
	    
	    millisecs=1;
	  }
	    //Just for safety we'll reset the sleep time
	  milliWait.tv_nsec=1000000;
	  nanosleep(&milliWait,NULL);
	  millisecs++;	   	 

	} //End of run loop
    } while(currentState==PROG_STATE_INIT);
    closeHkFilesAndTidy(&hkRawWriter);
    closeHkFilesAndTidy(&hkCalWriter);
    closeHkFilesAndTidy(&calibWriter);
    unlink(CALIBD_PID_FILE);
    syslog(LOG_INFO,"Calibd Terminating");
    return 0;
    
 }
Beispiel #6
0
int readConfig()
// Load LOSd config stuff
{
  // Config file thingies
  KvpErrorCode kvpStatus=0;
  int status=0,tempNum,count,maxVal,maxIndex;
  char* eString ;
  kvpReset();
  status = configLoad ("LOSd.config","output") ;
  if(status == CONFIG_E_OK) {
    printToScreen=kvpGetInt("printToScreen",-1);
    verbosity=kvpGetInt("verbosity",-1);
    if(printToScreen<0) {
      syslog(LOG_WARNING,
	     "Couldn't fetch printToScreen, defaulting to zero");
      printToScreen=0;
    }
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading LOSd.config: %s\n",eString);
    fprintf(stderr,"Error reading LOSd.config: %s\n",eString);
  }
  kvpReset();
  status = configLoad ("LOSd.config","losd");
  if(status == CONFIG_E_OK) {
    sendData=kvpGetInt("sendData",0);
    sendWavePackets=kvpGetInt("sendWavePackets",0);
    maxEventsBetweenLists=kvpGetInt("maxEventsBetweenLists",100);
    minTimeWait_b = kvpGetFloat("minTimeWait_b", 0.005); 
    minTimeWait_m = kvpGetFloat("minTimeWait_m", 1e-5); 
    laptopDebug=kvpGetInt("laptopDebug",0);
    losBus=kvpGetInt("losBus",1);
    losSlot=kvpGetInt("losSlot",1);
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading LOSd.config: %s\n",eString);
    fprintf(stderr,"Error reading LOSd.config: %s\n",eString);
  }
  kvpReset();
  status = configLoad ("LOSd.config","bandwidth") ;
  if(status == CONFIG_E_OK) {
    eventBandwidth=kvpGetInt("eventBandwidth",80);
    tempNum=10;
    kvpStatus = kvpGetIntArray("priorityBandwidths",priorityBandwidths,&tempNum);
    if(kvpStatus!=KVP_E_OK) {
      syslog(LOG_WARNING,"kvpGetIntArray(priorityBandwidths): %s",
	     kvpErrorString(kvpStatus));
      if(printToScreen)
	fprintf(stderr,"kvpGetIntArray(priorityBandwidths): %s\n",
		kvpErrorString(kvpStatus));
    }
    else {
      for(orderIndex=0;orderIndex<NUM_PRIORITIES*100;orderIndex++) {
	//Check for hundreds first
	for(count=0;count<tempNum;count++) {
	  if(priorityBandwidths[count]>=100) 
	    priorityOrder[orderIndex++]=count;
	}
		

	//Next look for highest number
	maxVal=0;
	maxIndex=-1;
	for(count=0;count<tempNum;count++) {
	  if(priorityBandwidths[count]<100) {
	    if(priorityBandwidths[count]>maxVal) {
	      maxVal=priorityBandwidths[count];
	      maxIndex=count;
	    }
	  }
	}
	if(maxIndex>-1) {
	  priorityOrder[orderIndex]=maxIndex;
	  priorityBandwidths[maxIndex]--;
	}
	else break;
      }			
      numOrders=orderIndex;
      if(printToScreen) {
	printf("Priority Order\n");
	for(orderIndex=0;orderIndex<numOrders;orderIndex++) {
	  printf("%d ",priorityOrder[orderIndex]);
	}
	printf("\n");
      }
    }
  }
  else {
    eString=configErrorString (status) ;
    syslog(LOG_ERR,"Error reading LOSd.config: %s\n",eString);
    fprintf(stderr,"Error reading LOSd.config: %s\n",eString);
  }

  return status;
}
int main (int argc, char *argv[])
{
    char ip470carrier[FILENAME_MAX];
    sprintf(ip470carrier,"%s",carrierDefault);
    int retVal,port,channel,value,ip470BoardLocation=0;
    int gpsOnPort,gpsOffPort,ndOnPort,ndOffPort,rfcmOnPort,rfcmOffPort;

    /* Config file thingies */
    int status=0;
    char* eString ;

    /* Log stuff */
    char *progName=basename(argv[0]);

    /* Getopt needs to run first: it'll resort the argv array */
    char option;
    while ((option = getopt(argc, argv, "tn:")) != -1)
      {
	switch (option) {
	case 't':
	  toggle = 1; printf("Toggle mode.\n"); break;
	case 'n':
	  nbits = atoi(optarg);
	  if (nbits < 2) nbits = 1;
	  printf("%d-bit mode.\n", nbits); break;
	default:
	  return usage(progName);
	}
      }
    /* All non-options are now offset by optind */
    if(argc-optind==3) {
	port = atoi(argv[optind]);
	channel = atoi(argv[optind+1]);
	value = atoi(argv[optind+2]);	
    }
    else return usage(progName);

    if (channel + nbits > 8)
      return usage(progName);


    /* Setup log */
    setlogmask(LOG_UPTO(LOG_INFO));
    openlog (progName, LOG_PID, ANITA_LOG_FACILITY) ;

   
    /* Load Config */
    kvpReset () ;
    status = configLoad ("Hkd.config","relaycontrol") ;
    eString = configErrorString (status) ;

    /* Get Port Numbers */
    if (status == CONFIG_E_OK) {
        char *temp;
	temp = kvpGetString("ip470carrier");
	if (temp != NULL) sprintf(ip470carrier,"%s",temp);
	ip470BoardLocation=kvpGetInt("ip470BoardLocation",-1);
	gpsOnPort=kvpGetInt("gpsOnLogic",-1);
	gpsOffPort=kvpGetInt("gpsOffLogic",-1);
	ndOnPort=kvpGetInt("ndOnLogic",-1);
	ndOffPort=kvpGetInt("ndOffLogic",-1);
	rfcmOnPort=kvpGetInt("rfcmOnLogic",-1);
	rfcmOffPort=kvpGetInt("rfcmOffLogic",-1);
    }
    else {
	printf("Error trying to read %s:\t%s\n","Hkd.config",eString);
    }
    
    printf("ip470carrier: %s\n", ip470carrier);
    retVal=0;

    acromagSetup(ip470BoardLocation, ip470carrier);
    ip470Setup();
	
    retVal=ip470Write(port,channel,value);
    if(retVal<0) {
	printf("Error setting: port %d, chan %d, value %d\n%d\n",port,channel,value,retVal);
	return 0;
    }
    printf("Set: port %d, chan %d, value %d\n%d\n",port,channel,value,retVal);
    return 0;
}