source: rtos_arduino/trunk/arduino_lib/libraries/SD/src/utility/SdFatUtil.h@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

File size: 2.6 KB
Line 
1/* Arduino SdFat Library
2 * Copyright (C) 2008 by William Greiman
3 *
4 * This file is part of the Arduino SdFat Library
5 *
6 * This Library is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This Library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15
16 * You should have received a copy of the GNU General Public License
17 * along with the Arduino SdFat Library. If not, see
18 * <http://www.gnu.org/licenses/>.
19 */
20#ifndef SdFatUtil_h
21#define SdFatUtil_h
22/**
23 * \file
24 * Useful utility functions.
25 */
26#include <Arduino.h>
27#ifdef __AVR__
28#include <avr/pgmspace.h>
29/** Store and print a string in flash memory.*/
30#define PgmPrint(x) SerialPrint_P(PSTR(x))
31/** Store and print a string in flash memory followed by a CR/LF.*/
32#define PgmPrintln(x) SerialPrintln_P(PSTR(x))
33/** Defined so doxygen works for function definitions. */
34#endif
35#define NOINLINE __attribute__((noinline,unused))
36#define UNUSEDOK __attribute__((unused))
37//------------------------------------------------------------------------------
38/** Return the number of bytes currently free in RAM. */
39static UNUSEDOK int FreeRam(void) {
40 extern int __bss_end;
41 extern int* __brkval;
42 int free_memory;
43 if (reinterpret_cast<int>(__brkval) == 0) {
44 // if no heap use from end of bss section
45 free_memory = reinterpret_cast<int>(&free_memory)
46 - reinterpret_cast<int>(&__bss_end);
47 } else {
48 // use from top of stack to heap
49 free_memory = reinterpret_cast<int>(&free_memory)
50 - reinterpret_cast<int>(__brkval);
51 }
52 return free_memory;
53}
54#ifdef __AVR__
55//------------------------------------------------------------------------------
56/**
57 * %Print a string in flash memory to the serial port.
58 *
59 * \param[in] str Pointer to string stored in flash memory.
60 */
61static NOINLINE void SerialPrint_P(PGM_P str) {
62 for (uint8_t c; (c = pgm_read_byte(str)); str++) Serial.write(c);
63}
64//------------------------------------------------------------------------------
65/**
66 * %Print a string in flash memory followed by a CR/LF.
67 *
68 * \param[in] str Pointer to string stored in flash memory.
69 */
70static NOINLINE void SerialPrintln_P(PGM_P str) {
71 SerialPrint_P(str);
72 Serial.println();
73}
74#endif // __AVR__
75#endif // #define SdFatUtil_h
Note: See TracBrowser for help on using the repository browser.