#include "ReadoutRewardGen.h"

ReadoutRewardGen::~ReadoutRewardGen()
{
}

int ReadoutRewardGen::reset(double dt)

{
	hadSpike = false;
	reward = 0;
	return 0;
}

void ReadoutRewardGen::setAnalogInput(double value, analog_port_id_t port)
{
	scale = value;
}

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

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

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

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

SimObject::PortType ReadoutRewardGen::inputPortType(port_t p) const
{
	if (p == 0)
		return spiking;
	else if (p == 1)
		return analog;

	return undefined;
}

int ReadoutRewardGen::advance(AdvanceInfo const&)
{
	if (hadSpike)
		reward = scale;
	else
		reward = 0;
	hadSpike = false;
	return 0;
}

int ReadoutRewardGen::spikeHit(spikeport_t port, SpikeEvent const& spike)
{
	hadSpike = true;
	return 0;
}