On Thu, 6 Sep 2012 23:52:01 +0200 Stefan Tauner stefan.tauner@student.tuwien.ac.at wrote:
Add return values to sp_synchronize so we can signal a failure to the only upstream caller (serprog_init), which is prepared to propagate a failure.
sp_sync_read_timeout was harder to fix because it already used a return value, but we needed to distinguish two different failure modes. This solution distinguishes them by the sign of the return values, which maintains readability as much as possible.
Signed-off-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at
serial.c | 1 + serprog.c | 76 ++++++++++++++++++++++++++++++++++++++----------------------- 2 files changed, 49 insertions(+), 28 deletions(-)
… diff --git a/serprog.c b/serprog.c index dd86fd3..957e38f 100644 --- a/serprog.c +++ b/serprog.c @@ -184,36 +190,48 @@ static void sp_synchronize(void) … for (n = 0; n < 10; n++) {
c = sp_sync_read_timeout(5); /* wait up to 50ms */
if (c != S_NAK)
unsigned char ret = sp_sync_read_timeout(50, &c);
if (ret < 0)
ouch :)
but apart from that it seemed ok and i also tested it on hardware. i self-acked and committed the refined version in r1595. thanks niklas!