The dependency from eepreg to FEATURES_REQUIRED is already defined in
`sys/Makefile.dep` so should not need to be duplicated in the
application Makefile.
When the slacker threads and the worker thread have the same priority
the drift and jitter depend on the workload.
Timer set before the worker thread will be fired before the worker and so
the result is not the timings the system might reach when proper priority
is set. Increasing the priority of the worker thread ensures that the
measureed timings are the achievable timings.
When sleeping in the main function with xtimer_sleep not every percentage
will be printed as the sleep duration and the processing time added do
not result in full percentage values.
Using xtimer_periodic_wakeup ensures that every integer percentage is printed.
The test added for crypto_secure_wipe wipes a buffer with a secret in
it. Only the last byte is kept as it was. The last byte is used to check
that the function doesn't write outside the supplied buffer.
The current test implementation wrongly assumes that the diff between
two fired events (e1, e2) must always increase. That is not true, as
event e1 may reside on the upper part of [I/2, I) and e2 on the lower
part of [I, 2*I).
This commit fixes the test to look at the actual time that was randonmly
chosen from both intervals (t1, t2). Given that the intervals are
doubled, t1 must always be smaller than t2.
The unification of a bigger stack for the atmega platforms
makes some boards to not have enough memory to provide
the big stack plus the application code.
It is possible though, to override the stack size to a
smaller amount if running the test is necessary.
Stack size is changed from 4 times the default + printf to 5 times the
default stack size. Only on the lpc2387 this reduces the resulting stack
space. the test is not rerun for the lpc2387 and is untested.
Tests are disable for the Arduino. While they "might" work, it takes
around 8 minutes to complete the tests.
The current phydat_fit implementation the following limitations:
- The API is way more complicated to use than needed
- It doesn't perform any rounding
- It uses `long` in a place where actual width (or better range) of the type
is pretty important.
This commit addresses these limitations and uses lookup-tables to reduce the
number of divisions required.
Before this commit code using it looked like this:
``` C
long values[] = { 100000, 2000000, 30000000 };
phydat_t dat = { .scale = 42, .unit = UNIT_V };
phydat_fit(&dat, values[0], 0, phydat_fit(&dat, values[1], 1, phydat_fit(&dat, values[2], 2, 0)));
```
Now it can be used like this:
``` C
int32_t values[] = { 100000, 2000000, 30000000 };
phydat_t dat = { .unit = UNIT_V, .scale = 42 };
phydat_fit(&dat, values, 3);
```