Changeset 2555 for trunk/MagicSoft/Mars
- Timestamp:
- 11/22/03 15:16:32 (21 years ago)
- Location:
- trunk/MagicSoft/Mars/mreport
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/mreport/MReportCamera.cc
r2535 r2555 35 35 #include "MParList.h" 36 36 37 #include "../mcamera/MCameraHV.h" 37 #include "MCameraCalibration.h" 38 #include "MCameraCooling.h" 39 #include "MCameraHV.h" 40 #include "MCameraLV.h" 41 #include "MCameraAUX.h" 42 #include "MCameraLids.h" 38 43 39 44 ClassImp(MReportCamera); 40 41 ClassImp(MCameraCooling);42 ClassImp(MCameraLids);43 ClassImp(MCameraHV);44 ClassImp(MCameraLV);45 ClassImp(MCameraCalibration);46 45 47 46 using namespace std; … … 60 59 fLids = (MCameraLids*)plist.FindCreateObj("MCameraLids"); 61 60 if (!fLids) 61 return kFALSE; 62 63 fAUX = (MCameraAUX*)plist.FindCreateObj("MCameraAUX"); 64 if (!fAUX) 62 65 return kFALSE; 63 66 … … 124 127 125 128 Int_t len; 126 const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n", 129 130 Int_t wall, opt, center, water; 131 Short_t hwall, hcenter, hip, lop, pump, ref, valv, res, fans; 132 const Int_t n=sscanf(str.Data(), "%d %d %d %d %hu %hu %hu %hu %hu %hu %hu %hu %hu %n", 133 &wall, &opt, ¢er, &water, &hwall, &hcenter, 134 &hip, &lop, &pump, &ref, &valv, &res, &fans, &len); 135 if (n!=13) 136 { 137 *fLog << err << "ERROR - Reading information of 'COOL' section." << endl; 138 return kFALSE; 139 } 140 141 fCooling->fTempWall = 0.1*wall; 142 fCooling->fTempOptLink = 0.1*opt; 143 fCooling->fTempCenter = 0.1*center; 144 fCooling->fTempWater = 0.1*water; 145 fCooling->fHumWall = (Byte_t)hwall; 146 fCooling->fHumCenter = (Byte_t)hcenter; 147 fCooling->fStatusPressureHi = (Bool_t)hip; 148 fCooling->fStatusPressureLo = (Bool_t)lop; 149 fCooling->fStatusPump = (Bool_t)pump; 150 fCooling->fStatusRefrigrerator = (Bool_t)ref; 151 fCooling->fStatusValve = (Bool_t)valv; 152 fCooling->fStatusResistor = (Bool_t)res; 153 fCooling->fStatusFans = (Bool_t)fans; 154 155 str.Remove(0, len); 156 str=str.Strip(TString::kLeading); 157 return kTRUE; 158 } 159 160 Bool_t MReportCamera::InterpreteLID(TString &str) 161 { 162 if (!CheckTag(str, "LID ")) 163 return kFALSE; 164 165 Int_t len; 166 Short_t limao, limac, limbo, limbc; 167 Short_t slimao, slimac, slimbo, slimbc; 168 Short_t slida, slidb, mlida, mlidb; 169 const Int_t n=sscanf(str.Data(), "%hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %hu %n", 170 &limao, &limac, &limbo, &limbc, 171 &slimao, &slimac, &slimbo, &slimbc, 172 &slida, &slidb, &mlida, &mlidb, 127 173 &len); 128 if (n!=0) 129 { 130 *fLog << err << "ERROR - Reading information of 'COOL' section." << endl; 131 return kFALSE; 132 } 133 str.Remove(0, len); 134 str=str.Strip(TString::kLeading); 135 return kTRUE; 136 } 137 138 Bool_t MReportCamera::InterpreteLID(TString &str) 139 { 140 if (!CheckTag(str, "LID ")) 141 return kFALSE; 142 143 Int_t len; 144 const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n", 145 &len); 146 if (n!=0) 174 if (n!=12) 147 175 { 148 176 *fLog << err << "ERROR - Reading information of 'LID' section." << endl; 149 177 return kFALSE; 150 178 } 179 180 fLids->fLidA.fLimitOpen = (Bool_t)limao; 181 fLids->fLidA.fLimitClose = (Bool_t)limac; 182 fLids->fLidA.fSafetyLimitOpen = (Bool_t)slimao; 183 fLids->fLidA.fSafetyLimitClose= (Bool_t)slimac; 184 fLids->fLidA.fStatusLid = (Byte_t)slida; 185 fLids->fLidA.fStatusMotor = (Byte_t)mlida; 186 187 fLids->fLidB.fLimitOpen = (Bool_t)limbo; 188 fLids->fLidB.fLimitClose = (Bool_t)limbc; 189 fLids->fLidB.fSafetyLimitOpen = (Bool_t)slimbo; 190 fLids->fLidB.fSafetyLimitClose= (Bool_t)slimbc; 191 fLids->fLidB.fStatusLid = (Byte_t)slidb; 192 fLids->fLidB.fStatusMotor = (Byte_t)mlidb; 193 151 194 str.Remove(0, len); 152 195 str=str.Strip(TString::kLeading); … … 160 203 161 204 Int_t len; 162 const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %n", 163 &len); 164 if (n!=0) 205 Short_t c1, c2; 206 const Int_t n=sscanf(str.Data(), "%hd %hd %hd %hd %n", 207 &fHV->fVoltageA, &fHV->fVoltageB, &c1, &c2, &len); 208 if (n!=4) 165 209 { 166 210 *fLog << err << "ERROR - Reading information of 'HVPS' section." << endl; 167 211 return kFALSE; 168 212 } 213 214 fHV->fCurrentA = (Byte_t)c1; 215 fHV->fCurrentB = (Byte_t)c2; 216 169 217 str.Remove(0, len); 170 218 str=str.Strip(TString::kLeading); … … 178 226 179 227 Int_t len; 180 const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n", 181 &len); 182 if (n!=0) 228 Short_t vap5, vap12, van12, vbp5, vbp12, vbn12; 229 Short_t valp12, vblp12, cap5, cap12, can12, cbp5, cbp12; 230 Short_t cbn12, calp12, cblp12, lvps, temp, hum; 231 const Int_t n=sscanf(str.Data(), "%hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %n", 232 &vap5, &vap12, &van12, &vbp5, &vbp12, &vbn12, 233 &valp12, &vblp12, &cap5, &cap12, &can12, &cbp5, &cbp12, 234 &cbn12, &calp12, &cblp12, &lvps, &temp, &hum, &len); 235 if (n!=19) 183 236 { 184 237 *fLog << err << "ERROR - Reading information of 'LV' section." << endl; 185 238 return kFALSE; 186 239 } 240 241 fLV->fRequestPowerSupply = (Bool_t)lvps; 242 fLV->fTemp = 0.1*temp; 243 fLV->fHumidity = (Byte_t)hum; 244 245 fLV->fPowerSupplyA.fVoltagePos5V = 0.01*vap5; 246 fLV->fPowerSupplyA.fVoltagePos12V = 0.01*vap12; 247 fLV->fPowerSupplyA.fVoltageNeg12V = 0.01*van12; 248 fLV->fPowerSupplyA.fVoltageOptLinkPos12V = 0.01*valp12; 249 fLV->fPowerSupplyA.fCurrentPos5V = 0.001*cap5; 250 fLV->fPowerSupplyA.fCurrentPos12V = 0.001*cap12; 251 fLV->fPowerSupplyA.fCurrentNeg12V = 0.001*can12; 252 fLV->fPowerSupplyA.fCurrentOptLinkPos12V = 0.001*calp12; 253 254 fLV->fPowerSupplyB.fVoltagePos5V = 0.01*vbp5; 255 fLV->fPowerSupplyB.fVoltagePos12V = 0.01*vbp12; 256 fLV->fPowerSupplyB.fVoltageNeg12V = 0.01*vbn12; 257 fLV->fPowerSupplyB.fVoltageOptLinkPos12V = 0.01*vblp12; 258 fLV->fPowerSupplyB.fCurrentPos5V = 0.001*cbp5; 259 fLV->fPowerSupplyB.fCurrentPos12V = 0.001*cbp12; 260 fLV->fPowerSupplyB.fCurrentNeg12V = 0.001*cbn12; 261 fLV->fPowerSupplyB.fCurrentOptLinkPos12V = 0.001*cblp12; 262 187 263 str.Remove(0, len); 188 264 str=str.Strip(TString::kLeading); … … 196 272 197 273 Int_t len; 198 const Int_t n=sscanf(str.Data(), "%*d %*d %n", &len); 199 if (n!=0) 274 Short_t led, fan; 275 const Int_t n=sscanf(str.Data(), "%hd %hd %n", &led, &fan, &len); 276 if (n!=2) 200 277 { 201 278 *fLog << err << "ERROR - Reading information of 'AUX' section." << endl; 202 279 return kFALSE; 203 280 } 281 282 fAUX->fRequestCaosLEDs=(Bool_t)led; 283 fAUX->fRequestFansFADC=(Bool_t)fan; 284 204 285 str.Remove(0, len); 205 286 str=str.Strip(TString::kLeading); … … 213 294 214 295 Int_t len; 215 const Int_t n=sscanf(str.Data(), "%*d %*d %*d %*d %n", &len); 216 if (n!=0) 296 Short_t hv, lv, cont, pin; 297 298 const Int_t n=sscanf(str.Data(), "%hd %hd %hd %hd %n", &hv, &lv, &cont, &pin, &len); 299 if (n!=4) 217 300 { 218 301 *fLog << err << "ERROR - Reading information of 'CAL' section." << endl; … … 220 303 } 221 304 305 fCalibration->fRequestHiVoltage = (Bool_t)hv; 306 fCalibration->fRequestLoVoltage = (Bool_t)lv; 307 fCalibration->fRequestContLight = (Bool_t)cont; 308 fCalibration->fRequestPinDiode = (Bool_t)pin; 309 222 310 str.Remove(0, len); 223 311 str=str.Strip(TString::kBoth); 312 return kTRUE; 313 } 314 315 Bool_t MReportCamera::InterpreteCamera(TString &str) 316 { 317 // 318 // I have tried to do it with pure pointer arithmentics, but most of the time is spent 319 // to do the sscanf. So we gain less than 5% not using TString like it is done here. 320 Int_t len; 321 Short_t cal, stat, hvps, lid, lv, cool, hv, dc, led, fan, can, io, clv; 322 Int_t n=sscanf(str.Data(), " %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %n", 323 &cal, &stat, &hvps, &lid, &lv, &cool, &hv, 324 &dc, &led, &fan, &can, &io, &clv, &len); 325 if (n!=13) 326 { 327 *fLog << err << "ERROR - Cannot interprete status' of subsystems." << endl; 328 return kFALSE; 329 } 330 str.Remove(0, len); 331 str=str.Strip(TString::kLeading); 332 333 fHV->fStatus = (Byte_t)hvps; 334 fLids->fStatus = (Byte_t)lid; 335 fLV->fStatus = (Byte_t)lv; 336 fCooling->fStatus = (Byte_t)cool; 337 fHV->fStatusRamping = (Byte_t)hv; 338 fAUX->fStatusCaosLEDs = (Bool_t)led; 339 fAUX->fStatusFansFADC = (Bool_t)fan; 340 fCalibration->fStatus = (Bool_t)cal; 341 fCalibration->fStatusCANbus = (Bool_t)can; 342 fCalibration->fStatusIO = (Bool_t)io; 343 fCalibration->fStatusLoVoltage = (Bool_t)clv; 344 fStatus = (Byte_t)stat; 345 fStatusDC = (Byte_t)dc; 346 224 347 return kTRUE; 225 348 } … … 229 352 Bool_t MReportCamera::InterpreteBody(TString &str) 230 353 { 231 // 232 // I have tried to do it with pure pointer arithmentics, but most of the time is spent 233 // to do the sscanf. So we gain less than 5% not using TString like it is done here. 234 Int_t len; 235 Int_t n=sscanf(str.Data(), " %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %n", 236 &len); 237 238 if (n!=0) 239 { 240 *fLog << err << "ERROR - Cannot interprete status' of subsystems." << endl; 241 return kFALSE; 242 } 243 str.Remove(0, len); 244 str=str.Strip(TString::kLeading); 354 if (!InterpreteCamera(str)) 355 return kFALSE; 245 356 246 357 if (!InterpreteDC(str)) -
trunk/MagicSoft/Mars/mreport/Makefile
r2520 r2555 22 22 # connect the include files defined in the config.mk file 23 23 # 24 INCLUDES = -I. -I../mbase -I../mtools 24 INCLUDES = -I. -I../mbase -I../mtools -I../mcamera 25 25 26 26 #------------------------------------------------------------------------------
Note:
See TracChangeset
for help on using the changeset viewer.