#include "RewardGenerator2.h"

RewardGenerator2::RewardGenerator2()        
{}

RewardGenerator2::~RewardGenerator2()
{
}

int RewardGenerator2::reset(double dt)
{   
    instRate1 = 0;
    instRate2 = 0;    
    return 0;
}

int RewardGenerator2::advance( AdvanceInfo const& )
{   
    reward = instRate1 + instRate2;
    return 0;
}

int RewardGenerator2::spikeHit( spikeport_t port, SpikeEvent const& spike )
{		
    return 0;
}

double RewardGenerator2::getAnalogOutput(analog_port_id_t port ) const
{
    return reward;
}

//! Analog input to given port
void RewardGenerator2::setAnalogInput(double value, analog_port_id_t port)
{
	if (port == 1)
		instRate1 = value;
	else	
		instRate2 = value;
}

int RewardGenerator2::nSpikeInputPorts() const
{
    return 1;
}


int RewardGenerator2::nAnalogInputPorts() const
{
    return 1;
}


int RewardGenerator2::nAnalogOutputPorts() const
{
    return 1;
}

SimObject::PortType RewardGenerator2::outputPortType(port_t p) const
{
    if (p == 0)
        return analog;
    return undefined;
}

SimObject::PortType RewardGenerator2::inputPortType(port_t p) const
{
    if (p == 0)
        return spiking;
    else if (p < 3)
    	return analog;        
    return undefined;
}