#ifndef ORIONPOWERMODEL_H_
#define ORIONPOWERMODEL_H_

#include <vector>
#include "models/onchipcommunication/common/PowerModel.h"
#include "include/onchipcommunication/typedefs.h"
#include "quantities/onchipcommunication/Ports.h"
#include "quantities/onchipcommunication/NodeParameter.h"
#include "io/onchipcommunication/HoOrionModelParser.h"

namespace cosi {

namespace models {

namespace onchipcommunication {

using namespace cosi::library::onchipcommunication;

class OrionPowerModel : public NodePowerModel {

public:

	OrionPowerModel(Technology pTech);

	virtual ~OrionPowerModel();

	double GetDynamicPower(Name pName,
			cosi::quantity::onchipcommunication::Ports pPorts,
			std::map< std::string , CommoditySet > pCommodities,
			cosi::quantity::onchipcommunication::NodeParameter pParam);
	double GetStaticPower(Name pName,
			cosi::quantity::onchipcommunication::Ports pPorts,
			cosi::quantity::onchipcommunication::NodeParameter pParam);
private:
	vector<vector<double> > mErouter1ch32;
	vector<vector<double> > mErouter4ch32;
	vector<vector<double> > mErouter1ch128;
	vector<vector<double> > mErouter4ch128;

	vector<vector<double> > mErouterLeak1ch32;
	vector<vector<double> > mErouterLeak4ch32;
	vector<vector<double> > mErouterLeak1ch128;
	vector<vector<double> > mErouterLeak4ch128;

	int mMaxIn;
	int mMaxOut;

};

}

}

}

#endif /*NODEPOWERMODEL_H_*/
