zlog.h

Go to the documentation of this file.
00001 // ***************************************************************************
00002 //                        zlog.h
00003 //                           -------------------
00004 //
00005 //
00006 //    copyright            : (c) 2004 Tim Baier
00007 //    email                : tbaier@informatik.uni-hamburg.de
00008 // ***************************************************************************
00009 
00010 #ifndef ZLOG_H
00011 #define ZLOG_H
00012 
00013 #include <stdlib.h>
00014 #include <string>
00015 #include <iostream>
00016 
00020 #define DEFAULT_LOG_SIZE 10
00021 
00030 class ZLog
00031 {
00032   public:
00033 
00036     ZLog();
00037 
00042     ZLog(const int logsize);
00043 
00046     ~ZLog();
00047 
00053     void writeLog(const short value);
00054 
00059     short getLog(const int pos) const;
00060 
00064     short getLastLog() const;
00065 
00070     void setSize(const int size);
00071 
00076     void eraseLog();
00077 
00083     void setLog(const short value);
00084 
00089     void resetLog();
00090 
00095     void showLog();
00096 
00097  protected:
00098 
00099  //   struct LogPos{
00100  //     int Pos;
00101  //     short Value;
00102  //   }MinLog, MaxLog;
00103 
00104     void detectTorqueSwitch();
00105 
00106   //  void initMinMax();
00107    // void setMinMax(const short value);
00108 
00111     short *Log;
00112 
00116     int ActPos;
00117 
00120     int LogSize;
00121 };
00122 
00123 
00124 
00125 // ************************
00126 // **                    **
00127 // ************************
00128 inline void ZLog::writeLog(const short value)
00129 {
00130   if(++ActPos >= LogSize)
00131     ActPos = 0;
00132 
00133   Log[ActPos] = value;
00134   //setMinMax(value);
00135 
00136   detectTorqueSwitch();
00137 }
00138 
00139 
00140 // ************************
00141 // **                    **
00142 // ************************
00143 #if 0
00144 inline void ZLog::setMinMax(const short value)
00145 {
00146   if(value <= MinLog.Value){
00147     MinLog.Value = value;
00148     MinLog.Pos   = ActPos;
00149   }
00150 
00151   if(value >= MaxLog.Value){
00152     MaxLog.Value = value;
00153     MaxLog.Pos   = ActPos;
00154   }
00155 }
00156 #endif
00157 #if 0
00158 // ************************
00159 // **                    **
00160 // ************************
00161 inline void ZLog::detectTorqueSwitch()
00162 {
00163   int dummy = ActPos;
00164   int dummy1 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00165 
00166   if(((Log[ActPos] - Log[dummy1]) > 3)){
00167     int dummy2 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00168     int dummy3 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00169     int dummy4 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00170 
00171     if(Log[dummy1] < Log[dummy2] && Log[dummy2] <= Log[dummy3]){
00172 
00173       if((Log[ActPos] < Log[dummy3]) && (Log[dummy3] - Log[dummy1]) > 14 &&
00174          (Log[dummy4] < Log[dummy3])){
00175 
00176         std::cout << "****************************** TORQUE SWITCH ACTIVATED?" << std::endl;
00177         showLog();
00178       }
00179     }
00180     else{
00181 
00182       if((Log[dummy2] - Log[dummy1]) > 10 &&
00183          //(Log[dummy1] < Log[dummy3]) &&
00184          (Log[dummy3] < Log[dummy2])){
00185 
00186         std::cout << "****************************** TORQUE SWITCH ACTIVATED ELSE?" << std::endl;
00187         showLog();
00188       }
00189     }
00190   }
00191 }
00192 #endif
00193 
00194 
00195 // ************************
00196 // **                    **
00197 // ************************
00198 inline void ZLog::detectTorqueSwitch()
00199 {
00200   int dummy = ActPos;
00201   int dummy1 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00202   int dummy2 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00203 
00204   if( (Log[ActPos] - Log[dummy2]) > 6 && abs(Log[dummy1] - Log[ActPos]) > 2){
00205     int dummy3 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00206     int dummy4 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00207     int dummy5 = (--dummy < 0) ? dummy = LogSize-1 : dummy;
00208 
00209     if(Log[dummy2] < Log[dummy3] && Log[dummy3] <= Log[dummy4]){
00210       if((Log[dummy4] - Log[dummy2]) > 16 &&
00211          (Log[dummy4] - Log[dummy5]) > 3){
00212         std::cout << "****************************** TORQUE SWITCH ACTIVATED?" << std::endl;
00213         showLog();
00214       }
00215     }
00216     else{
00217       if((Log[dummy3] - Log[dummy2]) > 13 &&
00218          //(Log[dummy1] < Log[dummy3]) &&
00219          ((Log[dummy3] - Log[dummy4]) >= 3 )){
00220         std::cout << "****************************** TORQUE SWITCH ACTIVATED ELSE?" << std::endl;
00221         showLog();
00222       }
00223     }
00224   }
00225 }
00226 
00227 
00228 
00229 // ************************
00230 // **                    **
00231 // ************************
00232 inline short ZLog::getLog(int pos) const
00233 {
00234   if(pos > LogSize)
00235     exit(-100);
00236   else
00237     return Log[pos];
00238 }
00239 
00240 // ************************
00241 // **                    **
00242 // ************************
00243 inline short ZLog::getLastLog() const
00244 {
00245   return Log[ActPos];
00246 }
00247 
00248 
00249 // ************************
00250 // **                    **
00251 // ************************
00252 inline void ZLog::eraseLog()
00253 {
00254   memset(Log, 0, sizeof(Log));
00255 }
00256 
00257 
00258 // ************************
00259 // **                    **
00260 // ************************
00261 inline void ZLog::setLog(const short value)
00262 {
00263   for(int i = LogSize-1; i >= 0; i--)
00264     Log[i] = value;
00265 }
00266 
00267 
00268 // ************************
00269 // **                    **
00270 // ************************
00271 inline void ZLog::resetLog()
00272 {
00273   ActPos = 0;
00274 }
00275 
00276 
00277 // ************************
00278 // **                    **
00279 // ************************
00280 inline void ZLog::showLog()
00281 {
00282   int pos = ActPos;
00283   std::cout << " ** Log :" << std::endl;
00284   std::cout << "         " << Log[pos--] << std::endl;
00285   while(pos != ActPos){
00286     if(pos < 0)
00287       pos = LogSize-1;
00288 
00289      std::cout << "         " << Log[pos--] << std::endl;
00290    }
00291 }
00292 
00293 #endif //ZLOG_H


tams Tim Baier bhandlib v0.25
Generated Wed Aug 16 14:57:09 2006 by doxygen 1.4.7