/******************************************************************************* * TmsLib.h TMS Client library functions * T.Barnaby, BEAM Ltd, 2007-03-14 ******************************************************************************* */ #include <stdlib.h> #include <stdint.h> #include <unistd.h> #include <math.h> #include <TmsLib.h> #include <BDir.h> #include <BEntry.h> #include <BFile.h> #include <TmsCycleParam.h> namespace Tms { CycleParamDb::CycleParamDb(BString baseDir){ obaseDir = baseDir; } BError CycleParamDb::getCycleTypes(BList<BString>& typeList){ BError err; BDir dir; BIter i; BString n; BEntryFile f; typeList.clear(); if(err = dir.open(obaseDir)){ return err; } dir.setWild("*_0.spt"); dir.setSort(1); for(dir.start(i); !dir.isEnd(i); dir.next(i)){ if(!f.open(obaseDir + "/" + dir.entryName(i))){ f.read(); n = f.findValue("cycleType:"); typeList.append(n); } } return err; } BError CycleParamDb::getFileNames(BList<BString>& fileList){ BError err; BDir dir; BIter i; fileList.clear(); if(err = dir.open(obaseDir)){ return err; } dir.setWild("*.spt"); dir.setSort(1); for(dir.start(i); !dir.isEnd(i); dir.next(i)){ fileList.append(dir.entryName(i)); } return err; } BError CycleParamDb::getCycleParams(BString fileName, Tms::CycleParam& param){ BString pathName; pathName = obaseDir + "/" + fileName; return readCycleParams(pathName, param); } BError CycleParamDb::setCycleParams(Tms::CycleParam param){ BString fileName; fileName = obaseDir + "/" + param.cycleType + "_" + param.channel + ".spt"; return writeCycleParams(fileName, param); } BError CycleParamDb::deleteCycleParams(BString cycleType, UInt32 puChannel){ BError err; BDir dir; BIter i; BString n; BEntryFile f; BString pn; if(err = dir.open(obaseDir)){ return err; } if(puChannel) dir.setWild(BString("*_") + puChannel + ".spt"); else dir.setWild("*_*.spt"); for(dir.start(i); !dir.isEnd(i); dir.next(i)){ pn = obaseDir + "/" + dir.entryName(i); if(!f.open(pn)){ f.read(); n = f.findValue("cycleType:"); if(n == cycleType){ unlink(pn); } } } return err; } BError CycleParamDb::readCycleParams(BString fileName, Tms::CycleParam& param){ BError err; CycleParamEdit cp; if(! (err = cp.readFromFile(fileName))){ param = cp; } return err; } BError CycleParamDb::writeCycleParams(BString fileName, Tms::CycleParam param){ CycleParamEdit cp = param; return cp.writeToFile(fileName); } }