Esempio n. 1
0
void getStrPattern(char* str, int len, int pattern[len])
{
    StrPair pair[len];

    for (int i = 0; i < len; ++i) {
        char* s = getStr(str, i);
        int v = getStrValue(s, i, pair);
        pair[i].v = v;
        pair[i].s = s;

        pattern[i] = v;
    }
}
Esempio n. 2
0
void getRunState(int idpm, xmlDoc* doc, char* state) {
  int dpm;
  xmlXPathObjectPtr result;
  xmlNodePtr node;
  char tmp[256];
  dpm = idpm;
  strcpy((char*)state, "undef");
  if(DEBUG>0)
    printf("[ getRunState ] : get state of dpm %d (idpm=%d) dpm_doc at %p\n", dpm, idpm, doc);
  if(doc!=NULL) {      
    if(DEBUG>0)
      printf("[ getRunState ]: idpm %d xml ok\n", idpm);    
    if(DEBUG>2) 
      printf("[ getRunStateFromDpmValue ] : get RunState from dpm xml\n");
    sprintf(tmp,"/system/status/RunState");
    if(DEBUG>2) printf("[ getRunStateDpm ] : xpath \"%s\"\n",tmp);
    result =  getnodeset(doc, (xmlChar*) tmp);
    if(result!=NULL) {
      if(DEBUG>2) 
	printf("[ getRunStateFromDpmValue ] : got %d nodes\n", result->nodesetval->nodeNr);
      if(result->nodesetval->nodeNr==1) {
	node = result->nodesetval->nodeTab[0];
	if(node!=NULL) {
	  getStrValue(doc, node, state);
	  //getRunStateFromDpmValue(doc, (xmlChar*) state);
	  if(DEBUG>0)
	    printf("[ getRunState ]: got val %s\n", state);
	} else {
	  printf("[ getRunStateFromDpmValue ] : [ WARNING ] no RunState nodes found\n");
	  strcpy((char*)state, "no valid node");
	}
      } else {
	printf("[ getRunStateFromDpmValue ] : [ WARNING ] %d RunState nodes found, should be exactly 1\n", result->nodesetval->nodeNr);
	strcpy((char*)state,"wrong nr of nodes");
      }
    } else {
      printf("[ getRunStateFromDpmValue ] : [ WARNING ] no results found\n");
      strcpy((char*)state, "no xpath results");
    }  
  } else {
    if(DEBUG>0) 
      printf("[ getRunState ]: [ WARNING ]: the dpm %d xml doc status is invalid\n",idpm);
    strcpy(state,"no valid xml");
  }
  if(DEBUG>0) 
    printf("[ getRunStateFromDpmValue ] : returning with state \"%s\"\n", state);
  
  return;
}
Esempio n. 3
0
void getFebDnaValue(xmlDocPtr doc,int index, xmlChar* dna) {
  xmlNodePtr node;
  node = getFebDnaNode(doc,index);
  if(node!=NULL) {
    if(DEBUG>1)
      printf("[ getFebDnaValue ] : get str value from node %s\n", node->name);
    getStrValue(doc, node, dna);   
  } else {
    if(DEBUG>1)
      printf("[ getFebDnaValue ] : no valid xml node found\n");
    strcpy((char*) dna,"no xml node");
  }
  if(DEBUG>1)     
    printf("[ getFebDnaValue ] : got value %s\n", (char*)dna);
}
Esempio n. 4
0
void getSyncProcess(char* pname, xmlDoc* doc, char* value) {
  int val;
  int ifeb;
  int idp;
  int iapv;
  char str1[256];
  char str5[256];
  char action[256];
  char tmp[256];
  xmlXPathObjectPtr result;
  xmlNodePtr node;
  val = -1;
  ifeb = -1;
  idp = -1;
  
  getStringFromEpicsName(pname,str1,1);
  
  if(strcmp(str1,"daq")==0) {
    
    getStringFromEpicsName(pname,str5,5);
    
    if(strcmp(str5,"syncbase_rd_asub")==0) {      
      ifeb = getIntFromEpicsName(pname,2);  
      idp = getIntFromEpicsName(pname,3);  
      iapv = getIntFromEpicsName(pname,4);        
      sprintf(tmp,"/system/status/ControlDpm/FebFpga[@index=\"%d\"]/FebCore/HybridSyncStatus[@index=\"%d\"]/Base%d", ifeb, idp, iapv);      
    } else if(strcmp(str5,"syncpeak_rd_asub")==0) {
      ifeb = getIntFromEpicsName(pname,2);  
      idp = getIntFromEpicsName(pname,3);  
      iapv = getIntFromEpicsName(pname,4);        
      sprintf(tmp,"/system/status/ControlDpm/FebFpga[@index=\"%d\"]/FebCore/HybridSyncStatus[@index=\"%d\"]/Peak%d", ifeb, idp, iapv);      
    } else {
      strcpy(tmp,""); 
    }
    
    if(strcmp(tmp,"")!=0) {
      if(DEBUG>2) 
	printf("[ getSyncProcess ] : xpath \"%s\"\n",tmp);
      result =  getnodeset(doc, (xmlChar*) tmp);
      if(result!=NULL) {
	if(DEBUG>0) printf("[ getSyncProcess ] : got %d nodes\n", result->nodesetval->nodeNr);
	if(result->nodesetval->nodeNr==1) {
	  node = result->nodesetval->nodeTab[0];
	  if(node!=NULL) {
	    getStrValue(doc,node,value);
	    if(DEBUG>0) printf("[ getSyncProcess ]: got val %tmp2.\n",value);      
	  } else {
	    printf("[ getSyncProcess ] : [ WARNING ] no Sync nodes found\n");
	    strcpy(value,"no nodes");
	  }
	} else {
	  printf("[ getSyncProcess ] : [ WARNING ] %d Sync nodes found, should be exactly 1\n", result->nodesetval->nodeNr);
	  strcpy(value,"too many nodes");	  
	}	  
      } else {
	if(DEBUG>1)
	  printf("[ getSyncProcess ] : [ WARNING ] no results found\n");
	strcpy(value,"no result");	  	
      }  
    } else {
      printf("[ getSyncProcess ]: [ ERROR ]: wrong action \"%s\"!\n",action);
      strcpy(value,"wrong action");
    }     
  } else {
    printf("[ getSyncProcess ]: [ ERROR ]: wrong record name? \"%s\"!\n",pname);   
    strcpy(value, "record");
  }

  return;
}
Esempio n. 5
0
int getLinkProcess(char* pname, xmlDoc* doc) {
  int val;
  int idpm;
  int idp;
  char str1[256];
  char str2[256];
  char action[256];
  char tmp[256];
  xmlXPathObjectPtr result;
  xmlNodePtr node;
  val = -1;
  idpm = -1;
  idp = -1;
  getStringFromEpicsName(pname,str1,1);
  getStringFromEpicsName(pname,str2,2);

  if(strcmp(str1,"daq")==0 && strcmp(str2,"dpm")==0) {     
    idpm = getIntFromEpicsName(pname,3);  
    idp = getIntFromEpicsName(pname,4);  
    
    getStringFromEpicsName(pname,action,5);    
    
    if(strcmp(action,"rxphyready_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxPhyReady",idp);
    } 
    else if(strcmp(action,"rxframecount_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxFrameCount",idp);
    } 
    else if(strcmp(action,"rxframeerrorcount_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxFrameErrorCount",idp);
    } 
    else if(strcmp(action,"rxcellerrorcount_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxCellErrorCount",idp);
    } 
    else if(strcmp(action,"rxlinkerrorcount_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxLinkErrorCount",idp);
    } 
    else if(strcmp(action,"rxlinkdowncount_sub")==0) {
      sprintf(tmp,"/system/status/DataDpm/Pgp2bAxi[@index=\"%d\"]/RxLinkDownCount",idp);
    } else {
      strcpy(tmp,""); 
    }

    if(strcmp(tmp,"")!=0) {
      if(DEBUG>2) printf("[ getLinkDpm ] : xpath \"%s\"\n",tmp);
      result =  getnodeset(doc, (xmlChar*) tmp);
      if(result!=NULL) {
	if(DEBUG>0) printf("[ getLinkProcess ] : got %d nodes\n", result->nodesetval->nodeNr);
	if(result->nodesetval->nodeNr==1) {
	  node = result->nodesetval->nodeTab[0];
	  if(node!=NULL) {
	    if(strcmp(action,"rxphyready")==0) {
	      char tmp2[256];
	      getStrValue(doc,node,tmp2);
	      if(strcmp(strToUpper(tmp2),"FALSE")==0) 
		val = 0;
	      else if(strcmp(strToUpper(tmp2),"TRUE")==0) 
		val = 1;
	      else {
		printf("[ getLinkProcess ] : [ ERROR ] wrong boolean string %s\n",tmp2);
		val = -2;
	      }
	    } else {
	      val = getIntValue(doc, node);
	    }
	    if(DEBUG>0) printf("[ getLinkProcess ]: got val %d.\n",val);      
	  } else {
	    printf("[ getLinkProcess ] : [ WARNING ] no Link nodes found\n");
	  }
	} else {
	  printf("[ getLinkProcess ] : [ WARNING ] %d Link nodes found, should be exactly 1\n", result->nodesetval->nodeNr);
	}
      } else {
	printf("[ getLinkProcess ] : [ WARNING ] no results found\n");
      }  
      

    } else {
      printf("[ getLinkProcess ]: [ ERROR ]: wrong action \"%s\"!\n",action);
    }     
  } else {
    printf("[ getLinkProcess ]: [ ERROR ]: wrong record name? \"%s\"!\n",pname);    
  }
  return val;
}
Esempio n. 6
0
QString getWhereClauseFromExtent(QString extent,QSqlDatabase db, QString table)
{
    //(1.3333,32.1212321) (-4.12121,41.212121)
    if (!extent.count(" ") == 1)
    {
        gbtLog(QObject::tr("Extent is invalid"));
        return QString();
    }
    if (!extent.count(",") == 2)
    {
        gbtLog(QObject::tr("Extent is invalid"));
        return QString();
    }
    if (!extent.count("(") == 2)
    {
        gbtLog(QObject::tr("Extent is invalid"));
        return QString();
    }
    if (!extent.count(")") == 2)
    {
        gbtLog(QObject::tr("Extent is invalid"));
        return QString();
    }
    int pos;
    pos = extent.indexOf(" ");
    QString from;
    QString to;
    from = extent.left(pos);
    to = extent.mid(pos+1,extent.length()-pos+1);
    from.replace("(","");
    from.replace(")","");
    to.replace("(","");
    to.replace(")","");

    //Get UpperLeft
    QPointF dupperLeft;
    pos = from.indexOf(",");
    dupperLeft.setX(from.left(pos).toDouble());
    dupperLeft.setY(from.mid(pos+1,from.length()-pos+1).toDouble());


    //Get lower right
    QPointF dlowerRight;
    pos = to.indexOf(",");
    dlowerRight.setX(to.left(pos).toDouble());
    dlowerRight.setY(to.mid(pos+1,to.length()-pos+1).toDouble());

    QSqlQuery qry(db);
    QString sql;

    double dbCellSize;
    dbCellSize = 0.0;

    sql = "SELECT cellSize FROM gbtconfig";
    if (qry.exec(sql))
    {
        if (qry.first())
            dbCellSize = qry.value(0).toDouble();
        else
            return QString();
    }
    else
        return QString();

    if (dbCellSize == 0.0)
        return QString();
    double xllCenter;
    double yllCenter;
    int NumberRows;
    sql = "SELECT xllCenter,yllCenter,nrows FROM datasetinfo WHERE dataset_id = '" + table + "'";
    if (qry.exec(sql))
    {
        if (qry.first())
        {
            xllCenter = qry.value(0).toDouble();
            yllCenter = qry.value(1).toDouble();
            NumberRows = qry.value(2).toInt();
        }
        else
            return QString();
    }
    else
        return QString();

    QPoint upperLeft;
    QPoint lowerRight;

    int xpos;
    int ypos;

    if(dbCellSize != 0.0)
    {
        //Plots the bounds in the grid
        upperLeft.setX(round( ( dupperLeft.x() - xllCenter )/dbCellSize ));
        upperLeft.setY(NumberRows - round( ( dupperLeft.y() - yllCenter )/dbCellSize ) - 1);


        QPointF UL;
        UL = dupperLeft;

        lowerRight.setX(round( ( dlowerRight.x() - xllCenter )/dbCellSize ));
        lowerRight.setY(NumberRows - round( ( dlowerRight.y() - yllCenter )/dbCellSize ) - 1);

        QPointF LR;
        LR = dlowerRight;

        //Plots the bounds in the GOBLET coordinate system
        ypos = round((180/dbCellSize) - (fabs((-90 - yllCenter)/dbCellSize) + NumberRows)) + 1;
        xpos = round(fabs((-180 - xllCenter)/dbCellSize))+1;

        upperLeft.setX(xpos + upperLeft.x());
        upperLeft.setY(ypos + upperLeft.y());

        lowerRight.setX(xpos + lowerRight.x());
        lowerRight.setY(ypos + lowerRight.y());

        //Crete the where clause

        QString idsuit;
        idsuit = getStrValue(upperLeft.y()) + getStrValue(upperLeft.x());

        QString where;
        where = " TA.geokey BETWEEN '" + idsuit + "' AND ";

        idsuit = getStrValue(lowerRight.y()) + getStrValue(lowerRight.x());
        where = where + "'" + idsuit + "'";
        return where;

    }

    return QString();
}
Esempio n. 7
0
int HGameConfig::getIntValue(int type)
{
    return atoi(getStrValue(type));
}