init

Dependencies:   MPU6050 PinDetect circular_buffer

DataLogger/DataLogger.cpp

Committer:
OsmanKameric
Date:
2017-11-07
Revision:
0:b416214256cd

File content as of revision 0:b416214256cd:


#include <stdio.h>


#include "log.h"
#include "DataLogger.h"

using namespace std;



template<class T>
void DataLogger<T>::savelog(T templog)
{
    Log nule(0,0,0,0);
    uint16_t del=position();

    if (_index < (DATASIZE - 1)) {
        _index++;
        _datalist[_index] = templog;

    }
    else {
        _index = DATASIZE-del;

        for (int k = 0; k<(DATASIZE-del) && _index!=-1; k++)
        _datalist[k]=_datalist[del+k];

        for (int k = 0; k<DATASIZE; k++){
           if(k>=(DATASIZE-del))
             _datalist[k]=nule;
            }

   _datalist[DATASIZE-del]=templog;

}

  }

template<class T>
void DataLogger<T>::print()
{
    //Log *p;
    //p=getfirst();
    //cout<<"dirst"<<(*p).getTime()<<endl;

    printf("\nPrint\n");
    for (int i = 0; i < DATASIZE; i++) {
        printf("Date %d  ", _datalist[i].getDate());
        printf("Time %d  ", _datalist[i].getTime());
        printf("Fsm %d  ", _datalist[i].getFsmtype());
        printf("Event %d\n", _datalist[i].getEvent());

    }
}

template<class T>
uint8_t DataLogger<T>::position()
{
    int k=0;
    int datum=_datalist[0].getDate();
    for (int i = 0; i < DATASIZE; i++) {
        if(_datalist[i].getDate()==datum)
            k++;
    }
    return k;
}




template<class T>
uint16_t DataLogger<T>::getsize()
{

    return sizeof(_datalist) / 4;
}

template<class T>
T* DataLogger<T>::getfirst(){

 return _datalist;

}

template<class T>
T* DataLogger<T>::getlast(){
int i=0;
    for(i;i<DATASIZE;i++){
        if(_datalist[i].getDate()==0)
         break;
        
    }
 return (_datalist+i-1);
}

template<class T>
uint16_t DataLogger<T>::getnumberOfDays(){
    uint16_t countDays=1;
    Log *p1=getfirst();
    Log *p2;
    p2=getLastStop();
    uint16_t currentDate=(*p1).getDate();

    if((*p2).getDate()==currentDate && (*p2).getDate()!=0)
        countDays;

   // cout<<"last stop "<<(*p1).getTime()<<endl;


    while(p1!=p2){
       // cout<<"d "<<(*p1).getDate()<<endl;
        if((*p1).getDate() != currentDate){
         countDays++;
         currentDate=(*p1).getDate();
     }
        p1++;
    }

    // for(int i=0;i<DATASIZE;i++){
    //     if(_datalist[i].getDate() != _datalist[i+1].getDate())
    //      countDays++;
        
    // }
  // cout<<"dani "<<countDays<<endl;

 return countDays;
}


template<class T>
T* DataLogger<T>::getLastStop(){

    //cout<<"getlaststop"<<endl;
    
    int i=DATASIZE-1;

    for(i; i>=0; i--)
    if (_datalist[i].getDate()!=0 && _datalist[i].getEvent()==0)
    {
              //cout<<"i "<<i<<"  "<<_datalist[i].getTime()<<"Event "<<_datalist[i].getEvent()<<endl;
              break;

    }

 return (_datalist+i);
}





template class DataLogger<Log>;