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; } }
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; }
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); }
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; }
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; }
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(); }
int HGameConfig::getIntValue(int type) { return atoi(getStrValue(type)); }