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 |
