source: rtos_arduino/trunk/arduino_lib/libraries/Robot_Control/src/Fat16util.h@ 136

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

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

File size: 2.5 KB
Line 
1#ifndef Fat16util_h
2#define Fat16util_h
3/* Arduino FAT16 Library
4 * Copyright (C) 2008 by William Greiman
5 *
6 * This file is part of the Arduino FAT16 Library
7 *
8 * This Library is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This Library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17
18 * You should have received a copy of the GNU General Public License
19 * along with the Arduino Fat16 Library. If not, see
20 * <http://www.gnu.org/licenses/>.
21 */
22/**
23 * \file
24 * Useful utility functions.
25 */
26#if ARDUINO < 100
27#include <WProgram.h>
28#else // ARDUINO
29#include <Arduino.h>
30#endif // ARDUINO
31#include <avr/pgmspace.h>
32/** Store and print a string in flash memory.*/
33#define PgmPrint(x) SerialPrint_P(PSTR(x))
34/** Store and print a string in flash memory followed by a CR/LF.*/
35#define PgmPrintln(x) SerialPrintln_P(PSTR(x))
36/** Defined so doxygen works for function definitions. */
37#define NOINLINE __attribute__((noinline))
38//------------------------------------------------------------------------------
39/** Return the number of bytes currently free in RAM. */
40static int FreeRam(void) {
41 extern int __bss_end;
42 extern int* __brkval;
43 int free_memory;
44 if (reinterpret_cast<int>(__brkval) == 0) {
45 // if no heap use from end of bss section
46 free_memory = reinterpret_cast<int>(&free_memory)
47 - reinterpret_cast<int>(&__bss_end);
48 } else {
49 // use from top of stack to heap
50 free_memory = reinterpret_cast<int>(&free_memory)
51 - reinterpret_cast<int>(__brkval);
52 }
53 return free_memory;
54}
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 // #define Fat16util_h
Note: See TracBrowser for help on using the repository browser.