Hi,
This is possible but can be a bit tricky in the current implementation. The SpiNNaker architecture does allow a payload to be sent with a spike.
At present, we are using this as a count, which is useful for e.g. Poisson sources where they sometimes send multiple spikes in a single timestep. That would mean that you would have to first untangle this behaviour (this is in spike_source_poisson.c).
Once you had done this, you then need to work out how to pass the information into the Spike Processing pipeline. For this you can look at the multicast_packet_pl_received_callback in spike_processing.c (used when the neuron and synapse processing is done
on a single core together) and spike_processing_fast.c (used when the synapse processing is done on a separate core).
The current system adds the spike to a queue and then this is processed in the DMA processing loop, which reads synapses and then converts the spikes into weights to be added via the ring buffers; these ring buffers handle the delays. For a graded spike, you
might instead need to store the value and the spike together. In processing, you would then need to consider how delays might be handled, since the ring_buffers gather a sum of weights for a given future time, where this would then lose the spike grade potentially.
That is a rough overview. Please feel free to ask more questions though!
Andrew :)