| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | 
							- /* 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/>.
 
-  */
 
- #include "Marlin.h"
 
- #ifdef SDSUPPORT
 
- #include "SdFatUtil.h"
 
- //------------------------------------------------------------------------------
 
- /** Amount of free RAM
 
-  * \return The number of free bytes.
 
-  */
 
- #ifdef __arm__
 
- extern "C" char* sbrk(int incr);
 
- int SdFatUtil::FreeRam() {
 
-   char top;
 
-   return &top - reinterpret_cast<char*>(sbrk(0));
 
- }
 
- #else  // __arm__
 
- extern char *__brkval;
 
- extern char __bss_end;
 
- /** Amount of free RAM
 
-  * \return The number of free bytes.
 
-  */
 
- int SdFatUtil::FreeRam() {
 
-   char top;
 
-   return __brkval ? &top - __brkval : &top - &__bss_end;
 
- }
 
- #endif  // __arm
 
- void SdFatUtil::set_stack_guard()
 
- {	
 
- 	char i = 0;
 
- 	uint32_t *stack_guard;
 
- 	stack_guard = (uint32_t*)&__bss_end;
 
- 	//for (i = 0; i < 10; i++) {
 
- 		*stack_guard = STACK_GUARD_TEST_VALUE;
 
- 	//}
 
- }
 
- bool SdFatUtil::test_stack_integrity()
 
- {
 
- 	uint32_t* stack_guard = (uint32_t*)&__bss_end;
 
- 	return (*stack_guard == STACK_GUARD_TEST_VALUE);
 
- }
 
- uint32_t SdFatUtil::get_stack_guard_test_value()
 
- {
 
- 	//static char i = 0;
 
- 	uint32_t* stack_guard;
 
- 	uint32_t output;
 
- 	stack_guard = (uint32_t*)&__bss_end;
 
- 	//output = *(stack_guard + i);
 
- 	//i++;
 
- 	output = *stack_guard;
 
- 	return(output);
 
- }
 
- //------------------------------------------------------------------------------
 
- /** %Print a string in flash memory.
 
-  *
 
-  * \param[in] pr Print object for output.
 
-  * \param[in] str Pointer to string stored in flash memory.
 
-  */
 
- void SdFatUtil::print_P( PGM_P str) {
 
-   for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c);
 
- }
 
- //------------------------------------------------------------------------------
 
- /** %Print a string in flash memory followed by a CR/LF.
 
-  *
 
-  * \param[in] pr Print object for output.
 
-  * \param[in] str Pointer to string stored in flash memory.
 
-  */
 
- void SdFatUtil::println_P( PGM_P str) {
 
-   print_P( str);
 
-   MYSERIAL.println();
 
- }
 
- //------------------------------------------------------------------------------
 
- /** %Print a string in flash memory to Serial.
 
-  *
 
-  * \param[in] str Pointer to string stored in flash memory.
 
-  */
 
- void SdFatUtil::SerialPrint_P(PGM_P str) {
 
-   print_P(str);
 
- }
 
- //------------------------------------------------------------------------------
 
- /** %Print a string in flash memory to Serial followed by a CR/LF.
 
-  *
 
-  * \param[in] str Pointer to string stored in flash memory.
 
-  */
 
- void SdFatUtil::SerialPrintln_P(PGM_P str) {
 
-   println_P( str);
 
- }
 
- #endif
 
 
  |