blob: 17fe9dec5864a02484318822e21f8354ff2ae57a [file] [log] [blame]
/*
* Copyright (c) 2017 FH Dortmund and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Description:
* Timing class created for thread performance analysis.
*
* Authors:
* M. Ozcelikors,
* <mozcelikors@gmail.com>
*
* Contributors:
*
* Update History:
* 23.03.2017 - initial revision
*
*/
#ifndef TIMING_TIMING_H_
#define TIMING_TIMING_H_
#include <pthread.h>
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <ctime>
#include <wiringPi.h>
#define SECONDS_TO_MICROSECONDS 1000000
#define MICROSECONDS_TO_SECONDS 0.000001
class timing {
public:
timing();
virtual ~timing();
void recordStartTime();
void recordEndTime();
void calculateExecutionTime();
void calculatePreviousSlackTime();
void calculateDeadlineMissPercentage();
void sleepToMatchPeriod(void);
void setDeadline(double deadline);
void setPeriod(double period);
void setTaskID(char * taskid);
void incrementTotalCycles(void);
void incrementMissedCycles(void);
int getTotalCycles(void);
int getMissedCycles(void);
double getDeadline(void);
double getPeriod(void);
double getPrevSlackTime(void);
double getExecutionTime(void);
double getDeadlineMissPercentage(void);
char * getTaskID(void);
double getStartTime(void);
double getEndTime(void);
private:
char * _TASK_ID;
int _TOTAL_CYCLES;
int _MISSED_CYCLES; //Deadline misses
double _DEADLINE;
double _PREV_SLACK_TIME;
double _PERIOD;
double _EXECUTION_TIME;
int _DEADLINE_MISS_PERCENTAGE;
std::clock_t _START_TIME;
std::clock_t _END_TIME;
};
#endif /* TIMING_TIMING_H_ */