-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pj/easier to test #7
base: master
Are you sure you want to change the base?
Conversation
Use inline functions to keep from repeating code Added a unit test to confirm functions behave as expected fix 2 (minor) bugs
/// Checks the first undecorated byte. | ||
uint16_t mu_StackCount(void) | ||
{ | ||
uint8_t *p = (__brkval == 0 ? (uint8_t *) &__heap_start : __brkval); | ||
|
||
while (*p == STACK_CANARY && (int) p <= SP) | ||
while (*p == STACK_CANARY && p <= (uint8_t *) SP) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixes a type conversion warning. Probably harmless but distracting
// | ||
// Memory addresses | ||
// | ||
namespace MU { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New namespace "MU". It may not really be necessary, but I thought the library might be heading in that direction with mu_StackCount()
and mu_stack_size
. I left those alone to ensure these changes are backwards-compatible.
// | ||
#include <MemoryUsage.h> | ||
|
||
#include <AUnit.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note this new MemoryUsageTest.ino sketch depends on the AUnit library as well as MemoryUsage. Only this sketch's tests need AUnit. Legacy code should still work fine (when AUnit is missing).
@@ -15,9 +15,30 @@ void subPointer(rhaaa *apSample); | |||
void subSmartPointer(rhaaa &aSample); | |||
void subConstSmartPointer(const rhaaa &aSample); | |||
|
|||
inline void reportMemoryInfo(void) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reportMemoryInfo()
helps ensure the console text dump is consistent each time it is called. This makes it easier to compare output and recognize changes at each step. (Stack.ino oputput may have added or rearranged lines to make this happen, so comparing output files from earlier runs may see changes)
This is for a backwards-compatible enhancement to the MemoryUsage library.
At this time MemoryUsage is basically a set of macros to collect usage information as text through Serial.print().
I would like to have more direct access to the numerical values. This gives me more flexibility in using the values. With these changes:
(__brkval == 0 ? (int)&__heap_start : (int)__brkval)
to get heap end forMEMORY_PRINT_HEAPEND
andMEMORY_PRINT_HEAPSIZE
) is gathered into single (inline) functions. This helps ensure all code using that value will calculate it the same way.This pull request includes #4 , so if you want both PRs, you only need to review/approve this one.