Measure system

Dependencies:   EthernetNetIf mbed RF12B

Committer:
benecsj
Date:
Thu Mar 10 19:56:45 2011 +0000
Revision:
1:b26ab2467b1a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benecsj 1:b26ab2467b1a 1 #include "AvailableMemory.h"
benecsj 1:b26ab2467b1a 2 #include <stdlib.h>
benecsj 1:b26ab2467b1a 3
benecsj 1:b26ab2467b1a 4 namespace segundo {
benecsj 1:b26ab2467b1a 5 namespace Utilities {
benecsj 1:b26ab2467b1a 6
benecsj 1:b26ab2467b1a 7 int AvailableMemory(int resolution, int maximum, bool disableInterrupts) {
benecsj 1:b26ab2467b1a 8
benecsj 1:b26ab2467b1a 9 if (resolution < 1) resolution = 1;
benecsj 1:b26ab2467b1a 10 if (maximum < 0) maximum = 0;
benecsj 1:b26ab2467b1a 11
benecsj 1:b26ab2467b1a 12 int low = 0;
benecsj 1:b26ab2467b1a 13 int high = maximum + 1;
benecsj 1:b26ab2467b1a 14
benecsj 1:b26ab2467b1a 15 if (disableInterrupts) __disable_irq();
benecsj 1:b26ab2467b1a 16
benecsj 1:b26ab2467b1a 17 while (high - low > resolution) {
benecsj 1:b26ab2467b1a 18 int mid = (low + high) / 2;
benecsj 1:b26ab2467b1a 19 void* p = malloc(mid);
benecsj 1:b26ab2467b1a 20 if (p == NULL) {
benecsj 1:b26ab2467b1a 21 high = mid;
benecsj 1:b26ab2467b1a 22 } else {
benecsj 1:b26ab2467b1a 23 free(p);
benecsj 1:b26ab2467b1a 24 low = mid;
benecsj 1:b26ab2467b1a 25 }
benecsj 1:b26ab2467b1a 26 }
benecsj 1:b26ab2467b1a 27
benecsj 1:b26ab2467b1a 28 if (disableInterrupts) __enable_irq();
benecsj 1:b26ab2467b1a 29
benecsj 1:b26ab2467b1a 30 return low;
benecsj 1:b26ab2467b1a 31 }
benecsj 1:b26ab2467b1a 32
benecsj 1:b26ab2467b1a 33 } // namespace Utilities
benecsj 1:b26ab2467b1a 34 } // namespace segundo