I know this thread is old and dead, but I'd like to share my "solution" to this problem for everyone having same issue today:
I was also looking for a simple SW-only solution, and here it is: Just call the _Init(); function of the timer PRIOR to the (re)start.
The init will reset the timer (start calls init only the very first time!).
Oh, and use the TC-Pin as output.
That's it! You got a simple, SW-controlled OneShot-Timer with minimal HW-ressources.
I hope someone will find this helpful and Cypress will one day mention this in the Datasheet...
When I need to restart a timer I usually write a zero into the period register using the appropriate API. Works with counters too.
Are you living in Germany? I am located near Bremen.
Does wirting a zero also reset a OneShot FF-Timer?
Going further, I'm using now the interrupt output, and restart the timer with the init-function only. Nice thing is, this way the you get a delayed "high" output wich persists until you call init - great for "windowed interrupts"!
Actually yes, I'm living in Germany...near Lindau (am Bodensee), so quite far away