Skip to content

Commit 22d8e3a

Browse files
Control cache with refcnt, convert to unix format
The cache now is only freed when there are no references to it (i.e. if for some reason multile SD objects were used). Files in SD/src/utility converted to UNIX format (matching other libs)
1 parent 6c12968 commit 22d8e3a

File tree

10 files changed

+4459
-4446
lines changed

10 files changed

+4459
-4446
lines changed

libraries/SD/src/utility/FatStructs.h

Lines changed: 418 additions & 418 deletions
Large diffs are not rendered by default.

libraries/SD/src/utility/Sd2Card.cpp

Lines changed: 762 additions & 762 deletions
Large diffs are not rendered by default.

libraries/SD/src/utility/Sd2Card.h

Lines changed: 259 additions & 259 deletions
Large diffs are not rendered by default.

libraries/SD/src/utility/Sd2PinMap.h

Lines changed: 385 additions & 385 deletions
Large diffs are not rendered by default.

libraries/SD/src/utility/SdFat.h

Lines changed: 565 additions & 553 deletions
Large diffs are not rendered by default.

libraries/SD/src/utility/SdFatUtil.h

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,75 @@
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. */
39-
static 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-
*/
61-
static 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-
*/
70-
static NOINLINE void SerialPrintln_P(PGM_P str) {
71-
SerialPrint_P(str);
72-
Serial.println();
73-
}
74-
#endif // __AVR__
75-
#endif // #define SdFatUtil_h
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. */
39+
static 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+
*/
61+
static 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+
*/
70+
static NOINLINE void SerialPrintln_P(PGM_P str) {
71+
SerialPrint_P(str);
72+
Serial.println();
73+
}
74+
#endif // __AVR__
75+
#endif // #define SdFatUtil_h

0 commit comments

Comments
 (0)