class library to access fischertechnik interfaces via USB

Dependencies:   FatFileSystem mbed myBlueUSB neigbourhood rfcomm sdp

Committer:
networker
Date:
Mon Mar 11 08:04:37 2013 +0000
Revision:
1:4676e8b9b357
Parent:
0:7da612835693
first publication of this experimental class, just for sharing wip

Who changed what in which revision?

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