#ifndef HOPOWERMODEL_H_
#define HOPOWERMODEL_H_

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

namespace cosi {

namespace models {

namespace onchipcommunication {

class HoPowerModel : public LinkPowerModel {
public:
	HoPowerModel(cosi::library::onchipcommunication::Technology pTech);
	virtual ~HoPowerModel();
	double GetDynamicPower(Name pName,
			cosi::quantity::onchipcommunication::Interface pSource,
			cosi::quantity::onchipcommunication::Interface pDest,
			WiringPath pPath, CommoditySet pCommodities,
			cosi::quantity::onchipcommunication::LinkParameter pParam);
	double GetStaticPower(Name pName,
			cosi::quantity::onchipcommunication::Interface pSource,
			cosi::quantity::onchipcommunication::Interface pDest,
			WiringPath pPath,
			cosi::quantity::onchipcommunication::LinkParameter pParam);
private:
	double mHopt;
	double mKopt;
	double mWmin;
	double mR0;
	double mC0;
	double mCp;
	double mK1 , mK2 , mK3 ;
	double mIoff ;
	double mVdd ;
	double mEdyn ;
	double mPl ;
	double mDelay ;
	std::vector<double> mR;
	std::vector<double> mC;
	std::vector<double> mPitch;

};

}

}

}

#endif /*HOPOWERMODEL_H_*/
