Mercurial > public > ostc4
comparison Discovery/Src/logbook.c @ 283:04cdeff80254 ndl-in-logbook
Bugfix: write NDL in logbook correctly
This is a subtle one. Typecasting takes precedence over, for example, division.
So, we first typecasted an int to an uint8_t, loosing data in the process, and
then do a seconds to minute conversion. This, obviously, does not give the
result one expects.
And in hindsight a trivial fix for a bug that like has been there forever.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
author | Jan Mulder <jlmulder@xs4all.nl> |
---|---|
date | Thu, 02 May 2019 13:08:17 +0200 |
parents | 54d14bc2083c |
children | 50c26a4442af |
comparison
equal
deleted
inserted
replaced
282:c7e665e0b08f | 283:04cdeff80254 |
---|---|
518 | 518 |
519 if(pDecoinfo->output_ndl_seconds > 0) | 519 if(pDecoinfo->output_ndl_seconds > 0) |
520 { | 520 { |
521 sample[length] = 0; | 521 sample[length] = 0; |
522 length += 1; | 522 length += 1; |
523 sample[length] = (uint8_t)pDecoinfo->output_ndl_seconds / 60; | 523 sample[length] = (uint8_t)(pDecoinfo->output_ndl_seconds / 60); |
524 | 524 |
525 // Limit stored sample within 0 to 240 mins (Since it's 8bit UINT only) | 525 // Limit stored sample within 0 to 240 mins (Since it's 8bit UINT only) |
526 if ((pDecoinfo->output_ndl_seconds / 60) > 240) sample[length] = 240; | 526 if ((pDecoinfo->output_ndl_seconds / 60) > 240) sample[length] = 240; |
527 if ((pDecoinfo->output_ndl_seconds / 60) < 0) sample[length] = 0; | 527 if ((pDecoinfo->output_ndl_seconds / 60) < 0) sample[length] = 0; |
528 | 528 |