arduino stuffs
Diffstat (limited to 'libraries/SD/src/utility/SdFatUtil.h')
| -rw-r--r-- | libraries/SD/src/utility/SdFatUtil.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/libraries/SD/src/utility/SdFatUtil.h b/libraries/SD/src/utility/SdFatUtil.h new file mode 100644 index 0000000..2fb6289 --- /dev/null +++ b/libraries/SD/src/utility/SdFatUtil.h @@ -0,0 +1,77 @@ +/* Arduino SdFat Library + Copyright (C) 2008 by William Greiman + + This file is part of the Arduino SdFat Library + + This Library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Arduino SdFat Library. If not, see + <http://www.gnu.org/licenses/>. +*/ +#ifndef SdFatUtil_h +#define SdFatUtil_h +/** + \file + Useful utility functions. +*/ +#include <Arduino.h> +#ifdef __AVR__ + #include <avr/pgmspace.h> + /** Store and print a string in flash memory.*/ + #define PgmPrint(x) SerialPrint_P(PSTR(x)) + /** Store and print a string in flash memory followed by a CR/LF.*/ + #define PgmPrintln(x) SerialPrintln_P(PSTR(x)) + /** Defined so doxygen works for function definitions. */ +#endif +#define NOINLINE __attribute__((noinline,unused)) +#define UNUSEDOK __attribute__((unused)) +//------------------------------------------------------------------------------ +/** Return the number of bytes currently free in RAM. */ +static UNUSEDOK int FreeRam(void) { + extern int __bss_end; + extern int* __brkval; + int free_memory; + if (reinterpret_cast<int>(__brkval) == 0) { + // if no heap use from end of bss section + free_memory = reinterpret_cast<int>(&free_memory) + - reinterpret_cast<int>(&__bss_end); + } else { + // use from top of stack to heap + free_memory = reinterpret_cast<int>(&free_memory) + - reinterpret_cast<int>(__brkval); + } + return free_memory; +} +#ifdef __AVR__ +//------------------------------------------------------------------------------ +/** + %Print a string in flash memory to the serial port. + + \param[in] str Pointer to string stored in flash memory. +*/ +static NOINLINE void SerialPrint_P(PGM_P str) { + for (uint8_t c; (c = pgm_read_byte(str)); str++) { + Serial.write(c); + } +} +//------------------------------------------------------------------------------ +/** + %Print a string in flash memory followed by a CR/LF. + + \param[in] str Pointer to string stored in flash memory. +*/ +static NOINLINE void SerialPrintln_P(PGM_P str) { + SerialPrint_P(str); + Serial.println(); +} +#endif // __AVR__ +#endif // #define SdFatUtil_h |