Thanks, Mastertech! This is starting to make more sense now.
I was able to set up my DMA to work and it works with buffers of different sizes, so I am happy.
You seem to know a lot about PSOC. I have another question:
My team wants me to implement some kind of abort() function for the receive DMA, where, ideally, after a call to abort() the isr would be called and then there would be some way to determine how many bytes were actually transferred, if any. I can disable the channel and/or the dma, but:
1) I can't figure out how to determine how many bytes had been transferred. I thought maybe Cy_DMA_Descriptor_GetXloopDataCount() would return how many bytes were left to go, but it just contains what I had set it to at the start. Clearly, there is a register somewhere that keeps track of this, but maybe there is no hal function for it?
2) I don't get an interrupt if I turn if I disable the DMA or DMA channel. This isn't that big of a deal, since I can just call back to the subscriber directly, but it would be nice to just have a way to force the DMA to stop and to issue the interrupt.
As for Modus vs. Creator, well, I have not looked at Modus yet, but heard that it was not really complete so far. My opinion of Creator is not that high. It is incredibly slow. Right now I am using it, but once I am no longer making design changes, I'm going to just copy out everything auto generated, and treat it as another input to a simple build environment with my own makefile. Also, I'd rather use gdb than their debugger.