RecoSim  1.0
 All Classes Files Functions Variables Enumerations
application.h
Go to the documentation of this file.
1 
21 #ifndef APPLICATION_H
22 #define APPLICATION_H
23 
24 #define SC_INCLUDE_DYNAMIC_PROCESSES
25 
26 #include <systemc.h>
27 #include <string>
28 #include <vector>
29 #include "manager_interface.h"
30 #include "application_interface.h"
31 //#include <list>
32 
33 using namespace std;
34 using namespace sc_core;
35 using namespace sc_dt;
36 
38 
39 private:
40  string name;
41  string prefix;
42 
43  double qosFactor;
44  int firstTaskID;
45  int lastTaskID;
46  int instanceID;
47 
48  int nbPassedDeadlines;
49  int nbMissedDeadlines;
50  int nbPassedDeadlinesOnHyperperiod;
51  int nbMissedDeadlinesOnHyperperiod;
52 
53  sc_time achievedSimulationTime;
54 
55  sc_time offset;
56  sc_time hyperperiod;
57 
58  bool status;
59 
60  vector<pair<string, sc_time> > missed_deadlines;
61  vector<pair<string, sc_time> > missed_deadlines_last_hyperperiod;
62 
63  bool qosFailure;
64 
65  static sc_time minimumSimulationTime;
66  static sc_time globalOffset;
67  static sc_time globalHyperperiod;
68 
69  static sc_time userOffset;
70  static sc_time userHyperperiod;
71  static bool overrideOffset;
72  static bool overrideHyperperiod;
73 
74  double minimalInstantQoS;
75 
76 public:
77  Application(string _name, string _prefix, int _instanceID, double qos, int start, int stop) : name(_name), prefix(_prefix), instanceID(_instanceID), qosFactor(qos), firstTaskID(start), lastTaskID(stop) {
78  nbPassedDeadlines = 0;
79  nbMissedDeadlines = 0;
80  nbPassedDeadlinesOnHyperperiod = 0;
81  nbMissedDeadlinesOnHyperperiod = 0;
82  offset = SC_ZERO_TIME;
83  hyperperiod = SC_ZERO_TIME;
84  status = false;
85  qosFailure = false;
86 
87  minimalInstantQoS = 100.0;
88  }
89 
90  Application(void) {}
91 
92  // Application_interface
93 
94  string getName(void);
95  bool containsTask(int taskID);
96  int getFirstTaskID();
97  int getTaskNumber();
98 
99 
100 
101 
102  //double getQoSFactor(void);
103  double getAchievedQoS(void);
104  double getMinimalQoS(void);
105 
106  string getFullModuleName(string moduleName);
107 
108  void incrementPassedDeadlines(void);
109  void incrementMissedDeadlines(string taskname);
110 
111  void computeMinimumSimulationTime(vector<Manager_interface *>& table);
112 
113  void setAchievedSimulationTime(sc_time t);
114  sc_time getAchievedSimulationTime(void);
115  bool isSimulationTimeEnough(void);
116 
117  bool getStatus(void);
118  void setStatus(bool);
119 
120  bool isQoSSatisfied(void);
121 
122  void checkQoSOnHyperperiod(void);
123 
124 
125 
126  vector<pair<string, sc_time> >& getMissedDeadlinesVector(void);
127  bool hasMissedDeadlines(void);
128 
129 
130 
131  // Static members
132  static sc_time getGlobalHypeperiod(void);
133  static sc_time getGlobalOffset(void);
134  static sc_time getMinimumSimulationTime(void);
135  static void computeMinimumSimulationTime(vector<Application>&);
136 
137  static void setOffset(sc_time);
138  static void setHyperperiod(sc_time);
139 
140 private:
141  sc_time getOffset(void);
142  sc_time getHyperperiod(void);
143 
144  static void computeGlobalHypeperiod(vector<Application>&);
145  static void computeGlobalOffset(vector<Application>&);
146 
147 };
148 
149 #endif
Definition: application_interface.h:29
Definition: application.h:37