diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e8d800eb48..60994685e1 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -402,22 +402,27 @@ void serial_echopair_P(const char *s_P, double v) void serial_echopair_P(const char *s_P, unsigned long v) { serialprintPGM(s_P); SERIAL_ECHO(v); } -extern "C"{ - extern unsigned int __bss_end; - extern unsigned int __heap_start; - extern void *__brkval; +#ifdef SDSUPPORT + #include "SdFatUtil.h" + int freeMemory() { return SdFatUtil::FreeRam(); } +#else + extern "C" { + extern unsigned int __bss_end; + extern unsigned int __heap_start; + extern void *__brkval; - int freeMemory() { - int free_memory; + int freeMemory() { + int free_memory; - if((int)__brkval == 0) - free_memory = ((int)&free_memory) - ((int)&__bss_end); - else - free_memory = ((int)&free_memory) - ((int)__brkval); + if ((int)__brkval == 0) + free_memory = ((int)&free_memory) - ((int)&__bss_end); + else + free_memory = ((int)&free_memory) - ((int)__brkval); - return free_memory; + return free_memory; + } } -} +#endif //!SDSUPPORT //adds an command to the main command buffer //thats really done in a non-safe way.